1、modbus協議設計思想
Modbus設備使用主從(客戶端-服務器)技術進行通信,其中只有一個設備(主設備/客戶端)可以啟動事務(稱為查詢)。其他設備(從設備/服務器)通過向主設備提供請求的數據或采取查詢中請求的操作進行響應。從設備是任何外圍設備(I/O轉換器、閥門、網絡驅動器或其他測量設備),它處理信息并使用Modbus將其輸出發(fā)送到主設備。
主機可以尋址單個從機,也可以向所有從機發(fā)起廣播消息。從屬服務器會返回對單獨發(fā)送給它們的所有查詢的響應,但不會響應廣播查詢。從屬服務器不會自己啟動消息,它們只響應來自主服務器的查詢。
主查詢將包括一個從地址(或廣播地址)、一個定義所請求操作的功能代碼、任何所需數據和一個錯誤檢查字段。從機的響應由確認所采取的操作、要返回的任何數據和錯誤檢查字段組成。
請注意,查詢和響應都包括設備地址、功能代碼、適用數據和錯誤檢查字段。如果沒有發(fā)生錯誤,則從設備的響應包含所請求的數據。如果收到的查詢中出現錯誤,或者從設備無法執(zhí)行請求的操作,則從設備將返回一條異常消息作為響應。
從機消息幀的錯誤檢查字段允許主機確認消息的內容是有效的。傳統的Modbus消息是串行傳輸的,奇偶校驗也應用于其數據幀中的每個傳輸字符。
在這一點上,重要的是要區(qū)分Modbus本身是一個應用協議,因為它定義了組織和解釋數據的規(guī)則,但仍然只是一個消息傳遞結構,獨立于底層物理層。
2、modbusTCP
Modbus消息結構是一種應用協議,定義了獨立于數據傳輸介質的數據組織和解釋規(guī)則。
TCP/IP是指傳輸控制協議和互聯網協議,為Modbus TCP/IP消息提供傳輸介質。
注意:TCP的主要功能是確保所有數據包都被正確接收,TCP/IP只是一個傳輸協議,并沒有定義數據的含義或數據的解釋方式,這是應用協議的工作)。
從本質上講,Modbus TCP/IP消息只是封裝在以太網TCP/IP封裝器中的Modbus通信。Modbus-TCP將標準Modbus數據幀嵌入到TCP幀中,沒有Modbus校驗和,如下圖所示。
你一定會奇怪相比串口版本的modbusRTU,為什么沒有沒有使用Modbus錯誤檢查字段校驗。
因為TCPIP是一種可靠傳輸,其使用標準以太網TCP/IP鏈路層校驗和方法來保證數據的完整性。
3、報文介紹
還是把這張圖拿過來。從圖中可以看出,功能代碼和數據字段與原始形式一樣。
Modbus TCP/IP應用數據單元(ADU)采用7字節(jié)報頭(事務標識符+協議標識符+長度字段+單元標識符)和協議數據單元(功能代碼+數據)的形式。
MBAP標頭長7個字節(jié),包括以下字段:
事務/調用標識符(2個字節(jié)):當客戶端沿同一TCP連接發(fā)送多條消息而不等待先前響應時,此標識字段用于事務配對。
協議標識符(2字節(jié)):此字段對于Modbus服務始終為0,其他值保留用于未來擴展。
長度(2字節(jié)):該字段是剩余字段的字節(jié)計數,包括單元標識符字節(jié)、功能代碼字節(jié)和數據字段。
單元標識符(1字節(jié)):此字段用于標識位于非TCP/IP網絡上的遠程服務器(用于串行橋接)。在典型的Modbus TCP/IP服務器應用程序中,單元ID設置為00或FF,被服務器忽略,并在響應中簡單地回顯。
完整的Modbus TCP/IP應用數據單元嵌入到標準TCP幀的數據字段中,并通過TCP發(fā)送到系統端口502,該端口專門為Modbus應用保留。
Modbus TCP/IP客戶端和服務器通過端口502監(jiān)聽和接收Modbus數據。
我們可以看到,Modbus在以太網上的操作對Modbus寄存器/命令結構幾乎是透明的。因此,如果您已經熟悉傳統Modbus的操作,那么您已經非常熟悉Modbus TCP/IP的操作。
審核編輯:湯梓紅
-
以太網
+關注
關注
40文章
5385瀏覽量
171161 -
互聯網
+關注
關注
54文章
11115瀏覽量
103033 -
MODBUS
+關注
關注
28文章
1765瀏覽量
76849 -
服務器
+關注
關注
12文章
9029瀏覽量
85207 -
TCP
+關注
關注
8文章
1351瀏覽量
78995
原文標題:ModbusTCP協議及通信報文解讀
文章出處:【微信號:嵌入式情報局,微信公眾號:嵌入式情報局】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦
評論