200的modbus RTU数据传输格式问题
刘玉蓉
发布于2014-12-09 17:22
2
0
标签:
【情况说明】
开发一个单片机设备与PLC226CN通过Modbus RTU协议传输信息。做好了板子,并看了Modbus RTU协议之后,准备开始测试通讯程序。
由于次接触Modbus RTU通讯,所以先用“串口调试软件”监测一下226PLC在进行Modbus RTU通讯时到底是发送的什么数据格式。
于是找来两个226CN,一个作为主站,一个作为从站,主从都是用0口通讯,主从波特率均为9600,主从均为无校验位,从站站号为9,从站40001对应的起始地址是&VB1000(我想这应该和通讯
数据没有关系)。经过测试,主PLC可以正常读和写从PLC的信息。
好,下面开始用串口调试软件,监视两个PLC在通讯时到底发送的什么数据。监视结果如下:
(1)主站PLC读取从PLC,40001开始,连续1个字,从站地址为9,波特率9600,无校验位。监测到主站发送的信号为:
7B 7E FF FF FD F5 2F
(2)主站PLC读取从PLC,40001开始,连续2个字,从站地址为9,波特率9600,无校验位。监测到主站发送的信号为:
7B 7E FF FF FB 75 5E
(3)主站PLC读取从PLC,40001开始,连续12个字,从站地址为9,波特率9600,无校验位。监测到主站发送的信号为:
7B 7E FF FF E7 77 F1
(4)主站PLC读取从PLC,40002开始,连续1个字,从站地址为9,波特率9600,无校验位。监测到主站发送的信号为:
7B 7E FD FF FD 57 EF
(5)主站PLC读取从PLC,40001开始,连续1个字,从站地址为8,波特率9600,无校验位。监测到主站发送的信号为:
2F FF FF FF FD F7 36
(6)主站PLC读取从PLC,40002开始,连续1个字,从站地址为8,波特率9600,无校验位。监测到主站发送的信号为:
2F FF FD FF FD 55 56
(7)主站PLC读取从PLC,40001开始,连续1个字,从站地址为7,波特率9600,无校验位。监测到主站发送的信号为:
7C 7E FF FF FD F7 12
(8)主站PLC读取从PLC,40002开始,连续1个字,从站地址为7,波特率9600,无校验位。监测到主站发送的信号为:
7C 7E FD FF FD 55 0A
(9)主站PLC读取从PLC,49999开始,连续1个字,从站地址为7,波特率9600,无校验位。监测到主站发送的信号为:
7C 7E FF FF FD F7 12
【问题】
(1)这是根据Modbus RTU协议生产的通讯数据吗,起码个字节一个是站号啊!后面的其它数据也不符合Modbus RTU协议的格式要求啊。
(2)后两个字节,是Modbus RTU所要求的16为CRC校验吗?显然不是啊,这后的校验形式又是什么啊?
(3)西门子到底是使用什么样的数据格式在进行所谓的Modbus RTU通讯啊?这么搞的话,其它厂商怎么和他做配套啊?
佳答案
估计是你RS485的+、-反了,所以接收的报文不对。