在上一期中蔬芥,我們了解了
1.Modbus通信協(xié)議的含義
2/業(yè)內(nèi)使用的Modbus通信類型。
在此章中,我們將了解
Modbus通信協(xié)議是如何在設(shè)備之間工作。
modbus通信協(xié)議
每個(gè)Modbus信息都有相同的結(jié)構(gòu)系瓢,每個(gè)信息都有四個(gè)基本元素組成。所有數(shù)據(jù)的這些元素的順序都是相同的句灌∫穆可以容易地解析Modbus消息的內(nèi)容。
ADU: 應(yīng)用數(shù)據(jù)單元 ****PDU: 協(xié)議數(shù)據(jù)單元
數(shù)據(jù)傳輸始終由Modbus網(wǎng)絡(luò)中的主站啟動(dòng)胰锌。Modbus主站發(fā)送消息肌稻,并根據(jù)消息的內(nèi)容,從站解釋消息并回應(yīng)主站匕荸。消息的頭部是從站的地址用于定義哪個(gè)從設(shè)備應(yīng)響應(yīng)消息爹谭。
Modbus網(wǎng)絡(luò)上的所有其他子站與收到的地址碼不匹配,則忽略該消息榛搔。
Modbus功能執(zhí)行讀寫操作是把從站內(nèi)部寄存器進(jìn)行讀寫操作诺凡。包括配置,監(jiān)視和控制從站的輸入和輸出践惑。Modbus設(shè)備通常包括寄存器映射包括配置腹泌,輸入和輸出數(shù)據(jù)進(jìn)行寫入和讀取。
我們應(yīng)該始了解從站的寄存器映射以便更好地了解其整體運(yùn)作尔觉。
Modbus數(shù)據(jù)模型是具有四種基本數(shù)據(jù)類型:
1.包括離散輸入凉袱;
2.線圈輸出;
3.輸入寄存器(輸入數(shù)據(jù))侦铜;
4.并保存寄存器(輸出數(shù)據(jù))
設(shè)備的Modbus存儲(chǔ)寄存器圍繞四種基本數(shù)據(jù)類型進(jìn)行組織并且進(jìn)一步識(shí)別該數(shù)據(jù)類型通過設(shè)備內(nèi)存地址中使用的前導(dǎo)號(hào)碼,例如:
基于0的寄存器引用消息讀取或?qū)懭腚x散輸出或線圈
基于1的寄存器參考讀取離散輸入
基于3的寄存器引用讀取輸入寄存器
基于4的寄存器专甩,引用讀取或?qū)懭胼敵龌虮3旨拇嫫?/p>
功能碼列表
功能碼字段指定哪個(gè)寄存器數(shù)據(jù)組它可以讀取或?qū)懭霃膶僭O(shè)備。
功能碼 | 名稱 | 作用 |
---|---|---|
1 | 讀取線圈狀態(tài) | 取得一組邏輯線圈的當(dāng)前狀態(tài)(ON/OFF) |
2 | 讀取輸入狀態(tài) | 取得一組開關(guān)輸入的當(dāng)前狀態(tài)(ON/OFF) |
3 | 讀取保持寄存器 | 在一個(gè)或多個(gè)保持寄存器中取得當(dāng)前的二進(jìn)制值 |
4 | 讀取輸入寄存器 | 在一個(gè)或多個(gè)輸入寄存器中取得當(dāng)前的二進(jìn)制值 |
5 | 強(qiáng)置單線圈 | 強(qiáng)置一個(gè)邏輯線圈的通斷狀態(tài) |
6 | 預(yù)置單寄存器 | 把具體二進(jìn)值裝入一個(gè)保持寄存器 |
7 | 讀取異常狀態(tài) | 取得8個(gè)內(nèi)部線圈的通斷狀態(tài)钉稍,這8個(gè)線圈的地址由控制器決定涤躲,用戶邏輯可以將這些線圈定義,以說明從機(jī)狀態(tài)贡未,短報(bào)文適宜于迅速讀取狀態(tài) |
8 | 回送診斷校驗(yàn) | 把診斷校驗(yàn)報(bào)文送從機(jī)种樱,以對(duì)通信處理進(jìn)行評(píng)鑒 |
9 | 編程(只用于484) | 使主機(jī)模擬編程器作用限番,修改PC從機(jī)邏輯 |
10 | 控詢(只用于484) | 可使主機(jī)與一臺(tái)正在執(zhí)行長程序任務(wù)從機(jī)通信陡叠,探詢該從機(jī)是否已完成其操作任務(wù)浸赫,僅在含有功能碼9的報(bào)文發(fā)送后绘沉,本功能碼才發(fā)送 |
11 | 讀取事件計(jì)數(shù) | 可使主機(jī)發(fā)出單詢問,并隨即判定操作是否成功岂昭,尤其是該命令或其他應(yīng)答產(chǎn)生通信錯(cuò)誤時(shí) |
12 | 讀取通信事件記錄 | 可是主機(jī)檢索每臺(tái)從機(jī)的ModBus事務(wù)處理通信事件記錄矫限。如果某項(xiàng)事務(wù)處理完成,記錄會(huì)給出有關(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)識(shí) | 可使主機(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ò)展存儲(chǔ)器文件中的數(shù)據(jù)信息 |
21 | 寫入通用參數(shù)(584L) | 把通用參數(shù)寫入擴(kuò)展存儲(chǔ)文件枢里,或修改之 |
22~64 | 保留作擴(kuò)展功能備用 | |
65~72 | 保留以備用戶功能所用 | 留作用戶功能的擴(kuò)展編碼 |
73~119 | 非法功能 | |
120~127 | 保留 | 留作內(nèi)部作用 |
128~255 | 保留 | 用于異常應(yīng)答 |
雖然這些Modbus功能代碼代表最常見的讀寫功能孽鸡,您可以查看Modbus規(guī)范以獲取更多信息。有關(guān)其他詳細(xì)的Modbus協(xié)議技術(shù)信息請(qǐng)參閱modbus.org網(wǎng)站栏豺。
http://www.modbus.org/docs/Modbus_Application_Protocol_V1_1b3.pdf
仿真調(diào)試
與從站設(shè)備或主PLC或計(jì)算機(jī)的通信可以使用Modbus模擬器軟件完成在您的個(gè)人計(jì)算機(jī)上運(yùn)行彬碱。
Modscan32可以用作modbus主站仿真,讀取從站設(shè)備信息奥洼。
Modsim32可以用于從站仿真巷疼。
連接可以是串行或以太網(wǎng)并以抓站或從站的形式。該軟件將允許您執(zhí)行所有Modbus協(xié)議通信功能代碼灵奖,用于簡單地讀取或?qū)懭氍F(xiàn)有從站嚼沿。您可以設(shè)置一臺(tái)PC來運(yùn)行從站仿真軟件另一個(gè)運(yùn)行主站仿真軟件。首先連接到從站通過設(shè)置串行COM端口的通信參數(shù)瓷患。然后在DeviceID字段中輸入從站的地址骡尽。
此外,還有幾家公司提供產(chǎn)品和支持幫助您進(jìn)行協(xié)議通信擅编。ProSoft攀细,HMS,和MOXA僅爱态。
至此Modbus通信協(xié)議到此結(jié)束谭贪。