发表于:2011-09-16 08:27:03
楼主
用modbus协议写的上位机程序,在timer事件中用轮询方式发送命令读取表上的实时数值和实时状态,延时为100ms。上位机都能正常显示从设备读上来的数值。但是这个时候我用手动发送一个命令,对配料控制器进行手动控制时,上位机会出现表上的数值和状态混乱现象,但马上又恢复正常。
我用了一下几个解决方案还是不好使,请各位大侠帮我分析一下是什么原因,有什么好的方案、
1.在手动控制时,让timer.enable=false,发送完命令之后再让timer.enable=true
这种情况下,可以让手动发送命令和自动命令不冲突,但是还是会出现上述情况,并且每次手动控制一下,出现的状态不一样。
2.把timer的延时设置成300ms更高或者更小,更小的话,状态很多显示不准确,程序还会报错"类型不匹配"。更高的话和上述情况几乎一样、
3.我在手动控制里设置一个变量test=True,在timer事件中不断检测test的状态,如果为true则发送手动命令,如果为false 不执行命令。检测test的时间为50ms,发送读取数值和状态的命令为300ms.