本身modbus是应该有重试机制的,一问一答保证每次都会有回应,如果没收到就重来一次.
LZ可以试试看PC对PC发送和PLC对PLC发送,一端固定不变就是你现在的PC程序和PLC程序,另一端写一个最简单的收发程序,这样跑一段时间来看一下结果如何.
最后提醒一个点是这样的,两线串口这种半双工的通信程序,要给数据传输完成留时间,换言之并不是收到了马上就发送硬件可能还还没准备好,或者对方的buffer还没清空,这个是底层硬件和底层系统软件的机制决定的,在PLC这样的环境中,至少延迟一个周期是非常有用的方法.
或者还有一个办法,把波特率提高,我就喜欢用高波特率,信号传输的时间越短出幺蛾子的概率反而越低,反正有重试,错了再发~