QT modbus长时间报Request timeout. (code: 0x5)
我的情况是使用modbusTCP的时候出现的。一开始报少量的 0x5 , 后面就是连续的 0x5 ,然后给我断开连接。
这个错误码的意义是这样的:
ACKNOWLEDGE (0x05): 确认,表示从设备已经接收到请求并正在处理。
所以报这个错就是从机还没处理完,回复不了想要的,就只能回复主机一个错误码。
一开始我想的解决办法是让读取之间的间隔变长,发现没有多大用。最后发现有一个参数配置不对。
解决办法:
这一个参数设置大一点,我之前是100,后面改成1000,基本没有再报那个错。
这个参数的意义就像,,,顾客(主机)买东西,然后该顾客比较急,只给商家(从机)100ms的时间准备商品,100ms后,商家表示没有,还在做(就相当于0x5),然后顾客就走了,不继续等了,多来几次,商家就不想卖他东西了(断开连接),所以顾客需要给商家1000ms的时间,让商家把商品弄完,1000ms后顾客就能获得商品,而不是0x5。