本身modbus是應(yīng)該有重試機(jī)制的,一問一答保證每次都會(huì)有回應(yīng),如果沒收到就重來(lái)一次.
LZ可以試試看PC對(duì)PC發(fā)送和PLC對(duì)PLC發(fā)送,一端固定不變就是你現(xiàn)在的PC程序和PLC程序,另一端寫一個(gè)最簡(jiǎn)單的收發(fā)程序,這樣跑一段時(shí)間來(lái)看一下結(jié)果如何.
最后提醒一個(gè)點(diǎn)是這樣的,兩線串口這種半雙工的通信程序,要給數(shù)據(jù)傳輸完成留時(shí)間,換言之并不是收到了馬上就發(fā)送硬件可能還還沒準(zhǔn)備好,或者對(duì)方的buffer還沒清空,這個(gè)是底層硬件和底層系統(tǒng)軟件的機(jī)制決定的,在PLC這樣的環(huán)境中,至少延遲一個(gè)周期是非常有用的方法.
或者還有一個(gè)辦法,把波特率提高,我就喜歡用高波特率,信號(hào)傳輸?shù)臅r(shí)間越短出幺蛾子的概率反而越低,反正有重試,錯(cuò)了再發(fā)~