瀏覽單個文章
老柏(第四)
Senior Member
 
老柏(第四)的大頭照
 

加入日期: Mar 2012
您的住址: 地球
文章: 1,303
引用:
作者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傳輸比較慢(上一筆尚未傳完下一筆就下達了)
__________________
[/url]
老柏                 老柏(第二)

老柏(第三)              老柏(第四)
舊 2013-05-06, 12:17 PM #9
回應時引用此文章
老柏(第四)離線中