在主从设备的通信中,可以使用ASCII模式或者RTU模式。
在ASCII(AmericanStandard Code for InformationInterchange)传输模式下,消息帧以英文冒号(“:”,ASCII3A Hex)开始,以回车和换号(CRLF,ASCII 0Dand 0AHex)符号结束,允许的传输的字符集为十六进制的0~9和A~F;网络中的从设备监视传输通路上是否有英文冒号(“:”),如果有的话,就对消息帧进行解码,查看消息中的地址是否与自己的地址相同,如果相同的话,就接收其中的数据;如果不同的话,则不予理会。
在ASCII模式下,每个8位的字节被拆分成两个ASCII字符进行发送,比如十六进制数0xAF,会被分解成ASCII字符“A”和“F”进行发送,发送的字符量比RTU增加一倍。ASCII模式的好处是允许两个字符之间间隔的时间长达1s而不引发通信故障,该模式采用纵向冗余校验(LongitudinalRedundancy Check ,LRC)) 的方法来检验错误,
当控制器设为在Modbus 网络上以RTU 模式通信,消息中的每个8Bit 字节都包含两个4 Bit的十六进制字符,这种模式没有开始和结束标记。其优点是: 在同样的波特率下,可比传送更多的数据。
在RTU(RemoteTerminalUnit)模式下,每个字节可以传输两个十六进制字符,比如十六进制数0xAF,直接以十六进制0xAF(二进制:10101111)进行发送,它的发送密度比ASCII模式高一倍;RTU模式采用循环冗余校验(CRC),下面是对RTU模式的
具体格式如图 所示。
06 Modbus TCP及其注意点
6.1 主机和从机、服务端和客户端
【在modbus协议中】
主机发送modbus请求,从机根据请求内容向主机返回响应。在modbus协议中,主机总是主动方,从机总是被动方。
【在网络应用中】
在网络应用中存在客户端和服务器端,客户端(例如浏览器)发送请求到服务器,服务器向客户端返回内容(例如HTML文本)。
【在modbus tcp中】
主机是客户端,而从机是服务器端。千万不要以为服务器端重要,主机也重要,主机就是服务器端。
6.2 是否可以多主机
通过前面的分析,主机为客户端那么modbustcp支持多个主机,在一个 局域网中可存在多个主机和多个从机。从机的连接能力(连接主机的数 量)由uIP的Zui大TCP连接个数决定。
6.3 modbus TCP协议简述
modbus TCP和modbus RTU基本相同,也存在一些区别
a.从机地址变得不再重要,多数情况下忽略。从某种意义上说从机地址被IP地址取代
b.CRC校验变得不再重要,甚至可以忽略。由于TCP数据包中已经存在校验,为了不重复造轮子,modbusTCP干脆取消了CRC校验。