3. 常见工业协议概览
在工业网关的数据映射工程中,第一步往往不是写映射规则,而是判断“对面站的是什么协议”。协议决定了数据以什么帧结构、什么寻址方式、什么刷新节奏进入网关,也决定了网关能否直接解析、是否需要额外转换、是否支持订阅或只能轮询。本节把常见工业协议按“现场总线—工业以太网—信息集成—物联网”四个层次梳理,帮助你在项目初期快速定位协议选型与映射策略。
一、核心原理:协议分层与数据承载方式
工业协议可以粗略分为三类数据承载模型:主从轮询(如 Modbus RTU/TCP)、生产者/消费者或发布/订阅(如 EtherNet/IP、Profinet RT、MQTT)、面向对象的地址空间服务(如 OPC UA)。主从轮询的网关需要主动发起请求,映射时关注寄存器地址与功能码;发布/订阅类协议通常由设备主动上报,网关需要处理连接管理与超时;OPC UA 则通过节点 ID 和浏览服务获取结构化数据,映射时更关注命名空间与数据类型。
关键判断:网关做数据映射前,先确认三件事——协议是轮询还是订阅、数据是位/字/字节序如何排列、时间戳由谁提供。这三项直接决定映射表的字段设计。
二、主流协议特点与适用场景
下面按现场层、控制层、信息层、物联网层分别说明。
- Modbus RTU/TCP:最简单、最通用的主从协议。RTU 走 RS-485 串口,TCP 走以太网。地址空间为线圈、离散输入、输入寄存器、保持寄存器。适合仪表、变频器、小型 PLC、电表等低速采集场景。缺点是语义弱、无标准数据类型、无时间戳。
- Profibus DP:经典现场总线,RS-485 物理层,主从轮询,速率 9.6 kbps~12 Mbps。适合西门子 S7-300/400 及远程 IO。映射时需关注 GSD 文件中的模块化槽位与输入/输出字节长度。
- Profinet:基于工业以太网的实时协议,支持 RT 和 IRT。使用 GSDML 描述设备,循环数据通过 IO 控制器与 IO 设备交换。适合西门子 TIA 体系、运动控制与高实时场景。
- EtherNet/IP:基于 CIP 协议,使用 TCP 做显式消息、UDP 做隐式 I/O。适合罗克韦尔、AB PLC 及大量欧美设备。映射时关注 Assembly 实例号与连接参数。
- OPC UA:跨平台、面向对象、自带信息模型与安全机制。支持客户端/服务器与 PubSub。适合 MES、SCADA、跨厂商数据集成。映射时关注 NodeId、BrowseName、数据类型与订阅周期。
- MQTT:轻量级发布/订阅消息协议,基于 TCP,适合云边协同与无线传输。主题层级即数据路径,QoS 决定可靠性。适合远程监控、低带宽、海量点位场景。
- CANopen:基于 CAN 总线的应用层协议,使用对象字典(OD)和 PDO/SDO。适合运动控制、工程机械、医疗设备。映射时关注 COB-ID、PDO 映射参数与字节序。
三、方法流程:从协议识别到映射表设计
面对一个具体项目,建议按以下流程推进:
- 识别协议与角色:确认网关是主站还是从站、是客户端还是服务端。例如 Modbus 网关通常做 Master,OPC UA 网关通常做 Client。
- 获取描述文件:Profibus 要 GSD,Profinet 要 GSDML,EtherNet/IP 要 EDS,CANopen 要 EDS/DCF,OPC UA 要节点浏览结果。
- 提取地址与数据类型:记录寄存器地址、位偏移、字节序、数据类型(INT、REAL、BOOL、STRING)。
- 建立映射表:把源协议点位映射到目标协议点位,标注缩放系数、单位、读写方向、刷新周期。
- 验证与回环测试:用模拟器或实际设备验证读写,检查字节序与超时。
# 示例:Modbus 到 MQTT 的映射片段
source: modbus_tcp
host: 192.168.1.10
port: 502
unit_id: 1
points:
- name: motor_speed
func: 03 # 保持寄存器
address: 40001
type: uint16
scale: 0.1
unit: rpm
target: mqtt
broker: tcp://192.168.1.200:1883
topic: factory/line1/motor/speed
qos: 1
retain: false
四、案例场景:多协议混合产线
某装配线中,PLC 使用 Profinet 连接远程 IO,变频器使用 Modbus RTU,视觉相机使用 EtherNet/IP,上位机通过 OPC UA 采集,同时需要把关键数据上传到云平台。网关需要同时运行四种协议栈:Profinet 做 IO 控制器、Modbus 做主站、EtherNet/IP 做扫描器、OPC UA 做客户端,再把统一后的数据通过 MQTT 发布。此时映射表要解决的核心问题是时间对齐与命名统一:不同协议的刷新周期不同,必须为每个点位设置独立采样周期,并统一命名空间,避免云端出现同名不同义的点位。
五、常见误区与复盘
误区一:认为 Modbus 地址 40001 就是“第 40001 个寄存器”。实际是功能码 03、偏移 0,协议地址与文档地址常差 1。
误区二:忽略字节序。Modbus 默认大端,但部分设备按小端或字交换,映射后数值会完全错误。
误区三:把 OPC UA 当成“另一个 Modbus”。OPC UA 有信息模型和订阅机制,映射时应保留节点语义,而不是简单拍平成寄存器。
误区四:MQTT 的 QoS 与工业实时性混淆。QoS 1 只保证到达,不保证周期,不能替代实时控制。
| 协议 | 物理层/传输 | 通信模型 | 典型适用场景 | 映射关注点 |
|---|---|---|---|---|
| Modbus RTU/TCP | RS-485 / TCP | 主从轮询 | 仪表、变频器、电表 | 功能码、寄存器地址、字节序 |
| Profibus DP | RS-485 | 主从轮询 | 西门子远程 IO | GSD、槽位、输入输出字节 |
| Profinet | 工业以太网 | 循环 IO / RT·IRT | 高实时运动控制 | GSDML、设备名、IO 数据长度 |
| EtherNet/IP | TCP/UDP | 显式/隐式消息 | 罗克韦尔、欧美设备 | Assembly 实例、连接参数 |
| OPC UA | TCP / PubSub | 客户端/服务器、订阅 | MES、SCADA、跨厂商集成 | NodeId、命名空间、数据类型 |
| MQTT | TCP | 发布/订阅 | 云边协同、远程监控 | 主题层级、QoS、保留消息 |
| CANopen | CAN | PDO/SDO、对象字典 | 运动控制、工程机械 | COB-ID、PDO 映射、字节序 |