quote:以下是引用yanxiao在2012-03-21 22:43:54的发言:
用简单的逻辑是达不到要求的。这已经是事务处理了,用状态转换的概念来做,比较好处理,可以先画流程/状态转换图。
无响应的站,有选择地跳过,没错。但当从站就绪后,还得想办法把它带回轮询循环中。
目前是用定时器来判断的,只要在规定时间内定时器没有被第N个读取指令完成位复位则跳过这个指令,执行下一个读取指令,定时时间可能设置的不对只有10个毫秒,昨天一直报6号错误。这样做存在一个问题,就是每隔两个站以后定时器就不能被复位了。程序中还是用了标签,会有条件的跳出子程序,回到主程序中执行另一个
modbus子程序,说的有点乱,目的就是子程序1中,需要读取的参数比较多,耗时会比较长,想对此子程序只执行一次采集上相关数据后就跳出,执行另一个
modbus子程序2,此程序中只有相关的实时变化的数据,比子程序1中的数据少了很多,扫描时间也就相对降低。
斑竹您的思路我有点模糊,你所说的状态转换的概念是用如SCR、FOR、NEXT、JMP等指令来做吗?