IO-Link (Sensor-Master) Treiber
Überblick
IO-Link (IEC 61131-9) ist ein bidirektionaler serieller Eindraht-Kommunikationsstandard zwischen Sensoren/Aktoren und Master. Der Master verbindet sich über PROFINET / EtherNet/IP / Modbus TCP / OPC UA usw. mit übergeordneten Systemen (PLC, SCADA, Edge) und überträgt Prozessdaten (PD), Identifikationsdaten (ISDU) und Ereignisse.
| Punkt | Wert |
|---|---|
opc_type | IOLINK |
| Implementierungsklasse | plantpulse.driver.protocol.iolink.IOLink_Driver |
| Bibliothek | (keine — stub) |
| read | ⛔ stub (gibt "" zurück) |
| write | ⛔ stub |
| Sicherheit | nicht zutreffend (Authentifizierung erfolgt masterseitig) |
Von IOLINK existiert nur ein formaler stub. Um reale Daten zu erfassen, registrieren Sie die übergeordnete Schnittstelle
des IO-Link master (PROFINET / Modbus TCP / EIP / REST) mit einem anderen PlantPulse-Treiber.
Warum eine native Implementierung schwierig ist
IO-Link verwendet eine 3-Draht-serielle Bitübertragungsschicht (24 V / GND / C/Q). Um IO-Link-Signale direkt am PC zu erzeugen bzw. zu dekodieren, wird eine Baugruppe mit dedizierten ICs (z. B. Maxim MAX14819) benötigt; übliche Industrie-PCs / Linux-Server besitzen keine solche Schnittstelle.
Jede Integration führt daher zwingend über IO-Link master-Hardware.
| Master-Kategorie | Typische Produkte | Übergeordnete Schnittstelle |
|---|---|---|
| 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 Betriebsverfahren
Nahezu alle kommerziellen IO-Link master stellen sich über Industrieprotokolle dar, die PlantPulse bereits unterstützt.
| Vom Master bereitgestellte Schnittstelle | Zu verwendender PlantPulse-Treiber | Seite |
|---|---|---|
| PROFINET | (PROFINET testweise — oder OPC UA des Master parallel aktivieren) | — / OPC-UA |
| EtherNet/IP | EIP | EIP |
| Modbus TCP | MODBUS | Modbus |
| OPC UA Companion Spec for IO-Link | OPCUA | OPC-UA |
| JSON REST | HTTP | HTTP |
Empfohlenes Konfigurationsbeispiel (ifm AL1100 / Balluff BNI)
Master, die die IO-Link Companion Spec der OPC Foundation unterstützen (z. B. aktuelle Firmware von ifm oder Balluff), bilden PD/ISDU jedes Ports als OPC UA-Knoten ab. Werden sie direkt mit dem OPCUA-Treiber von PlantPulse registriert, lassen sich die Sensorwerte je Port pollen — die sauberste Integrationsvariante.
Häufig genutzte ISDU-Zuordnung je Port (Referenz)
Bei Nutzung der Modbus TCP-Schnittstelle eines IO-Link master ist die Register-Map aus dem Master-Handbuch maßgeblich. Da das Register-Layout je Master abweicht, ist das herstellerspezifische Handbuch unbedingt zu beachten.
| Daten | Typische Lage (Beispiel: ifm AL1100) |
|---|---|
| Port 1 PD-In | Holding Register 0x1000+ |
| Port 2 PD-In | 0x1100+ |
| Status je Port | Bit im Bereich 0x0000 |
Die obigen Werte sind Beispiele; verwenden Sie im Einsatz die Register-Map aus dem Datenblatt des Master.
Überlegungen für eine spätere native Implementierung
| Option | Abhängigkeiten | Aufwand |
|---|---|---|
| Hersteller-SDK (ifm IODD finder, Balluff IO-Link Device Tool) | nur Windows, keine Java-Unterstützung | hoch |
| IODD-Parser + master REST kombiniert | XML-IODD-Parsing + master REST | mittel |
| OPC UA companion spec wrapper | bereits durch OPCUA-Treiber gelöst | gering |
Bei IO-Link ist die Integration über master-Hardware das grundsätzliche Standardmodell. Aus Sicht von PlantPulse besteht kaum Bedarf für einen neuen nativen Treiber; die Kombination aus OPCUA- / Modbus- / EIP- / HTTP-Treiber deckt praktisch alle Master ab.
stub-Registrierung (nur zum Test)
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": []
}'