10.5.8
(0x08)診斷功能
1. 功能說(shuō)明
08功能碼僅用于串行鏈路,主要用于檢測(cè)主設(shè)備和從設(shè)備之間的通信故障,或檢測(cè)從設(shè)備的各種內(nèi)部故障,該功能碼不支持廣播。為了區(qū)別各診斷類(lèi)型,查詢報(bào)文中提供了2字節(jié)的子功能碼字段。
通常在正常的響應(yīng)報(bào)文中,從設(shè)備將原樣回復(fù)功能碼和子功能碼。
2. 查詢報(bào)文
查詢報(bào)文中需要指定從設(shè)備地址、功能碼以及子功能碼。
例如,下表中標(biāo)識(shí)了子功能碼“原樣返回查詢數(shù)據(jù)”的診斷功能,其中子功能碼為0(0x0000)。在子功能碼為0x0000的情況下,數(shù)據(jù)字段可以為任意值。各子功能碼的詳細(xì)意義可參考下表。
功能碼08查詢報(bào)文示例:
| 字段 | 
				例 (Hex)  | 
			ASCII模式字符型 | 
				RTU模式8位 (Hex)  | 
		
| 幀頭 | “:” | ||
| 從設(shè)備地址 | 0x05 | “0”,“5” | 0x05 | 
| 功能碼 | 0x08 | “0”,“8” | 0x08 | 
| 
				子功能碼 (高位)  | 
			0x00 | “0”,“0” | 0x00 | 
| 
				子功能碼 (低位)  | 
			0x00 | “0”,“0” | 0x00 | 
| 
				數(shù)據(jù) (高位)  | 
			0x04 | “0”,“4” | 0x04 | 
| 
				數(shù)據(jù) (低位)  | 
			0xB0 | “B”,“0” | 0xB0 | 
| 差錯(cuò)校驗(yàn) | LRC(2字符) | CRC(2字節(jié)) | |
| 幀尾 | CR/LF | ||
| 合計(jì)字節(jié)數(shù) | 17 | 8 | 
本功能碼中,子功能碼由2字節(jié)構(gòu)成,取值則根據(jù)意義而不同;數(shù)據(jù)字段由2字節(jié)構(gòu)成,其取值由子功能碼確定。
3. 響應(yīng)報(bào)文
響應(yīng)報(bào)文的各項(xiàng)構(gòu)成和意義如下表所示。對(duì)于從設(shè)備,在保持寄存器正常變更的情況下會(huì)返回與查詢報(bào)文相同的響應(yīng)報(bào)文。如果修改失敗,則返回一個(gè)異常響應(yīng)。
功能碼08響應(yīng)報(bào)文示例:
| 字段 | 
				例 (Hex)  | 
			ASCII模式字符型 | 
				RTU模式8位 (Hex)  | 
		
| 幀頭 | “:” | ||
| 從設(shè)備地址 | 0x05 | “0”,“5” | 0x05 | 
| 功能碼 | 0x08 | “0”,“8” | 0x08 | 
| 
				子功能碼 (高位)  | 
			0x00 | “0”,“0” | 0x00 | 
| 
				子功能碼 (低位)  | 
			0x00 | “0”,“0” | 0x00 | 
| 
				數(shù)據(jù) (高位)  | 
			0x04 | “0”,“4” | 0x04 | 
| 
				數(shù)據(jù) (低位)  | 
			0xB0 | “B”,“0” | 0xB0 | 
| 差錯(cuò)校驗(yàn) | LRC(2字符) | CRC(2字節(jié)) | |
| 幀尾 | CR/LF | ||
| 合計(jì)字節(jié)數(shù) | 17 | 8 | 
4. 診斷子功能碼
各常用的診斷子功能碼的定義如下。
Return Query Data(00)
| 診斷內(nèi)容 | 原樣返回查詢報(bào)文 | 
| 子功能碼 | 0x000x00 | 
| 查詢報(bào)文數(shù)據(jù)字段 | 任意16為數(shù)據(jù) | 
| 響應(yīng)報(bào)文數(shù)據(jù)字段 | 同查詢報(bào)文 | 
Restart Communication Option(01)
| 診斷內(nèi)容 | 重啟通信選項(xiàng);用于初始化并重新啟動(dòng)從站設(shè)備,清楚所有通信事件計(jì)數(shù)器;如果端口處于 Listen Only Mode,則不返回響應(yīng);否則在重啟之前返回響應(yīng) | 
| 子功能碼 | 0x00,0x01 | 
| 查詢報(bào)文數(shù)據(jù)字段 | 0x00,0x00保持事件記錄;0xFF,0x00清除事件記錄 | 
| 響應(yīng)報(bào)文數(shù)據(jù) | 同查詢報(bào)文 | 
| 診斷內(nèi)容 | 重啟通信選項(xiàng);用于初始化并重新啟動(dòng)從站設(shè)備,清楚所有通信事件計(jì)數(shù)器;如果端口處于 Listen Only Mode,則不返回響應(yīng);否則在重啟之前返回響應(yīng) | 
| 字段 | 
Return Diagnostics Register(02)
| 診斷內(nèi)容 | 返回診斷寄存器 | 
| 子功能碼 | 0x00,0x04 | 
| 查詢報(bào)文數(shù)據(jù)字段 | 0x00,0x00 | 
| 響應(yīng)報(bào)文數(shù)據(jù)字段 | 診斷寄存器的內(nèi)容 | 
Force Listen Only Mode
| 診斷內(nèi)容 | 強(qiáng)制只聽(tīng)模式;強(qiáng)制被尋址的從站設(shè)備進(jìn)入只聽(tīng)模式,使得此設(shè)備與網(wǎng)絡(luò)中的其他設(shè)備斷開(kāi),不返回響應(yīng) | 
| 子功能碼 | 0x00,0x04 | 
| 查詢報(bào)文數(shù)據(jù)字段 | 0x00,0x00 | 
| 響應(yīng)報(bào)文數(shù)據(jù)字段 | 不返回響應(yīng) | 
Clear Counters and Diagnostic Register
| 診斷內(nèi)容 | 清除計(jì)數(shù)器和診斷寄存器 | 
| 子功能碼 | 0x00,0x0A | 
| 查詢報(bào)文數(shù)據(jù)字段 | 0x00,0x00 | 
| 響應(yīng)報(bào)文數(shù)據(jù)字段 | 同查詢報(bào)文 | 
Return Bus Message Count(11,0x0B)
| 診斷內(nèi)容 | 返回總線報(bào)文計(jì)數(shù) | 
| 子功能碼 | 0x00,0x0B | 
| 查詢報(bào)文數(shù)據(jù)字段 | 0x00,0x00 | 
| 響應(yīng)報(bào)文數(shù)據(jù)字段 | 返回報(bào)文的技數(shù)值 | 
Return Bus Communication Error Count(12,0x0C)
| 診斷內(nèi)容 | 返回總線通信CRC差錯(cuò)計(jì)數(shù) | 
| 子功能碼 | 0x00,0x0C | 
| 查詢報(bào)文數(shù)據(jù)字段 | 0x00,0x00 | 
| 響應(yīng)報(bào)文數(shù)據(jù)字段 | 返回報(bào)文的CRC出錯(cuò)總數(shù) | 
Return Bus Exception Error Count(13,0x0D)
| 診斷內(nèi)容 | 返回總線異常差錯(cuò)計(jì)數(shù) | 
| 子功能碼 | 0x00,0x0D | 
| 查詢報(bào)文數(shù)據(jù)字段 | 0x00,0x00 | 
| 響應(yīng)報(bào)文數(shù)據(jù)字段 | 返回異常響應(yīng)的總數(shù) | 
Return Slave Message Count(14,0x0E)
| 診斷內(nèi)容 | 返回從站設(shè)備報(bào)文總數(shù) | 
| 子功能碼 | 0x00,0x0E | 
| 查詢報(bào)文數(shù)據(jù)字段 | 0x00,0x00 | 
| 響應(yīng)報(bào)文數(shù)據(jù)字段 | 返回從站設(shè)備接收?qǐng)?bào)文總數(shù) | 
Return Slave No Response Counrt(15,0x0F)
| 診斷內(nèi)容 | 返回從站設(shè)備無(wú)響應(yīng)計(jì)數(shù) | 
| 子功能碼 | 0x00,0x0F | 
| 查詢報(bào)文數(shù)據(jù)字段 | 0x00,0x00 | 
| 響應(yīng)報(bào)文數(shù)據(jù)字段 | 返回加電后沒(méi)有返回響應(yīng)的報(bào)文的保文數(shù)量 | 
Return Slave Busy Count(17,0x11)
| 診斷內(nèi)容 | 返回從站設(shè)備忙計(jì)數(shù) | 
| 子功能碼 | 0x00,0x11 | 
| 查詢報(bào)文數(shù)據(jù)字段 | 0x00,0x00 | 
| 響應(yīng)報(bào)文數(shù)據(jù)字段 | 返回加電后異常響應(yīng)忙的報(bào)文數(shù)量 | 
Return Bus Character Overrun Count(18,0x12)
| 診斷內(nèi)容 | 返回總線字符超限計(jì)數(shù) | 
| 子功能碼 | 0x00,0x12 | 
| 查詢報(bào)文數(shù)據(jù)字段 | 0x00,0x00 | 
| 響應(yīng)報(bào)文數(shù)據(jù)字段 | 返回超限的報(bào)文數(shù)量 | 
- 
                                設(shè)備
                                +關(guān)注
關(guān)注
2文章
4759瀏覽量
73122 - 
                                功能碼
                                +關(guān)注
關(guān)注
0文章
10瀏覽量
2337 - 
                                報(bào)文
                                +關(guān)注
關(guān)注
0文章
39瀏覽量
4303 
發(fā)布評(píng)論請(qǐng)先 登錄
          
        
        
Modbus協(xié)議診斷功能說(shuō)明
                
 
           
            
            
                
            
評(píng)論