驱动概述
PlantPulse Edge 支持的工业协议一览。
各驱动实现于 plantpulse-edge-driver.jar 中的
plantpulse.driver.protocol.<proto> 包内,
由 ProtocolDriverFactory.createDriver(opc_type) 根据 APP_OPC.OPC_TYPE 字符串创建实例。
实现方式大致分为两类。
- 自研 Java 实现(占大多数): 除 LS、EIP、ADS、OP、FINS、MEWTOCOL、FATEK、NMEA、MBUS、HART、DNP3、IEC61850、SECSGEM 之外,Modbus 系列(TCP/UDP/RTU)、PROFINET、AB-ETH、BACnet、KNXnet、CANopen 也已于 2026-07 完成原生重写(原有 Apache PLC4j 委托全部移除 —— PLC4X 依赖本身已删除)。不依赖任何外部 native/JNI,直接在纯 Java socket 之上编写协议帧处理。
- 依赖硬件 master 的 stub(仅提供指南): DALI、IO-Link、DeltaV。文档中说明推荐架构:不在网关内部直接读取,而是通过上层协议(OPC UA / Modbus / PROFINET / DeltaV OPC UA)桥接。(ROS 2 已通过 rosbridge WebSocket 实现毕业 —— 参见 连接类型。)
此外,直接沿用 iot-communication (xingshuangs) 库的 GE/MELSEC/S7、基于 Eclipse Milo 的 OPC UA,以及自研 HTTP 客户端构成辅助路线。
支持协议一览
通用 PLC / 常规协议
opc_type | 协议 | 库 | 状态 | 页面 |
|---|---|---|---|---|
LS | LS XGI/XBC/XBM (FEnet) | 自研 Java | 稳定 | LS |
GE | GE SRTP / GE Fanuc | iot-communication (xingshuangs) | 稳定 | (筹备中) |
MELSEC | Mitsubishi MELSEC (MC) | iot-communication (xingshuangs) | 稳定 | MELSEC |
S7 | Siemens S7-300/400/1200/1500 | iot-communication (xingshuangs) | 稳定 | S7 |
MODBUS | Modbus TCP | 自研 Java | 稳定(读+写) | Modbus |
MODBUSUDP | Modbus UDP | 自研 Java(MBAP-over-UDP) | 稳定(读+写) | Modbus |
MODBUS_RTU | Modbus RTU | 自研 Java(RTU-over-TCP) | 稳定(读+写) | Modbus RTU |
OPCUA | OPC Unified Architecture | Eclipse Milo | 稳定 | OPC-UA |
美系 PLC
opc_type | 协议 | 库 | 状态 | 页面 |
|---|---|---|---|---|
EIP | EtherNet/IP CIP (Allen-Bradley Logix) | 自研 Java(参考 etherip 设计,纯 Java) | 稳定(读+写) | EIP |
AB-ETH | Allen-Bradley PLC-5/SLC-500 | 自研 Java(CSP/PCCC) | 稳定(只读,TCP/2222) | AB-ETH |
欧系 / 楼宇自动化
opc_type | 协议 | 库 | 状态 | 页面 |
|---|---|---|---|---|
ADS | Beckhoff TwinCAT/ADS | 自研 Java(AMS/ADS) | 稳定(读+写) | ADS |
PROFINET | PROFINET(非周期 record) | 自研 Java(DCE/RPC Read-Implicit) | 稳定(只读,UDP/34964 —— 不支持周期性 RT) | PROFINET |
BACNET | BACnet/IP(HVAC/楼宇) | 自研 Java(ReadProperty) | 稳定(只读,UDP/47808) | BACnet |
KNXNET | KNXnet/IP(照明/遮阳) | 自研 Java(UDP tunneling) | 稳定(读+写,UDP/3671) | KNXnet |
日系 PLC
opc_type | 协议 | 库 | 状态 | 页面 |
|---|---|---|---|---|
FINS | OMRON FINS over TCP | 自研 Java | 稳定(一期 read) | (筹备中) |
MEWTOCOL | Panasonic MEWTOCOL | 自研 Java | 稳定(一期 read) | (筹备中) |
FATEK | FATEK FBs | 自研 Java | 稳定(一期 read) | (筹备中) |
工业通信 / 领域专用
opc_type | 协议 | 库 | 状态 | 页面 |
|---|---|---|---|---|
OP | Atlas Copco Open Protocol(拧紧结果) | 自研 Java(OpenProtocolJavaDriver) | 稳定 —— 已完成对 Node.js runner 的替代 | (筹备中) |
NMEA | NMEA 0183(海洋/船舶) | 自研 Java | 稳定(只读,sentence 缓存) | (筹备中) |
MBUS | M-Bus(EN 13757,仪表) | 自研 Java | 稳定(一期 read) | (筹备中) |
HART | HART-IP(HCF,4-20mA + 数字量) | 自研 Java | 稳定(一期 read,cmd 0/1/3/13) | (筹备中) |
DNP3 | DNP3(IEEE 1815,电力公用事业) | 自研 Java | 稳定(一期 read,G1/G30) | (筹备中) |
IEC61850 | IEC 61850 MMS(变电站) | 自研 Java(完整 ISO 栈) | 稳定(读+写 + BRCB/URCB 报告) | IEC 61850 |
SECSGEM | SECS/GEM HSMS(半导体) | 自研 Java | 一期(HSMS 握手 —— SECS-II 报文体后续阶段) | (筹备中) |
CANOPEN | CANopen(机械设备) | 自研 Java(SDO expedited,CAN-over-TCP) | 稳定(只读,TCP/20200) | CANopen |
DALI | DALI(照明、楼宇) | (依赖硬件 master —— stub) | 仅指南(推荐 OPC UA / Modbus 桥接) | DALI |
IO_LINK | IO-Link(传感器 master) | (依赖硬件 master —— stub) | 仅指南(PROFINET/EtherNet-IP 桥接) | IO-Link |
其他 / 外部接口
opc_type | 协议 | 库 | 状态 | 页面 |
|---|---|---|---|---|
HTTP | HTTP(外部 push 或轮询) | 自研 | 稳定,支持写入 | HTTP |
MOTOR_SENSE | KOPENS Motor Sense | 自研(独立 jar,反射加载) | 稳定 | HTTP / Motor Sense |
ROS2 | ROS 2(机器人/AGV) | rosbridge_suite(JSON over WebSocket) | 主题订阅 read(已实现) | ROS 2 |
DELTAV | Emerson DeltaV (DCS) | (专有 —— stub) | 仅指南(必须经由 DeltaV OPC UA) | DeltaV |
分类汇总 —— 通用 PLC 8 / 美系 2 / 欧洲·楼宇 4 / 日系 3 / 工业通信·领域 10 / 其他 4 = 29
opc_type。 标注"(筹备中)"的页面将来会拆分为独立驱动文档,目前以开发者笔记及源码中protocol/<proto>/包的 javadoc 替代plc_address/format规则说明。
通用 OPC 注册表单
通过界面或 POST /api/v1/opc 注册时,所有协议共用的字段:
| 字段 | 含义 | 示例 |
|---|---|---|
opc_id | 网关内唯一 ID | OPC_UA_Kepware |
opc_name | 界面显示名称 | Kepware OPC-UA |
opc_type | 协议类型(参见上表) | OPCUA |
opc_agent_ip | 目标主机 IP | 192.168.0.40 |
opc_agent_port | 目标端口 | 49320 |
site_id | 站点 ID | SITE_00001(自动填充) |
auto_collect | 启动时自动运行 | true/false |
timecycle | 采集周期 (ms) | 1000 |
options | 各协议附加选项 (Map) | {"username":"kopens","password":"***"} |
options 的键名因协议而异。各驱动页面提供详细的键表。
通用标签注册表单
tag_list[] 或 POST /api/v1/opc/{opcId}/tag 的单条注册字段:
| 字段 | 含义 | 示例 |
|---|---|---|
tag_id | 标签唯一 ID(通常为 <OPC_ID>_TAG_<n>) | OPC_LS_XBM_0001_TAG_00001 |
tag_name | 显示名称 | Pump1.RPM |
plc_address | 实际 PLC 地址(格式因协议而异) | D00309 (LS) / ns=2;s=Sine1 (OPCUA) |
data_type | edge 自由字符串(Float、Integer、Boolean、String 等) | Integer |
format | 内存宽度 / 表示格式(可选) | DW (LS) / STR[10] |
description | 说明 | 펌프 회전수 |
fomula | 后处理计算公式(可选,例如 x * 0.1) | x / 10 |
详细的 plc_address 与 format 规则请参见各驱动页面。