控制器作为MODBUS主端,读取从端的寄存器值后作判断,判断结果和寄存器的值不符
问题分析:检查通讯是否正常,代码逻辑有没有出错。
排查方法:
1.检查读取的功能码和地址是否正常;
2.检查寄存器存储是16位还是32位的;
3.解析的格式是16进制还是10进制;
4.检查数据转换格式(大端序/小端序、高低位)是否正常;
5.代码逻辑问题,通讯没有完成就开始做判断了。添加如下代码进行等待:WAIT UNTIL MODBUSM_STATE<>1,表示等待消息结束,最多等待1s,为消息超时时间,获取消息或超时后变为相应值;