IO-Link (Sensor Master) Driver
Overview
IO-Link (IEC 61131-9) is a single-wire, bidirectional serial communication standard that links sensors/actuators to a master. The master connects to upper-level systems (PLC, SCADA, Edge) via PROFINET / EtherNet/IP / Modbus TCP / OPC UA and forwards process data (PD), identification data (ISDU), and events.
| Item | Value |
|---|---|
opc_type | IOLINK |
| Implementation class | plantpulse.driver.protocol.iolink.IOLink_Driver |
| Library | (none — stub) |
| read | ⛔ stub (returns "") |
| write | ⛔ stub |
| Security | Not applicable (authentication handled on the master side) |
IOLINK exists only as a formal stub. To actually acquire data, register the IO-Link master's upper-level interface
(PROFINET / Modbus TCP / EIP / REST) using another PlantPulse driver.
Why a native implementation is difficult
IO-Link uses a 3-wire serial (24V / GND / C/Q) physical layer. Generating and decoding IO-Link signals directly on a PC requires a board with a dedicated IC (e.g. Maxim MAX14819), and ordinary industrial PCs / Linux servers have no such interface.
Every integration therefore goes through IO-Link master hardware.
| Master category | Representative products | Upper-level interface |
|---|---|---|
| 8-port PROFINET master | ifm AL1100/AL1xxx, Balluff BNI008x | PROFINET, OPC UA |
| 8-port EtherNet/IP master | Balluff BNI EIP, ifm AL13xx | EtherNet/IP, REST |
| 8-port Modbus TCP master | Pepperl+Fuchs ICE3-8IOL, Murr Cube67 | Modbus TCP |
| Hybrid (multi-protocol) | Turck TBEN-S2, Banner R90C | PROFINET / EIP / Modbus TCP / REST |
Alternative operating approaches
Nearly all commercial IO-Link masters expose themselves through industrial protocols that PlantPulse already supports.
| Interface provided by the master | PlantPulse driver to use | Page |
|---|---|---|
| PROFINET | (PROFINET pilot — or enable the master's OPC UA concurrently) | — / OPC-UA |
| EtherNet/IP | EIP | EIP |
| Modbus TCP | MODBUS | Modbus |
| OPC UA Companion Spec for IO-Link | OPCUA | OPC-UA |
| JSON REST | HTTP | HTTP |
Recommended configuration example (ifm AL1100 / Balluff BNI)
Masters that support the OPC Foundation's IO-Link Companion Spec (recent ifm and Balluff firmware, for example) expose each port's PD/ISDU as OPC UA nodes. Register them directly with the PlantPulse OPCUA driver and you can poll per-port sensor values — the cleanest integration method.
Common per-port ISDU mapping (reference)
When using an IO-Link master's Modbus TCP interface, refer to the register map in the master's manual. The register layout differs for every master, so always read the vendor-specific manual.
| Data | Typical location (e.g. ifm AL1100) |
|---|---|
| Port 1 PD-In | Holding Register 0x1000+ |
| Port 2 PD-In | 0x1100+ |
| Per-port status | Bits in the 0x0000 area |
The values above are examples; in actual use, follow the register map in the master's datasheet exactly.
Considerations for a future native implementation
| Option | Dependencies | Difficulty |
|---|---|---|
| Vendor SDK (ifm IODD finder, Balluff IO-Link Device Tool) | Windows only, no Java support | High |
| IODD parser + master REST combination | XML IODD parsing + master REST combination | Medium |
| OPC UA companion spec wrapper | Already solved by the OPCUA driver | Low |
For IO-Link, integration through master hardware is inherently the standard model. From the PlantPulse perspective there is little need for a new native driver: a combination of the OPCUA / Modbus / EIP / HTTP drivers covers virtually every master.
stub registration (test only)
curl -X POST http://<edge-host>/api/v1/opc \
-H "Content-Type: application/json" \
-d '{
"opc_id": "OPC_IOLINK_STUB",
"opc_type": "IOLINK",
"opc_name": "IO-Link stub",
"opc_agent_ip": "192.168.0.0",
"opc_agent_port": "0",
"site_id": "SITE_00001",
"auto_collect": false,
"timecycle": 5000,
"tag_list": []
}'