1.概述
可配置Modbus網關可以預先配置Modbus RTU端的設備的地址、功能碼和寄存器列表,并存儲到網關內部。網關會自動采集這些配置的RTU設備的數據,然后映射到連續的Modbus TCP寄存器地址,從而允許Modbus TCP端一次性讀取所有的設備的不同寄存器的數據。它的這種地址映射功能是對普通的Modbus RTU轉Modbus TCP的Modbus網關的補充。
卓嵐ZLAN5143、ZLAN7144、ZLAN7146、ZLAN5207M、ZLAN5407M等都支持可配置Modbus網關功能。其中ZLAN5143需要固件版本1.579及以上版本,配合ZLVircom5.15及以上版本來使用。7144需要固件版本1.491及以上版本。卓嵐可配置Modbus網關簡稱為“ZLMB網關”。
可配置Modbus網關具有如下的優點:
1.指令合并:可以將分散的不同的站地址、寄存器映射到同一片寄存器。這樣Modbus TCP端可以用一條指令采集所有數據,而不是分為幾條指令分別去采集,實現了Modbus TCP端的傳輸效率。
2.預先采集:雖然之前的“存儲型Modbus”可以自動采集一些數據,但是自動采集是在Modbus TCP端查詢第一條指令開始的,所以第一條指令本身的返回數據還是需要等待串口的信息的返回。而可配置Modbus網關的自動采集是從網關上電就開始,第一條指令仍然可以快速應答。
多主機支持:可以支持多臺Modbus TCP客戶端連接上讀取網關數據。
4.支持寫指令:目前對于重新映射過的寄存器地址,Modbus TCP端不僅可以使用重新映射的地址讀到數據,而且可以向這個重新映射的地址使用05和06指令寫入數據。
5.支持任意長度讀取:ZLVircom配置工具會顯示RTU端的寄存器地址和TCP端的寄存器地址的映射關系。Modbus TCP端不僅可以整片讀取寄存器和單個讀取寄存器,而且可以任意長度來讀取合法地址和長度的寄存器內容。
6.支持離線提示:當某個RTU設備從RS485總線上離線后,從Modbus TCP這端查詢到的數據將全部變為0,提示設備的離線。
7.支持丟失重發:由于RS485總線容易存在干擾,假如第一次查詢指令沒有應答,則網關會再發送一條指令,并等待超時時間,如果確認第二次也沒有應答才認為設備離線。通過ZLVircom可以設置第一次發送的時間和第二次超時應答時間。
8.支持大量設備和寄存器:目前支持100條RTU查詢指令和500個寄存器數量,同時被訪問。
2.簡單例子
2.1.RTU采集要求
這里以ZLAN5143為例來介紹,首先確認固件版本為1.579及以上版本, ZLVircom為5.15及以上版本。
假設ZLAN5143的RS485下面接了2個Modbus RTU設備,需要采集的信息如下:
記錄編號 | 從站地址 | 功能碼 | 寄存器地址 | 長度 |
---|---|---|---|---|
1 | 1 | 3 | 2 | 4 |
2 | 2 | 1 | 5 | 9 |
3 | 3 | 3 | 2 | 4 |
現在需要ZLVircom進行配置,實現可以配置Modbus網關。
2.2.ZLVircom配置
運行ZLVircom,進入設備管理點擊搜索設備選擇一個需要配置的設備點擊編輯設備點擊下面“固件和配置”按鈕,彈出如下對話框:
圖 1進入ZLMB配置方法
這里選擇“網頁目錄下載”,并且點擊“…”,選擇一個之前新建的空目錄,用于存放配置信息。然后點擊“ZLMB網關”按鈕,彈出如下對話框:
圖 2可配置Modbus網關設置列表
點擊“添加”按鈕可以逐條添加表1的RTU指令。這里需要注意的是網關會將Modbus TCP這端的寄存器地址從0開始自動按順序增加。所以為了讓同一個功能碼的指令可以一次性分到同一個區域,應該將相同功能碼的指令連續添加。也就是將表1的記錄編號1和記錄編號3放在一次,而編號2放在最后。添加的3個圖如下:
圖 3表1的編號1 RTU指令的配置
對于編號1的RTU指令的配置對話框解釋如下:
1.記錄編號:這個是系統根據添加的順序自動增加編號,不可修改。不一定和表1一致。
2.從站地址:該RTU指令的RTU端從站地址。
3.Modbus功能碼:該RTU指令的功能碼。
4.寄存器起始地址:RTU端指令的寄存器開始地址。
5.寄存器長度:RTU端指令的寄存器查詢長度。
6.串口輪詢間隔:這個間隔是網關正常發送查詢指令后等待應答返回的時間。也是輪詢的速度。所有RTU指令的這個參數是一樣的,如果不一樣取最大者。
7.超時應答時間:這個時間是在正常發送查詢指令接收不到應答時,立刻發送第二條查詢時的等待應答返回時間。所有RTU指令的這個參數是一樣的,如果不一樣取最大者。
8.支持06或者05寫指令:勾選這個選項將可以支持Modbus TCP端對RTU設備的數據的改寫。若不需要改寫則不要勾選,因為勾選,會額外增加內存和計算量開銷。
9.Modbus TCP寄存器地址:這個地址是系統自動按照順序計算的,Modbus TCP端只要按照這個起始地址讀取即可得到這條RTU指令獲得的數據。這個參數是地址映射的關鍵信息。
確定后,再次點擊“添加”,添加表1編號3的指令:
圖 4表1的編號3 RTU指令的配置
這里看到Modbus TCP寄存器地址自動增加到4。說明兩條指令合并的寄存器從0~7,整個寄存器范圍都可以一次性讀取。
添加表1編號2的指令:
圖 5表1的編號2 RTU指令的配置
這里系統自動分配的Modbus TCP地址為01指令的128地址(十進制)。最后列出的表格是:
圖 6 RTU和Modbus TCP寄存器映射關系表
這個表格列出了RTU和Modbus TCP寄存器映射關系。也清楚的展示了,如果用戶需要獲得RTU端的某個設備的數據需要用什么功能碼的什么寄存器地址去讀取數據。
例如需要讀取從站地址2功能碼1、寄存器地址5、長度9的數據可以使用Modbus TCP指令的任意從站地址、功能碼1、寄存器地址128、長度9來讀取。 最后點擊“保存并返回”來保存設計,如果點擊“不保存返回”則放棄設計。同時可以通過選擇某一行點擊“編輯”進行編輯,點擊“刪除”刪除某個RTU指令。
點擊“保存并返回”后回到“卓嵐網頁/程序下載工具”界面。在這個界面點擊“下載按鈕”。下載完畢后彈出“傳輸完畢…”按鈕,然后點擊確定,設備將會自動重啟,并加載這個配置。
2.3.數據測試
現在使用串口模擬這個RTU設備,并進行測試,RTU端模擬參數如下圖。
圖 7 模擬表1的3個RTU設備
然后將ZLAN5143連接到這個計算機串口。假如設備的IP為192.168.0.200,端口4196,Modbus TCP軟件連接上這個IP和端口后讀取如下的數據。根據映射關系表,應該讀取0~7這8個寄存器,功能碼為03;應該讀取128到136這9個bit性寄存器,功能碼為01。
圖 8 Modbus讀取網關數據
如圖所示,可配置Modbus網關實現了站地址1、站地址3這兩個RTU Modbus的數據合并,將其合并到寄存器0~7整片區域,實現指令合并功能。 使用SockeDlgTest連接上192.168.0.200的4196端口發送12 34 00 00 00 06 01 03 00 00 00 00指令,立即返回數據。
圖 9 預采集效果
如圖所示返回時間大約為18ms。這個反應時間比“存儲型”Modbus的第一次應答時間要快速很多。 打開多個Modbus TCP客戶端可以同時對網關進行數據采集。說明可以支持多主機功能。 在Modbus TCP端修改某個寄存器的值,則在RTU端的數據就被修改,同時也會反饋到Modbus TCP端。這說明發送的05/06單線圈修改和單寄存器修改指令寫是支持的。
修改任意長度的寄存器長度讀取,例如修改為從01地址開始的06個長度的寄存器內容,同樣可以正常讀取到Modbus TCP軟件中。說明支持任意長度的數據讀取。 將Modbus RTU軟件關閉或者關閉串口。則Modbus TCP軟件中的數據全部變為0,可見可以通過數據全部變為0來反映一個儀表的離線還是在線。 關閉Modbus RTU軟件,使用ZLComDebug打開COM口接收數據,可以看到當一條指令沒有應答時會重發一次。說明網關具有數據重發功能。
圖 10 數據重發功能
2.4.設置離線默認值
圖 11 設置離線默認值
設置離線默認值功能,可以可以讓設備離線的時候采集到一個特殊的值,例如65535(也就是有符號的-1)。因為之前的默認值為0,有些設備的0是一個可能出現的值,無法區分是離線還是有效數據。
這個離線只要求高字節和低字節一樣,即可以設置:v*256+v,其中v≤255且v>=0。 只有第一條記錄的設置值是有效的,其它記錄仿造第一條記錄的參數。這里只看第一條記錄的參數還包括:串口輪詢間隔、超時應答時間、支持06或者05寫指令。
3.其它注意事項
1.某些bit型數據無法合并,如下圖,01/02指令的第一個指令的數據長度為9,不是16的倍數。所以無法通過從128開始的地址讀取19個來一起讀取所有數據。而是應該按照軟件給出的128地址讀9個,144地址讀10個,分別讀取。
圖 12 Bit數據的連續
2.Modbus TCP的站地址無所謂,一般用01即可。
3.如果發現無法支持05/06指令,請確認設計的時候是否已經勾選05/06支持選項。
4.注意02功能的寄存器是無法被修改的。
5.注意Modbus網關的“轉化協議”部分不要選擇“Modbus TCP轉RTU”,請選擇“無”協議。
6.現在可以支持多寄存器寫入的15/16指令。但是不要跨區域寫入。例如原來的地址為2個寄存器是一起排列的,如果試圖跨區域一次寫入超過2個寄存器將會出錯。
審核編輯:湯梓紅
-
嵌入式
+關注
關注
5144文章
19592瀏覽量
316082 -
寄存器
+關注
關注
31文章
5429瀏覽量
123871 -
MODBUS
+關注
關注
28文章
2073瀏覽量
79202 -
網關
+關注
關注
9文章
5511瀏覽量
52703 -
RTU
+關注
關注
0文章
434瀏覽量
29375
發布評論請先 登錄
可配置混合信號IC和異步狀態機有助于優化嵌入式設計
怎么實現嵌入式Modbus/TCP網關的設計?
亞信AX58200 EtherCAT轉Modbus TCP網關解決方案介紹視頻
大佬都在看的嵌入式系統解決方案
BL102嵌入式OPC網關的相關資料推薦
嵌入式OPC UA網關與傳統OPC軟件的區別是什么
工業物聯網網關是什么?工業物聯網網關有什么作用?
基于可配置處理器的嵌入式系統ESL設計需求
基于FPGA的嵌入式Linux操作系統解決方案
基于STM32F417的物聯網嵌入式網關的設計

Dialog高度集成的SMPS嵌入式電源解決方案

物聯網設計的嵌入式解決方案

車聯網車載T-BOX系統解決方案_汽車TBOX 嵌入式arm應用-飛凌嵌入式

評論