背景:原来有个成熟的程序,只是用224的PORT0口和第三方的HMI进行通讯,现在另外一个客户要去读取我PLC的I区,Q区,AIW区和固定V区的数据,我就打算用224XP的PLC,但是现在手里只有一个224。
我现在没有224XP.所以只能现用用224做测试,224作为
modbus的从站,我在原有程序的基础上加了MBUS_INIT的指令和MBUS_SLAVE的指令。MBUS_INIT放在网络1中的第一行,用sm0.1调用。各参数为模式1,地址1,波特率9600 ,校验位2,延时200,MAXIQ为10,MAXAI为3,MAXHOLD为10,HOLDSTART为 &vb3150.库存贮区的建议地址为 vb2364到3143。我程序里远没有用到VB2364,为了防止寄存器冲突,我故意把库存储区放的大了一些。然后在网络2用SM0.0调用MBUS_SLAVE
现象:我用串口调试助手+PPI电缆和224通讯,串口调试助手发03和04的功能码的话,V区和AIW*均能被正常的读取,但是我发01和02的功能码,就是读取开关量的状态的话,只要一点击串口调试助手的发送,224立刻就报SF/DIAG和STOP故障。
如果我新建一个空白的程序,什么都不写,只写MBUS_INIT和MBUS_SLAVE的话,参数和上面所用的参数一模一样,就不会出现上述问题,功能码01,02,03,04都能正常使用
请问这个是为什么呢,该怎么解决呢?我原有的程序里也没有什么特殊的功能,只有一个高速计数器,其他的就是一些常规的逻辑控制和模拟量数值的采集和计算了。
求解释,求解决!!