1.概述
可配置Modbus網(wǎng)關(guān)可以預(yù)先配置Modbus RTU端的設(shè)備的地址、功能碼和寄存器列表,并存儲(chǔ)到網(wǎng)關(guān)內(nèi)部。網(wǎng)關(guān)會(huì)自動(dòng)采集這些配置的RTU設(shè)備的數(shù)據(jù),然后映射到連續(xù)的Modbus TCP寄存器地址,從而允許Modbus TCP端一次性讀取所有的設(shè)備的不同寄存器的數(shù)據(jù)。它的這種地址映射功能是對普通的Modbus RTU轉(zhuǎn)Modbus TCP的Modbus網(wǎng)關(guān)的補(bǔ)充。
卓嵐ZLAN5143、ZLAN7144、ZLAN7146、ZLAN5207M、ZLAN5407M等都支持可配置Modbus網(wǎng)關(guān)功能。其中ZLAN5143需要固件版本1.579及以上版本,配合ZLVircom5.15及以上版本來使用。7144需要固件版本1.491及以上版本。卓嵐可配置Modbus網(wǎng)關(guān)簡稱為“ZLMB網(wǎng)關(guān)”。
可配置Modbus網(wǎng)關(guān)具有如下的優(yōu)點(diǎn):
1.指令合并:可以將分散的不同的站地址、寄存器映射到同一片寄存器。這樣Modbus TCP端可以用一條指令采集所有數(shù)據(jù),而不是分為幾條指令分別去采集,實(shí)現(xiàn)了Modbus TCP端的傳輸效率。
2.預(yù)先采集:雖然之前的“存儲(chǔ)型Modbus”可以自動(dòng)采集一些數(shù)據(jù),但是自動(dòng)采集是在Modbus TCP端查詢第一條指令開始的,所以第一條指令本身的返回?cái)?shù)據(jù)還是需要等待串口的信息的返回。而可配置Modbus網(wǎng)關(guān)的自動(dòng)采集是從網(wǎng)關(guān)上電就開始,第一條指令仍然可以快速應(yīng)答。
多主機(jī)支持:可以支持多臺(tái)Modbus TCP客戶端連接上讀取網(wǎng)關(guān)數(shù)據(jù)。
4.支持寫指令:目前對于重新映射過的寄存器地址,Modbus TCP端不僅可以使用重新映射的地址讀到數(shù)據(jù),而且可以向這個(gè)重新映射的地址使用05和06指令寫入數(shù)據(jù)。
5.支持任意長度讀取:ZLVircom配置工具會(huì)顯示RTU端的寄存器地址和TCP端的寄存器地址的映射關(guān)系。Modbus TCP端不僅可以整片讀取寄存器和單個(gè)讀取寄存器,而且可以任意長度來讀取合法地址和長度的寄存器內(nèi)容。
6.支持離線提示:當(dāng)某個(gè)RTU設(shè)備從RS485總線上離線后,從Modbus TCP這端查詢到的數(shù)據(jù)將全部變?yōu)?,提示設(shè)備的離線。
7.支持丟失重發(fā):由于RS485總線容易存在干擾,假如第一次查詢指令沒有應(yīng)答,則網(wǎng)關(guān)會(huì)再發(fā)送一條指令,并等待超時(shí)時(shí)間,如果確認(rèn)第二次也沒有應(yīng)答才認(rèn)為設(shè)備離線。通過ZLVircom可以設(shè)置第一次發(fā)送的時(shí)間和第二次超時(shí)應(yīng)答時(shí)間。
8.支持大量設(shè)備和寄存器:目前支持100條RTU查詢指令和500個(gè)寄存器數(shù)量,同時(shí)被訪問。
2.簡單例子
2.1.RTU采集要求
這里以ZLAN5143為例來介紹,首先確認(rèn)固件版本為1.579及以上版本, ZLVircom為5.15及以上版本。
假設(shè)ZLAN5143的RS485下面接了2個(gè)Modbus RTU設(shè)備,需要采集的信息如下:
記錄編號(hào) | 從站地址 | 功能碼 | 寄存器地址 | 長度 |
---|---|---|---|---|
1 | 1 | 3 | 2 | 4 |
2 | 2 | 1 | 5 | 9 |
3 | 3 | 3 | 2 | 4 |
現(xiàn)在需要ZLVircom進(jìn)行配置,實(shí)現(xiàn)可以配置Modbus網(wǎng)關(guān)。
2.2.ZLVircom配置
運(yùn)行ZLVircom,進(jìn)入設(shè)備管理點(diǎn)擊搜索設(shè)備選擇一個(gè)需要配置的設(shè)備點(diǎn)擊編輯設(shè)備點(diǎn)擊下面“固件和配置”按鈕,彈出如下對話框:
圖 1進(jìn)入ZLMB配置方法
這里選擇“網(wǎng)頁目錄下載”,并且點(diǎn)擊“…”,選擇一個(gè)之前新建的空目錄,用于存放配置信息。然后點(diǎn)擊“ZLMB網(wǎng)關(guān)”按鈕,彈出如下對話框:
圖 2可配置Modbus網(wǎng)關(guān)設(shè)置列表
點(diǎn)擊“添加”按鈕可以逐條添加表1的RTU指令。這里需要注意的是網(wǎng)關(guān)會(huì)將Modbus TCP這端的寄存器地址從0開始自動(dòng)按順序增加。所以為了讓同一個(gè)功能碼的指令可以一次性分到同一個(gè)區(qū)域,應(yīng)該將相同功能碼的指令連續(xù)添加。也就是將表1的記錄編號(hào)1和記錄編號(hào)3放在一次,而編號(hào)2放在最后。添加的3個(gè)圖如下:
圖 3表1的編號(hào)1 RTU指令的配置
對于編號(hào)1的RTU指令的配置對話框解釋如下:
1.記錄編號(hào):這個(gè)是系統(tǒng)根據(jù)添加的順序自動(dòng)增加編號(hào),不可修改。不一定和表1一致。
2.從站地址:該RTU指令的RTU端從站地址。
3.Modbus功能碼:該RTU指令的功能碼。
4.寄存器起始地址:RTU端指令的寄存器開始地址。
5.寄存器長度:RTU端指令的寄存器查詢長度。
6.串口輪詢間隔:這個(gè)間隔是網(wǎng)關(guān)正常發(fā)送查詢指令后等待應(yīng)答返回的時(shí)間。也是輪詢的速度。所有RTU指令的這個(gè)參數(shù)是一樣的,如果不一樣取最大者。
7.超時(shí)應(yīng)答時(shí)間:這個(gè)時(shí)間是在正常發(fā)送查詢指令接收不到應(yīng)答時(shí),立刻發(fā)送第二條查詢時(shí)的等待應(yīng)答返回時(shí)間。所有RTU指令的這個(gè)參數(shù)是一樣的,如果不一樣取最大者。
8.支持06或者05寫指令:勾選這個(gè)選項(xiàng)將可以支持Modbus TCP端對RTU設(shè)備的數(shù)據(jù)的改寫。若不需要改寫則不要勾選,因?yàn)楣催x,會(huì)額外增加內(nèi)存和計(jì)算量開銷。
9.Modbus TCP寄存器地址:這個(gè)地址是系統(tǒng)自動(dòng)按照順序計(jì)算的,Modbus TCP端只要按照這個(gè)起始地址讀取即可得到這條RTU指令獲得的數(shù)據(jù)。這個(gè)參數(shù)是地址映射的關(guān)鍵信息。
確定后,再次點(diǎn)擊“添加”,添加表1編號(hào)3的指令:
圖 4表1的編號(hào)3 RTU指令的配置
這里看到Modbus TCP寄存器地址自動(dòng)增加到4。說明兩條指令合并的寄存器從0~7,整個(gè)寄存器范圍都可以一次性讀取。
添加表1編號(hào)2的指令:
圖 5表1的編號(hào)2 RTU指令的配置
這里系統(tǒng)自動(dòng)分配的Modbus TCP地址為01指令的128地址(十進(jìn)制)。最后列出的表格是:
圖 6 RTU和Modbus TCP寄存器映射關(guān)系表
這個(gè)表格列出了RTU和Modbus TCP寄存器映射關(guān)系。也清楚的展示了,如果用戶需要獲得RTU端的某個(gè)設(shè)備的數(shù)據(jù)需要用什么功能碼的什么寄存器地址去讀取數(shù)據(jù)。
例如需要讀取從站地址2功能碼1、寄存器地址5、長度9的數(shù)據(jù)可以使用Modbus TCP指令的任意從站地址、功能碼1、寄存器地址128、長度9來讀取。 最后點(diǎn)擊“保存并返回”來保存設(shè)計(jì),如果點(diǎn)擊“不保存返回”則放棄設(shè)計(jì)。同時(shí)可以通過選擇某一行點(diǎn)擊“編輯”進(jìn)行編輯,點(diǎn)擊“刪除”刪除某個(gè)RTU指令。
點(diǎn)擊“保存并返回”后回到“卓嵐網(wǎng)頁/程序下載工具”界面。在這個(gè)界面點(diǎn)擊“下載按鈕”。下載完畢后彈出“傳輸完畢…”按鈕,然后點(diǎn)擊確定,設(shè)備將會(huì)自動(dòng)重啟,并加載這個(gè)配置。
2.3.數(shù)據(jù)測試
現(xiàn)在使用串口模擬這個(gè)RTU設(shè)備,并進(jìn)行測試,RTU端模擬參數(shù)如下圖。
圖 7 模擬表1的3個(gè)RTU設(shè)備
然后將ZLAN5143連接到這個(gè)計(jì)算機(jī)串口。假如設(shè)備的IP為192.168.0.200,端口4196,Modbus TCP軟件連接上這個(gè)IP和端口后讀取如下的數(shù)據(jù)。根據(jù)映射關(guān)系表,應(yīng)該讀取0~7這8個(gè)寄存器,功能碼為03;應(yīng)該讀取128到136這9個(gè)bit性寄存器,功能碼為01。
圖 8 Modbus讀取網(wǎng)關(guān)數(shù)據(jù)
如圖所示,可配置Modbus網(wǎng)關(guān)實(shí)現(xiàn)了站地址1、站地址3這兩個(gè)RTU Modbus的數(shù)據(jù)合并,將其合并到寄存器0~7整片區(qū)域,實(shí)現(xiàn)指令合并功能。 使用SockeDlgTest連接上192.168.0.200的4196端口發(fā)送12 34 00 00 00 06 01 03 00 00 00 00指令,立即返回?cái)?shù)據(jù)。
圖 9 預(yù)采集效果
如圖所示返回時(shí)間大約為18ms。這個(gè)反應(yīng)時(shí)間比“存儲(chǔ)型”Modbus的第一次應(yīng)答時(shí)間要快速很多。 打開多個(gè)Modbus TCP客戶端可以同時(shí)對網(wǎng)關(guān)進(jìn)行數(shù)據(jù)采集。說明可以支持多主機(jī)功能。 在Modbus TCP端修改某個(gè)寄存器的值,則在RTU端的數(shù)據(jù)就被修改,同時(shí)也會(huì)反饋到Modbus TCP端。這說明發(fā)送的05/06單線圈修改和單寄存器修改指令寫是支持的。
修改任意長度的寄存器長度讀取,例如修改為從01地址開始的06個(gè)長度的寄存器內(nèi)容,同樣可以正常讀取到Modbus TCP軟件中。說明支持任意長度的數(shù)據(jù)讀取。 將Modbus RTU軟件關(guān)閉或者關(guān)閉串口。則Modbus TCP軟件中的數(shù)據(jù)全部變?yōu)?,可見可以通過數(shù)據(jù)全部變?yōu)?來反映一個(gè)儀表的離線還是在線。 關(guān)閉Modbus RTU軟件,使用ZLComDebug打開COM口接收數(shù)據(jù),可以看到當(dāng)一條指令沒有應(yīng)答時(shí)會(huì)重發(fā)一次。說明網(wǎng)關(guān)具有數(shù)據(jù)重發(fā)功能。
圖 10 數(shù)據(jù)重發(fā)功能
2.4.設(shè)置離線默認(rèn)值
圖 11 設(shè)置離線默認(rèn)值
設(shè)置離線默認(rèn)值功能,可以可以讓設(shè)備離線的時(shí)候采集到一個(gè)特殊的值,例如65535(也就是有符號(hào)的-1)。因?yàn)橹暗哪J(rèn)值為0,有些設(shè)備的0是一個(gè)可能出現(xiàn)的值,無法區(qū)分是離線還是有效數(shù)據(jù)。
這個(gè)離線只要求高字節(jié)和低字節(jié)一樣,即可以設(shè)置:v*256+v,其中v≤255且v>=0。 只有第一條記錄的設(shè)置值是有效的,其它記錄仿造第一條記錄的參數(shù)。這里只看第一條記錄的參數(shù)還包括:串口輪詢間隔、超時(shí)應(yīng)答時(shí)間、支持06或者05寫指令。
3.其它注意事項(xiàng)
1.某些bit型數(shù)據(jù)無法合并,如下圖,01/02指令的第一個(gè)指令的數(shù)據(jù)長度為9,不是16的倍數(shù)。所以無法通過從128開始的地址讀取19個(gè)來一起讀取所有數(shù)據(jù)。而是應(yīng)該按照軟件給出的128地址讀9個(gè),144地址讀10個(gè),分別讀取。
圖 12 Bit數(shù)據(jù)的連續(xù)
2.Modbus TCP的站地址無所謂,一般用01即可。
3.如果發(fā)現(xiàn)無法支持05/06指令,請確認(rèn)設(shè)計(jì)的時(shí)候是否已經(jīng)勾選05/06支持選項(xiàng)。
4.注意02功能的寄存器是無法被修改的。
5.注意Modbus網(wǎng)關(guān)的“轉(zhuǎn)化協(xié)議”部分不要選擇“Modbus TCP轉(zhuǎn)RTU”,請選擇“無”協(xié)議。
6.現(xiàn)在可以支持多寄存器寫入的15/16指令。但是不要跨區(qū)域?qū)懭搿@缭瓉淼牡刂窞?個(gè)寄存器是一起排列的,如果試圖跨區(qū)域一次寫入超過2個(gè)寄存器將會(huì)出錯(cuò)。
審核編輯:湯梓紅
-
嵌入式
+關(guān)注
關(guān)注
5095文章
19189瀏覽量
307982 -
寄存器
+關(guān)注
關(guān)注
31文章
5372瀏覽量
121282 -
MODBUS
+關(guān)注
關(guān)注
28文章
1825瀏覽量
77350 -
網(wǎng)關(guān)
+關(guān)注
關(guān)注
9文章
4610瀏覽量
51554 -
RTU
+關(guān)注
關(guān)注
0文章
419瀏覽量
28779
發(fā)布評(píng)論請先 登錄
相關(guān)推薦
干貨 智能網(wǎng)關(guān),物聯(lián)網(wǎng)網(wǎng)關(guān)設(shè)計(jì)大全 精華集錦
【MiCOKit申請】智能家庭網(wǎng)關(guān)
怎么實(shí)現(xiàn)嵌入式Modbus/TCP網(wǎng)關(guān)的設(shè)計(jì)?
亞信AX58200 EtherCAT轉(zhuǎn)Modbus TCP網(wǎng)關(guān)解決方案介紹視頻
大佬都在看的嵌入式系統(tǒng)解決方案
BL102嵌入式OPC網(wǎng)關(guān)的相關(guān)資料推薦
嵌入式OPC UA網(wǎng)關(guān)與傳統(tǒng)OPC軟件的區(qū)別是什么
工業(yè)物聯(lián)網(wǎng)網(wǎng)關(guān)是什么?工業(yè)物聯(lián)網(wǎng)網(wǎng)關(guān)有什么作用?
基于可配置處理器的嵌入式系統(tǒng)ESL設(shè)計(jì)需求
基于FPGA的嵌入式Linux操作系統(tǒng)解決方案
基于STM32F417的物聯(lián)網(wǎng)嵌入式網(wǎng)關(guān)的設(shè)計(jì)
![基于STM32F417的物<b class='flag-5'>聯(lián)網(wǎng)</b><b class='flag-5'>嵌入式</b><b class='flag-5'>網(wǎng)關(guān)</b>的設(shè)計(jì)](https://file1.elecfans.com//web2/M00/A7/1C/wKgZomUMQnWAfUKIAABnDSvCaJo390.png)
Dialog高度集成的SMPS嵌入式電源解決方案
![Dialog高度集成的SMPS<b class='flag-5'>嵌入式</b>電源<b class='flag-5'>解決方案</b>](https://file.elecfans.com/web2/M00/0F/32/pYYBAGER6qSABZArAAA1f70-8s4993.png)
物聯(lián)網(wǎng)設(shè)計(jì)的嵌入式解決方案
![物<b class='flag-5'>聯(lián)網(wǎng)</b>設(shè)計(jì)的<b class='flag-5'>嵌入式</b><b class='flag-5'>解決方案</b>](https://file.elecfans.com/web2/M00/56/36/pYYBAGLeQkGAcna3AABLZ6jJmUo788.jpg)
淺析工業(yè)物聯(lián)網(wǎng)中的嵌入式設(shè)備
車聯(lián)網(wǎng)車載T-BOX系統(tǒng)解決方案_汽車TBOX 嵌入式arm應(yīng)用-飛凌嵌入式
![車<b class='flag-5'>聯(lián)網(wǎng)</b>車載T-BOX系統(tǒng)<b class='flag-5'>解決方案</b>_汽車TBOX <b class='flag-5'>嵌入式</b>arm應(yīng)用-飛凌<b class='flag-5'>嵌入式</b>](https://file.elecfans.com/web2/M00/1A/09/poYBAGF5ADWAVjuEAAA2C5wg0vQ729.jpg)
評(píng)論