電子秤MODBUS功能碼、數(shù)據(jù)類型與不正常相應(yīng)(來源:上海本熙測控設(shè)備科技有限公司)
附錄A:MODBUS全部功能碼
ModBus網(wǎng)絡(luò)是一個(gè)工業(yè)通信系統(tǒng),由帶智能終端的可編程序控制器和計(jì)算機(jī)通過公用線路或局部線路連接而成。其系統(tǒng)結(jié)構(gòu)既包括硬件、亦包括軟件。它可應(yīng)用于各種數(shù)據(jù)采集和過程監(jiān)控。下表3--1是ModBus的功能碼定義。
表3--1 ModBus功能碼
功能碼 | 名稱 | 作用 |
01 | 讀取線圈狀態(tài) | 取得一組邏輯線圈的當(dāng)前狀態(tài)(ON/OFF) |
02 | 讀取輸入狀態(tài) | 取得一組開關(guān)輸入的當(dāng)前狀態(tài)(ON/OFF) |
03 | 讀取保持寄存器 | 在一個(gè)或多個(gè)保持寄存器中取得當(dāng)前的二進(jìn)制值 |
04 | 讀取輸入寄存器 | 在一個(gè)或多個(gè)輸入寄存器中取得當(dāng)前的二進(jìn)制值 |
05 | 強(qiáng)置單線圈 | 強(qiáng)置一個(gè)邏輯線圈的通斷狀態(tài) |
06 | 預(yù)置單寄存器 | 把具體二進(jìn)值裝入一個(gè)保持寄存器 |
07 | 讀取異常狀態(tài) | 取得8個(gè)內(nèi)部線圈的通斷狀態(tài),這8個(gè)線圈的地址由控制器決定,用戶邏輯可以將這些線圈定義,以說明從機(jī)狀態(tài),短報(bào)文適宜于迅速讀取狀態(tài) |
08 | 回送診斷校驗(yàn) | 把診斷校驗(yàn)報(bào)文送從機(jī),以對通信處理進(jìn)行評鑒 |
09 | 編程(只用于484) | 使主機(jī)模擬編程器作用,修改PC從機(jī)邏輯 |
10 | 控詢(只用于484) | 可使主機(jī)與一臺正在執(zhí)行長程序任務(wù)從機(jī)通信,探詢該從機(jī)是否已完成其操作任務(wù),僅在含有功能碼9的報(bào)文發(fā)送后,本功能碼才發(fā)送 |
11 | 讀取事件計(jì)數(shù) | 可使主機(jī)發(fā)出單詢問,并隨即判定操作是否成功,尤其是該命令或其他應(yīng)答產(chǎn)生通信錯(cuò)誤時(shí) |
12 | 讀取通信事件記錄 | 可是主機(jī)檢索每臺從機(jī)的ModBus事務(wù)處理通信事件記錄。如果某項(xiàng)事務(wù)處理完成,記錄會給出有關(guān)錯(cuò)誤 |
13 | 編程(184/384 484 584) | 可使主機(jī)模擬編程器功能修改PC從機(jī)邏輯 |
14 | 探詢(184/384 484 584) | 可使主機(jī)與正在執(zhí)行任務(wù)的從機(jī)通信,定期控詢該從機(jī)是否已完成其程序操作,僅在含有功能13的報(bào)文發(fā)送后,本功能碼才得發(fā)送 |
15 | 強(qiáng)置多線圈 | 強(qiáng)置一串連續(xù)邏輯線圈的通斷 |
16 | 預(yù)置多寄存器 | 把具體的二進(jìn)制值裝入一串連續(xù)的保持寄存器 |
17 | 報(bào)告從機(jī)標(biāo)識 | 可使主機(jī)判斷編址從機(jī)的類型及該從機(jī)運(yùn)行指示燈的狀態(tài) |
18 | (884和MICRO 84) | 可使主機(jī)模擬編程功能,修改PC狀態(tài)邏輯 |
19 | 重置通信鏈路 | 發(fā)生非可修改錯(cuò)誤后,是從機(jī)復(fù)位于已知狀態(tài),可重置順序字節(jié) |
20 | 讀取通用參數(shù)(584L) | 顯示擴(kuò)展存儲器文件中的數(shù)據(jù)信息 |
21 | 寫入通用參數(shù)(584L) | 把通用參數(shù)寫入擴(kuò)展存儲文件,或修改之 |
22~64 | 保留作擴(kuò)展功能備用 |
|
65~72 | 保留以備用戶功能所用 | 留作用戶功能的擴(kuò)展編碼 |
73~119 | 違規(guī)功能 |
|
120~127 | 保留 | 留作內(nèi)部作用 |
128~255 | 保留 | 用于異常應(yīng)答 |
ModBus網(wǎng)絡(luò)只是一個(gè)主機(jī),所有通信都由他發(fā)出。網(wǎng)絡(luò)可支持247個(gè)之多的遠(yuǎn)程從屬控制器,但實(shí)際所支持的從機(jī)數(shù)要由所用通信設(shè)備決定。采用這個(gè)系統(tǒng),各PC可以和中心主機(jī)交換信息而不影響各PC執(zhí)行本身的控制任務(wù)。表3--2是ModBus各功能碼對應(yīng)的數(shù)據(jù)類型。
表3--2 ModBus功能碼與數(shù)據(jù)類型對應(yīng)表
代碼 | 功能 | 數(shù)據(jù)類型 |
01 | 讀 | 位 |
02 | 讀 | 位 |
03 | 讀 | 整型、字符型、狀態(tài)字、浮點(diǎn)型 |
04 | 讀 | 整型、狀態(tài)字、浮點(diǎn)型 |
05 | 寫 | 位 |
06 | 寫 | 整型、字符型、狀態(tài)字、浮點(diǎn)型 |
08 | N/A | 重復(fù)“回路反饋”信息 |
15 | 寫 | 位 |
16 | 寫 | 整型、字符型、狀態(tài)字、浮點(diǎn)型 |
17 | 讀 | 字符型 |
附錄B:不正常響應(yīng)
不正常響應(yīng):
除廣播外,主機(jī)向從機(jī)設(shè)備發(fā)送查詢并希望有一個(gè)正常響應(yīng),主機(jī)查詢中有可能產(chǎn)生4種事件:
¨ 從機(jī)接收查詢,通訊錯(cuò)誤正常處理信息,則返回一個(gè)正常響應(yīng)事件。
¨ 由于通訊出錯(cuò),從機(jī)不能接收查詢數(shù)據(jù),因而不返回響應(yīng)。此時(shí),主機(jī)依靠處理程序給出查詢超時(shí)事件。
¨ 若從機(jī)接收查詢,發(fā)現(xiàn)有 (LRC或CRC) 通訊錯(cuò)誤,并返回響應(yīng),此時(shí),依靠主機(jī)處理程序給出查詢超時(shí)事件。
¨ 從機(jī)接收查詢,無通訊錯(cuò)誤,但(如讀不存在的線圈和寄存器)時(shí),向主機(jī)報(bào)告錯(cuò)誤的性質(zhì)。
不正常響應(yīng)信息有2個(gè)與正常響應(yīng)不相同的區(qū)域:
功能代碼區(qū):正常響應(yīng)時(shí),從機(jī)的響應(yīng)功能代碼區(qū),帶原查詢的功能代碼。所有功能代碼的MSB為0(其值低于80H)。不正常響應(yīng)時(shí),從機(jī)把功能代碼的MSB置為1,使功能代碼值大于80H,高于正常響應(yīng)的值。這樣,主機(jī)應(yīng)用程序能識別不正常響應(yīng)事件,能檢查不正常代碼的數(shù)據(jù)區(qū)。
數(shù)據(jù)區(qū):正常響應(yīng)中,數(shù)據(jù)區(qū)含有(按查詢要求給出的) 數(shù)據(jù)或統(tǒng)計(jì)值,在不正常響應(yīng)中,數(shù)據(jù)區(qū)為一個(gè)不正常代碼,它說明從機(jī)產(chǎn)生不正常響應(yīng)的條件和原因。
例:主機(jī)發(fā)出查詢,從機(jī)不正常響應(yīng)。(為十六進(jìn)制數(shù)據(jù))。
查詢:
Addr | Fun | DO start reg hi | DO start reg lo | DO #of regs hi | DO #of regs lo | CRC16 Hi | CRC16 Lo |
0AH | 01H | 04H | A1H | 00H | 01H | XXH | XXH |
響應(yīng)(不正?;蚶猓?/p>
Addr | Fun | Exception Code | CRC16 Hi | CRC16 Lo |
0AH | 81H | 02H | XXH | XXH |
圖 3 – 1 . 不正常信息幀格式
上例中,從機(jī)設(shè)備地址10(0AH),讀線圈狀態(tài)的功能代碼(01),主機(jī)請求線圈狀態(tài)的地址為1245(04A1H)。注意:只讀一個(gè)線圈,地址為(0001).
若從機(jī)中不存在此線圈地址時(shí),即以不正常代碼(02),向主機(jī)返回一個(gè)不正常響應(yīng)。說明為不合法地址。
表3--3 ModBus的不正常代碼:
代碼 | 名稱 | 含義 |
01 | 不合規(guī) 功能代碼 | 從機(jī)接收的是一種不能執(zhí)行功能代碼。發(fā)出查詢命令后,該代碼指示無程序功能。 |
02 | 不合法數(shù)據(jù)地址 | 接收的數(shù)據(jù)地址,是從機(jī)不允許的地址。 |
03 | 不合法數(shù)據(jù) | 查詢數(shù)據(jù)區(qū)的值是從機(jī)不允許的值。 |
04 | 從機(jī)設(shè)備故障 | 從機(jī)執(zhí)行主機(jī)請求的動作時(shí)出現(xiàn)不可恢復(fù)的錯(cuò)誤。 |
05 | 確認(rèn) | 從機(jī)已接收請求處理數(shù)據(jù),但需要較長的處理時(shí)間,為避免主機(jī)出現(xiàn)超時(shí)錯(cuò)誤而發(fā)送該確認(rèn)響應(yīng)。主機(jī)以此再發(fā)送一個(gè)“查詢程序完成”未決定從機(jī)是否已完成處理。 |
06 | 從機(jī)設(shè)備忙碌 | 從機(jī)正忙于處理一個(gè)長時(shí)程序命令,請求主機(jī)在從機(jī)空閑時(shí)發(fā)送信息。 |
07 | 否定 | 從機(jī)不能執(zhí)行查詢要求的程序功能時(shí),該代碼使用十進(jìn)制13或14代碼,向主機(jī)返回一個(gè)“不成功的編程請求”信息。主機(jī)應(yīng)請求診斷從機(jī)的錯(cuò)誤信息。 |
08 | 內(nèi)存奇偶校驗(yàn)錯(cuò)誤 | 從機(jī)讀擴(kuò)展內(nèi)存中的數(shù)據(jù)時(shí),發(fā)現(xiàn)有奇偶校驗(yàn)錯(cuò)誤,主機(jī)按從機(jī)的要求重新發(fā)送數(shù)據(jù)請求。 |
///////////////////////////////////////////////////////////////
功能碼 | 描述 | 是否支持廣播 | 起始地址 | 備注 |
01 | 讀線圈狀態(tài)DO | 不支持 | 0000H | 讀離散量輸出口(0X類型)狀態(tài) |
02 | 讀輸入位狀態(tài)DI | 不支持 | 0000H | 讀離散量輸入信號(0X類型)狀態(tài) |
03 | 讀保持寄存器 | 不支持 | 0000H | 讀保持寄存器數(shù)據(jù) |
04 | 讀輸入寄存器 | 不支持 | 0000H | 讀輸入寄存器(3X類型)數(shù)據(jù) |
05 | 強(qiáng)制單個(gè)線圈DO | 支持 | 0000H | 強(qiáng)制單個(gè)線圈(0X類型)狀態(tài) |
06 | 預(yù)置單個(gè)保持寄存器 | 支持 | 0000H | 置保持寄存器(4X類型)中 |
07 | 讀不正常狀態(tài) | 不支持 |
|
|
08 | 診斷(見第3章) | 不支持 | 0000H |
|
09 | 程序 484 | 不 | 0000H | 沒查到 |
10 | 查詢 484 | 不 | 0000H | 沒查到 |
11 | 通訊事件控制 | 不支持 |
|
|
12 | 通訊事件記錄 | 不支持 |
|
|
13 | 程序控制器 | 不 | 0000H | 沒查到 |
14 | 查詢控制器 | 不 | 0000H | 沒查到 |
15 | 強(qiáng)制多個(gè)線圈DO | 支持 | 0000H | 強(qiáng)制各線圈 (0X 類型)狀態(tài) |
16 | 預(yù)置多個(gè)保持寄存器 | 支持 | 0000H | 置保持寄存器(4X類型)中 |
17 | 報(bào)告從機(jī) ID | 不支持 |
|
|
18 | 程序 884/M84 | 不 | 0000H | 沒查到 |
19 | 通訊鏈路復(fù)位 | 不 | 0000H | 沒查到 |
20 | 讀通用參考值 | 不支持 | 0000H | 擴(kuò)展寄存器(6X類型) |
21 | 寫通用參考值 | 不支持 | 0000H | 擴(kuò)展寄存器(6X類型) |
22 | 掩碼寫入4X類型寄存器 | 不支持 | 0000H | 保持寄存器(4X類型) |
23 | 讀/寫4X類型寄存器 | 不支持 | 0000H | 保持寄存器(4X類型) |
24 | 讀FIFO查詢數(shù)據(jù) | 不支持 | 0000H | 保持寄存器(4X類型) |
掃一掃 微信咨詢
©2024 上海本熙測控設(shè)備科技有限公司 版權(quán)所有 備案號:滬ICP備15023781號-3 技術(shù)支持:化工儀器網(wǎng) sitemap.xml 總訪問量:277286 管理登陸