0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

Modbus協(xié)議詳解與案例演示

GReq_mcu168 ? 來源:億佰特物聯(lián)網(wǎng)實驗室 ? 作者:億佰特物聯(lián)網(wǎng)實驗 ? 2022-07-22 14:18 ? 次閱讀

Modbus RTU通訊協(xié)議在數(shù)據(jù)通訊上采用主從應答的方式進行。只能由主機(PC,HMI等)通過唯一從機地址發(fā)起請求,從機(終端設備)根據(jù)主機請求進行響應,即半雙工通訊。該協(xié)議只允許主機發(fā)起請求,從機進行被動響應,因此從機不會主動占用通訊線路造成數(shù)據(jù)沖突。

類似Modbus RTU協(xié)議的主從應答協(xié)議還有西門子的PPI、電表常用的DL/T645-2007等協(xié)議。

一、協(xié)議格式

信息傳輸為異步方式,使用16進制進行通訊,信息幀格式:

地址碼

功能碼

數(shù)據(jù)區(qū)

CRC校驗碼

1字節(jié)

1字節(jié)

N字節(jié)

2字節(jié)

地址碼

地址碼是每個通訊信息幀的第一個字節(jié),一般支持1到247,部分設備也支持0地址,用于接收主機的廣播數(shù)據(jù),每個從機在總線上地址必須唯一,只有與主機發(fā)送的地址碼相符的從機才能響應返回數(shù)據(jù)。

功能碼

功能碼是每個通訊信息幀的第二個字節(jié)。主機發(fā)送,通過功能碼告知從機設備應當執(zhí)行何種操作。

常見的八種功能碼:

功能碼

定義

操作

01H

讀取線圈

讀取一個或多個連續(xù)線圈狀態(tài)

05H

寫單個線圈

操作指定位置的線圈狀態(tài)

0FH

寫多個線圈

操作多個連續(xù)線圈狀態(tài)

02H

讀取離散量輸入

讀取一個或多個連續(xù)離散輸入狀態(tài)

04H

讀取輸入寄存器

讀取一個或多個連續(xù)輸入寄存器數(shù)據(jù)

03H

讀保持寄存器

讀取一個或多個保持寄存器數(shù)據(jù)

06H

寫單個保持寄存器

把兩個十六進制數(shù)據(jù)寫入對應位置

10H

寫多個保持寄存器

把4*N個十六進制數(shù)據(jù)寫入N個連續(xù)保持寄存器

數(shù)據(jù)區(qū)

數(shù)據(jù)區(qū)隨功能碼以及數(shù)據(jù)方向的不同而不同,這些數(shù)據(jù)可以是“寄存器首地址+讀取寄存器數(shù)量”、“寄存器地址+操作數(shù)據(jù)”、“寄存器首地址+操作寄存數(shù)量+數(shù)據(jù)長度+數(shù)據(jù)”等不同的組合,在“功能碼分析”詳解不同功能碼的數(shù)據(jù)區(qū)。

Modbus CRC校驗

Modbus RTU協(xié)議常用與工業(yè)現(xiàn)場對數(shù)據(jù)傳輸?shù)姆€(wěn)定性和正確性有較高的要求,因此通過CRC校驗保證數(shù)據(jù)傳輸?shù)恼_性和完整性。

二、錯誤反饋

地址與CRC校驗錯誤并不會收到從機的數(shù)據(jù)反饋,其他錯誤將向主機返回錯誤碼。數(shù)據(jù)幀的第二位加上0X80表示請求發(fā)生錯誤(非法功能碼、非法數(shù)據(jù)值等),錯誤數(shù)據(jù)幀如下:

地址碼

功能碼

錯誤碼

CRC校驗碼

1字節(jié)

1字節(jié)

1字節(jié)

2字節(jié)

常見錯誤碼如下:

名稱

說明

01H

非法的功能碼

不支持該功能碼操作寄存器

02H

非法的寄存器地址

訪問設備禁止訪問的寄存器

03H

非法的數(shù)據(jù)值

寫入不支持的參數(shù)

04H

從機故障

設備工作異常

三、通訊信息傳輸過程

通訊命令由主機發(fā)送從機時,與主機發(fā)送的地址碼相符的從機接收通訊命令,如果CRC校驗無誤,則執(zhí)行相應的操作,然后把執(zhí)行結果(數(shù)據(jù))返回給主機。返回信息中包含地址碼、功能碼、執(zhí)行后的數(shù)據(jù)以及CRC校驗碼。如果地址不匹配或者CRC校驗出錯就不返回任何信息。

四、功能碼分析

功能碼01H:讀線圈

例如:主機要讀取從機地址為01H,起始線圈地址為00H的1個線圈狀態(tài),主機發(fā)送:

主機發(fā)送

發(fā)送數(shù)據(jù)(HEX)

地址碼

01

功能碼

01

起始線圈地址

高字節(jié)

00

低字節(jié)

00

線圈數(shù)量

高字節(jié)

00

低字節(jié)

01

CRC校驗

低字節(jié)

FD

高字節(jié)

CA

如果從機寄存器00H線圈閉合,從機返回:

從機返回

發(fā)送數(shù)據(jù)(HEX)

地址碼

01

功能碼

01

字節(jié)數(shù)

01

線圈狀態(tài)

01

CRC校驗碼

低字節(jié)

90

高字節(jié)

48

仿真演示:

09fcabee-0985-11ed-ba43-dac502259ad0.png

功能碼05H:寫單個線圈

例如:主機要控制從機地址為01H,線圈地址為0000H的線圈狀態(tài),主機發(fā)送:

主機發(fā)送

發(fā)送數(shù)據(jù)(HEX)

地址碼

01

功能碼

01

線圈地址

高字節(jié)

00

低字節(jié)

00

控制方式

高字節(jié)

00(斷開)、FF(閉合)

低字節(jié)

01

CRC校驗

低字節(jié)

XX

高字節(jié)

XX

從機返回與主機請求相同;

仿真演示:

0a2f56b6-0985-11ed-ba43-dac502259ad0.png

功能碼0FH:寫多個線圈

例如:主機要控制從機地址為01H,起始線圈地址為00H的4個線圈狀態(tài),主機發(fā)送:

主機發(fā)送

發(fā)送數(shù)據(jù)(HEX)

地址碼

01

功能碼

0F

起始線圈地址

高字節(jié)

00

低字節(jié)

00

線圈數(shù)量

高字節(jié)

00

低字節(jié)

04

寫入字節(jié)數(shù)

01

控制方式

00(全部斷開)、0F(全部閉合)

CRC校驗

低字節(jié)

XX

高字節(jié)

XX

功能碼0FH操作,從機返回:

從機返回

發(fā)送數(shù)據(jù)(HEX)

地址碼

01

功能碼

0F

起始線圈地址

高字節(jié)

00

低字節(jié)

00

線圈數(shù)量

高字節(jié)

00

低字節(jié)

04

CRC校驗

低字節(jié)

54

高字節(jié)

08

仿真演示:

0a53e71a-0985-11ed-ba43-dac502259ad0.png

功能碼02H:讀離散輸入

例如:主機要讀取從機地址為01H,起始離散量地址為00H的4個輸入狀態(tài),主機發(fā)送:

主機發(fā)送

發(fā)送數(shù)據(jù)(HEX)

地址碼

01

功能碼

02

起始離散量地址

高字節(jié)

00

低字節(jié)

00

讀取數(shù)量

高字節(jié)

00

低字節(jié)

04

CRC校驗

低字節(jié)

79

高字節(jié)

C9

如果從機首地址00H開始的4離散輸入全部檢測到輸入,從機返回:

從機返回

發(fā)送數(shù)據(jù)(HEX)

地址碼

01

功能碼

02

字節(jié)數(shù)

01

離散輸入狀態(tài)

0F

CRC校驗碼

低字節(jié)

E1

高字節(jié)

8C

仿真演示:

0a6a94ba-0985-11ed-ba43-dac502259ad0.png

功能碼04H:讀取輸入寄存器

例如:主機要讀取從機地址為01H,起始寄存器地址為02H的1個輸入寄存器數(shù)據(jù),主機發(fā)送:

主機發(fā)送

發(fā)送數(shù)據(jù)(HEX)

地址碼

01

功能碼

04

起始寄存器地址

高字節(jié)

00

低字節(jié)

02

寄存器數(shù)量

高字節(jié)

00

低字節(jié)

01

CRC校驗

低字節(jié)

90

高字節(jié)

0A

如果從機輸入寄存器02H的數(shù)據(jù)為3344H,從機返回:

從機返回

發(fā)送數(shù)據(jù)(HEX)

地址碼

01

功能碼

04

字節(jié)數(shù)

02

寄存器05H數(shù)據(jù)

高字節(jié)

33

低字節(jié)

44

CRC校驗碼

低字節(jié)

AD

高字節(jié)

F3

仿真演示:

0a92fad6-0985-11ed-ba43-dac502259ad0.png

功能碼03H:讀保持寄存器

例如:主機要讀取從機地址為01H,起始寄存器地址為05H的2個保持寄存器數(shù)據(jù),主機發(fā)送:

主機發(fā)送

發(fā)送數(shù)據(jù)(HEX)

地址碼

01

功能碼

03

起始寄存器地址

高字節(jié)

00

低字節(jié)

05

寄存器數(shù)量

高字節(jié)

00

低字節(jié)

02

CRC校驗

低字節(jié)

D4

高字節(jié)

0A

如果從機保持寄存器05H、06H的數(shù)據(jù)為1122H、3344H,從機返回:

從機返回

發(fā)送數(shù)據(jù)(HEX)

地址碼

01

功能碼

03

字節(jié)數(shù)

04

寄存器05H數(shù)據(jù)

高字節(jié)

11

低字節(jié)

22

寄存器06H數(shù)據(jù)

高字節(jié)

33

低字節(jié)

44

CRC校驗碼

低字節(jié)

4B

高字節(jié)

C6

仿真演示:

0aba217e-0985-11ed-ba43-dac502259ad0.png

功能碼06H:寫單個保持寄存器

例如:主機寫入9988H的數(shù)據(jù)給從機地址為01H,寄存器地址為0050H的寄存器,主機發(fā)送:

主機發(fā)送

發(fā)送數(shù)據(jù)(HEX)

地址碼

01

功能碼

06

寄存器地址

高字節(jié)

00

低字節(jié)

50

寫入值

高字節(jié)

99

低字節(jié)

88

CRC校驗

低字節(jié)

E3

高字節(jié)

ED

從機返回與主機請求相同;

0ae3775e-0985-11ed-ba43-dac502259ad0.png

功能碼10H:寫多個保持寄存器

例如:主機要把數(shù)據(jù)0005H、2233H保存到從機地址為01H,起始寄存器地址為0020H的2個寄存器中,主機發(fā)送:

主機發(fā)送

發(fā)送數(shù)據(jù)(HEX)

地址碼

01

功能碼

10

起始寄存器地址

高字節(jié)

00

低字節(jié)

20

寄存器數(shù)量

高字節(jié)

00

低字節(jié)

02

寫入字節(jié)數(shù)

04

0000H

寄存器待寫入

高字節(jié)

00

低字節(jié)

05

0001H

寄存器待寫入

高字節(jié)

22

低字節(jié)

33

CRC校驗

低字節(jié)

B9

高字節(jié)

03

功能碼10H操作,從機返回:

從機返回

發(fā)送數(shù)據(jù)(HEX)

地址碼

01

功能碼

10

起始寄存器地址

高字節(jié)

00

低字節(jié)

20

寄存器數(shù)量

高字節(jié)

00

低字節(jié)

02

CRC校驗

低字節(jié)

40

高字節(jié)

02

仿真演示:

0b0bec16-0985-11ed-ba43-dac502259ad0.png

審核編輯 :李倩


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 協(xié)議
    +關注

    關注

    2

    文章

    592

    瀏覽量

    39053
  • MODBUS
    +關注

    關注

    28

    文章

    1718

    瀏覽量

    76430
  • 16進制
    +關注

    關注

    1

    文章

    13

    瀏覽量

    8742

原文標題:Modbus協(xié)議詳解與案例演示

文章出處:【微信號:mcu168,微信公眾號:硬件攻城獅】歡迎添加關注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關推薦

    Modbus協(xié)議網(wǎng)關簡介

    在工業(yè)自動化領域,設備間的通信與數(shù)據(jù)交換是實現(xiàn)高效、智能控制的關鍵。Modbus協(xié)議作為一種廣泛應用的通信協(xié)議,自1971年由Modicon公司首次推出以來,便以其標準、開放、支持多種電氣接口等特點
    的頭像 發(fā)表于 09-23 14:51 ?33次閱讀
    <b class='flag-5'>Modbus協(xié)議</b>網(wǎng)關簡介

    使用MODBUS協(xié)議、樓宇自控系統(tǒng)、電力協(xié)議轉(zhuǎn)Modbus協(xié)議網(wǎng)關來集成樓宇內(nèi)的溫濕度傳感器設備

    在現(xiàn)代建筑管理中,實現(xiàn)樓宇環(huán)境的自動化控制是降低能耗、增強管理效率的關鍵。本文將詳細介紹如何使用MODBUS協(xié)議、樓宇自控系統(tǒng)、電力協(xié)議轉(zhuǎn)Modbus協(xié)議網(wǎng)關來集成樓宇內(nèi)的溫濕度傳感器設備,并通過
    的頭像 發(fā)表于 08-08 17:31 ?163次閱讀
    使用<b class='flag-5'>MODBUS協(xié)議</b>、樓宇自控系統(tǒng)、電力<b class='flag-5'>協(xié)議</b>轉(zhuǎn)<b class='flag-5'>Modbus協(xié)議</b>網(wǎng)關來集成樓宇內(nèi)的溫濕度傳感器設備

    使用Modbus、樓宇自控、電力協(xié)議轉(zhuǎn)Modbus協(xié)議網(wǎng)關實現(xiàn)生產(chǎn)設備的遠程監(jiān)控和管理

    Modbus協(xié)議、樓宇自控、電力協(xié)議轉(zhuǎn)Modbus協(xié)議網(wǎng)關,將不同類型的生產(chǎn)設備數(shù)據(jù)集中傳輸?shù)奖O(jiān)控系統(tǒng),實現(xiàn)遠程監(jiān)控和管理。 我們先來看整個系統(tǒng)中需要
    的頭像 發(fā)表于 08-08 17:29 ?225次閱讀
    使用<b class='flag-5'>Modbus</b>、樓宇自控、電力<b class='flag-5'>協(xié)議</b>轉(zhuǎn)<b class='flag-5'>Modbus協(xié)議</b>網(wǎng)關實現(xiàn)生產(chǎn)設備的遠程監(jiān)控和管理

    Modbus協(xié)議轉(zhuǎn)Profibus協(xié)議網(wǎng)關接溫控表與PLC通訊

    Modbus協(xié)議轉(zhuǎn)Profibus協(xié)議網(wǎng)關(XD-MDPB100)則是實現(xiàn)這一通訊的重要工具。Modbus轉(zhuǎn)Profibus網(wǎng)關的主要功能是實現(xiàn)Modbus協(xié)議和Profibus
    的頭像 發(fā)表于 06-21 11:31 ?1732次閱讀
    <b class='flag-5'>Modbus協(xié)議</b>轉(zhuǎn)Profibus<b class='flag-5'>協(xié)議</b>網(wǎng)關接溫控表與PLC通訊

    Modbus協(xié)議轉(zhuǎn)Profinet協(xié)議網(wǎng)關與氣體監(jiān)測系統(tǒng)配置案例

    Modbus協(xié)議和Profinet協(xié)議作為工業(yè)領域常見的兩種通訊協(xié)議,各自具有一定的特點和應用范圍。Modbus轉(zhuǎn)Profinet網(wǎng)關(XD-MDPN100/300)在工業(yè)自動化控制系
    的頭像 發(fā)表于 06-13 17:50 ?1254次閱讀
    <b class='flag-5'>Modbus協(xié)議</b>轉(zhuǎn)Profinet<b class='flag-5'>協(xié)議</b>網(wǎng)關與氣體監(jiān)測系統(tǒng)配置案例

    Modbus協(xié)議的工作原理、優(yōu)缺點及應用

    在當今工業(yè)物聯(lián)網(wǎng)(IIoT)的浪潮中,Modbus協(xié)議無疑是連接傳統(tǒng)工業(yè)設備與現(xiàn)代信息技術的橋梁。作為一位工業(yè)物聯(lián)網(wǎng)的資深工程師,我深感有責任向傳統(tǒng)行業(yè)解釋這一重要協(xié)議的工作原理、優(yōu)缺點以及廣泛
    的頭像 發(fā)表于 05-21 17:06 ?1013次閱讀
    <b class='flag-5'>Modbus協(xié)議</b>的工作原理、優(yōu)缺點及應用

    Modbus協(xié)議網(wǎng)關是什么?Modbus協(xié)議網(wǎng)關的功能

    Modbus協(xié)議網(wǎng)關是一種專門用于工業(yè)自動化環(huán)境中的網(wǎng)絡設備,其主要功能是實現(xiàn)不同通信協(xié)議之間的轉(zhuǎn)換,尤其是將基于Modbus協(xié)議的設備或系統(tǒng)與使用其他協(xié)議的設備、控制系統(tǒng)或信息系統(tǒng)連
    的頭像 發(fā)表于 04-11 15:51 ?565次閱讀

    modbus協(xié)議功能碼分類 modbus協(xié)議功能碼是什么,有什么作用

    Modbus協(xié)議是一種用于工業(yè)領域常見的通信協(xié)議,它基于主從結構,用于在不同設備之間實現(xiàn)數(shù)據(jù)交換。Modbus協(xié)議的功能碼是決定數(shù)據(jù)交換類型和操作的重要部分。下面將詳細介紹Modbus協(xié)議
    的頭像 發(fā)表于 01-31 14:47 ?5488次閱讀

    modbus協(xié)議與485協(xié)議區(qū)別

    Modbus協(xié)議與485協(xié)議是工業(yè)通信領域中常用的兩種協(xié)議,它們在不同的層面上具有不同的功能和設計理念。本文將對Modbus協(xié)議與485協(xié)議
    的頭像 發(fā)表于 01-11 11:06 ?1.7w次閱讀

    什么是Modbus協(xié)議

    Modbus協(xié)議是一種在工業(yè)自動化領域廣泛應用的通信協(xié)議,它允許不同設備之間進行可靠的數(shù)據(jù)交換和控制。該協(xié)議最初由Modicon公司于1979年創(chuàng)建,旨在提供一種簡單而有效的方法,使PLC(可編程
    的頭像 發(fā)表于 01-09 08:00 ?724次閱讀
    什么是<b class='flag-5'>Modbus協(xié)議</b>?

    實例解析Modbus協(xié)議

    Modbus協(xié)議是Modicon公司(現(xiàn)在的施耐德電氣 Schneider Electric)于1979年為使用可編程邏輯控制器(PLC)通信而發(fā)表。Modbus已經(jīng)成為工業(yè)領域通信協(xié)議的業(yè)界標準(De facto),并且現(xiàn)在是
    發(fā)表于 12-25 09:33 ?1260次閱讀
    實例解析<b class='flag-5'>Modbus協(xié)議</b>

    EtherCAT協(xié)議Modbus協(xié)議在風電領域

    Modbus協(xié)議還可以與其他工業(yè)自動化協(xié)議進行集成,例如Ethernet/IP、Profinet等,以實現(xiàn)更高效和可靠的數(shù)據(jù)傳輸和控制。在風電領域,EtherCAT協(xié)議Modbus協(xié)議
    的頭像 發(fā)表于 12-22 15:03 ?414次閱讀
    EtherCAT<b class='flag-5'>協(xié)議</b>和<b class='flag-5'>Modbus協(xié)議</b>在風電領域

    modbus協(xié)議應用指南

    modbus協(xié)議
    發(fā)表于 12-04 09:45 ?3次下載

    怎么用MODBUS協(xié)議實現(xiàn)開關量采集與控制采集?

    怎么用MODBUS協(xié)議實現(xiàn)開關量采集與控制采集
    發(fā)表于 10-23 08:17

    modbus協(xié)議中的輸入寄存器可以讀寫嗎?

    modbus協(xié)議中的輸入寄存器可以讀寫嗎
    發(fā)表于 10-13 08:03