新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > MODBUS-RTU數(shù)據(jù)幀格式、報(bào)文實(shí)例

MODBUS-RTU數(shù)據(jù)幀格式、報(bào)文實(shí)例

作者: 時(shí)間:2023-12-18 來源:歐工玩轉(zhuǎn)嵌入式 收藏

報(bào)文模型

設(shè)備地址

本文引用地址:http://butianyuan.cn/article/202312/453989.htm

功能代碼

數(shù)據(jù)格式

CRC校驗(yàn)L

CRC校驗(yàn)H

8bit

8bit

N*8bit

8bit

8bit

一個(gè)報(bào)文就是一幀數(shù)據(jù),一個(gè)數(shù)據(jù)幀就是一個(gè)報(bào)文: 指的是一串完整的指令數(shù)據(jù),就像上面的一串?dāng)?shù)據(jù)。

主機(jī)對(duì)從機(jī)寫數(shù)據(jù)操作

如果單片機(jī)接收到一個(gè)報(bào)文那么就對(duì)報(bào)文進(jìn)行解析執(zhí)行相應(yīng)的處理

0x01

06

00 01

00 17

98 04

從機(jī)地址

功能號(hào)

數(shù)據(jù)地址

數(shù)據(jù)

CRC校驗(yàn)

主機(jī)對(duì)從機(jī)讀數(shù)據(jù)操作

0x01

03

00 01

00 01

D5 CA

從機(jī)地址

功能號(hào)

數(shù)據(jù)地址

讀取數(shù)據(jù)個(gè)數(shù)

CRC校驗(yàn)

單片機(jī)接收到這串?dāng)?shù)據(jù)根據(jù)數(shù)據(jù)計(jì)算CRC校驗(yàn)判斷數(shù)據(jù)是否正確,如果判斷數(shù)據(jù)無誤,則結(jié)果是:返回信息給主機(jī),返回的信息也是有格式的:

從機(jī)對(duì)主機(jī)返回內(nèi)容

0x01

03

02

00 17

F8 4A

從機(jī)地址

功能號(hào)

數(shù)據(jù)字節(jié)個(gè)數(shù)

兩個(gè)字節(jié)數(shù)據(jù)

CRC校驗(yàn)

這樣MODBUS主機(jī)就完成了一次對(duì)從機(jī)數(shù)據(jù)的讀操作,實(shí)現(xiàn)了通訊。

常用功能碼

數(shù)據(jù)類型

讀功能碼

寫功能碼

對(duì)象類型

離散量輸入

02


單個(gè)位

線圈狀態(tài)

01

05,15

單個(gè)位

輸入寄存器

04


16位字

保持寄存器

03

06,16

16位字

寄存器起始地址(起始數(shù)據(jù)地址)

數(shù)據(jù)類型

參數(shù)地址,寄存器編號(hào)

離散量輸入

00001~0FFFF

線圈狀態(tài)

10001~1FFFF

輸入寄存器

30001~3FFFF

保持寄存器

40001~4FFFF

舉例:
Modbus協(xié)議中寄存器地址從1開始,而實(shí)際存儲(chǔ)中地址從0開始。假如要讀取寄存器編號(hào)為40005(4為塊編號(hào),5為modbus中寄存器地址)的寄存器的數(shù)據(jù),則應(yīng)把00
04放入報(bào)文的地址域。寄存器定義,又名碼表或者信息點(diǎn)表,應(yīng)由廠家提供的。

寄存器編號(hào)

屬性

定義

系數(shù)

備注

40001

RO

A相電壓


從40048中讀取電壓系數(shù)

40002

RO

B相電壓


如要讀A相電壓,則應(yīng)將0x00 0x00放入寄存器起始地址域中。

報(bào)文實(shí)例

1、讀40005、40006兩個(gè)寄存器,假設(shè)從機(jī)地址為1

下行報(bào)文:01 03 00 04 00 02 85 ca

從機(jī)地址

功能碼

寄存器起始地址

讀取寄存器個(gè)數(shù)

CRC校驗(yàn)

01

03

00 04

00 02

85 ca

上行報(bào)文:01 03 04 00 00 00 00 21 33

從機(jī)地址

功能碼

返回字節(jié)個(gè)數(shù)

寄存器40005數(shù)據(jù)

寄存器40006數(shù)據(jù)

CRC校驗(yàn)

01

03

04

00 00

00 00

21 33

2、向40005寄存器中寫入0x12,0x34,假設(shè)從機(jī)地址為1

下行報(bào)文:01 06 00 04 00 01 12 34 4a b0

從機(jī)地址

功能碼

寄存器起始地址

讀取寄存器個(gè)數(shù)

要寫入的數(shù)據(jù)

CRC校驗(yàn)

01

03

00 04

00 01

12 34

85 ca

上行報(bào)文:01 06 00 04 00 01 12 34 4a b0

從機(jī)地址

功能碼

寄存器起始地址

讀取寄存器個(gè)數(shù)

寫入的數(shù)據(jù)

CRC校驗(yàn)

01

03

00 04

00 01

12 34

85 ca




關(guān)鍵詞: MODBUS-RTU

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉