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 映射参数与字节序。
工业协议分层与网关映射关注点 现场层 / 设备层 控制层 / 实时 IO 信息集成层 物联网 / 云边层 Modbus RTU RS-485 主从轮询 CANopen CAN 总线 / PDO·SDO Profibus DP GSD / 槽位字节 Modbus TCP 以太网 / 寄存器寻址 Profinet RT GSDML / 循环 IO EtherNet/IP CIP / Assembly 实例 Profinet IRT 等时同步 / 运动控制 CANopen PDO 实时过程数据 OPC UA Client/Server NodeId / 信息模型 / 订阅 OPC UA PubSub UDP / 时间敏感数据 数据库 / MES 结构化集成 MQTT Broker 主题 / QoS / 发布订阅 云平台 / 边缘计算 远程监控 / 低带宽 网关映射引擎 协议转换 / 点位映射 采集/控制 语义集成 上云/远程

三、方法流程:从协议识别到映射表设计

面对一个具体项目,建议按以下流程推进:

  1. 识别协议与角色:确认网关是主站还是从站、是客户端还是服务端。例如 Modbus 网关通常做 Master,OPC UA 网关通常做 Client。
  2. 获取描述文件:Profibus 要 GSD,Profinet 要 GSDML,EtherNet/IP 要 EDS,CANopen 要 EDS/DCF,OPC UA 要节点浏览结果。
  3. 提取地址与数据类型:记录寄存器地址、位偏移、字节序、数据类型(INT、REAL、BOOL、STRING)。
  4. 建立映射表:把源协议点位映射到目标协议点位,标注缩放系数、单位、读写方向、刷新周期。
  5. 验证与回环测试:用模拟器或实际设备验证读写,检查字节序与超时。
# 示例: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/TCPRS-485 / TCP主从轮询仪表、变频器、电表功能码、寄存器地址、字节序
Profibus DPRS-485主从轮询西门子远程 IOGSD、槽位、输入输出字节
Profinet工业以太网循环 IO / RT·IRT高实时运动控制GSDML、设备名、IO 数据长度
EtherNet/IPTCP/UDP显式/隐式消息罗克韦尔、欧美设备Assembly 实例、连接参数
OPC UATCP / PubSub客户端/服务器、订阅MES、SCADA、跨厂商集成NodeId、命名空间、数据类型
MQTTTCP发布/订阅云边协同、远程监控主题层级、QoS、保留消息
CANopenCANPDO/SDO、对象字典运动控制、工程机械COB-ID、PDO 映射、字节序