quote:以下是引用Zaxife在2013-08-13 23:04:07的发言:对以
modbus通讯,一般情况下主机都是读取数据的。写数据的情况只有需要写的时候才写,否则只是读。如果每周期都读/写操作,程序逻辑写起来会很麻烦的。而且效率非常非常的低。
一般情况下,有写操作就先写操作一次,写完后不管成功与否都重置为读操作。
用完成标识、超时/错误标识、定时器重置通讯标识来触发下一条通讯指令。
每个从机分配多一个存储单元来存储错误恢复通讯次数,当次数为0自动再次发送指令,否则跳过继续判断下一台从机。
做到上面这写,你就可以在多从机环境下最优化通讯了。
比如有16台从机,那么其中有15台同时通讯中断只有一台通讯正常时,基本能保证不会每个周期都循环16台从机浪费时间,使得单独一台都能有很好的通讯操作响应。
我做的多从机环境下,基本上是通讯中断的从机会强加30~60秒后再从试,不让它每个周期都判断,节省通讯周期。
额,我知道用时间写是很慢,用Done试过了,但是就像你说的,万一有一台出现故障,那就会无法正常读取和通信了,所以想问下,你的写入时靠什么去出发的,能说详细点,我刚开始用有很多不明白的地方,麻烦了。