新聞中心

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

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

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

        報文模型

        設備地址

        本文引用地址:http://www.104case.com/article/202312/453989.htm

        功能代碼

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

        CRC校驗L

        CRC校驗H

        8bit

        8bit

        N*8bit

        8bit

        8bit

        一個報文就是一幀數(shù)據(jù),一個數(shù)據(jù)幀就是一個報文: 指的是一串完整的指令數(shù)據(jù),就像上面的一串數(shù)據(jù)。

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

        如果單片機接收到一個報文那么就對報文進行解析執(zhí)行相應的處理

        0x01

        06

        00 01

        00 17

        98 04

        從機地址

        功能號

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

        數(shù)據(jù)

        CRC校驗

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

        0x01

        03

        00 01

        00 01

        D5 CA

        從機地址

        功能號

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

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

        CRC校驗

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

        從機對主機返回內(nèi)容

        0x01

        03

        02

        00 17

        F8 4A

        從機地址

        功能號

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

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

        CRC校驗

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

        常用功能碼

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

        讀功能碼

        寫功能碼

        對象類型

        離散量輸入

        02


        單個位

        線圈狀態(tài)

        01

        05,15

        單個位

        輸入寄存器

        04


        16位字

        保持寄存器

        03

        06,16

        16位字

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

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

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

        離散量輸入

        00001~0FFFF

        線圈狀態(tài)

        10001~1FFFF

        輸入寄存器

        30001~3FFFF

        保持寄存器

        40001~4FFFF

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

        寄存器編號

        屬性

        定義

        系數(shù)

        備注

        40001

        RO

        A相電壓


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

        40002

        RO

        B相電壓


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

        報文實例

        1、讀40005、40006兩個寄存器,假設從機地址為1

        下行報文:01 03 00 04 00 02 85 ca

        從機地址

        功能碼

        寄存器起始地址

        讀取寄存器個數(shù)

        CRC校驗

        01

        03

        00 04

        00 02

        85 ca

        上行報文:01 03 04 00 00 00 00 21 33

        從機地址

        功能碼

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

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

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

        CRC校驗

        01

        03

        04

        00 00

        00 00

        21 33

        2、向40005寄存器中寫入0x12,0x34,假設從機地址為1

        下行報文:01 06 00 04 00 01 12 34 4a b0

        從機地址

        功能碼

        寄存器起始地址

        讀取寄存器個數(shù)

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

        CRC校驗

        01

        03

        00 04

        00 01

        12 34

        85 ca

        上行報文:01 06 00 04 00 01 12 34 4a b0

        從機地址

        功能碼

        寄存器起始地址

        讀取寄存器個數(shù)

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

        CRC校驗

        01

        03

        00 04

        00 01

        12 34

        85 ca




        關鍵詞: MODBUS-RTU

        評論


        相關推薦

        技術專區(qū)

        關閉
        主站蜘蛛池模板: 枞阳县| 启东市| 鲁甸县| 开原市| 阳信县| 葵青区| 德江县| 石河子市| 治县。| 宣武区| 伊春市| 新乡县| 罗田县| 洪江市| 丰顺县| 大悟县| 芦溪县| 讷河市| 公主岭市| 安图县| 尼勒克县| 隆尧县| 湟源县| 信宜市| 大丰市| 大同市| 嵩明县| 祁东县| 运城市| 电白县| 鄂伦春自治旗| 洞口县| 青铜峡市| 石狮市| 礼泉县| 卓资县| 宿松县| 栾川县| 稻城县| 雷山县| 蕉岭县|