前言
近期需要制作一个MODBUS/RTU转MODBUS/TCP 的网关。首先需要了解一下MODBUS通信协议。
这篇文章在学习过程中作为总结,如有错误,请多指教。
MODBUS协议简介
MODBUS协议是美国Modicon公司(现已被收购)首先推出的基于RS485总线的通信协议,有RS232/RS422/RS485接口标准。Modbus已经成为工业领域通信协议的业界标准,并且现在是工业电子设备之间常用的连接方式。
MODBUS协议是一种 主从式 串行异步 半双工 通信协议。
主从式 指通信设备中有一台主机和多台从机(最大约240个),主机可以和从站双向通信,可以和单独一个从站通信,或者所有从站同时通信(广播),这个时候不需要回应。而从站只能和主站通信,从站之间不能相互通信,从机也不会主动给主机发送信息,只会应答主机。
MODBUS主站同时只会发起一个事物处理,只会与一个从站通信。
串行异步
异步串行通信是指通信双方以一个字符(包括特定附加位)作为数据传输单位且发送方传送字符的间隔时间不一定,具有不规则数据段传送特性的串行数据传输。
半双工
半双工指通信双方在某一时刻只能发送或接收,就像打电话,一方说话的时候另一方就不要说。
MODBUS通信格式
MODBUS采用的是异步串行通信方式,是对单个字符传送的约定。其中包含的波特率,校验方式,停止位个数等数据可以自行设定,只要通信双方一致即可。
单片机里面的串口用的也是这种方式,但是是TTL电平,而MODBUS使用的是RS232/RS422/RS485接口标准,和单片机通信需要进行电平转换。
信息帧格式
信息帧格式就是报文,包含了帧结构的定义,帧顺序,和功能码以及数据等内容。这些内容除了数据是用户自定的,其他的顺序以及格式有着严格的要求,所有采用MODBUS通信协议的必须遵守这些约定。
MODBUS一帧信息基本格式是:表头 + 功能码 + 数据区 + 校验码 + 停止码
表头根据不同通信方式有所不同,但是每一种通信方式的表头形式是一样的,字节数量也是固定的。
功能码也是规定好的,符号和它代表的功能是所有人的遵守的。
数据区由于功能码的不同,数据区长度会有不同,但是数据区的格式是固定的。
校验码和停止码的格式也有相应固定的格式。
功能码和数据区在所有通信方式下的格式是固定的,而其他部分不同的通信格式有着各自的标准,需要遵循通信格式的要求。