10.5.13
(0x11)報告從站ID(僅用于串行鏈路)
1. 功能說明
17功能碼用于讀取從站設(shè)備的ID、類型描述、當(dāng)前狀態(tài)以及其他信息,不支持廣播模式。響應(yīng)消息的構(gòu)成依賴于設(shè)備而不盡相同。
2. 查詢報文
查詢報文中不包含請求數(shù)據(jù)字段。舉例說明,從站設(shè)備地址為5,獲取相關(guān)信息,如下表所示。
功能碼17查詢報文示例:
字段 |
例 (Hex) |
ASCII 模式字符型 |
RTU模式8位 (Hex) |
幀頭 | “:” | ||
從設(shè)備地址 | 0x05 | “0”,“5” | 0x05 |
功能碼 | 0x11 | “1”,“1” | 0x11 |
差錯校驗 | LRC(2字符) | CRC(2字節(jié)) | |
幀尾 | CR/LF | ||
合計字節(jié)數(shù) | 9 | 4 |
3. 響應(yīng)報文
對于從設(shè)備,在正常情況下,響應(yīng)報文包括從站ID、運行狀態(tài)以及其他附加信息,如下表所示。運行狀態(tài)字段占用1字節(jié),且0x00=OFF,0xFF=ON,而響應(yīng)報文的組成則由開發(fā)者決定。
功能碼17響應(yīng)報文示例:
字段 |
例 (Hex) |
ASCII 模式字符型 |
RTU模式8位 (Hex) |
幀頭 | “:” | ||
從設(shè)備地址 | 0x05 | “0”,“5” | 0x05 |
功能碼 | 0x11 | “1”,“1” | 0x11 |
字節(jié)數(shù) | 設(shè)備相關(guān) | 設(shè)備相關(guān) | 設(shè)備相關(guān) |
從設(shè)備ID | 設(shè)備相關(guān) | 設(shè)備相關(guān) | 設(shè)備相關(guān) |
運行狀態(tài) | 0xFF | “F”,“F” | 0xFF |
附加情報1 | 設(shè)備相關(guān) | 設(shè)備相關(guān) | 設(shè)備相關(guān) |
…… | 設(shè)備相關(guān) | 設(shè)備相關(guān) | 設(shè)備相關(guān) |
差錯校驗 | LRC(2字符) | CRC(2字節(jié)) | |
幀尾 | CR/LF | ||
合計字節(jié)數(shù) | 17 | 8 |
10.5.14
Modbus異常響應(yīng)
以上介紹了一些常見的公共功能碼的報文(消息頓)構(gòu)成,廣播模式以外的查詢報文都希望能夠獲取一個正常的響應(yīng)報文。在通常情況下,從站設(shè)備將返回一個正常響應(yīng)報文,但是在某些特殊情況下將返回異常響應(yīng)報文。
對于查詢報文,存在以下4種處理反饋:
①正常接收,正常處理,返回正常響應(yīng)報文。
②因為通信錯誤等原因造成從站設(shè)備沒有接收到查詢報文,主站設(shè)備將按超時處理:從站設(shè)備接收到的查詢報文存在通信錯誤(如LRC、CRC錯誤等),此時從站設(shè)備將丟棄報文不響應(yīng),主站設(shè)備將按超時處理。
③從站設(shè)備接收到正確的報文,但是超過處理范圍(如不存在的功能碼或者寄存器等),此時從站設(shè)備將返回包含異常碼(Exception Code)的響應(yīng)報文。
④異常響應(yīng)報文由從站地址、功能碼以及異常碼構(gòu)成。其中,功能碼與正常響應(yīng)報文不同,在異常響應(yīng)報文中,功能碼最高位(即MSB)被設(shè)置為1。因為Modbus協(xié)議中的功能碼占用1字節(jié)故用表達式描述為:
異常功能碼=正常功能碼+0x80
舉例說明,如下表所示,查詢報文的起始地址為0x012C(十進制300),即需要讀取寄存器地址為30301開始的值。若從站設(shè)備中不存在輸入寄存器30301,則從站設(shè)備將返回一個異常響應(yīng)報文,參見下表的功能碼和異常碼。
異常響應(yīng)示例(功能碼04查詢報文):
字段 |
例 (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 |
差錯校驗 | LRC(2字符) | CRC(2字節(jié)) | |
幀尾 | CR/LF | ||
合計字節(jié)數(shù) | 17 | 8 |
異常響應(yīng)示例(功能碼04響應(yīng)報文):
字段 |
例 (Hex) |
ASCII 模式字符型 |
RTU模式8位 (Hex) |
幀頭 | “:” | ||
從設(shè)備地址 | 0x07 | “0”,“7” | 0x07 |
功能碼 | 0x84 | “8”,“4” | 0x84 |
異常碼 | 0x02 | “0”,“2” | 0x02 |
差錯校驗 | LRC(2字符) | CRC(2字節(jié)) | |
幀尾 | CR/LF | ||
合計字節(jié)數(shù) | 11 | 5 |
常見的異常碼如下表所示:
常見異常碼說明:
異常碼 | 名稱 | 說明 |
01 | 非法功能碼 | 從站設(shè)備不支持此功能碼 |
02 | 非法數(shù)據(jù)地址 | 指定的數(shù)據(jù)地址在從站設(shè)備中不存在 |
03 | 非法數(shù)據(jù)值 | 指定的數(shù)據(jù)超過范圍或者不允許使用 |
04 | 從站設(shè)備故障 | 從站設(shè)備處理響應(yīng)的過程中出現(xiàn)未知錯誤等 |
-
MODBUS
+關(guān)注
關(guān)注
28文章
1757瀏覽量
76748 -
功能碼
+關(guān)注
關(guān)注
0文章
10瀏覽量
2102 -
報文
+關(guān)注
關(guān)注
0文章
38瀏覽量
4012
原文標題:報告從站ID與Modbus異常響應(yīng) - RZ MPU工業(yè)控制教程連載(36)
文章出處:【微信號:瑞薩MCU小百科,微信公眾號:瑞薩MCU小百科】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論