易控通过Modbus RTU与下位机通信。
1. 这个项目的modbus寄存器地址用得很多,而且是连续的。比如,会用到31001~31192, 32001~32384, 42001~42192。但是,如果每次读或者写modbus过多时,下位机会直接报错,造成读值失败。
比如,当易控发指令要查询31001~31020的值时,下位机应答正确。然而,如果易控发指令要查询31001~31040的值时,下位机会直接报错,不会返回读值。
写的时候也一样,比如:当易控发指令要写41001~41020的值时,下位机应答正确, 寄存器得到修改。然而,如果易控发指令要写41001~41040的值时,下位机会直接报错,不会对相应寄存器做修改。
请问该如何解决?
顺便说一下,如果单个寄存器读写,我觉得数据量挺大的,可能效率很低。
2. 易控项目中用到的modbus数据,是否易控一执行时就开始读写?写指令发出,如果下位机没收到,会重发吗?可否解释下重发机制?
以上问题向知道的高手请教,如果以前有人提过,给个链接也可以。谢谢了。 |