驱动概览
这是 PlantPulse Edge 支持的工业协议列表。产品基准 opc_type 44个
(43种驱动 + 1个别名)。
每个驱动都实现在 plantpulse-edge-driver.jar 的 plantpulse.driver.protocol.<proto> 包中,ProtocolDriverFactory.createDriver(opc_type) 根据 APP_OPC.OPC_TYPE 字符串创建实例。
实现分支
- 自主 Java 实现 (大多数) — 在纯 Java 套接字上直接编写协议分帧。 无外部 native·JNI 依赖。在 2026-07 重写 Modbus 系列·PROFINET·AB-ETH·BACnet·KNXnet CANopen 为原生实现后,彻底移除了对 Apache PLC4X 的依赖。
- 外部库 — MELSEC·S7 使用
iot-communication,OPC UA 使用 Eclipse Milo。 - 原生桥接 — FOCAS 将 C++ collector 作为子进程启动,通过 TCP/JSON 读取。
- 4种 stub — CC-Link IE · DALI · IO-Link · DeltaV。引导用户通过上位协议桥接而非网关直接读取的配置。判定标准为是否继承
AbstractStubDriver。
写入支持因驱动而异
下表的 写入 列为准。尝试对不支持写入的驱动进行写入操作将被拒绝。
支持协议列表
通用 PLC / 常规协议
opc_type | 协议 / 设备 | 实现 | 写入 | 默认端口 | 页面 |
|---|---|---|---|---|---|
LS | LS XGI/XBC/XBM (FEnet) | 自主 Java | ✅ | — | LS |
MELSEC | Mitsubishi MELSEC (MC) | iot-communication | ✅ | — | MELSEC |
S7 | Siemens S7-300/400/1200/1500 | iot-communication | ✅ | — | S7 |
MODBUS | Modbus TCP | 自主 Java | ✅ | 502 | Modbus |
MODBUSUDP | Modbus UDP | 自主 Java (MBAP-over-UDP) | ✅ | 502 | Modbus |
MODBUS_RTU | Modbus RTU | 自主 Java (RTU-over-TCP) | ✅ | 502 | Modbus RTU |
OPCUA | OPC UA | Eclipse Milo 1.1.8 | ✅ | — | OPC UA |
美国 PLC 系列
opc_type | 协议 / 设备 | 实现 | 写入 | 默认端口 | 页面 |
|---|---|---|---|---|---|
GE | GE SRTP / GE Fanuc | 自主 Java (纯套接字) | ✅ | 18245 | GE |
EIP | EtherNet/IP · CIP (符号标签) | 自主 Java (ENIP/CIP) | ✅ | 44818 | EtherNet/IP |
LOGIX | AB ControlLogix / CompactLogix | EIP 别名 — 相同驱动 | ✅ | 44818 | EtherNet/IP |
AB-ETH | Allen-Bradley CSP/PCCC (SLC·PLC-5) | 自主 Java | ❌ | 2222 | AB-ETH |
欧洲 / 建筑自动化
opc_type | 协议 / 设备 | 实现 | 写入 | 默认端口 | 页面 |
|---|---|---|---|---|---|
PROFINET | PROFINET (acyclic Read-Implicit) | 自主 Java | ❌ | 34964 | PROFINET |
ADS | Beckhoff TwinCAT ADS | 自主 Java | ✅ | 48898 | ADS |
BACNET | BACnet/IP (ReadProperty) | 自主 Java | ❌ | 47808 | BACnet |
KNXNET | KNXnet/IP (tunneling) | 自主 Java | ✅ | 3671 | KNXnet |
CANOPEN | CANopen (SDO) | 自主 Java | ❌ | 20200 | CANopen |
MBUS | M-Bus (电表) | 自主 Java | ⚠ | 10001 | M-Bus |
IEC61850 | IEC 61850 MMS (电力) | 自主 Java (full ISO stack) | ✅ | 102 | IEC 61850 |
DALI | DALI 照明 | stub | ❌ | — | DALI |
IO_LINK | IO-Link 主站 | stub | ❌ | — | IO-Link |
DELTAV | Emerson DeltaV | stub | ❌ | — | DeltaV |
⚠ M-Bus 的写入仅处理 从站选择命令而非测量值。
日本 · 台湾 PLC 系列
opc_type | 协议 / 设备 | 实现 | 写入 | 默认端口 | 页面 |
|---|---|---|---|---|---|
FINS | Omron FINS | 自主 Java | ✅ | 9600 | FINS |
MEWTOCOL | Panasonic MEWTOCOL | 自主 Java | ✅ | 9094 | MEWTOCOL |
FATEK | Fatek | 自主 Java | ✅ | 500 | Fatek |
KEYENCE_KV | Keyence KV-7500/8000 上位链路 | 自主 Java (ASCII) | ✅ | 8501 | 连接类型 |
CCLINK_IE | CC-Link IE Field | stub | ❌ | — | CC-Link IE |
Keyence KV 尚未经过实际设备验证
线缆格式基于文档实现,未经过实际设备确认。在现场应用前,请通过测试连接比对数值。
工业通信 / 领域特定
opc_type | 协议 / 设备 | 实现 | 写入 | 默认端口 | 页面 |
|---|---|---|---|---|---|
SECSGEM | SEMI SECS/GEM (HSMS) | 自主 Java | ✅ | 5000 | SECS/GEM |
HART | HART-IP | 自主 Java | ✅ | 5094 | HART |
DNP3 | DNP3 (支持 unsolicited) | 自主 Java | ✅ | 20000 | DNP3 |
IEC104 | IEC 60870-5-104 电力遥测 | 自主 Java | ❌ | 2404 | 连接类型 |
FOCAS | FANUC CNC (FOCAS) | 原生桥接 + C++ collector | ❌ | 8193 | FOCAS |
MTCONNECT | MTConnect CNC / 机床 | 自主 Java (HTTP/XML) | ❌ | 5000 | 连接类型 |
OP | Open Protocol (拧紧工具) | 纯 Java | ✅ | 4545 | Open Protocol |
NMEA | NMEA 0183 (船舶·GPS) | 自主 Java | ❌ | 10110 | NMEA |
IEC61162_450 | 海洋航桥 NMEA over UDP 组播 | 自主 Java | ❌ | 60004 (UDP) | 连接类型 |
MOTOR_SENSE | 电机感测 振动·电流传感器 | HTTPS REST (独立 jar) | ❌ | — | 连接类型 |
消息 / 外部接口
opc_type | 协议 / 设备 | 实现 | 写入 | 默认端口 | 页面 |
|---|---|---|---|---|---|
HTTP | HTTP 接收 (缓存 bind) | 自主 Java | (经 bind) | — | HTTP |
WEBSOCKET | WebSocket | 自主 Java | ✅ | 80 / 443 | WebSocket |
MQTT_CLIENT | MQTT 客户端 | Eclipse Paho | ✅ | 1883 / 8883 | MQTT Client |
SPARKPLUG_B | Sparkplug B | 自主 protobuf | ✅ | 1883 | Sparkplug B |
KAFKA | Apache Kafka | kafka-clients 4.1.2 | ✅ | 9092 | Kafka |
COAP | CoAP | Californium 3.13.0 | ✅ | 5683 / 5684 | CoAP |
ROS2 | ROS 2 (rosbridge WebSocket) | 自主 Java | ❌ | 9090 / 9443 | ROS 2 |
SNMP | SNMP v2c (网络设备·UPS) | 自主 Java (BER) | ❌ | 161 (UDP) | 连接类型 |
通用 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 规则在各驱动页面中讨论。