quote:以下是引用依然在2011-07-27 08:08:41的发言:
跑偏的意思是把下一个从站的数据给清了,这个应该还是程序考虑不周全和处理不当导致的,但是一直没找到好的解决办法。
从站轮询,站号是每次通讯完毕后变化的,但是当通讯堵塞时判断站号,把该站号的数据清除,就会产生把别的从站数据清除的可能。
"依然"大侠你好,不知道你是如何清除故障从站数据的,还有就是为什么要清除故障从站的数据? 如果你是通过清除接收DB来清除故障从站数据的话,那么对应不同的从站可以使用不同的接收DB,具体可以参考"A0336:CP341 Modbus RTU多站点轮询"文档。另,清除接收数据用的是什么指令?是SFC21吗?如果是SFC21,需要考虑异步执行的问题。记得有一次用441带若干个温控表,接收用的是同一个DB,当时想把接收的数据传到另一个DB中,开始时用SFC20,结果是传送的数据包含了下一个站的数据,用SFC81也不行,最后不得不用STL编写了一段程序用循环去传送数据,结果是正确的。最后分析觉得应该是SFC20,SFC81都是异步执行的,而STL的循环程序是同步执行的。异步执行跨越多个CPU扫描周期,呵呵,有点象高级语言中的多线程,有利也有弊!