一、问题的本质:OT 侧的协议碎片化
做工业数据采集的人都会遇到同一个结构性矛盾:上位控制系统(PLC / SCADA)活在 Modbus 世界里,
而现场的执行设备大批活在 CAN 世界里。
典型场景是新能源船舶充电系统:PLC 作为上位控制,要持续采集充电装置的温度、电压、电流等多路参数,
还要下发启动充电、停止充电等控制指令;而充电装置的通信接口是 CAN。两套协议栈不对话,
数据就卡在这一层。
常见的三种解法,工程代价差别很大:
① 上位机直接解析 CAN | PLC / 上位程序里写报文解析 | 报文建模 + 字节序解析 + 浮点还原全部自己扛,与业务逻辑强耦合;加一个点位改一处代码 |
② CAN 转以太网透传 | 只做链路层透传 | 数据还是原始字节流,解析仍然留在上位机 |
③ CAN 转 Modbus 协议转换网关 | 网关按映射表做语义级协议转换 | 上位机只读标准 Modbus 寄存器,零 CAN 代码 |
本文走的是第 ③ 条路径,案例型号为筑想智控 FTK-GW501 / FTK-GW511 CAN 转 Modbus 协议网关。
二、方案分层
┌──────────────────────────────────────────────┐
│ 应用层 PLC 程序 / SCADA / MES / 数据采集 │
├──────────────────────────────────────────────┤
│ 协议层 Modbus TCP / UDP(标准寄存器读写) │
├──────────────────────────────────────────────┤
│ 转换层 FTK-GW501 / GW511 协议转换网关 │ ← 映射表在这里
│ Modbus 从站(服务器) ←→ CAN 主站 │
├──────────────────────────────────────────────┤
│ 现场层 CAN 总线:充电装置 / 传感器 / 执行器 │
└──────────────────────────────────────────────┘
网关在这个架构里同时扮演两个角色:
对上层应用的意义是:CAN 的存在被完全封装在转换层。PLC 工程师不需要学 CAN 协议,
SCADA 组态不需要为 CAN 单独做驱动,接入方式和接一台 Modbus 仪表没有区别。
三、为什么"配置化"比"编码化"更适合批量交付
这是我认为这套方案最值得说的一点。
编码化的解法里,CAN 解析代码是项目私有资产——它和这个项目的点位、地址、业务逻辑绑死。
下个项目换一种充电装置,报文结构变了,代码得重写。
网关方案把这件事变成了映射表:
配套上位机软件支持映射表的 .csv / .xlsx 导入导出,配置完成后"写入配置"掉电保存。
"点表即配置资产"——这是批量交付能起来的前提。
四、映射设计要点
可用寄存器范围(手册规定)
两条对齐规则(必须遵守)
映射容量(决定单网关带点数)
CAN 帧侧参数:帧 ID 32 位自由配置;支持标准帧 / 扩展帧、数据帧 / 远程帧;DLC 0~8 Bytes;
CAN-TX 支持 Trace 触发(值变化即发)与 Timer 定时(周期 1~65535 ms)两种发送模式。
五、以太网侧怎么收发 CAN 报文:请求报文与映射的对应关系
这一层是很多人配置完还犯迷糊的地方,说清楚其实很简单:
所以读寄存器的响应时间只取决于 Modbus 侧,与 CAN 总线当时忙不忙无关——
但反过来说,读到的是网关最近一次收到的值,判新不要只看数值,要用状态位辅助。
所以上位机不要反复写同一个值(比如周期性地把 1 写进寄存器),那样会反复发同一帧 CAN;
正确的做法是只在状态发生变化时写一次。
六、与上层系统的衔接边界(重要)
这里要划清一条线,避免把能力说过头:
也不提供 MQTT / HTTP 等应用层协议。
再按各自的通道往上送——也就是说,网关的作用是把"CAN 现场数据"整理成"标准数据源",
为后续数据链路上移扫清了协议障碍。
注意规划各自的轮询周期,避免总线与转换资源被抢。
七、同一套方法在其他场景的延伸
这套"网关做语义转换、上位只读寄存器"的结构并不限于充电系统,
凡是"上位 Modbus、现场 CAN"的组合都能直接套用:
其中储能场景(BMS 与 PCS 之间、以及两者对上位 EMS 的沟通)是双 CAN 网关最典型的价值点:
一台设备两个独立通道、两套独立波特率,省掉一层中间的协议转换环节。
八、工程落地要点
配置流程:以太网连接(PC 与网关同网段,出厂默认 192.168.1.x)→ 搜索设备 → 读取配置 →
通用配置(CAN 波特率、IP / 端口 / 协议类型)→ CAN-RX 映射 → CAN-TX 映射 → 写入配置(掉电保存)
→ CAN 端口监测验证。
接线与 EMC:
FTK-GW511 / GW512 需外接电阻。
20K→3300m、10K→6700m、5K→10000m。距离紧张先降波特率。
设备多、距离远或电磁环境复杂时改用链型网络并配 CAN 中继器做网络分割。
系统双看门狗;工作温度 −40℃~85℃;DC9~32V 宽压;铝合金外壳,DIN35 导轨安装。
九、效率与成本估算
估算口径(非客户实测,假设全部列出,可按自己公司的单价重算):
单套系统 PLC 侧交互点位约 32 个;手工方案单点位 0.75 工时(含报文建模、字节序解析、地址分配、单点联调);
网关方案单点位 4 分钟(填表);地址规划各 0.5 人天;现场联调手工 1.5 人天、网关 0.5 人天;
8 工时 = 1 人天;工程师综合成本按 1000 元/人天。
这套估算的意义不在绝对值,而在于它把"协议转换"从不可控的开发风险,变成了可预算的配置工作量。
十、适用边界与选型
适用:上位控制是 Modbus 主站(PLC / 上位机 / SCADA),下位是 CAN 设备,
且点位数量在网关映射容量内(单 CAN 256 组 / 双 CAN 每通道 160 组)。
不适用:需要网关自己接入云平台或跑应用层协议的场景——这时它只应作为数据源,
上移动作交给上层。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。