> For the complete documentation index, see [llms.txt](https://captic-2.gitbook.io/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://captic-2.gitbook.io/docs/overview/hands-on/integrating-your-robot/integration-flow/plcs.md).

# PLCs

Connect your Captic system to your PLC.

The Integration Flow connects to the PLC brands below. You read and write PLC values with the nodes for your brand, and choose the data and handshake in your flow.

| PLC                                                                                                    | Connection                 |
| ------------------------------------------------------------------------------------------------------ | -------------------------- |
| [Siemens S7](/docs/overview/hands-on/integrating-your-robot/integration-flow/plcs/siemens-plc.md)      | S7 communication (put/get) |
| [Allen-Bradley](/docs/overview/hands-on/integrating-your-robot/integration-flow/plcs/allen-bradley.md) | EtherNet/IP (CIP)          |
| [Beckhoff](/docs/overview/hands-on/integrating-your-robot/integration-flow/plcs/beckhoff-plc.md)       | TwinCAT ADS                |
| [Mitsubishi](/docs/overview/hands-on/integrating-your-robot/integration-flow/plcs/mitsubishi-plc.md)   | MC protocol                |

PLCs of other brands can often be connected over [Modbus](/docs/overview/hands-on/integrating-your-robot/integration-flow/protocols/modbus.md) or [OPC UA](/docs/overview/hands-on/integrating-your-robot/integration-flow/protocols/opc-ua.md).

## Recommended data layout

If you're starting from scratch, this layout is a proven starting point for any PLC. It uses two blocks of data and a counter handshake, so the PLC always knows when a new result has arrived. Create it as data blocks, tags, variables or registers, depending on your PLC.

**Written by Captic, read by the PLC:**

| Field         | Details                                                    |
| ------------- | ---------------------------------------------------------- |
| X, Y, Z       | Pick point, in mm (robotic products)                       |
| Rx, Ry, Rz    | Rotation around X, Y and Z, in degrees (robotic products)  |
| Class         | Numeric indicator of object type, or the inspection result |
| CapticCounter | Increments with each new result                            |
| CapticError   | Numeric error code from the vision system                  |

**Written by the PLC, read by Captic:**

| Field      | Details                                          |
| ---------- | ------------------------------------------------ |
| PLCCounter | Copy of CapticCounter, to acknowledge the result |
| PLCError   | Numeric error code from the PLC                  |

The handshake: each time Captic writes a new result, it increments CapticCounter. The PLC reads the result and copies CapticCounter into PLCCounter to acknowledge it.

{% hint style="info" %}
Using a PLC brand that isn't listed? Let us know at <support@captic.com>.
{% endhint %}
