ether_ip - epics ethernet/ip support for controllogix kay-uwe kasemir, lanl nov. 2000
TRANSCRIPT
ether_ip - EPICS EtherNet/IP support for
ControlLogix
Kay-Uwe Kasemir, LANL
Nov. 2000
EtherNet/IP
IP = Industrial Protocol Evolved from “ControlNet over EtherNet” SIG Encapsulates CIP in TCP & UDP
– (Ctrl. & Info. Protocol, shared by DeviceNet and ControlNet)
Part of ControlNet Specs:– Open DeviceNet Vendor Assoc.,
http://www.odva.org
EtherNet/IP Spec. Details
ControlNet Spec.2 Errata 1, E.Net. still in red Open portion of CIP (object & service codes):
– How to route messages– How to read serial number and vendor code
Vendor specific:– Get data of real interest, e.g. PLC values
This driver:CIP Read/WriteData as used byAllen Bradley ControlLogix PLCs– Round-trip request/response mechanism– Subscription (ForwardOpen) with triggered updates via
UDP not implemented/documented by AllenBradley
EPICS Driver/Device No special hardware, neither for setup nor runtime IOCs (pc486, PPC), command-line (Win32, Unix) Can read & write any tag on PLC
– DTYP=“EtherIP”, INP=“@plc1 PS1RB2”
– also: INP=“@plc2 arraytag[21]”, “@plc2 struct.elem”
– REAL, INT, DINT, BOOL,scalars, struct. elements, arrays
– no need to “publish” tag in PLC’s LadderLogic or program ControlNet connection to allocate bandwidth
– Records: ai, ao, bi, bo, mbbi, mbbo, mbbiDirect, mbboDirect INP/OUT can be changed at runtime to use different tag on different
PLC! Handles disconnects/reconnects (e.g. PLC reboot)
Driver/Device Details
One communication thread per PLC Combines requests to minimize transfers
– (up to ~500 byte PLC buffer limit) Arrays are transferred as a whole (default) Output records:
– Monitors PLC, updates rec. on change Supports SCAN=I/O Event (also for e.g. 30Hz scans) Provides statistics: min/max/last scan times, #errors, ... Performance: about 8ms per transfer
• Single REAL tag: 8ms• BOOL[352]: 8ms• 3xREAL[30]: ~20ms (combined requests)
Conclusion
Setup:– No additional hardware (neither for PC, IOC, nor
communication setup)
Use:– No special LadderLogic required, though arrays might
be preferred (performance)
– Good IOC support (I/O Event, runtime change)
Performance:– 8ms/transfer, susceptible to network delays
– good enough for most applications?
Test
Taken after about 46000 runs,PPC IOC, 350 BI @10Hz, 150 AI @ 1Hz, switched network.After 1 week: max. scan time 0.15 sec
020004000600080001000012000140001600018000
Hit
s
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
Scan Time [ms]
Histogram for BOOL[352] fetch