C# NModbus4 没有收到回复
之前做过一个项目。
项目中,通过Modbus不断去读取PLC里面其中一个寄存器,寄存器里保存的是位置数。如果不为零时,就去拍归处理。
这阵子这个项目出了点问题,检测时,发现Modbus卡在动不了。
我使用的是C#语言的NModbus4这个类库。
后面查了一下,原来,使用这个类库,默认的设置为:
ReadTimeOut为-1,即无限等待。
Retries 为3,即重连3次。
所以万一没采集数据上来,则容易造成卡住的情况发生。
后面我这边是这样处理的,首先把这个读写的超时设置得比较短(30ms)。
然后不进行重新连接。自己处理,如果超时的话,就当没采集上来,自己再采集。