參考一下:
modbus中的timeout超時(shí)時(shí)間,代表這個(gè)命令傳送已經(jīng)結束了
slave端可以進(jìn)行資料的解析做處理,在modbus ASCII傳送時(shí),因為是ASCII(字元碼)的關(guān)係
可以使用特定的字元做為結束的標記,slave端一直接收資料,直到收到特定字元時(shí),
則代表該次傳送命令已結束,而在modbus RTU中,因為沒(méi)有特定的字元可以做標示
因為在二進(jìn)制中,並沒(méi)有辦法使用哪個(gè)編碼做為特定字元(有存在衝突的可能),
所以取而代之使用時(shí)間做為結束的表示,上面所說(shuō)的3.5字節的時(shí)間,
是modbsu標準的定義,以一個(gè)baud rate 9600bps的通訊環(huán)境來(lái)說(shuō),1個(gè)字節相當於1ms
換句話(huà)說(shuō),3.5 * 1 = 3.5ms也就是相當於需要4ms時(shí),就可以判斷該命令已結束
但是在實(shí)際應用中,因為通訊環(huán)境的因素可能不是著(zhù)麼理想(存在許多干擾的因素)
通常timeout時(shí)間我都抓在5~10字節時(shí)間,比較不會(huì )發(fā)生master尚未傳送完命令
但slave已經(jīng)關(guān)閉接收的問(wèn)題。