我在用Modbus Poll ,PC做主机,PLC(松下FP-X0)做从机。功能码03,也就是PC从PLC的读取一个字,发现所读取的PLC数据,如果高低字节只要有其中一个是00的话,那通讯就报错。读回的数据也不对。通过看RX的数据:发现,假如PLC的数据Hxxyy,
1.如果xx和yy不是00,那通讯正常,读回的数据也是正确的。
2.如果xx是00,yy不是00,那通讯报错,读回的数据也不正确的。RX的数据高字节是C0,低字节是yy(正确)。
3.如果xx不是00,yy是00,那通讯报错,读回的数据也不正确的。RX的数据低字节是C0,高字节是x'x(正确)。
有点像PLC上电,默认高低字节都设成C0C0,如果要改成想要的某个数值,它就只修改了非00的那个字节,而00的那个字节,没做变动,还是它本来的数值C0.
为此,我在PLC里,用了CMP比较指令,也看到假如把xxyy(xx,yy有一个专门设成00)送给PLC的DTx的话,DTx不会是xxC0,或C0y'y。这证明我上面的设想也不对。
那这原因在哪里?是USB转485模块有问题?松下PLC自身问题?
我核对了,PLC和PC的通讯设置参数都没问题的。
为方便大家研究分析,我把截图,plc程序等都附上。
楼主最近还看过