首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >工业现场协议打通实践:CAN 设备如何低成本接入 PLC 与上位系统

工业现场协议打通实践:CAN 设备如何低成本接入 PLC 与上位系统

原创
作者头像
用户6456826
修改于 2026-10-23 15:43:52
修改于 2026-10-23 15:43:52
50
举报
文章被收录于专栏:解决方案解决方案

一、问题的本质: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 总线:充电装置 / 传感器 / 执行器 │

└──────────────────────────────────────────────┘

网关在这个架构里同时扮演两个角色:

  • 对上层:Modbus TCP / UDP 从站(服务器),最多支持 8 个以太网主站连接与数据交互;
  • 对下层:CAN 主站,按映射表主动收发 CAN 帧。

对上层应用的意义是:CAN 的存在被完全封装在转换层。PLC 工程师不需要学 CAN 协议,

SCADA 组态不需要为 CAN 单独做驱动,接入方式和接一台 Modbus 仪表没有区别。

三、为什么"配置化"比"编码化"更适合批量交付

这是我认为这套方案最值得说的一点。

编码化的解法里,CAN 解析代码是项目私有资产——它和这个项目的点位、地址、业务逻辑绑死。

下个项目换一种充电装置,报文结构变了,代码得重写。

网关方案把这件事变成了映射表:

配套上位机软件支持映射表的 .csv / .xlsx 导入导出,配置完成后"写入配置"掉电保存。

"点表即配置资产"——这是批量交付能起来的前提。

四、映射设计要点

可用寄存器范围(手册规定)

  • 采集方向 CAN-RX:离散输入 1x(02,0~1984)、保持寄存器 4x(03,0~2044)、输入寄存器 3x(04,0~1020)
  • 控制方向 CAN-TX:线圈 0x(01/05/15,0~1984)、保持寄存器 4x(03/06/16,0~2044)

两条对齐规则(必须遵守)

  • 1x / 0x 区每个寄存器占 1 位,首地址必须是 8 的整数倍;
  • 3x / 4x 区每个寄存器占 2 字节,一个 REAL 占 2 个连续寄存器。

映射容量(决定单网关带点数)

  • FTK-GW501 / GW502(单 CAN):CAN-RX 与 CAN-TX 各 256 组
  • FTK-GW511 / GW512(双 CAN):每通道各 160 组,每口共 320 组

CAN 帧侧参数:帧 ID 32 位自由配置;支持标准帧 / 扩展帧、数据帧 / 远程帧;DLC 0~8 Bytes;

CAN-TX 支持 Trace 触发(值变化即发)与 Timer 定时(周期 1~65535 ms)两种发送模式。

五、以太网侧怎么收发 CAN 报文:请求报文与映射的对应关系

这一层是很多人配置完还犯迷糊的地方,说清楚其实很简单:

  1. 采集方向是"网关缓存 + 上位机来读",不是"上位机来问、网关再去 CAN 上取一次"。

所以读寄存器的响应时间只取决于 Modbus 侧,与 CAN 总线当时忙不忙无关——

但反过来说,读到的是网关最近一次收到的值,判新不要只看数值,要用状态位辅助。

  1. 控制方向用 Trace 模式时,"写值"这个动作本身就是触发条件。

所以上位机不要反复写同一个值(比如周期性地把 1 写进寄存器),那样会反复发同一帧 CAN;

正确的做法是只在状态发生变化时写一次。

六、与上层系统的衔接边界(重要)

这里要划清一条线,避免把能力说过头:

  • 网关负责到 Modbus 为止。 它输出的是标准 Modbus TCP / UDP 从站接口,不直接对接云平台,

也不提供 MQTT / HTTP 等应用层协议。

  • 上云由上层完成。 PLC、SCADA、边缘采集网关或上位机读取网关的 Modbus 寄存器之后,

再按各自的通道往上送——也就是说,网关的作用是把"CAN 现场数据"整理成"标准数据源",

为后续数据链路上移扫清了协议障碍。

  • 并发采集:网关支持最多 8 个以太网主站同时连接,多系统并行采集同一台网关时,

注意规划各自的轮询周期,避免总线与转换资源被抢。

七、同一套方法在其他场景的延伸

这套"网关做语义转换、上位只读寄存器"的结构并不限于充电系统,

凡是"上位 Modbus、现场 CAN"的组合都能直接套用:

其中储能场景(BMS 与 PCS 之间、以及两者对上位 EMS 的沟通)是双 CAN 网关最典型的价值点:

一台设备两个独立通道、两套独立波特率,省掉一层中间的协议转换环节。

八、工程落地要点

配置流程:以太网连接(PC 与网关同网段,出厂默认 192.168.1.x)→ 搜索设备 → 读取配置 →

通用配置(CAN 波特率、IP / 端口 / 协议类型)→ CAN-RX 映射 → CAN-TX 映射 → 写入配置(掉电保存)

→ CAN 端口监测验证。

接线与 EMC:

  1. CAN 总线首尾两端各接 120Ω 终端电阻。FTK-GW501 / GW502 可将 CANR 接 CANL 启用内置 120Ω;

FTK-GW511 / GW512 需外接电阻。

  1. 速率与距离要校核:1M→40m、500K→130m、250K→270m、125K(默认)→530m、50K→1300m、

20K→3300m、10K→6700m、5K→10000m。距离紧张先降波特率。

  1. CANPE 接屏蔽层 / 地,CANG 悬空或接总线共地,全现场接地方式统一;用双绞屏蔽线;

设备多、距离远或电磁环境复杂时改用链型网络并配 CAN 中继器做网络分割。

  1. 硬件可靠性:CAN / 以太网 / 电源三者 3KV 电气隔离,配置浪涌、过压、过流、共模抑制与防雷;

系统双看门狗;工作温度 −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 删除。

问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档