我用modbus的RTU库,程序如下:
NETWORK 1:
LD SM0.1
CALL MBUS_INIT,1,1,9600,2,0,128,32,1000,&VB100,M0.1,MB10
NETWORK 2:
LD SM0.0
CALL MBUS_SLAVE,M0.2,MB12
我用的串口调试工具调试的,功能码为16,从机地址为1,主机发送报文:01 10 00 00 00 01 01 19,从机回复的报文为“01 90 02 CD C1”。
不知道问题出在了哪里?
返回的报文09应该是功能码01的异议回应,其他的02 CD C1不知道是怎么意思啦,寻求大家的帮助。
上面的程序用功能码为06的报文试过,没有问题。
问题补充:
首先谢谢各位!
CRC校验码是正确的,我算了四遍。而且如果校验码错误的话,从机不会返回响应。
我查到的Mobus异常码里只有代码分别为01、02、03、04、05、06、08、0A、0B的异常码,我调试的从机返回响应中的数据域有三个十六进制数,无法对应查错。
我现在监视MB10和MB12的值没有任何变化,都是0。
真的是没有头绪了,希望高人指导一下,小妹先拜谢啦!
最佳答案
功能16用来写多个V存储器字,格式如下:
站地址(字节)/10(字节)/首字地址(字)/字数(字)/字节数(字节)/数据字1(字)/……/数据字n (字)/CRC(字)
你再看看你发送的数据:
站地址01
功能吗10
首字地址00 00
字数00 01
字节数 ??????????
数据字1 ?????????
提问者对于答案的评价:
非常十分以及特别地感谢LaoHuai!
原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc345289.html