DF1

No language implementation of this driver is usable yet. See the protocol support matrix for what each implementation currently does.
There is no DF1 driver you can connect with. DF1 currently exists as a protocol specification and a generated read/write model only - there is no df1 connection code in any of the language ports, so there is nothing to put a connection string into. This page is kept for reference and is not linked from the navigation.

Allen-Bradley’s DF1 is the serial protocol used by the SLC-500 and PLC-5 family, and by the MicroLogix controllers over their RS-232 port.

What exists today

The protocol is described in protocols/df1/src/main/resources/protocols/df1/df1.mspec and code is generated from it for Go, under plc4go/protocols/df1/readwrite. The generated model covers the symbol/framing layer and the unprotected read exchange:

  • DF1Symbol with the DF1SymbolMessageFrame, DF1SymbolMessageFrameACK and DF1SymbolMessageFrameNAK variants

  • DF1Command with DF1UnprotectedReadRequest and DF1UnprotectedReadResponse

  • a CRC helper in StaticHelper.go, exercised by its own unit test

This model is verified by a ParserSerializer test suite (plc4go/assets/testing/protocols/df1/), so the wire format is known to round-trip - but nothing builds a connection, transport or tag handler on top of it.

The DF1 command layer is reused by the AB-ETH driver, which tunnels DF1 commands inside CIP encapsulation over Ethernet. That is a working driver in Java, and it is what you want if your device is reachable over Ethernet rather than a serial port. The DF1 message types it uses are generated into the ab-eth module rather than shared from here.

Contributing

A DF1 driver would need a serial transport binding, the framing/ACK-NAK state machine on top of DF1Symbol, and a tag address syntax for the SLC/PLC-5 data-file notation (e.g. N7:0). The protocol layer is the part that already exists, so a contribution can start at the driver logic. Please raise it on dev@plc4x.apache.org before starting.