基于 CAN 总线的 modbus 通信设计摘要:CAN 总线是由德国 BOSCH 公司开发了的,其主要用于汽车计算机控制系统,而在工业控制领域较少适用,在工业领域用的最多的是 RS485 总线
CAN总线较 RS485 总线具有网络各节点之间的数据通信实时性强,开发周期短,已形成国际标准的现场总线等优点
因此 CAN 总线是比较有前途的现场总线之一,在工业控制领域代替 RS485 是有可能的
为了能简单地应用 CAN 总线代替 RS485 总线,假如采纳比如 CANopen 等协议使得设备变得复杂化,那么有没有简单点的协议
很多做过工业设备的工 程 师 都 熟 悉 MODBUS 协 议 , 在 RS485 总 线 上 跑 的 最 多 的 协 议 就 是MODBUS,假如我们在 CAN 总线上运行 MODBUS 协议,那么做过 RS485的工程师就能很快地转移过来,减少了开发难度
所以本文就以 CAN 总线上跑 MODBUS 协议为目的对数据网络层协议进行设计
概念:MODBUS 有主从概念,CAN 总线支持多主,在这里我们把主机叫做客户端,从机叫做服务器
在 CAN 总线上采纳客户端服务器的概念
在进行协议介绍前先对 CAN MODBUS 进行简单的介绍
MODBUS:阅读过 MODBUS 协议的人都知道 modbus 有 ASCII 和 RTU 模式,其中 RTU 模式用的较多,一个数据包在网络上传输我们必须知道包的开始和结束,在 RTU 模式中数据包是以至少 3
5 个字符的静默时间开始和结束的,假如信息结束前存在超过 1
5 个字符以上的间隔时间则出错
为了检测这些时间间隔,在程序上将变得很被动
ASCII 虽然有专用的开始结束标志符,但是ASCII 需要把一个字节数据传换为两个字符发送所以其效率低
所以还是得采纳 RTU 模式,但得根据 CAN 总线的特点解决数据