70 likes | 327 Views
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:
E N D
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?
Taken after about 46000 runs, PPC IOC, 350 BI @10Hz, 150 AI @ 1Hz, switched network. After 1 week: max. scan time 0.15 sec Test