Modbus通讯协议在工业产品中非常常见,很多传感器以及控制模块,比如气体传感器、局放传感器,以及电机驱动器,都通过串口传输,并且支持ModbusRTU协议。
有时候我们的控制器也许只支持以太网总线,或者为了方便管理,通过ModbusTCP来与支持ModbuRTU的设备配合使用这时候就需要一个方案,使得ModbusTCP数据和ModbusRTU数据能够相互转换。在这里提供一个思路,已经将其转化为实际模块,运用到项目中。
转发丢包率小于1/10000;
ModbusTCP与ModbusRTU区别:
Modbus通讯协议和TCP/UDP协议的区别:
1、Modbus协议是一种已广泛应用于当今工业控制领域的通用通讯协议。通过此协议,控制器相互之间、或控制器经由网络(如以太网)可以和其它设备之间进行通信。Modbus协议使用的是主从通讯技术,即由主设备主动查询和操作从设备。一般将主控设备方所使用的协议称为Modbus Master,从设备方使用的协议称为Modbus Slave。典型的主设备包括工控机和工业控制器等;典型的从设备如PLC可编程控制器等。Modbus通讯物理接口可以选用串口(包括RS232和RS485),也可以选择以太网口。
2、而Modbus TCP协议则是在RTU协议上加一个MBAP报文头,由于TCP是基于可靠连接的服务,RTU协议中的CRC校验码就不再需要,所以在Modbus TCP协议中是没有CRC校验码,用一句比较通俗的话说就是:Modbus TCP协议就是Modbus RTU协议在前面加上五个0以及一个6,然后去掉两个CRC校验码字节就OK.虽然这句话说得不是特别准确,但是也基本上把RTU与TCP之间的区别说得比较清楚了。
wirshark分析modbus报文,过滤方式:mbtcp.len==3;