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 |
-
寄存器
+關(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)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論