跳到主要内容

IO-Link(传感器主站)驱动

概述

IO-Link(IEC 61131-9)是用于连接传感器/执行器 ↔ master 的单线双向串行通信标准。 master 通过 PROFINET / EtherNet/IP / Modbus TCP / OPC UA 等与上位系统(PLC、SCADA、Edge)连接, 传输过程数据(PD)、识别数据(ISDU)和事件。

项目
opc_typeIOLINK
实现类plantpulse.driver.protocol.iolink.IOLink_Driver
(无 — stub)
read⛔ stub(返回 ""
write⛔ stub
安全不适用(由 master 侧实施认证)
当前状态:stub 驱动

IOLINK 仅存在形式上的 stub。若要实际获取数据,请将 IO-Link master 的上位接口 (PROFINET / Modbus TCP / EIP / REST)注册为 PlantPulse 的其他驱动。


为什么难以进行 native 实现

IO-Link 使用 3 线制串行(24V / GND / C/Q)物理层。 在 PC 上直接生成/解码 IO-Link 信号需要配备专用 IC(例如 Maxim MAX14819)的 板卡,而一般的工业 PC / Linux 服务器并不具备此类接口。

因此,所有集成都必须经由 IO-Link master 硬件

主站类别代表产品上位接口
8 端口 PROFINET masterifm AL1100/AL1xxx、Balluff BNI008xPROFINET、OPC UA
8 端口 EtherNet/IP masterBalluff BNI EIP、ifm AL13xxEtherNet/IP、REST
8 端口 Modbus TCP masterPepperl+Fuchs ICE3-8IOL、Murr Cube67Modbus TCP
Hybrid(multi-protocol)Turck TBEN-S2、Banner R90CPROFINET / EIP / Modbus TCP / REST

替代运行方式

商用 IO-Link master 几乎都以 PlantPulse 已支持的工业协议对外提供接口。

Master 提供的接口应使用的 PlantPulse 驱动页面
PROFINETPROFINET 试点 — 或同时启用 master 的 OPC UA)— / OPC-UA
EtherNet/IPEIPEIP
Modbus TCPMODBUSModbus
OPC UA Companion Spec for IO-LinkOPCUAOPC-UA
JSON RESTHTTPHTTP

推荐配置示例(ifm AL1100 / Balluff BNI)

OPC UA Companion Specification for IO-Link

支持 OPC Foundation 的 IO-Link Companion Spec 的 master(如 ifm、Balluff 的最新固件) 会将各端口的 PD/ISDU 表示为 OPC UA 节点。只需以 PlantPulse 的 OPCUA 驱动直接注册, 即可轮询各端口的传感器值,是最简洁的集成方式。


常用 ISDU 按端口映射(参考)

使用 IO-Link master 的 Modbus TCP 接口时,请参考 master 手册中的 register map。 各 master 的 register layout 各不相同,因此务必阅读对应厂商手册

数据一般位置(例:ifm AL1100)
端口 1 PD-InHolding Register 0x1000+
端口 2 PD-In0x1100+
各端口 status0x0000 区域中的 bit

以上数值仅为示例,实际使用时请直接采用 master 数据手册中的 register map。


日后进行 native 实现时的考量事项

选项依赖难度
厂商 SDK(ifm IODD finder、Balluff IO-Link Device Tool)仅限 Windows,不支持 Java
IODD 解析器 + master REST 组合XML IODD 解析 + master REST 组合
OPC UA companion spec wrapper已可通过 OPCUA 驱动解决
结论

IO-Link 本质上以通过 master 硬件进行集成为标准模型。 对 PlantPulse 而言,新建 native 驱动的必要性较低,通过 OPCUA / Modbus / EIP / HTTP 驱动的组合几乎可以覆盖所有 master。


stub 注册(仅用于测试)

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": []
}'