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

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

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

Modbus協(xié)議的讀取保持寄存器值

瑞薩MCU小百科 ? 來(lái)源:瑞薩MCU小百科 ? 2024-10-30 10:54 ? 次閱讀

10.5.4

0x03)讀取保持寄存器

1. 功能說(shuō)明

03功能碼用于讀取從設(shè)備保持寄存器的內(nèi)容,不支持廣播模式。消息頓中指定了需要讀取的保持寄存器的起始地址和數(shù)目。而保持寄存器中各地址的具體內(nèi)容和意義則由設(shè)備開(kāi)發(fā)者自行規(guī)定。

2. 查詢報(bào)文

在查詢報(bào)文中,必須指定保持寄存器的開(kāi)始地址和需要讀取的寄存器數(shù)量,例如,如下表所示,從設(shè)備地址為7(0x07),需要讀取保持寄存器地址40201~40203共計(jì)3個(gè)寄存器的內(nèi)容即讀取Modbus協(xié)議地址200~202的內(nèi)容,在報(bào)文中表示如下。

起始地址:0x00C8(十進(jìn)制200)。

讀取數(shù)量:0x0003(十進(jìn)制3)。

功能碼03查詢報(bào)文示例:

字段 例(Hex) ASCII模式字符型 RTU模式8位
(Hex)
幀頭 “:”
從設(shè)備地址 0x07 “0”,“7” 0x07
功能碼 0x03 “0”,“3” 0x03
起始地址
(高位)
0x00 “0”,“0” 0x00
起始地址
(低位)
0xc8 “c”,“8” 0xc8
寄存器數(shù)
(高位)
0x00 “0”,“0” 0x00
寄存器數(shù)
(低位)
0x03 “0”,“3” 0x03
差錯(cuò)校驗(yàn) LRC(2字符) CRC(2字節(jié))
幀尾 CR/LF
合計(jì)字節(jié)數(shù) 17 8

本功能碼的起始地址由2字節(jié)構(gòu)成,取值范圍為0x00000xFFFF;寄存器數(shù)量由2字節(jié)構(gòu)成取值范圍為0x00010x007D(即十進(jìn)制1~125),即最多可以連續(xù)讀取125個(gè)寄存器。

需要特別注意的是,Modbus的保持寄存器和輸入寄存器是以字(Word)為基本單位的(1Word=2Byte),所以如果讀取保持寄存器地址為40001開(kāi)始的一個(gè)16位(bit)的無(wú)符號(hào)數(shù),那么返回2字節(jié),并可以從40002開(kāi)始讀取下一個(gè)16位的無(wú)符號(hào)數(shù)。如果需要讀取寄存器地址為40001開(kāi)始的一個(gè)32位浮點(diǎn)數(shù),則需要返回4字節(jié),即必須連續(xù)讀取40001和40002的內(nèi)容,而且下一個(gè)32位的浮點(diǎn)數(shù)必須從40003開(kāi)始讀取。對(duì)于浮點(diǎn)數(shù)(或者32位的整數(shù))而言,連續(xù)讀取的兩個(gè)寄存器之間存在字節(jié)序和大小端的問(wèn)題,這一點(diǎn)在開(kāi)發(fā)時(shí)必須引起注意。

3. 響應(yīng)報(bào)文

響應(yīng)報(bào)文的各項(xiàng)構(gòu)成和意義如下表所示。因?yàn)镸odbus的保持寄存器和輸入寄存器是以字為基本單位的,在上面的例子中,查詢報(bào)文連續(xù)讀取3個(gè)寄存器的內(nèi)容,將返回6 字節(jié),參考表下表中數(shù)據(jù)1~3的高位和低位。

功能碼03響應(yīng)報(bào)文示例:

字段 例(Hex) ASCII模式字符型 RTU模式8位
(Hex)
幀頭 “:”
從設(shè)備地址 0x07 “0”,“7” 0x07
功能碼 0x03 “0”,“3” 0x03
數(shù)據(jù)域字節(jié)數(shù) 0x06 “0”,“6” 0x06
數(shù)據(jù)1(高位) 0x03 “0”,“3” 0x03
數(shù)據(jù)1(低位) 0x53 “5”,“3” 0x53
數(shù)據(jù)2(高位) 0x01 “0”,“1” 0x01
數(shù)據(jù)2(低位) 0xF3 “F”,“3” 0xF3
數(shù)據(jù)3(高位) 0x01 “0”,“1” 0x01
數(shù)據(jù)3(低位) 0x05 “0”,“5” 0x05
差錯(cuò)校驗(yàn) LRC(2字符) CRC(2字節(jié))
幀尾 CR/LF
合計(jì)字節(jié)數(shù) 23 11

10.5.5

(0x04)讀取輸入寄存器值

1. 功能說(shuō)明

與功能碼03類似,04功能碼用于讀取從設(shè)備輸入寄存器的內(nèi)容,不支持廣播模式。消息頓中指定了需要讀取的輸入寄存器的起始地址和數(shù)目,而輸入寄存器中各地址的具體內(nèi)容和意義則由設(shè)備開(kāi)發(fā)者自行規(guī)定。

2. 查詢報(bào)文

在查詢報(bào)文中必須指定輸入寄存器的起始地址和需要讀取的寄存器數(shù)量。例如,如表4-9所示,從設(shè)備地址為7(0x07),需要讀取輸入寄存器地址30301~30303共計(jì) 3個(gè)寄存器的內(nèi)容即讀取Modbus協(xié)議地址300~302的內(nèi)容,在報(bào)文中表示如下。

起始地址:0x012C(十進(jìn)制300)。

讀取數(shù)量:0x0003(十進(jìn)制3)。

功能碼04查詢報(bào)文示例:

字段 例(Hex) ASCII模式字符型 RTU模式8位
(Hex)
幀頭 “:”
從設(shè)備地址 0x07 “0”,“7” 0x07
功能碼 0x04 “0”,“4” 0x04
起始地址
(高位)
0x01 “0”,“1” 0x01
起始地址
(低位)
0x2c “2”,“c” 0x2c
寄存器數(shù)
(高位)
0x00 “0”,“0” 0x00
寄存器數(shù)
(低位)
0x03 “0”,“3” 0x03
差錯(cuò)校驗(yàn) LRC(2字符) CRC(2字節(jié))
幀尾 CR/LF
合計(jì)字節(jié)數(shù) 17 8

本功能碼中,起始地址由2字節(jié)構(gòu)成,取值范圍為0x0000~0xFFFF;寄存器數(shù)量由2字節(jié)構(gòu)成,取值范圍為0x0001~0x007D(即十進(jìn)制1~125),即最多可以連續(xù)讀取125個(gè)寄存器同樣有一點(diǎn)需要注意,Modbus的保持寄存器和輸入寄存器是以字為基本單位的。所以對(duì)于浮點(diǎn)數(shù)(或者32位的整數(shù))而言,連續(xù)讀取的兩個(gè)寄存器之間存在字節(jié)序和大小端的問(wèn)題,這一點(diǎn)在開(kāi)發(fā)時(shí)必須引起注意。

3. 響應(yīng)報(bào)文

響應(yīng)報(bào)文的各項(xiàng)構(gòu)成和意義如下表所示。因?yàn)镸odbus的保持寄存器和輸入寄存器是以字為基本單位的,上面的例子中,查詢報(bào)文連續(xù)讀取3個(gè)寄存器的內(nèi)容,那么將返回6字節(jié),參考下表中數(shù)據(jù)1~3的高位和低位。

功能碼04響應(yīng)報(bào)文示例:

字段 例(Hex) ASCII模式字符型 RTU模式8位
(Hex)
幀頭 “:”
從設(shè)備地址 0x07 “0”,“7” 0x07
功能碼 0x04 “0”,“4” 0x04
數(shù)據(jù)域字節(jié)數(shù) 0x06 “0”,“6” 0x06
數(shù)據(jù)1(高位) 0x03 “0”,“3” 0x03
數(shù)據(jù)1(低位) 0x53 “5”,“3” 0x53
數(shù)據(jù)2(高位) 0x01 “0”,“1” 0x01
數(shù)據(jù)2(低位) 0xF3 “F”,“3” 0xF3
數(shù)據(jù)3(高位) 0x01 “0”,“1” 0x01
數(shù)據(jù)3(低位) 0x05 “0”,“5” 0x05
差錯(cuò)校驗(yàn) LRC(2字符) CRC(2字節(jié))
幀尾 CR/LF
合計(jì)字節(jié)數(shù) 23 11

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

    關(guān)注

    31

    文章

    5300

    瀏覽量

    119858
  • MODBUS
    +關(guān)注

    關(guān)注

    28

    文章

    1758

    瀏覽量

    76764
  • 功能碼
    +關(guān)注

    關(guān)注

    0

    文章

    10

    瀏覽量

    2102

原文標(biāo)題:讀取保持寄存器值 - RZ MPU工業(yè)控制教程連載(31)

文章出處:【微信號(hào):瑞薩MCU小百科,微信公眾號(hào):瑞薩MCU小百科】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Modbus協(xié)議的疑問(wèn)

    邏輯線圈的當(dāng)前狀態(tài)(ON/OFF)2讀取輸入狀態(tài)取得一組開(kāi)關(guān)輸入的當(dāng)前狀態(tài)(ON/OFF)3讀取保持寄存器在一個(gè)或多個(gè)保持寄存器中取得當(dāng)前的
    發(fā)表于 02-20 11:57

    基于Modbus協(xié)議的485總線,當(dāng)功能碼為03H,讀取N個(gè)讀寄存器數(shù)據(jù)時(shí),從設(shè)備需要進(jìn)行N次消息回送嗎?

    基于Modbus協(xié)議的485總線,采用C51單片機(jī)作為主機(jī),多個(gè)智能傳感作為從設(shè)備,欲準(zhǔn)確高效得采集多傳感數(shù)據(jù),應(yīng)該功能碼為03H讀多個(gè)寄存器
    發(fā)表于 03-07 13:38

    求助大神關(guān)于modbus協(xié)議保持寄存器的問(wèn)題

    我想用電腦向傳感發(fā)送采集指令,但是輸入保持寄存器時(shí)傳感沒(méi)有反應(yīng)連接應(yīng)該沒(méi)有問(wèn)題,能讀到設(shè)備標(biāo)識(shí)
    發(fā)表于 05-18 20:04

    Modbus協(xié)議說(shuō)明及VC代碼

    名稱 作用 01 讀取線圈狀態(tài) 取得一組邏輯線圈的當(dāng)前狀態(tài)(ON/OFF) 02 讀取輸入狀態(tài) 取得一組開(kāi)關(guān)輸入的當(dāng)前狀態(tài)(ON/OFF) 03 讀取保持寄存器 在一個(gè)或多個(gè)
    發(fā)表于 08-03 15:14

    Modbus庫(kù)開(kāi)發(fā)筆記之九:利用協(xié)議棧開(kāi)發(fā)Modbus TCP Server應(yīng)用

    GetInputStatus(uint16_tstartAddress,uint16_t quantity,bool *statusValue); /*獲取想要讀取保持寄存器*
    發(fā)表于 08-26 15:56

    modbus協(xié)議筆記

    1 Modbus協(xié)議概要? Modbus通信協(xié)議由Modicon公司(現(xiàn)在的施耐德電氣Schneider Electric)于1979年為可編程邏輯控制(即PLC)通信而發(fā)表。目前,Modbu
    發(fā)表于 07-02 07:17

    Modbus協(xié)議是什么?Modbus協(xié)議主要有哪些應(yīng)用?

    請(qǐng)問(wèn)一下Modbus協(xié)議是什么?Modbus協(xié)議主要有哪些應(yīng)用?
    發(fā)表于 07-15 12:04

    Modbus協(xié)議是什么

    Modbus協(xié)議是什么?MODBUS功能碼有哪些?MODBUS協(xié)議有哪幾種傳輸模式?
    發(fā)表于 09-29 07:06

    libmodbus寄存器個(gè)數(shù)的疑問(wèn)

    MODBUS_MAX_READ_BITS2000MODBUS_MAX_READ_REGISTERS125根據(jù)modbus協(xié)議寄存器地址是從0到65535的,那這幾個(gè)宏定義,應(yīng)該是指的是每次最多可連接
    發(fā)表于 06-30 15:39

    RS485和Modbus通信協(xié)議讓工業(yè)自動(dòng)化更高效

    。以下是Modbus RTU協(xié)議中常用的功能碼及其含義:   01:讀取線圈寄存器   02:讀取離散輸入
    發(fā)表于 05-05 16:25

    Modbus協(xié)議的理解

    系統(tǒng)的兼容,最好采用通用的通訊協(xié)議。   我們可以Modbus協(xié)議進(jìn)行修改,使之能使用在自己的系統(tǒng)中。Modbus協(xié)議包括ASCII、RTU、TCP等,并沒(méi)有規(guī)定物理層。此協(xié)議定義了控
    發(fā)表于 05-05 16:47

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

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

    工程監(jiān)測(cè)無(wú)線中繼采集儀的參數(shù)讀寫(xiě)MODBUS協(xié)議

    如下 工程監(jiān)測(cè)無(wú)線中繼采集儀的參數(shù)讀寫(xiě)MODBUS協(xié)議 例:讀取地址為 129 的無(wú)線中繼采集儀寄存器,寄存器開(kāi)
    的頭像 發(fā)表于 05-22 11:30 ?570次閱讀
    工程監(jiān)測(cè)無(wú)線中繼采集儀的參數(shù)讀寫(xiě)<b class='flag-5'>MODBUS協(xié)議</b>

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

    的分類及其作用。 Modbus協(xié)議功能碼分類: Modbus協(xié)議定義了一系列的功能碼,每個(gè)功能碼都代表不同的請(qǐng)求類型和操作。根據(jù)Modbus規(guī)范,功能碼可以分為以下幾類: 讀功能碼(0x03和0x04): 功能碼0x03用于
    的頭像 發(fā)表于 01-31 14:47 ?6369次閱讀

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

    數(shù)據(jù)的互聯(lián)互通。Modbus協(xié)議作為一種廣泛應(yīng)用于工業(yè)控制領(lǐng)域的通信協(xié)議,主要用于在主設(shè)備(如PLC、SCADA系統(tǒng))與從設(shè)備(如傳感、執(zhí)行、智能儀表等)之間交換數(shù)據(jù)。
    的頭像 發(fā)表于 04-11 15:51 ?683次閱讀