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