--串行鏈路和TCP/IP上的MODBUS標準介紹
該標準包括兩個通信規(guī)程中使用的 MODBUS應用層協(xié)議和服務規(guī)范:
·串行鏈路上的MODBUS
MODBUS串行鏈路取決于 TIA/EIA 標準:232-F和 485-A。
·TCP/IP 上的 MODBUS
MODBUS TCP/IP 取決于 IETF 標準:RFC793 和 RFC791有關。
串行鏈路和 TCP/IP 上的 MODBUS 是根據相應 ISO 層模型說明的兩個通信規(guī)程。
下圖強調指出了該標準的主要部分。綠色方框表示規(guī)范。灰色方框表示已有的國際標準(TIA/EIA 和 IETF標準) 。
0.png (52.73 KB, 下載次數: 36)
下載附件
2018-11-9 00:32 上傳
MODBUS 標準分為三部分。第一部分( “Modbus 協(xié)議規(guī)范” )描述了 MODBUS 事物處理。第二部分( “MODBUS 報文傳輸在TCP/IP 上的實現指南” )提供了一個有助于開發(fā)者實現 TCP/IP 上的 MODBUS 應用層的參考信息。第三部分( “MODBUS 報文傳輸在串行鏈路上的實現指南” )提供了一個有助于開發(fā)者實現串行鏈路上的 MODBUS應用層的參考信息。
1.1 范圍
MODBUS 是 OSI 模型第 7 層上的應用層報文傳輸協(xié)議, 它在連接至不同類型總線或網絡的設備之間提供客戶機/服務器通信。
自從1979 年出現工業(yè)串行鏈路的事實標準以來, MODBUS 使成千上萬的自動化設備能夠通信。
目前,繼續(xù)增加對簡單而雅觀的 MODBUS 結構支持。互聯網組織能夠使 TCP/IP 棧上的保留系統(tǒng)端口 502訪問 MODBUS。
MODBUS 是一個請求/應答協(xié)議,并且提供功能碼規(guī)定的服務。MODBUS 功能碼是 MODBUS請求/應答 PDU 的元素。本文件的作用是描述 MODBUS 事務處理框架內使用的功能碼。
1.2 規(guī)范性引用文件
1.RFC791,互聯網協(xié)議,Sep81 DARPA
2.MODBUS 協(xié)議參考指南 Rev J,MODICON,1996年 6 月,doc#PI_MBUS_300
MODBUS 是一項應用層報文傳輸協(xié)議, 用于在通過不同類型的總線或網絡連接的設備之間的客戶機/服務器通信。
目前,使用下列情況實現 MODBUS:
以太網上的 TCP/IP。
各種媒體(有線:EIA/TIA-232-E、EIA-422、EIA/TIA-485-A;光纖、無線等等)上的異步串行傳輸。
MODBUS PLUS,一種高速令牌傳遞網絡。
0.png (28.56 KB, 下載次數: 19)
下載附件
2018-11-9 00:33 上傳
2 縮略語
ADU 應用數據單元
HDLC 高級數據鏈路控制
HMI 人機界面
IETF 因特網工程工作組
I/O 輸入/輸出設備
IP 互連網協(xié)議
MAC 介質訪問控制
MB MODBUS 協(xié)議
MBAP MODBUS 協(xié)議
PDU 協(xié)議數據單元
PLC 可編程邏輯控制器
TCP 傳輸控制協(xié)議
3 背景概要
MODBUS 協(xié)議允許在各種網絡體系結構內進行簡單通信。
0.png (59.19 KB, 下載次數: 30)
下載附件
2018-11-9 00:34 上傳
每種設備(PLC、HMI、控制面板、驅動程序、動作控制、輸入/輸出設備)都能使用 MODBUS協(xié)議來啟動遠程操作。
在基于串行鏈路和以太 TCP/IP 網絡的 MODBUS 上可以進行相同通信。
一些網關允許在幾種使用 MODBUS 協(xié)議的總線或網絡之間進行通信。
4 總體描述
4.1 協(xié)議描述
MODBUS 協(xié)議定義了一個與基礎通信層無關的簡單協(xié)議數據單元(PDU) 。特定總線或網絡上的 MODBUS 協(xié)議映射能夠在應用數據單元(ADU)上引入一些附加域。
0.png (16.19 KB, 下載次數: 29)
下載附件
2018-11-9 00:34 上傳
啟動MODBUS 事務處理的客戶機創(chuàng)建 MODBUS 應用數據單元。 功能碼向服務器指示將執(zhí)行哪種操作。
MODBUS 協(xié)議建立了客戶機啟動的請求格式。
用一個字節(jié)編碼 MODBUS 數據單元的功能碼域。有效的碼字范圍是十進制 1-255(128-255 為異常響應保留) 。當從客戶機向服務器設備發(fā)送報文時,功能碼域通知服務器執(zhí)行哪種操作。向一些功能碼加入子功能碼來定義多項操作。
從客戶機向服務器設備發(fā)送的報文數據域包括附加信息,服務器使用這個信息執(zhí)行功能碼定義的操作。這個域還包括離散項目和寄存器地址、處理的項目數量以及域中的實際數據字節(jié)數。
在某種請求中,數據域可以是不存在的(0長度) ,在此情況下服務器不需要任何附加信息。功能碼僅說明操作。
如果在一個正確接收的 MODBUS ADU 中,不出現與請求 MODBUS 功能有關的差錯,那么服務器至客戶機的響應數據域包括請求數據。如果出現與請求 MODBUS 功能有關的差錯,那么域包括一個異常碼,服務器應用能夠使用這個域確定下一個執(zhí)行的操作。
例如,客戶機能夠讀一組離散量輸出或輸入的開/關狀態(tài),或者客戶機能夠讀/寫一組寄存器的數據內容。
當服務器對客戶機響應時,它使用功能碼域來指示正常(無差錯)響應或者出現某種差錯(稱為異常響應) 。對于一個正常響應來說,服務器僅對原始功能碼響應。
0.png (32.7 KB, 下載次數: 24)
下載附件
2018-11-9 00:36 上傳
對于異常響應,服務器返回一個與原始功能碼等同的碼,設置該原始功能碼的最高有效位為邏輯 1。
0.png (36.36 KB, 下載次數: 25)
下載附件
2018-11-9 00:36 上傳
注釋:需要管理超時,以便明確地等待可能不會出現的應答。
串行鏈路上第一個MODBUS執(zhí)行的長度約束限制了MODBUS PDU大小 (最大RS485ADU=256字節(jié)) 。
因此,對串行鏈路通信來說,MODBUS PDU=256-服務器地址(1 字節(jié))-CRC(2 字節(jié))=253字節(jié)。
從而:
RS232 / RS485 ADU = 253字節(jié)+服務器地址(1 byte) + CRC (2 字節(jié)) = 256字節(jié)。
TCP MODBUS ADU = 249字節(jié)+ MBAP (7 字節(jié)) = 256字節(jié)。
MODBUS 協(xié)議定義了三種 PDU。它們是:
MODBUS 請求 PDU,mb_req_pdu
MODBUS 響應 PDU,mb_rsp_pdu
MODBUS 異常響應 PDU,mb_excep_rsp_pdu
定義 mb_req_pdu 為:
mb_req_pdu = { function_code, request_data},其中
function_code - [1 個字節(jié)] MODBUS 功能碼
request_data - [n 個字節(jié)],這個域與功能碼有關,并且通常包括諸如可變參考、變量、數據偏移量、子功能碼等信息。
定義 mb_rsp_pdu 為:
mb_rsp_pdu = { function_code, response_ data},其中
function_code - [1 個字節(jié)] MODBUS 功能碼
response_data - [n 個字節(jié)],這個域與功能碼有關,并且通常包括諸如可變參考、變量、數據偏移量、子功能碼等信息。
定義 mb_excep_rsp_pdu 為:
mb_excep_rsp_pdu = { function_code, request_data},其中
function_code - [1 個字節(jié)] MODBUS 功能碼 + 0x80
exception_code - [1 個字節(jié)],在下表中定義了 MODBUS 異常碼。
4.2 數據編碼
MODBUS 使用一個‘big-Endian’ 表示地址和數據項。這意味著當發(fā)射多個字節(jié)時,首先發(fā)送最高有效位。
完整的pdf格式文檔51黑下載地址(共131頁):
Modbus協(xié)議規(guī)范(中文詳細).pdf
(4.51 MB, 下載次數: 61)
2018-11-5 17:26 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|