本文以實現串口MQTT服務器為項目目標,展開講解,介紹如何通過EsDA工具和MPC-ZC1平臺,進行應用開發,逐步完成項目需求。
簡介
工業串口服務器,以提供串口與網絡服務器之間的雙向數據透明傳輸為核心業務。在不用修改原有產品系統的情況下,為串口設備提供了便捷的聯網通道,即擴展了物聯網功能,又保障了原有系統的穩定性。串口端主要為 RS-232、485、422 等接口,網絡端通常為 TCP、UDP、MQTT、HTTP 等協議服務器。
本文以實現串口MQTT服務器為項目目標,展開講解,介紹如何通過 EsDA 工具和 MPC-ZC1 平臺,進行應用開發,逐步完成項目需求。??前期準備
可通過 EsDA MPC-ZC1 入門篇相關文章,掌握 EsDA 基本開發流程:一、項目需求
項目開發前,先對項目需求進行梳理和拆解,主要有以下幾點:
* 本文僅以 LED 作為擴展業務,可根據實際需求進行擴展。二、業務框圖
根據項目需求,大致將系統劃分為以下幾大模塊:
1. 串口通信
-
實現串口的數據收發功能;
-
實現串口基本參數配置功能(波特率、奇偶校驗位、數據位)。
- 實現MQTT客戶端功能;
- 配置目標服務器地址、端口;
- 發布和訂閱指定主題。
3. 數據解析
- 解析數據流中的控制命令
4. 數據分發
- 將解析出來的數據分發到其他模塊
業務開發
可通過 EsDA MPC-ZC1 入門篇相關文章,掌握 EsDA 基本開發流程:一、串口通信
實現串口通信模塊,需要使用到串口相關的 AWFlow 節點,包括 serial_ex、serial_in_ex、serial_out_ex 3個節點。1. 節點介紹1.1 serial_ex串口配置節點,屬于隱式節點,不會被顯示在畫布中,需要配套對應的功能節點一起使用。1.1.1 屬性
- 名稱(name):節點名稱,用于索引查找本節點;
- 顯示名稱(displayName):用于畫布上顯示的名稱;
- 端口(port):用于索引串口設備;
- 波特率(baudrate):串口波特率參數;
- 字節大?。╞ytesize):數據位參數;
- 奇偶校驗(parity):串口奇偶校驗位參數;
- 停止位(stopbits):串口停止位參數;
- 流控(flowcontrol):串口流控模式配置;
- 幀超時(frame_timeout):收到數據后的總體等待時間;
- 幀長度(frame_length):期望收據的數據長度;
- 碼間超時(intersymbol_timeout):字節間的最大超時時間。
其中幀超時、幀長度、碼間超時可用于分包應用,3個參數可同時使用,任意一個條件滿足都會觸發分包。
* 配置節點(config類型)只存在節點屬性,不具備輸入輸出功能。1.2 serial_in_ex
串口接收節點,負責讀取指定串口接收到的數據。1.2.1 屬性-
名稱(name):節點名稱,用于索引查找本節點;
-
顯示名稱(displayName):用于畫布上顯示的名稱;
- 配置節點名稱(config):綁定一個串口配置節點;
-
payload:讀取到串口接收的數據,字符串(可按二進制提?。?;
-
payloadLength:數據長度,uint32_t 類型;
-
payloadType: payload 的數據類型,用于后續節點數據處理;
-
istream:數據流對象,保存著串口接收的原始數據流;
1.3 serial_out_ex
串口發送節點,將上級節點輸出的數據發送至串口發送接口。
1.3.1 屬性
-
名稱(name):節點名稱,用于索引查找本節點;
-
顯示名稱(displayName):用于畫布上顯示的名稱;
-
配置節點名稱(config):綁定一個串口配置節點。
1.3.2 輸入
-
payload:負載數據,字符串類型(也可按二進制轉換);
-
payloadLength:負載數據長度,uint32_t類型;
-
payloadType:指示payload的數據類型;
-
istream:數據流對象。
*支持輸入 payload 和 istream 數據,優先使用 istream。
1.3.3 輸出* sink類型節點通常不具備數據輸出。
2. 回發驗證
我們通過一個串口數據回發功能來驗證串口通信模塊。
2.1添加節點
添加 serial_in_ex 和 serial_out_ex 節點到畫布上。2.2配置節點
雙擊 serial_in_ex 節點,打開屬性面板。選擇“添加新的 serial_ex 節點”,點擊編輯配置,進入配置節點屬性面板。
-
串口設備:Uart1;
-
波特率:115200;
-
字節大?。?bits;
-
奇偶校驗:None
-
停止位:1bits;
-
流控:None;
-
幀超時:100;
-
幀長度:0;
-
碼間超時:0。
點擊添加,完成配置。
可以看到已經創建了一個新的配置節點,名為 serial_ex,繼續點擊完成,結束接收節點的配置。
同樣的,雙擊 serial_out_ex 節點,打開屬性面板,直接選擇剛剛創建的配置節點。
點擊完成,保存配置。
2.3繪制流圖
將serial_in_ex與serial_out_ex節點進行連接。
2.4下載驗證
確保硬件正確連接。
選擇流圖下載接口。
點擊下載。
完成流圖下載,通過串口工具進行數據回發測試。
二、MQTT通信
實現 MQTT 通信模塊,需要使用到相關的AWFlow節點,包括mqtt_config、mqtt_in、mqtt_out3個節點。
1. 節點介紹
1.1 mqtt_config
MQTT 配置節點,屬于隱式節點,不會被顯示在畫布中,需要配套對應的功能節點一起使用。
1.1.1 屬性
-
名稱(name):節點名稱,用于索引查找本節點;
-
顯示名稱(displayName:用于畫布上顯示的名稱;
-
主機地址(host):目標服務器域名(IP地址);
-
端口(port):目標服務器網絡端口;
-
重連間隔(retry-interval):MQTT后臺服務重連時間間隔,單位毫秒;
-
客戶端ID(client-id):MQTT客戶端ID;
-
用戶名(user-name):MQTT客戶端用戶名;
-
密碼(password):MQTT客戶端密碼;
-
?;畎l送間隔(keep-alive-interval):?;顢祿l送周期,單位秒;
-
清除會話(clean-session):使能自動清除歷史會話;
-
上線主題服務質量等級(online-topic-qos):上線QoS服務質量;
-
上線主題(online-topic-topic):上線主題;
-
上線主題數據(online-topic-data):上線主題數據;
-
遺囑主題服務質量等級(last-will-qos):遺囑QoS服務質量;
-
遺囑主題(last-will-topic):遺囑主題;
-
遺囑主題數據(last-will-data):遺囑主題數據;
-
使能SSL(enable-ssl):使能SSL加密功能;
-
根證書路徑(root-ca-ssl):根證書文件全路徑;
-
客戶端證書路徑(client-certificate-path):客戶端證書文件全路徑;
-
客戶端密鑰路徑(client-private-key-path):客戶端密鑰文件全路徑。
MQTT 配置屬性項比較多,但好在節點中已經內置了常用的默認配置,用戶僅需根據應用修改所需屬性項即可。
* 配置節點(config類型)只存在節點屬性,不具備輸入輸出功能。
1.2 mqtt_in
MQTT 訂閱節點,提供訂閱指定主題的功能。
1.2.1 屬性
- 名稱(name):節點名稱,用于索引查找本節點;
- 顯示名稱(displayName):用于畫布上顯示的名稱;
- 主題(topic):配置需要訂閱的主題;
- 消息質量(qos):QoS主題服務質量等級;
- 配置(config):綁定一個MQTT配置節點。
pump類型節點通常不具備數據輸入。
1.2.3 輸出- topic:主題標識,字符串類型;
- payload:負載數據,指針(pointer)類型;
- payloadLength:負載數據長度,uint32_t類型。
1.3 mqtt_out
MQTT 發布節點,向服務器發布指定主題數據。
1.3.1 屬性
-
名稱(name):節點名稱,用于索引查找本節點;
-
顯示名稱(displayName):用于畫布上顯示的名稱;
-
消息質量(qos):QoS主題服務質量等級;
-
主題(topic):發布的主題;
-
配置(config):綁定一個MQTT配置節點。
1.3.2 輸入
- topic:發布主題名稱;
- payload:負載數據;
- payloadLength:負載數據長度,uint32_t類型;
1.3.3 輸出
* sink類型節點通常不具備數據輸出。2. 回發驗證我們通過一個MQTT數據回發功能來驗證MQTT通信模塊。2.1 添加節點添加 mqtt_in 和 mqtt_out 節點到畫布上。2.2 配置節點
雙擊 mqtt_in_ex 節點,打開屬性面板。選擇“添加新的 mqtt 節點”,點擊編輯配置,進入配置節點屬性面板。
該節點已經內置好大部分常用的配置信息,此處,我們僅修改3個必須的屬性項:
-
主機地址:broker.emqx.io;
-
端口號:1883;
-
重連間隔:1000。
點擊添加,完成配置。
可以看到已經創建了一個新的配置節點,名為 mqtt,同時我們配置一個訂閱主題 EsDA-MQTT-Down ,繼續點擊完成,結束接收節點的配置。
同樣的,雙擊mqtt_out節點,打開屬性面板,直接選擇剛剛創建的配置節點,同時配置一個發布主題EsDA-MQTT-Up 。
點擊完成,保存配置。
2.3 繪制流圖
將 mqtt_in 與 mqtt_out 節點進行連接。
2.4 下載驗證
確保硬件正確連接,需要4G天線,以及一張可正常聯網的SIM卡。
選擇流圖下載接口。
點擊下載。
完成流圖下載后,可通過MQTT客戶端工具進行數據回發測試。
此處我們選擇MQTTX,下載鏈接
https://www.emqx.com/zh/downloads/MQTTX/1.8.2/MQTTX-Setup-1.8.2-x64.exe
下載結束并完成MQTTX客戶端的安裝,啟動MQTTX客戶端軟件。
點擊新建連接,創建MQTT連接,如下進行配置。
點擊連接,完成客戶端配置,進入連接后,添加訂閱主題。
訂閱MPC-ZC1發布的主題EsDA-MQTT-Up 。
最后發布MPC-ZC1訂閱的主題EsDA-MQTT-Down 。
輸入發布的內容EsDA MQTT Test Message!,點擊發布主題,隨后可以收到 MPC-ZC1 回發同樣的內容。
三、串口MQTT透傳
前面我們已經完成串口通信、MQTT通信功能,并進行數據回發測試,接下來我們要完成本項目的核心功能,串口與MQTT服務器之間的數據透明傳輸。
從前面兩次數據回發的流圖中,我們很容易想象到如下圖所示的方式進行流圖變換。沒錯,只需將2條回發的數據流進行交換連接,即可達到2個通信接口的數據透明傳輸。為了流圖簡潔性,我們進行節點的位置調整,如下所示。
下載流圖,進行透傳測試,效果如下圖。
至此,我們完成串口服務器的核心功能,數據透明傳輸。后續我們會繼續圍繞串口服務器項目,進行業務的擴展,增加透傳命令來控制設備上的LED。
-
ESDA
+關注
關注
0文章
28瀏覽量
7530 -
MPC
+關注
關注
2文章
36瀏覽量
21261 -
串口服務器
+關注
關注
1文章
165瀏覽量
17414
原文標題:EsDA MPC-ZC1 應用——串口服務器(一)
文章出處:【微信號:ZLG_zhiyuan,微信公眾號:ZLG致遠電子】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論