最新發(fā)表
聯(lián)系我們
13396452298

MQTT配置分為服務(wù)器配置和數(shù)據(jù)組配置。
打開(kāi) SCADA 并新建工程,建立變量,這些變量在后面步驟中可用于MQTT(自定義)功能配置。

雙擊打開(kāi)“工程瀏覽器”中的“數(shù)據(jù)上報(bào)中心”節(jié)點(diǎn),點(diǎn)擊“添加服務(wù)器”,服務(wù)器選擇“MQTT(自定義)”。
服務(wù)器配置分為 4 項(xiàng),“基本”、“控制”、“TLS”、“主題”。
配置MQTT服務(wù)器的地址、端口號(hào)和客戶端 ID 等相關(guān)信息。

服務(wù)器描述:此項(xiàng)可隨意填寫。
服務(wù)器地址:有固定和自定義方式,固定地址為固定的 IP 或域名,自定義地址需綁定變量,支持最多 128 個(gè)字符。
端口:有固定和自定義方式,固定地址為固定的端口號(hào),自定義地址需綁定變量。
客戶端 ID:有固定和自定義方式,固定地址為固定的 ID,自定義地址需綁定變量,支持最多 128 個(gè)字符。
上報(bào)驗(yàn)證:如果服務(wù)器對(duì)設(shè)備端有身份認(rèn)證,需要在此處啟用上報(bào)驗(yàn)證,有固定和自定義方式。
可以通過(guò)綁定的變量來(lái)獲取服務(wù)器連接狀態(tài)和狀態(tài)信息,以及控制服務(wù)器是否連接。

狀態(tài):連接服務(wù)器狀態(tài),綁定變量,ON-連接,OFF-未連接
信息:連接服務(wù)器狀態(tài)信息,綁定變量,以狀態(tài)值來(lái)表示,如下:
| 狀態(tài)值 | 信息 |
|---|---|
| -4 | 連接認(rèn)證錯(cuò)誤 |
| -1 | 等待連接 |
| 0 | 連接成功 |
| 1 | 內(nèi)存錯(cuò)誤 |
| 2 | 協(xié)議錯(cuò)誤 |
| 3 | 參數(shù)錯(cuò)誤 |
| 4 | 未連接 |
| 5 | 拒絕連接 |
| 6 | 找不到服務(wù)端 |
| 7 | 連接丟失 |
| 8 | TLS 協(xié)議版本錯(cuò)誤 |
| 11 | 認(rèn)證錯(cuò)誤 |
| 13 | 未知錯(cuò)誤 |
| 14 | 系統(tǒng)調(diào)用錯(cuò)誤 |
| 16 | 代理錯(cuò)誤 |
| 18 | 格式錯(cuò)誤 |
| 19 | keepalive 錯(cuò)誤 |
| 23 | TLS 握手失敗 |
| 24 | QoS 不支持 |
配置是否啟用 TLS/SSL 加密。

包含發(fā)布主題、訂閱主題和系統(tǒng)主題,發(fā)布主題和訂閱主題會(huì)自動(dòng)讀取數(shù)據(jù)組配置的主題進(jìn)行顯示。
雙擊打開(kāi)“工程瀏覽器”中的“數(shù)據(jù)組”節(jié)點(diǎn),點(diǎn)擊“添加數(shù)據(jù)組”彈出數(shù)據(jù)組窗口。
在此處,存儲(chǔ)方式必須勾選上“遠(yuǎn)程上報(bào)”并選擇“MQTT(自定義)”,根據(jù)需要勾選并配置發(fā)布主題、訂閱主題和回執(zhí)主題,并設(shè)置 QoS 和記錄方式。

組名:數(shù)據(jù)組的組名,此處可以任意填寫。
啟停控制變量:綁定控制是否啟用數(shù)據(jù)組的變量。
存儲(chǔ)方式:此處必須勾選“遠(yuǎn)程上報(bào)”并選擇“MQTT(自定義)”。
發(fā)布:發(fā)送信息時(shí),MQTT服務(wù)器收到的主題。支持固定格式和自定義格式。(勾選發(fā)布主題后,右側(cè)方可對(duì)內(nèi)容進(jìn)行配置)。

訂閱:訂閱分為訂閱和回執(zhí)兩個(gè)部分。

Qos:上報(bào)服務(wù)質(zhì)量,有兩種方式:固定格式和自定義格式。

記錄方式:按照不同的方式上報(bào)數(shù)據(jù),有間隔記錄、固定時(shí)間段記錄、觸發(fā)式記錄、變化式記錄四種方式。

設(shè)定指定間隔時(shí)間推送內(nèi)容數(shù)據(jù)至指定服務(wù)器

設(shè)定在指定時(shí)間段中,以指定頻率推送內(nèi)容數(shù)據(jù)至指定服務(wù)器

綁定開(kāi)關(guān)型變量,當(dāng)變量觸發(fā)時(shí),推送內(nèi)容數(shù)據(jù)至指定服務(wù)器。變化類型有:開(kāi)到關(guān)、關(guān)到開(kāi)、切換三種

綁定的數(shù)值型變量,當(dāng)變量值發(fā)生發(fā)生變化時(shí),推送內(nèi)容數(shù)據(jù)至指定服務(wù)器
我們提供【配置式】和【JS 腳本式】?jī)煞N方法供用戶選擇。

配置式:采用樹(shù)狀結(jié)構(gòu),支持對(duì)象,數(shù)組等方式。用戶可自定義數(shù)據(jù)名稱以及時(shí)間戳,是一種可靈活調(diào)整的設(shè)計(jì)方法。
【增加對(duì)象】:增加一個(gè)對(duì)象。對(duì)象內(nèi)可以存放多個(gè)數(shù)據(jù)格式,每個(gè)數(shù)據(jù)格式具有獨(dú)自的名稱和值。對(duì)象使用大括號(hào){}包裹數(shù)據(jù)。
【增加數(shù)組】:增加一個(gè)數(shù)組。數(shù)組內(nèi)可以存放多個(gè)數(shù)據(jù)格式,但是名稱只有一個(gè)。數(shù)組使用中括號(hào)"[]"包裹數(shù)據(jù)。
【增加數(shù)值】:點(diǎn)擊增加數(shù)值彈出【數(shù)值編輯器】,可增加一個(gè)數(shù)值、字符串、表達(dá)式或時(shí)間戳。
當(dāng)選擇“固定值”和“字符串”時(shí),可以選擇使用固定值或者取自變量值。 當(dāng)選擇“表達(dá)式”時(shí),可以使用簡(jiǎn)單的數(shù)值四則運(yùn)算或字符串拼接。
注意:一個(gè)數(shù)值最多可使用255個(gè)字。【批量增加數(shù)值】:點(diǎn)擊打開(kāi)變量選擇器,可選擇多個(gè)變量,添加多個(gè)數(shù)值。
【刪除】:刪除所選的字段。
【范本】:在范本中粘貼JSON文本,系統(tǒng)將會(huì)排編成相應(yīng)的JSON格式架構(gòu),節(jié)約自行排布格式的時(shí)間。

【預(yù)覽】:使用方便易懂的JSON格式展示出【內(nèi)容配置(表格)】中所配置的內(nèi)容。
JS 腳本式:可編寫 JS 腳本,完全由用戶自定義內(nèi)容,具有極高自由度。
【編譯】:對(duì)編寫的腳本內(nèi)容進(jìn)行編譯檢測(cè)。
【測(cè)試】:對(duì)編寫的腳本內(nèi)容進(jìn)行語(yǔ)法格式檢測(cè)。
【示例】:提供【發(fā)布】和【訂閱】?jī)煞N不同格式的腳本示例。
【內(nèi)容編輯】:用于編寫JS腳本的區(qū)域。
接下來(lái)我們以“配置式”舉個(gè)例子,通過(guò)點(diǎn)擊“增加對(duì)象”、“增加數(shù)組”、“增加數(shù)值”、“批量增加數(shù)值”添加MQTT消息內(nèi)容(Payload)。右側(cè)的“預(yù)覽(Json)”窗口可以預(yù)覽內(nèi)容格式,所見(jiàn)即所得,確保上報(bào)的內(nèi)容格式不出錯(cuò)。

本文以下面的主題內(nèi)容作為例子進(jìn)行配置。
{
"type": "2023-04-25T02:54:57.285874",
"link": {
"slug": "內(nèi)部變量_2.變量1",
"type": 1682391297,
"collap": "($內(nèi)部變量_2.變量2+100)/20-5"
},
"Array2": [
"內(nèi)部變量_2.變量2"
]
}
以上 Json 報(bào)文如何在內(nèi)容配置中進(jìn)行配置呢?這條報(bào)文內(nèi)容里面包含有數(shù)值、對(duì)象、數(shù)組,如下圖:

我們開(kāi)始在內(nèi)容配置中進(jìn)行配置,內(nèi)容配置(表格)默認(rèn)有一個(gè)名稱為上報(bào)內(nèi)容的對(duì)象,如下圖:

首先在報(bào)文中添加數(shù)值。
"type": "2023-04-25T02:54:57.285874"
鼠標(biāo)選中“上報(bào)內(nèi)容”項(xiàng),點(diǎn)擊“增加數(shù)值”,編輯名稱、數(shù)據(jù)類型和內(nèi)容,然后點(diǎn)擊確定。

選擇“增加數(shù)值”或者右鍵點(diǎn)擊數(shù)值并選擇“編輯”時(shí),會(huì)彈出“數(shù)值編輯器”,如下圖:
| 字符串 | 數(shù)字 | 布爾 | |
|---|---|---|---|
| 固定值 | 最多可使用 255 個(gè)字 | 最多可使用 255 個(gè)字 | TRUE 或 FALSE |
| 變量 | 只能綁定字符串變量 | 只能綁定字變量(字符串除外) | 只能綁定位變量 |
| 表達(dá)式 | 支持字符串變量的四則運(yùn)算 | 支持字變量(字符串除外)的四則運(yùn)算 | 不支持 |
| 時(shí)間戳 | 格式:Unix 時(shí)間戳(ISO 8601 規(guī)范) | 格式:格林威治時(shí)間 | 不支持 |
接下來(lái)我們需要添加一個(gè)對(duì)象。
"link": {
"slug": "內(nèi)部變量_2.變量1",
"type": 1682391297,
"collap": "($內(nèi)部變量_2.變量2+100)/20-5"
}。
鼠標(biāo)選中“上報(bào)內(nèi)容”項(xiàng),點(diǎn)擊“增加對(duì)象”,修改名稱 link,如下圖:

然后鼠標(biāo)再選中對(duì)象“l(fā)ink”項(xiàng),點(diǎn)擊“增加數(shù)值”,編輯名稱"slug"、數(shù)據(jù)類型"數(shù)字"和內(nèi)容“變量”,點(diǎn)擊確定。

再依次增加數(shù)值名稱"type"、數(shù)據(jù)類型"數(shù)字"和內(nèi)容“時(shí)間戳”和名稱"collap"、數(shù)據(jù)類型"數(shù)字"和內(nèi)容“變量”。
最后我們需要添加一個(gè)數(shù)組。
"Array2": [
"內(nèi)部變量_2.變量2"
]
鼠標(biāo)選中“上報(bào)內(nèi)容”項(xiàng),點(diǎn)擊“增加數(shù)組”,修改名稱 Array2,如下圖:

然后鼠標(biāo)再選中數(shù)組“Array2”項(xiàng),點(diǎn)擊“增加數(shù)值”,編輯名稱默認(rèn)、數(shù)據(jù)類型"bool"和內(nèi)容“變量”,點(diǎn)擊確定,如下圖:

上面步驟操作完后,上報(bào)服務(wù)器的內(nèi)容格式為下圖預(yù)覽(Json)中的格式。

除了“配置式”,我們也提供自由度更高的“JS 腳本式”進(jìn)行內(nèi)容配置,具體請(qǐng)參考自定義MQTT腳本。
新建畫面,添加圖元,并綁定相關(guān)變量,如下圖:

下載工程到 HMI,如下圖:

本文通過(guò)部署在云平臺(tái)上的 EMQ 服務(wù)器進(jìn)行驗(yàn)證。

在 HMI 上點(diǎn)擊連接MQTT服務(wù)器開(kāi)關(guān),假如連接成功,連接狀態(tài)指示燈會(huì)亮,如下圖:

此時(shí),在MQTT服務(wù)器連接管理中會(huì)顯示 HMI 的設(shè)備,如下圖所示:

啟動(dòng)MQTT服務(wù)器 WebSocket 客戶端,啟動(dòng)連接,如下圖所示:

配置主題,如下圖所示:

配置好主題后進(jìn)行訂閱,將 HMI 上數(shù)據(jù)的值改為 7,此時(shí)MQTT服務(wù)器上就會(huì)監(jiān)控到如下圖所示:

MQTT服務(wù)器數(shù)據(jù)將數(shù)據(jù)(HMI 訂閱的主題格式)下發(fā)到 HMI,MQTT服務(wù)器上就會(huì)監(jiān)控到如下圖所示:

此時(shí) HMI 上數(shù)據(jù)的值也已被改為 9,如下圖所示
