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

評論