Modbus RTU與Modbus TCP的區別


 相關內容:

  linux嵌入式軟件中libmudbus庫的移植與使用(一)

  linux嵌入式軟件中libmudbus庫的移植與使用(二)

  Modbus RTU與Modbus TCP的區別

 

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

和Modbus TCP三種。在工業現場一般都是采用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

之間的區別說得比較清楚了。

  Modbus的功能碼有:

功能碼 含義 功能碼 含義
0x01 讀線圈 0x04 讀輸入寄存器
0x05 寫單個線圈 0x03 讀保持寄存器
0x0F 寫多個線圈 0x06 寫單個保持寄存器
0x02 讀離散量輸入 0x10 寫多個保持寄存器

 

 

 

 

 

 

 

一、Modbus RTU

RTU協議中的指令由地址碼(一個字節),功能碼(一個字節),起始地址(兩個字節),數據(N個字節),校驗碼(兩個字節)五個部分組成。

數據由數據長度(兩個字節,表示的是寄存器個數,假定為M)和數據正文(M乘以2個字節)組成。

發:01 03 01 8E 00 04 25 DE  //讀(0x03),從寄存器地址01 8E 開始讀,讀4個寄存器00 04

回:01 03 08 00 01 00 01 00 01 00 01 28 D7  //  08表示數據長度  ,00 01 00 01 00 01 00 01讀到的數據

 

發:00 10 00 20 00 01 02 00 00 AC A0 // 寫(0x10),從寄存器地址 00 20開始寫,寫一個寄存器 00 01,寫入值 00 00

回:00 10 00 20 00 01 01 D2

 

二、Modbus TCP

   Modbus TCP協議是在RTU協議前面添加MBAP報文頭,由於TCP是基於可靠連接的服務,RTU協議中的CRC校驗碼就不再需要,所以在Modbus TCP協議中是沒有CRC校驗碼。

MBAP報文頭:

事務處理標識 協議標識 長度 單元標識符
2字節 2字節 2字節 1字節

 

 

 

事務處理標識 可以理解為報文的序列號,一般每次通信之后就要加1以區別不同的通信數據報文
協議標識符 00 00表示ModbusTCP協議
長度 表示接下來的數據長度,單位為字節
單元標識符 可以理解為設備地址

 

 

 

 

 

 

 發:00 00 00 00 00 06 00 03 00 20 00 01 
回:00 00 00 00 00 05 00 03 02 00 00 

 發:00 00 00 00 00 06 00 04 00 30 00 01
回:00 00 00 00 00 05 00 04 02 00 08 

 

發:00 00 00 00 00 09 00 10 00 20 00 01 02 00 00

回:00 00 00 00 00 06 00 10 00 20 00 01

三、總結(注:16進制發送)

1、讀指令對比(0x04)

  MBAP報文頭 地址碼 功能碼 寄存器地址 寄存器數量 CRC校驗
Modbus RTU 01 04 00 00 00 16 71 C4
Modbus TCP 00 00 00 00 00 06 01   04 00 00 00 16

 

 

 

 

 

 

2、寫指令對比(0x10)

  MBAP報文頭 地址碼 功能碼 寄存器地址 寄存器數量 數據長度 正文 CRC校驗
Modbus RTU  00  10 00 20  00 01  02  00 00  AC A0 
Modbus TCP  00 00 00 00 00 09 00   10  00 20   00 01 02   00 00 


免責聲明!

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



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