引用:
作者triackimo
先說一下為什麼modbus asc||很少人在用的原因,主要是傳輸時間和檢查碼較弱的關係,以我家的溫控器來說如果要讀取pv(modbus rtu)的資料我會下
01 03 00 8A 00 01 A5 E0(8個byte)
01 站號8A是PV的暫存器位置 A5 E0 是CRC
如果用O_81的資料格式和38400的鮑率去算的話
一個BYTE的傳輸時間就要0.28645ms,所以傳完整串命令就要2.2916ms
再來是modbus asc||的格式
3A 30 31 30 33 30 30 38 41 30 30 30 31 37 31 0D 0A (17個byte)
以上3A是header 37 31 是LRC 0D 0A是delimiter
如果用O_81的資料格式和38400的鮑率去算的話
一個BYTE的傳輸時間就要0.28645ms,所以傳完整串命令就要4.8697ms
從以上結果得知做一樣的事情rtu要來的比asc||有效率的多,再者asc||的checksum是用累加去算出來的,這種檢驗法無法分辨出位元組是否有交換,假設命令的其中一段為00 01,如果今天傳輸過程中發生錯誤...
|
感謝
我也不懂但它手冊上就是這樣寫,RTU起始碼是等待10ms
但是因為ascii發生錯誤率比RTU高所以我才以為ASCII傳輸比較慢(上一筆尚未傳完下一筆就下達了)