Modbus协议(施耐德Modicon公司)是工业通信中应用最广泛的协议之一。整个Modbus“家族”包括:
- 串口:Modbus RTU、Modbus ASCII
- 以太网:Modbus TCP/IP、Modbus plus
非Modbus组织官方正式标准化的协议但行业公认实用:
- · Modbus UDP(以太网):基于 UDP 协议的以太网版本,比 TCP/IP 更轻便、延迟更低,但无连接可靠性,适合对实时性要求极高、允许少量丢包的场景(也就是UDP和TCP的区别)。
- Modbus RTU over TCP(以太网):直接将 RTU 帧封装在 TCP 数据包中,保留 CRC 校验,与标准 Modbus TCP/IP 略有差异。
针对只支持MODBUS RTU的设备转以太网,若加透传串口服务器,若不支持Modbus RTU over TCP,仅支持Modbus RTU就要在电脑上配置虚拟串口(麻烦)。支持Modbus RTU over TCP则直接采用网口通信即可。
实际现在非透传带协议转换的串口服务器跟透传的价格也没有多大差别,所以用Modbus RTU 转Modbus TCP/IP的网关也可以。
Modbus RTU 和Modbus TCP/IP应用最多,在系统讲解PLC-第8课中有讲述。
由于Modbus ASCII和Modbus plus使用很少,重点描述使用场景,作为了解。
- Modbus ASCII:直接可以看到报文,主要用于通信报文调试。(其实也鸡肋,现在串口调试助手显示报文16进制效果一样,总之就是没有啥用,知道有这么个东西就行了)
- Modbus plus:Modbus Plus 总线 / 网络(高速令牌环网)。施耐德为自己高端 PLC 打造的 “专属高速通道”,定位是解决短距离、高实时性问题。自己压根就没想去推行普及,所以小众,现在施耐德自己都不用了。改用EtherNet/IP和Sercos III。
Modbus ASCII与Modbus RTU的不同:
Ø RTU直接发送数据,二进制代码。ASCII发送的数据是表示字符的二进制码
Ø 传输方式不同:ASCII,每8位的字节拆分成两个ASCII字符发送。RTU, 每8位的字节直接以十六进制字符发送,因此RTU效率更高。
Ø 校验方式不同:ASCII,LRC校验,纵向冗余校验,校验能力弱;RTU,循环冗余校验,更强。
Ø 有效数据长度:RTU为ASCII两倍。
Ø 帧起始、间隔、结束不同。

