Modbus技術規範組成
主要內容:
1、Modbus應用協議規範
Modbus是一種簡單客戶機/服務器應用協議
客戶機能夠向服務器發送請求
服務器分析請求,處理請求,向客戶機發送應答
通用Modbus幀結構----協議數據單元(PDU)
Modbus是一個可選擇部分使用的協議
a 服務器可執行部分Modbus協議
Modbus由公共功能碼和用戶定義的功能碼組成
Modbus應用協議使用功能碼列表讀或寫數據,或者在遠程服務器上進行遠程處理
b 讀/寫寄存器列表,讀/寫比特列表
c 診斷,標識
Modbus事務處理(無差錯)
a 當服務器對客戶機響應時,它使用功能碼域來指示正常(無差錯)響應或者出現某種差錯(稱為異常響應)
b 對於一個正常響應來說,服務器僅複製原始功能碼
Modbus事務處理(異常響應)
a 對於異常響應,服務器將原始功能碼的最高有效位設置邏輯1後返回
b 異常碼指示差錯類型
Modbus PDU長度
a Modbus最初在串行鏈路上的實現(最大RS485ADU=256字節)限制了Modbus PD的長度
b 因此,對串行鏈路通信來說,Modbus PDU=256-服務器地址(1字節)-CRC(2字節)=253字節。
c 從而:
RS232/RS485 ADU=253字節+服務器地址(1字節)+CRC(2字節)=256字節。
TCP Modbus ADU=253字節+MBAP(7字節)=260字節。
Modbus PDU結構
(1)Modbus請求PDU
mb_req_pdu = { function_code, request_data} ,
function_code - [1字節] Modbus功能碼
request_data - [n字節]
(2)Modbus響應PDU
mb_rsp_pdu = { function_code, response_ data },
function_code - [1字節] Modbus功能碼
response_data - [n字節]
(3)Modbus異常響應PDU
mb_excep_rsp_pdu = { function_code, exception_code },
function_code - [1字節] Modbus功能碼 + 0x80 exception_code – [1字節]
Modbus 數據模型
Modbus的數據模型是以一組具有不同特徵的表為基礎建立的
四個基本表為:
Modbus公共功能碼的定義
Modbus功能碼應用實例(1)
讀線圈01 (0x01)
Modbus功能碼應用實例(2)
寫多個寄存器16(0x10)
2、Modbus協議在串行鏈路上的實現
主要在RS-485和RS-232等物理接口上實現Modbus協議
串行鏈路上的Modbus幀結構
a Modbus串行鏈路協議是一個主/從協議
b 網絡上的每一個從站必須有唯一的地址(從1到247)
c 從站地址用於尋址從站設備,由主站發起
d 地址0用於廣播模式,不需要響應
e RS-485和RS-232定義了標準的物理端口,提高可互操作性
Modbus串行傳輸模式-RTU模式
a RTU Modbus串行傳輸模式的報文格式,CRC-16差錯校驗
b 報文幀的標識
c 字符之間的要求
Modbus串行傳輸模式-ASCII模式
a 報文必須以“:”開始
b 報文必須以“LF-CR”結束
c 數據用十六進制ASCII碼值表示
d 使用LRC進行差錯校驗
3、Modbus協議在TCO/IP上的實現
基於開放TCP/IP 的Modbus協議
(1)Modbus協議是一個開發性協議
IANA已為 Modbus協議指配TCP / UDP 知名端口502
(2)Modbus協議是一個標準協議
IETF組織提議將Modbus協議作為因特網標準
Modbus協議是自動化領域中廣泛使用“實事”標準
(3)以太網 (快速以太網)
使用目前最流行的LAN技術
IEEE 802.3中定義的以太網和以太網II
(4)TCP/IP模型
描述因特網協議的組合
Modbus TCP/IP通信結構
Modbus TCP/IP的通信設備:
連接至TCP/IP網絡的Modbus TCP/IP客戶機和服務器設備、互連設備,如:在TCP/IP網絡和串行鏈路子網之間互連的網橋、 路由器或網關等設備。
TCP/IP 上的Modbus 數據幀
(a)通過TCP/IP棧傳輸
(b)支持以太網II和IEEE 802.3幀,默認幀為以太網II幀
(c)以太網II是默認的 TCP/IP 網絡幀格式
MBAP 報文頭
Modbus報文傳輸服務結構
通信應用層
n Modbus客戶機
允許用戶應用顯性地控制與遠程設備的信息交換。Modbus客戶機根據用戶應用向Modbus客戶機接口發送的要求中所包含的參數來建立一個Modbus請求。
n Modbus客戶機接口
Modbus客戶機接口提供一個接口,使得用戶應用能夠生成各類Modbus服務的請求,該服務包括對Modbus應用對象的訪問
n Modbus服務器
在收到一個Modbus請求以後,模塊激活一個本地操作進行讀、寫、或完成其他操作。
TCP管理層
管理通信的建立和結束以及管理在所建立的TCP連接上的數據流 。
n 連接管理
在客戶機和服務器的Modbus模塊之間的通信需要使用TCP連接管理模塊,負責全面管理報文傳輸TCP連接.
n 訪問控制
在某些至關重要的場合,必須禁止無關的主機對設備內部數據的訪問。這既是需要的安全模式,也是在需要時實現安全處理的原因。
TCP/IP棧層
可以對TCP/IP的棧進行參數配置,以適用對產品或系統的不同的特定約束進行數據流控制、地址管理和連接管理。使用BSD套接字接口來管理TCP連接。
Modbus TCP/IP連接建立
n Modbus報文傳輸服務必須在502端口上提供一個監聽套接字,允許接收新的連接和與其他設備交換數據。
n 當報文傳輸服務需要與遠程服務器交換數據時,它必須與遠程502端口建立一個新的客戶機連接,以便於遠距離地交換數據。本地端口必須高於1024,並且對每個客戶機的連接各不相同。
Modbus TCP/IP通信棧
TCP/IP棧提供了一個接口,用來管理連接、發送和接收數據,還可以進行某些參數配置,以使得棧的特性適應於設備或系統的限制。
享受更多最新實用PLC乾貨知識!
閱讀更多 溪谷公眾號 的文章