网关做的是语义翻译
Modbus、PROFIBUS、CANopen 这类现场协议围绕寄存器与节点地址组织数据,MQTT 围绕主题与载荷组织消息。网关要做两件事:南向按协议周期读取点位,北向按约定结构把点位发布出去;中间还要处理采样周期、变化上报、断网缓存与重连补传。翻译规则一旦上线就是接口契约。
基本信息
| 南向协议 | Modbus RTU/TCP、CANopen、PROFIBUS、OPC UA 等,取决于网关支持范围 |
|---|---|
| 北向协议 | MQTT 3.1.1 或 5.0,涉及 QoS、保留消息、遗嘱消息等选项 |
| 映射关系 | 点位表(地址、数据类型、字节序)到主题与载荷字段的对应规则 |
| 运行要素 | 采集周期、变化上报阈值、本地缓存容量、断线重连与补传策略 |
| 落地前提 | 先冻结点位表与主题命名规范,再配置网关 |
主题映射示例
主题映射示例
# 现场点位:站号 3、保持寄存器、温度值
# 主题:acme/line1/station3/temperature
# 载荷:{"ts":1710000000,"v":23.6}
# 变化上报:温差超过阈值才发布,避免无变化的高频数据
# 断网:本地环形缓存,重连后按时间顺序补传并标记补传标志典型对接方式
| 方式 | 适用 | 注意 |
|---|---|---|
| 轮询采集 | 点位少、变化慢的寄存器读写 | 采集周期要与设备响应时间匹配,避免压垮慢速串行链路 |
| 订阅式采集 | 设备或中间层支持变化推送(如 OPC UA 订阅) | 需要处理订阅失效与重连后重新订阅 |
| 事件触发上报 | 只在状态变化或达到阈值时发布 | 阈值设置不当会造成消息风暴或漏报 |
| 批量分组上报 | 把多个点位打包进一条消息 | 单条消息过大时要评估网络 MTU 与服务端限制 |
典型使用场景
- 存量产线数据采集:不改动控制器程序,用网关旁路读取
- 多协议车间统一接入:南向接多种现场协议,北向统一为标准主题
- 断网续传:现场网络不稳定时靠本地缓存保证数据不丢
- 本地控制与云端监控并存:网关保留现场闭环,云端只做展示与分析
点位表与主题命名规范应在项目初期冻结并做版本管理:后期修改主题意味着所有订阅方同步改动,代价远高于前期多花几天评审。
向控制器写入的通道必须单独授权并做权限隔离。读采集与写控制共用一个账号,一次误配置就可能直接影响生产。