恭喜,你发布的帖子
发布于 2015-09-24 03:38:26
6楼
经过我反复用两个PLC做实验证明,modbus与多从站正常轮询通信时, 如果有从站掉电或出现故障,那么其标志完成位会经过主站初始化时设定的Parity时间(如1000MS)才能置位,继续下个MBUS_MSG指令,而错误代码err显示3,关闭之后 Done 与err均为0。
我在程序里面先加个无效的从站MBUS_MSG指令,就是无意义的站号,从而模拟多从站掉电的假象,实际没有该地址,结果发现通讯延迟了 大约1-2S,我又连续加了 5个 这样的MBUS_MSG指令,大约延迟5-8S Parity=1000
就像某大侠说的那样,modbus或者自由口轮询多从站时,如果只剩下一个从站,而不采取措施,则通讯速率会变成最慢的
之前一直不明白,为什么从站掉电后,主站发送请求后而无应答,按我理解应该超时过后通信就该停止,现在我有点想通了 应该是MBUS_CTRL指令设定了超时时间,时间一到如果从站还是没有应答,就强行结束主站请求,同时完成标志位Done和输出err错位代码,继续下条指令,但是这样大大增加系统负担和通信时间。官方给的样例很经典 虽然不能解决出现故障时通信速率问题,但基本保障能通信。
至于怎么改善通信质量和效率,自由口讨论帖里很多大侠已给出各种方案,对于初学者的我还是有很大难度
讨论的问题和标题不符,变成了通讯效率问题~
请填写推广理由:
分享
只看
楼主