Modbus RTU協議


參考:https://zhuanlan.zhihu.com/p/38920259

Modbus通信協議具有多個變種,其具有支持串口(主要是RS-485總線)、以太網。其中最著名的是

  • Modbus RTU(串口)
  • Modbus ASCII(串口)
  • Modbus TCP(以太網)

三種。

其中Modbus RTU與Modbus ASCII均為支持RS-485總線的通信協議,其中Modbus RTU由於其采用二進制表現形式以及緊湊數據結構,通信效率較高,應用比較廣泛。

而Modbus ASCII由於采用ASCII碼傳輸,並且利用特殊字符作為其字節的開始與結束標識,其傳輸效率要遠遠低於Modbus RTU協議,一般只有在通信數據量較小的情況下才考慮使用Modbus ASCII通信協議,在工業現場一般都是采用Modbus RTU協議,一般而言,大家說的基於串口通信的Modbus通信協議都是指Modbus RTU通信協議

在此我們着重討論Modbus RTU協議,而Modbus TCP協議則是在RTU協議上加一個MBAP報文頭,由於TCP是基於可靠連接的服務,RTU協議中的CRC校驗碼就不再需要,所以在Modbus TCP協議中是沒有CRC校驗碼.

用一句比較通俗的話說就是:Modbus TCP協議就是Modbus RTU協議在前面加上五個0以及一個6,然后去掉兩個CRC校驗碼字節就OK。雖然這句話說得不是特別准確,但是也基本上把RTU與TCP之間的區別說得比較清楚了。

RTU協議中的指令由

  • 地址碼(一個字節)
  • 功能碼(一個字節)
  • 起始地址(兩個字節)
  • 數據(N個字節)
  • 校驗碼(兩個字節)

五個部分組成,其中數據又由數據長度(2 字節,表示的是寄存器個數為 M)和數據正文(2*M 字節)組成,

RTU協議是采用3.5個字節的空閑時間作為指令的起始和結束,

一般而言,只有當從機返回數據或者主機寫操作的時候,才會有數據正文,而其他時候比如主機讀操作指令的時候,沒有數據正文,只需要數據長度即可。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM