少妇爽到喷白浆AV无码-亚洲av无码专区亚洲av桃-白丝校花的逼好热好紧好想操-午夜精品久久久久久久69蜜桃

關(guān)注官方微信

EN

EN.

卓嵐MQTT和JSON轉(zhuǎn)Modbus網(wǎng)關(guān)用法

發(fā)布時(shí)間:2019-09-09 作者:上海卓嵐 瀏覽量:11523
1.概述

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

MQTT和JSON可以單獨(dú)使用也可以合起來(lái)使用。其中的JSON支持Modbus RTU格式轉(zhuǎn)化為JSON格式。

主要特點(diǎn)是:

1.采用MQTT為基礎(chǔ)的協(xié)議和服務(wù)器建立連接,采用訂閱發(fā)布的形式進(jìn)行數(shù)據(jù)通訊。

2.支持Modbus RTU寄存器的自主設(shè)計(jì)和自動(dòng)采集。

3.支持將特定的Modbus寄存器內(nèi)容轉(zhuǎn)化為JSON格式定時(shí)主動(dòng)上發(fā)。

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

5.支持無(wú)符號(hào)數(shù)據(jù)和有符號(hào)數(shù)據(jù),支持小數(shù)點(diǎn)表示,支持4字節(jié)長(zhǎng)度數(shù)據(jù)。

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

2.JSON
2.1.Modbus RTU轉(zhuǎn)JSON

卓嵐Modbus RTU轉(zhuǎn)JSON可以實(shí)現(xiàn)Modbus RTU表的自動(dòng)采集,并按照J(rèn)SON格式自動(dòng)上發(fā)給云端服務(wù)器。

這里我們通過(guò)一個(gè)具體的案例來(lái)講解這個(gè)用法。

2.2.Modbus表

假設(shè)現(xiàn)在有一個(gè)功能碼為3,地址為1的Modbus表,其寄存器地址和參數(shù)名如下。其中字節(jié)長(zhǎng)度為4的表示需要連續(xù)讀2個(gè)寄存器。

寄存器地址 參數(shù)名 字節(jié)長(zhǎng)度 備注
0 當(dāng)前總有功電能 4 無(wú)符號(hào),保留2位小數(shù)
97 A相電壓 2 無(wú)符號(hào),保留1位小數(shù)
98 B相電壓 2
99 C相電壓 2
100 A相電流 2 無(wú)符號(hào),保留2位小數(shù)
101 B相電流 2
102 C相電流 2
119 頻率 2
356 A相有功功率 4 有符號(hào),保留3位小數(shù)
358 B相有功功率 4
360 C相有功功率 4
362 總有功功率 4

所謂有符號(hào)是指,2字節(jié)或者4字節(jié)最高bit為符號(hào)位,例如0xFFFF將被認(rèn)為是-1。保留2位小數(shù)是指將數(shù)據(jù)當(dāng)作整型轉(zhuǎn)化之后,小數(shù)點(diǎn)從最右邊向左移動(dòng)2位。

2.3.設(shè)備配置

我們按照設(shè)備作為客戶端的方式進(jìn)行配置。

使用SocketDlgTest,在本地計(jì)算機(jī)1883端口監(jiān)聽(tīng)一個(gè)TCP服務(wù)器。

Socket模擬服務(wù)器接收數(shù)據(jù)

使用ZLVircom對(duì)設(shè)備進(jìn)行配置。

設(shè)備配置

點(diǎn)擊修改配置,可以讓設(shè)備連接上SocketDlgTest工具。再次進(jìn)入設(shè)備編輯對(duì)話框。點(diǎn)擊“固件和配置”按鈕。

下載界面

首先點(diǎn)擊“網(wǎng)頁(yè)目錄下載”進(jìn)入配置下載模式。然后選擇一個(gè)新的空目錄,比如MQTTHTTPD目錄。防止之前的設(shè)計(jì)有殘留,請(qǐng)先點(diǎn)擊“清除全部”按鈕,這樣可以清空之前的設(shè)計(jì)內(nèi)容。設(shè)計(jì)文件將會(huì)保存在這個(gè)目錄,等一下可以通過(guò)點(diǎn)擊“下載”按鈕下載到設(shè)備內(nèi)部。

點(diǎn)擊“JSON配置”按鈕。

JSON配置主界面

這里的參數(shù)說(shuō)明如下:

1.上發(fā)服務(wù)器時(shí)間:默認(rèn)JSON數(shù)據(jù)每隔多少時(shí)間上發(fā)到服務(wù)器,服務(wù)器就是剛剛在設(shè)備配置界面設(shè)置的目的IP,單位是毫秒。

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

3.ID的JSON關(guān)鍵詞是自己命名的ID對(duì)應(yīng)的的JSON關(guān)鍵詞,這里寫(xiě)MyID,最長(zhǎng)為32字節(jié)。這樣以后JSON格式中會(huì)增加”MyID”:”2850002F0EEC”的內(nèi)容。這類(lèi)似于注冊(cè)包,有利于服務(wù)器識(shí)別是哪一臺(tái)設(shè)備發(fā)來(lái)的數(shù)據(jù)。

4.添加/查看:點(diǎn)擊后可以進(jìn)行Modbus寄存器的設(shè)計(jì),也可以查看目前已經(jīng)內(nèi)容。

5.刪除全部:刪除由“添加/查看”按鈕設(shè)計(jì)的所有的Modbus寄存器,方便重新開(kāi)始設(shè)計(jì)。

6.保存JSON設(shè)置:設(shè)計(jì)完成后只有點(diǎn)擊這個(gè)按鈕才可以保存數(shù)據(jù)到剛才的下載目錄,之后可以下載到設(shè)備內(nèi)部。

現(xiàn)在點(diǎn)擊“添加/查看”按鈕。對(duì)于之前的Modbus表的第一行:

寄存器地址 參數(shù)名 字節(jié)長(zhǎng)度 備注
0 當(dāng)前總有功電能 4 無(wú)符號(hào),保留2位小數(shù)

對(duì)應(yīng)的配置如下:

寄存器設(shè)置

這里的參數(shù)說(shuō)明如下:

1.第1個(gè)寄存器:這里的1,表示現(xiàn)在的設(shè)計(jì)界面是配置第一個(gè)寄存器。

2.已經(jīng)添加過(guò):如果打勾說(shuō)明是已經(jīng)添加的,查看已經(jīng)配置的信息的時(shí)候會(huì)出現(xiàn)打勾的情況。

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

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

5.寄存器地址:這里對(duì)應(yīng)的0。

6.數(shù)據(jù)長(zhǎng)度:這里對(duì)應(yīng)是4字節(jié)。

7.數(shù)據(jù)格式:這里對(duì)應(yīng)是無(wú)符號(hào)整型。

8.保留小數(shù)點(diǎn):這里保留2位。

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

10.對(duì)應(yīng)的JSON關(guān)鍵詞:對(duì)應(yīng)上發(fā)的JSON中的keyword。例如”CurrentW”:232.12。

11.設(shè)計(jì)下一個(gè):點(diǎn)擊后進(jìn)入下一個(gè)寄存器的設(shè)置。

12.保存設(shè)計(jì):完成設(shè)計(jì),之后點(diǎn)擊上一個(gè)界面的“保存JSON配置”即可。

13.取消設(shè)計(jì):取消當(dāng)前的所有設(shè)計(jì),如果是查看設(shè)計(jì)內(nèi)容,可以點(diǎn)擊這個(gè)按鈕退出。

這里點(diǎn)擊“設(shè)計(jì)下一個(gè)”按鈕繼續(xù)設(shè)計(jì)Modbus表中的其它寄存器。全部設(shè)計(jì)完表格中的寄存器后,點(diǎn)擊“完成設(shè)計(jì)”,然后點(diǎn)擊“保存JSON配置”后退出。然后點(diǎn)擊“下載web”頁(yè)面的“下載按鈕”

下載

然后點(diǎn)擊“確定”,設(shè)備會(huì)自動(dòng)重啟。如果沒(méi)有重啟請(qǐng)手動(dòng)重啟。

2.4.新建Modbus模擬表

這里使用Modbus Slave來(lái)模擬一個(gè)表

測(cè)試結(jié)果

測(cè)試結(jié)果顯示,使用Modbus slave工具模擬的儀表能夠被網(wǎng)關(guān)所采集。同時(shí)可以定時(shí),按照json格式上發(fā)到SocketDlgTest模擬的服務(wù)器軟件端。

3.MQTT

MQTT可以單獨(dú)使用也可以和JSON功能配合使用。當(dāng)單獨(dú)使用的時(shí)候MQTT功能將串口數(shù)據(jù)透?jìng)魃习l(fā)MQTT服務(wù)器。也就是將串口接收的數(shù)據(jù)作為MQTT的載荷。同時(shí)MQTT的載荷會(huì)以透?jìng)鞯姆绞綇拇谳敵?。?shí)現(xiàn)串口轉(zhuǎn)MQTT。

3.1.設(shè)備配置

MQTT配置1

點(diǎn)擊“固件與配置”,彈出配置下載和設(shè)計(jì)對(duì)話框:

MQTT配置2

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

MQTT配置3

這里配置說(shuō)明如下:

1.服務(wù)器域名或IP:這里填寫(xiě)的是MQTT服務(wù)器的IP,最長(zhǎng)為30個(gè)字符。

2.用戶名:是MQTT服務(wù)器的用戶名。

3.密碼:是這個(gè)用戶的登錄密碼。

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

5.訂閱主題:是這個(gè)設(shè)備訂閱的主題,有其它設(shè)備發(fā)布這個(gè)主題的時(shí)候,服務(wù)器會(huì)下發(fā)給這個(gè)設(shè)備。如果只是發(fā)布,一般無(wú)需填寫(xiě)這個(gè)字段。

6.發(fā)布主題:這個(gè)設(shè)備串口轉(zhuǎn)MQTT的時(shí)候向服務(wù)器發(fā)送的數(shù)據(jù)的主題。

7.MQTT高級(jí)參數(shù):用于配置高級(jí)參數(shù)。

8.保存MQTT設(shè)置:設(shè)計(jì)完畢點(diǎn)擊這個(gè)按鈕進(jìn)行保存,然后點(diǎn)擊網(wǎng)頁(yè)下載目錄的“下載按鈕”下載。

現(xiàn)在先點(diǎn)擊“MQTT高級(jí)參數(shù)”(一般無(wú)需配置高級(jí)參數(shù)):

MQTT高級(jí)參數(shù)配置

說(shuō)明如下:

1.協(xié)議版本:目前主流的是3.1.1版本,如果需要選擇3.1版本,請(qǐng)?jiān)谶@里選擇。

2.?;顣r(shí)間:MQTT的心跳時(shí)間,最少為10秒,默認(rèn)為60秒。

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

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

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

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

7.是否保存遺愿:服務(wù)器是否需要保持客戶端異常離線時(shí)發(fā)送給客戶端的遺愿消息。

8.遺愿質(zhì)量:服務(wù)器發(fā)送的遺愿消息的交付質(zhì)量級(jí)別。

9.訂閱質(zhì)量:訂閱的交付質(zhì)量級(jí)別。

10.發(fā)布質(zhì)量:客戶端發(fā)布消息的交付質(zhì)量級(jí)別。

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

我們這里不修改高級(jí)參數(shù)。直接點(diǎn)擊“保存MQTT設(shè)置”。然后點(diǎn)擊“下載”

下載

下載完畢點(diǎn)擊確定,此時(shí)會(huì)回到設(shè)備管理對(duì)話框,看到設(shè)備的目的IP、工作模式、目的端口已經(jīng)自動(dòng)修改為MQTT的設(shè)置:

自動(dòng)修改

如果沒(méi)有自動(dòng)修改則需要在設(shè)備編輯對(duì)話框下,設(shè)置目的IP、工作模式、目的端口。然后點(diǎn)擊“修改設(shè)置”。

IP配置

這樣配置就完成了。

3.2.數(shù)據(jù)測(cè)試

連接完成后設(shè)備的LINK燈(一般為中間的藍(lán)色燈)變亮。說(shuō)明設(shè)備正常連接上MQTT服務(wù)器。

現(xiàn)在打開(kāi)串口工具:

串口發(fā)送和接收

使用和設(shè)備一樣的波特率打開(kāi)串口,并發(fā)送數(shù)據(jù)“dev send”,此后在接收窗口看到返回的數(shù)據(jù)“dev send”。這是由于我們將dev send這個(gè)信息以zlansub的主題發(fā)布給MQTT服務(wù)器。但是同時(shí)我們的設(shè)備也訂閱了zlansub這個(gè)主題,所以服務(wù)器立刻會(huì)給我們發(fā)送一個(gè)訂閱信息,訂閱信息的內(nèi)容就是dev send。這個(gè)信息作為MQTT的載荷發(fā)送下載,通過(guò)透?jìng)鞯姆绞綇拇谳敵觥?/p>

如果其它設(shè)備發(fā)布信息過(guò)來(lái),這個(gè)設(shè)備也能夠收到數(shù)據(jù)。

一般來(lái)說(shuō),用戶可以直接將串口指令(比如Modbus RTU)指令直接透?jìng)鹘oMQTT服務(wù)器。另外也可以使用JSON功能,采用自動(dòng)Modbus RTU格式采集,定時(shí)JSON格式上發(fā)的形式。另外也可以找上海卓嵐定制一些非標(biāo)的儀表和上位機(jī)協(xié)議格式。

4.MQTT+JSON轉(zhuǎn)Modbus RTU

將上述的JSON和MQTT相組合可以實(shí)現(xiàn)如下的功能:

1.采用MQTT為基礎(chǔ)的協(xié)議和服務(wù)器建立連接,采用訂閱發(fā)布的形式進(jìn)行數(shù)據(jù)通訊。

2.支持Modbus RTU寄存器的自主設(shè)計(jì)和自動(dòng)采集。

3.支持將特定的Modbus寄存器內(nèi)容轉(zhuǎn)化為JSON格式定時(shí)主動(dòng)上發(fā)。

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

如果需要MQTT+JSON轉(zhuǎn)Modbus RTU功能的,可以分別設(shè)計(jì)MQTT和JSON,不分先后次序。設(shè)計(jì)完一種不要點(diǎn)擊“清除設(shè)計(jì)”按鈕,兩個(gè)設(shè)計(jì)完,一起點(diǎn)擊“下載”按鈕下載到設(shè)備內(nèi)容。

一般可以下載后手動(dòng)重啟設(shè)備,加載設(shè)置。