找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5962|回復(fù): 1
收起左側(cè)

Modbus協(xié)議規(guī)范(中文詳細)-串行鏈路和TCP/IP上的MODBUS標(biāo)準(zhǔn)介紹

[復(fù)制鏈接]
ID:421196 發(fā)表于 2018-11-5 17:26 | 顯示全部樓層 |閱讀模式
--串行鏈路和TCP/IP上的MODBUS標(biāo)準(zhǔn)介紹
該標(biāo)準(zhǔn)包括兩個通信規(guī)程中使用的 MODBUS應(yīng)用層協(xié)議和服務(wù)規(guī)范:
·串行鏈路上的MODBUS
MODBUS串行鏈路取決于 TIA/EIA 標(biāo)準(zhǔn):232-F和 485-A。
·TCP/IP 上的 MODBUS
MODBUS TCP/IP 取決于 IETF 標(biāo)準(zhǔn):RFC793 和 RFC791有關(guān)。
串行鏈路和 TCP/IP 上的 MODBUS 是根據(jù)相應(yīng) ISO 層模型說明的兩個通信規(guī)程。
下圖強調(diào)指出了該標(biāo)準(zhǔn)的主要部分。綠色方框表示規(guī)范;疑娇虮硎疽延械膰H標(biāo)準(zhǔn)(TIA/EIA 和 IETF標(biāo)準(zhǔn)) 。
0.png

MODBUS 標(biāo)準(zhǔn)分為三部分。第一部分( “Modbus 協(xié)議規(guī)范” )描述了 MODBUS 事物處理。第二部分( “MODBUS 報文傳輸在TCP/IP 上的實現(xiàn)指南” )提供了一個有助于開發(fā)者實現(xiàn) TCP/IP 上的 MODBUS 應(yīng)用層的參考信息。第三部分( “MODBUS 報文傳輸在串行鏈路上的實現(xiàn)指南” )提供了一個有助于開發(fā)者實現(xiàn)串行鏈路上的 MODBUS應(yīng)用層的參考信息。

1.1 范圍
MODBUS 是 OSI 模型第 7 層上的應(yīng)用層報文傳輸協(xié)議, 它在連接至不同類型總線或網(wǎng)絡(luò)的設(shè)備之間提供客戶機/服務(wù)器通信。
自從1979 年出現(xiàn)工業(yè)串行鏈路的事實標(biāo)準(zhǔn)以來, MODBUS 使成千上萬的自動化設(shè)備能夠通信。
目前,繼續(xù)增加對簡單而雅觀的 MODBUS 結(jié)構(gòu)支持。互聯(lián)網(wǎng)組織能夠使 TCP/IP 棧上的保留系統(tǒng)端口 502訪問 MODBUS。
MODBUS 是一個請求/應(yīng)答協(xié)議,并且提供功能碼規(guī)定的服務(wù)。MODBUS 功能碼是 MODBUS請求/應(yīng)答 PDU 的元素。本文件的作用是描述 MODBUS 事務(wù)處理框架內(nèi)使用的功能碼。
1.2 規(guī)范性引用文件
1.RFC791,互聯(lián)網(wǎng)協(xié)議,Sep81 DARPA
2.MODBUS 協(xié)議參考指南 Rev J,MODICON,1996年 6 月,doc#PI_MBUS_300
MODBUS 是一項應(yīng)用層報文傳輸協(xié)議, 用于在通過不同類型的總線或網(wǎng)絡(luò)連接的設(shè)備之間的客戶機/服務(wù)器通信。
目前,使用下列情況實現(xiàn) MODBUS:
以太網(wǎng)上的 TCP/IP。
各種媒體(有線:EIA/TIA-232-E、EIA-422、EIA/TIA-485-A;光纖、無線等等)上的異步串行傳輸。
MODBUS PLUS,一種高速令牌傳遞網(wǎng)絡(luò)。

0.png

2 縮略語
ADU 應(yīng)用數(shù)據(jù)單元
HDLC 高級數(shù)據(jù)鏈路控制
HMI 人機界面
IETF 因特網(wǎng)工程工作組
I/O 輸入/輸出設(shè)備
IP 互連網(wǎng)協(xié)議
MAC 介質(zhì)訪問控制
MB MODBUS 協(xié)議
MBAP MODBUS 協(xié)議
PDU 協(xié)議數(shù)據(jù)單元
PLC 可編程邏輯控制器
TCP 傳輸控制協(xié)議
3 背景概要
MODBUS 協(xié)議允許在各種網(wǎng)絡(luò)體系結(jié)構(gòu)內(nèi)進行簡單通信。

0.png

每種設(shè)備(PLC、HMI、控制面板、驅(qū)動程序、動作控制、輸入/輸出設(shè)備)都能使用 MODBUS協(xié)議來啟動遠程操作。
在基于串行鏈路和以太 TCP/IP 網(wǎng)絡(luò)的 MODBUS 上可以進行相同通信。
一些網(wǎng)關(guān)允許在幾種使用 MODBUS 協(xié)議的總線或網(wǎng)絡(luò)之間進行通信。

4 總體描述
4.1 協(xié)議描述
MODBUS 協(xié)議定義了一個與基礎(chǔ)通信層無關(guān)的簡單協(xié)議數(shù)據(jù)單元(PDU) 。特定總線或網(wǎng)絡(luò)上的 MODBUS 協(xié)議映射能夠在應(yīng)用數(shù)據(jù)單元(ADU)上引入一些附加域。

0.png

啟動MODBUS 事務(wù)處理的客戶機創(chuàng)建 MODBUS 應(yīng)用數(shù)據(jù)單元。 功能碼向服務(wù)器指示將執(zhí)行哪種操作。
MODBUS 協(xié)議建立了客戶機啟動的請求格式。
用一個字節(jié)編碼 MODBUS 數(shù)據(jù)單元的功能碼域。有效的碼字范圍是十進制 1-255(128-255 為異常響應(yīng)保留) 。當(dāng)從客戶機向服務(wù)器設(shè)備發(fā)送報文時,功能碼域通知服務(wù)器執(zhí)行哪種操作。向一些功能碼加入子功能碼來定義多項操作。
從客戶機向服務(wù)器設(shè)備發(fā)送的報文數(shù)據(jù)域包括附加信息,服務(wù)器使用這個信息執(zhí)行功能碼定義的操作。這個域還包括離散項目和寄存器地址、處理的項目數(shù)量以及域中的實際數(shù)據(jù)字節(jié)數(shù)。
在某種請求中,數(shù)據(jù)域可以是不存在的(0長度) ,在此情況下服務(wù)器不需要任何附加信息。功能碼僅說明操作。
如果在一個正確接收的 MODBUS ADU 中,不出現(xiàn)與請求 MODBUS 功能有關(guān)的差錯,那么服務(wù)器至客戶機的響應(yīng)數(shù)據(jù)域包括請求數(shù)據(jù)。如果出現(xiàn)與請求 MODBUS 功能有關(guān)的差錯,那么域包括一個異常碼,服務(wù)器應(yīng)用能夠使用這個域確定下一個執(zhí)行的操作。
例如,客戶機能夠讀一組離散量輸出或輸入的開/關(guān)狀態(tài),或者客戶機能夠讀/寫一組寄存器的數(shù)據(jù)內(nèi)容。
當(dāng)服務(wù)器對客戶機響應(yīng)時,它使用功能碼域來指示正常(無差錯)響應(yīng)或者出現(xiàn)某種差錯(稱為異常響應(yīng)) 。對于一個正常響應(yīng)來說,服務(wù)器僅對原始功能碼響應(yīng)。

0.png

對于異常響應(yīng),服務(wù)器返回一個與原始功能碼等同的碼,設(shè)置該原始功能碼的最高有效位為邏輯 1。

0.png
注釋:需要管理超時,以便明確地等待可能不會出現(xiàn)的應(yīng)答。
串行鏈路上第一個MODBUS執(zhí)行的長度約束限制了MODBUS PDU大小 (最大RS485ADU=256字節(jié)) 。
因此,對串行鏈路通信來說,MODBUS PDU=256-服務(wù)器地址(1 字節(jié))-CRC(2 字節(jié))=253字節(jié)。

從而:
RS232 / RS485 ADU = 253字節(jié)+服務(wù)器地址(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 響應(yīng) PDU,mb_rsp_pdu
MODBUS 異常響應(yīng) PDU,mb_excep_rsp_pdu

定義 mb_req_pdu 為:
mb_req_pdu = { function_code, request_data},其中
function_code - [1 個字節(jié)] MODBUS 功能碼
request_data - [n 個字節(jié)],這個域與功能碼有關(guān),并且通常包括諸如可變參考、變量、數(shù)據(jù)偏移量、子功能碼等信息。
定義 mb_rsp_pdu 為:
mb_rsp_pdu = { function_code, response_ data},其中
function_code - [1 個字節(jié)] MODBUS 功能碼
response_data - [n 個字節(jié)],這個域與功能碼有關(guān),并且通常包括諸如可變參考、變量、數(shù)據(jù)偏移量、子功能碼等信息。
定義 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 數(shù)據(jù)編碼
MODBUS 使用一個‘big-Endian’ 表示地址和數(shù)據(jù)項。這意味著當(dāng)發(fā)射多個字節(jié)時,首先發(fā)送最高有效位。


完整的pdf格式文檔51黑下載地址(共131頁):
Modbus協(xié)議規(guī)范(中文詳細).pdf (4.51 MB, 下載次數(shù): 61)


評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復(fù)

使用道具 舉報

ID:1 發(fā)表于 2018-11-9 00:38 | 顯示全部樓層
好資料,51黑有你更精彩!!!
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表