關注官方微信

EN

EN.

產品中心

產品中心

卓嵐MQTT和JSON轉Modbus網關用法

發布時間:2019-09-09 作者:上海卓嵐 瀏覽量:11523
1.概述

本文介紹卓嵐支持MQTT和JSON的設備的用法,支持的設備包括ZLAN5144J、ZLAN8303-7、ZLAN1043J、ZLAN7144等。其中ZLAN5144J、ZLAN8303-7、ZLAN1043J的固件版本要在1.577及以上,ZLAN7144需要在1.489及以上。需要和zlvircom的5.09版本配合使用。

MQTT和JSON可以單獨使用也可以合起來使用。其中的JSON支持Modbus RTU格式轉化為JSON格式。

主要特點是:

1.采用MQTT為基礎的協議和服務器建立連接,采用訂閱發布的形式進行數據通訊。

2.支持Modbus RTU寄存器的自主設計和自動采集。

3.支持將特定的Modbus寄存器內容轉化為JSON格式定時主動上發。

4.支持在JSON格式中加入設備ID,方便云端識別設備。

5.支持無符號數據和有符號數據,支持小數點表示,支持4字節長度數據。

6.所有配置都可以界面化配置完成,用戶自主配置無需定制。

2.JSON
2.1.Modbus RTU轉JSON

卓嵐Modbus RTU轉JSON可以實現Modbus RTU表的自動采集,并按照JSON格式自動上發給云端服務器。

這里我們通過一個具體的案例來講解這個用法。

2.2.Modbus表

假設現在有一個功能碼為3,地址為1的Modbus表,其寄存器地址和參數名如下。其中字節長度為4的表示需要連續讀2個寄存器。

寄存器地址 參數名 字節長度 備注
0 當前總有功電能 4 無符號,保留2位小數
97 A相電壓 2 無符號,保留1位小數
98 B相電壓 2
99 C相電壓 2
100 A相電流 2 無符號,保留2位小數
101 B相電流 2
102 C相電流 2
119 頻率 2
356 A相有功功率 4 有符號,保留3位小數
358 B相有功功率 4
360 C相有功功率 4
362 總有功功率 4

所謂有符號是指,2字節或者4字節最高bit為符號位,例如0xFFFF將被認為是-1。保留2位小數是指將數據當作整型轉化之后,小數點從最右邊向左移動2位。

2.3.設備配置

我們按照設備作為客戶端的方式進行配置。

使用SocketDlgTest,在本地計算機1883端口監聽一個TCP服務器。

Socket模擬服務器接收數據

使用ZLVircom對設備進行配置。

設備配置

點擊修改配置,可以讓設備連接上SocketDlgTest工具。再次進入設備編輯對話框。點擊“固件和配置”按鈕。

下載界面

首先點擊“網頁目錄下載”進入配置下載模式。然后選擇一個新的空目錄,比如MQTTHTTPD目錄。防止之前的設計有殘留,請先點擊“清除全部”按鈕,這樣可以清空之前的設計內容。設計文件將會保存在這個目錄,等一下可以通過點擊“下載”按鈕下載到設備內部。

點擊“JSON配置”按鈕。

JSON配置主界面

這里的參數說明如下:

1.上發服務器時間:默認JSON數據每隔多少時間上發到服務器,服務器就是剛剛在設備配置界面設置的目的IP,單位是毫秒。

2.是否上發設備ID:如果選擇1則會在每次上發的JSON數據中包含有設備的ID,設備ID就是在設備編輯界面左上角看到的設備的MAC地址。

3.ID的JSON關鍵詞是自己命名的ID對應的的JSON關鍵詞,這里寫MyID,最長為32字節。這樣以后JSON格式中會增加”MyID”:”2850002F0EEC”的內容。這類似于注冊包,有利于服務器識別是哪一臺設備發來的數據。

4.添加/查看:點擊后可以進行Modbus寄存器的設計,也可以查看目前已經內容。

5.刪除全部:刪除由“添加/查看”按鈕設計的所有的Modbus寄存器,方便重新開始設計。

6.保存JSON設置:設計完成后只有點擊這個按鈕才可以保存數據到剛才的下載目錄,之后可以下載到設備內部。

現在點擊“添加/查看”按鈕。對于之前的Modbus表的第一行:

寄存器地址 參數名 字節長度 備注
0 當前總有功電能 4 無符號,保留2位小數

對應的配置如下:

寄存器設置

這里的參數說明如下:

1.第1個寄存器:這里的1,表示現在的設計界面是配置第一個寄存器。

2.已經添加過:如果打勾說明是已經添加的,查看已經配置的信息的時候會出現打勾的情況。

3.從站地址:Modbus的表地址。

4.Modbus功能碼:目前支持03和04功能碼。

5.寄存器地址:這里對應的0。

6.數據長度:這里對應是4字節。

7.數據格式:這里對應是無符號整型。

8.保留小數點:這里保留2位。

9.串口輪詢時間:這里設為100ms。是指這個寄存器和下個寄存器的輪詢的間隔,而不是這條指令的輪詢間隔。

10.對應的JSON關鍵詞:對應上發的JSON中的keyword。例如”CurrentW”:232.12。

11.設計下一個:點擊后進入下一個寄存器的設置。

12.保存設計:完成設計,之后點擊上一個界面的“保存JSON配置”即可。

13.取消設計:取消當前的所有設計,如果是查看設計內容,可以點擊這個按鈕退出。

這里點擊“設計下一個”按鈕繼續設計Modbus表中的其它寄存器。全部設計完表格中的寄存器后,點擊“完成設計”,然后點擊“保存JSON配置”后退出。然后點擊“下載web”頁面的“下載按鈕”

下載

然后點擊“確定”,設備會自動重啟。如果沒有重啟請手動重啟。

2.4.新建Modbus模擬表

這里使用Modbus Slave來模擬一個表

測試結果

測試結果顯示,使用Modbus slave工具模擬的儀表能夠被網關所采集。同時可以定時,按照json格式上發到SocketDlgTest模擬的服務器軟件端。

3.MQTT

MQTT可以單獨使用也可以和JSON功能配合使用。當單獨使用的時候MQTT功能將串口數據透傳上發MQTT服務器。也就是將串口接收的數據作為MQTT的載荷。同時MQTT的載荷會以透傳的方式從串口輸出。實現串口轉MQTT。

3.1.設備配置

MQTT配置1

點擊“固件與配置”,彈出配置下載和設計對話框:

MQTT配置2

這里選擇“網頁目錄下載”,然后選擇一個空的目錄,比如MQTTHTTPD目錄,然后先點擊“清除全部”清除之前的設計(注意如果之前按有JSON設計的,則不要清除全部,否則會清除之前的JSON設計)。然后點擊MQTT配置。

MQTT配置3

這里配置說明如下:

1.服務器域名或IP:這里填寫的是MQTT服務器的IP,最長為30個字符。

2.用戶名:是MQTT服務器的用戶名。

3.密碼:是這個用戶的登錄密碼。

4.客戶端ID:是MQTT的client ID。

5.訂閱主題:是這個設備訂閱的主題,有其它設備發布這個主題的時候,服務器會下發給這個設備。如果只是發布,一般無需填寫這個字段。

6.發布主題:這個設備串口轉MQTT的時候向服務器發送的數據的主題。

7.MQTT高級參數:用于配置高級參數。

8.保存MQTT設置:設計完畢點擊這個按鈕進行保存,然后點擊網頁下載目錄的“下載按鈕”下載。

現在先點擊“MQTT高級參數”(一般無需配置高級參數):

MQTT高級參數配置

說明如下:

1.協議版本:目前主流的是3.1.1版本,如果需要選擇3.1版本,請在這里選擇。

2.保活時間:MQTT的心跳時間,最少為10秒,默認為60秒。

3.服務器清除訂閱:客戶端斷線后服務器是否清除訂閱信息。

4.是否啟用遺愿:是否有遺愿。

5.遺愿主題:遺愿主題。

6.遺愿信息:遺愿的信息。

7.是否保存遺愿:服務器是否需要保持客戶端異常離線時發送給客戶端的遺愿消息。

8.遺愿質量:服務器發送的遺愿消息的交付質量級別。

9.訂閱質量:訂閱的交付質量級別。

10.發布質量:客戶端發布消息的交付質量級別。

11.是否保存發布:服務器是否保持最后一條消息(如果有新的客戶端訂閱則發送給客戶端)。

我們這里不修改高級參數。直接點擊“保存MQTT設置”。然后點擊“下載”

下載

下載完畢點擊確定,此時會回到設備管理對話框,看到設備的目的IP、工作模式、目的端口已經自動修改為MQTT的設置:

自動修改

如果沒有自動修改則需要在設備編輯對話框下,設置目的IP、工作模式、目的端口。然后點擊“修改設置”。

IP配置

這樣配置就完成了。

3.2.數據測試

連接完成后設備的LINK燈(一般為中間的藍色燈)變亮。說明設備正常連接上MQTT服務器。

現在打開串口工具:

串口發送和接收

使用和設備一樣的波特率打開串口,并發送數據“dev send”,此后在接收窗口看到返回的數據“dev send”。這是由于我們將dev send這個信息以zlansub的主題發布給MQTT服務器。但是同時我們的設備也訂閱了zlansub這個主題,所以服務器立刻會給我們發送一個訂閱信息,訂閱信息的內容就是dev send。這個信息作為MQTT的載荷發送下載,通過透傳的方式從串口輸出。

如果其它設備發布信息過來,這個設備也能夠收到數據。

一般來說,用戶可以直接將串口指令(比如Modbus RTU)指令直接透傳給MQTT服務器。另外也可以使用JSON功能,采用自動Modbus RTU格式采集,定時JSON格式上發的形式。另外也可以找上海卓嵐定制一些非標的儀表和上位機協議格式。

4.MQTT+JSON轉Modbus RTU

將上述的JSON和MQTT相組合可以實現如下的功能:

1.采用MQTT為基礎的協議和服務器建立連接,采用訂閱發布的形式進行數據通訊。

2.支持Modbus RTU寄存器的自主設計和自動采集。

3.支持將特定的Modbus寄存器內容轉化為JSON格式定時主動上發。

4.支持在JSON格式中加入設備ID,方便云端識別設備。

如果需要MQTT+JSON轉Modbus RTU功能的,可以分別設計MQTT和JSON,不分先后次序。設計完一種不要點擊“清除設計”按鈕,兩個設計完,一起點擊“下載”按鈕下載到設備內容。

一般可以下載后手動重啟設備,加載設置。

快3官网下载