一種MODBUS RTU擴充套件串列埠通訊協議

牙擦蘇-kuan發表於2018-05-24

        一直以來,都希望有一個比較通用的串列埠UART通訊協議,看到當前modbus RTU的工業應用場景比較多,但是該協議,每次最多256個位元組,而且必須是一問一答的通訊方式。而我想象中的通訊協議應該可以相對較長的資料,大約一次可以1Kb以上吧,,所以下面就在MODBUS RTU的協議基礎上略作擴充套件,功能碼使用0x03、0x06、0x10,但是隻擴充套件了0x03功能碼,畢竟ERTU通訊大部分是讀取引數,而不是設定引數, 同時也可以更好的相容以前的程式碼,改動更小。

        為了下文便於描述和區分,通用版本的MODBUS RTU簡稱為MRTU,新定義的協議為ERTU,“E”表示擴充套件的意思。

        1、03 讀線保持暫存器  

        

       查詢資訊規定了要讀的暫存器起始地址及暫存器的數量,暫存器定址起始地址為0000,暫存器1-16所對應的地址分別為0-15。 上面的圖片但是MRTU的查詢命令官方文件例子,本文的ERTU保持不變。

        

        上圖是MRTU的標準相應資訊,在此處ERTU做如下調整,調整1:增加了起始地址,其他監控裝置即使沒有監控到請求命令,可以只根據響應命令來解析資料的內容;甚至從裝置可以只傳送不接受,而接收的裝置也可以得到想要的資料。調整2:增加了位元組數高位元組,資料的最大長度可以長達65536個位元組,提高了資料讀取的效率

名稱例子(HEX)備註
從機地址11 
功能碼03 
起始地址高位元組0新增
起始地址低位元組0新增
位元組數高位元組0新增
位元組數低位元組2 
資料1高位元組02 
資料1低位元組05 
................  
校驗碼  

      2、  06 預置單個暫存器

  

        3、16 預置多個暫存器   



 該協議只是一個初步設想,還未能在硬體裝置上面實際應用。

文章中的圖片均摘錄自網路中的文件截圖,本文為作者原創,轉發請註明出處。

相關文章