一.背景
Modbus協議是一項應用層報文傳輸協議,包括ASCII、RTU、TCP三種報文類型。標準的Modbus協議物理層接口有RS232、RS422、RS485和以太網接口,采用master/slave方式通信。本文主要介紹的MODBUS-RTU。
二.MODBUS數據幀組成
首先我們要知道一幀正常的MODBUS數據幀包含的內容有:地址域 + 功能碼 + 數據 + 差錯校驗。
三.下面逐一解釋MODBUS數據幀各部分的具體含義:
(1)地址域:即主站要訪問的從站地址,其范圍0~247
(2)功能碼:即主站想要對從站進行何種操作。從大的方面看分為讀(主站讀取從站數據),寫(主站向從站讀取數據)再往細分就是具體讀取從站哪塊區域的數據,以及具體將數據寫到從站的哪塊區域。操作從站不同的數據區對應有不同的功能碼,在文末《MODBUS協議規范》文檔中有詳細介紹
(3)數據:如果主站的請求是讀數據,那么該“數據”要包含的信息有:從哪里開始讀數據 + 讀多少數據。如果主站的請求是向從站寫數據,那么該“數據”要包含的信息有:從哪里開始寫數據 + 寫多少個字節數據 + 要寫的具體數據
(4)差錯校驗:為了保證數據傳輸的正確性,Modbus協議會在數據幀最后面加上兩個字節的差錯校驗
四.舉實例詳細說明主站和從站之間的數據幀交互過程
(1) 主站 請求讀 從站數據:
主站向從站發送的實際請求數據幀:03 04 00 08 00 01 B0 3B (假設從站地址為03),其中:
03:為主站要訪問的域名(即從站地址,范圍0~247)。04:表示功能碼。00 08:從從站08這個地址開始讀取數據。00 01:即將讀取數據的長度。b0 3b:兩個字節的校驗數據。
從站接收到主站的請求數據幀之后實際的響應數據幀為:03 04 02 00 0A 40 F7,其中:
03:為從站地址即域名(即從站地址,范圍0~247)。04:表示功能碼。02:被讀取數據長度(包含一個字節高8位數據,一個字節低8八位數據)00 0A:被讀取的具體數據40 F7兩個字節的校驗數據
(2) 主站請求寫 從站數據:
主站向從站發送的實際請求數據幀:03 10 00 01 00 02 04 00 0A 01 02 99 88 (假設從站地址為03),其中:
03:為主站要訪問的域名(即從站地址,范圍0~247)。10:功能碼。00 01:往從站01這個地址開始寫數據。00 02:寄存器數量。04:一共寫4個字節數據。04 00 01 02:具體數據。99 88:兩個字節的校驗數據。
從站接收到主站的請求數據幀之后實際的響應數據幀為:03 10 00 01 00 02 11 EA,其中:
03:為從站地址即域名(即從站地址,范圍0~247)。10:功能碼。00 01:往從站01這個地址開始寫數據。(原樣返回/響應)0002:寄存器數量。(原樣返回/響應)11 EA兩個字節的校驗數據
-
數據
+關注
關注
8文章
7170瀏覽量
89698 -
MODBUS
+關注
關注
28文章
1825瀏覽量
77350 -
物理層
+關注
關注
1文章
152瀏覽量
34564
發布評論請先 登錄
相關推薦
什么是Modbus通訊協議?Modbus通訊協議有什么特點?
基于MODBUS的串口通訊軟件(LV實現)
Modbus庫開發筆記之二:Modbus消息幀的生成
modbus rtu通訊協議格式詳細說明
![<b class='flag-5'>modbus</b> rtu<b class='flag-5'>通訊</b>協議<b class='flag-5'>格式</b>詳細說明](https://file.elecfans.com/web1/M00/45/E3/pIYBAFp6o8qAKaOcAAA385M_JYw990.png)
評論