大略看了下,程序有几个问题说下;
1:程序中有子程序P0,P1等,但是没有响应的调用子程序的Call没有Call,子程序P是不执行的。
2:你的RS发送指令用的M8000触发,对串口来说是不能一直触发发送的。你想下,串口一直被发送占用,怎么接受?应改为上升沿
3:不同数据读写你使用的100ms定时切换,但是你切换后没有调用相应的子程序,没有触发报文赋值。同时由于报文响应的不确定性,用时间未必可靠。比如你100ms一个轮训,但是仪表响应要200ms呢?
4:轮训建议把定时触发方式改为发送1,接受1,接受1完成,发送2,接收2.。。。。这样的方式,由上一个时间完成的标志来触发下一次的发送,同时加上超时判断报警。
先说这么多吧