基于 MQTT 網(wǎng)關(guān)連接 PLC 與阿里云物聯(lián)網(wǎng)平臺(tái)的工業(yè)物聯(lián)網(wǎng)系統(tǒng)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
引 言
MQTT 已成為國(guó)內(nèi)工業(yè)物聯(lián)網(wǎng)的首選云通信協(xié)議,尤其在大規(guī)模設(shè)備廠家遠(yuǎn)程運(yùn)維系統(tǒng)中采用 MQTT+SSL/TLS 已成標(biāo)配。消息隊(duì)列遙測(cè)傳輸(Message Queuing Telemetry Transport,MQTT)是 IBM 開發(fā)的一種即時(shí)通信協(xié)議, 該協(xié)議支持所有平臺(tái)。但對(duì)于云平臺(tái)的程序員來(lái)說,如何將Modbus TCP,OPC-UA 等各種工業(yè)協(xié)議轉(zhuǎn)為 MQTT 是一個(gè)難題。由于云平臺(tái)軟件大部分采用 Java 語(yǔ)言開發(fā),基于JSON 格式的 MQTT 協(xié)議更易受到云平臺(tái)開發(fā)人員的喜愛。但對(duì)于工業(yè)自動(dòng)化的工程師而言,MQTT 還是一個(gè)比較陌生的協(xié)議。針對(duì)這一實(shí)際問題,本文提出了 MQTT 網(wǎng)關(guān)的概念, 提供輕量級(jí)、支持 Publish/Subscribe 消息的推送模式,使設(shè)備與云平臺(tái)之間的通信更為簡(jiǎn)單 [1-3]。
1 系統(tǒng)設(shè)計(jì)
1.1 總體方案設(shè)計(jì)
系統(tǒng)包含設(shè)備層和數(shù)據(jù)處理層。設(shè)備層包含現(xiàn)場(chǎng)不同廠商的 PLC 及 MQTT 網(wǎng)關(guān)。不同的 PLC 通過 OPC-UA 通信將數(shù)據(jù)發(fā)送至 MQTT 網(wǎng)關(guān),再由 MQTT 網(wǎng)關(guān)將數(shù)據(jù)轉(zhuǎn)送至云平臺(tái),本文使用阿里云作為云平臺(tái),作為國(guó)內(nèi)領(lǐng)先的云服務(wù)供應(yīng)商,阿里云在物聯(lián)網(wǎng)領(lǐng)域可提供完整的解決方案,并能與其他云產(chǎn)品互通,為后續(xù)大數(shù)據(jù)分析和管理提供便利 [4]。
在數(shù)據(jù)處理層中的物聯(lián)網(wǎng)平臺(tái)支持設(shè)備使用 CoAP, MQTT,HTTPS 協(xié)議接入。IoT Studio 是阿里云針對(duì)物聯(lián)網(wǎng)場(chǎng)景提供的工具,它可覆蓋各物聯(lián)網(wǎng)行業(yè)核心應(yīng)用場(chǎng)景,為物聯(lián)網(wǎng)開發(fā)服務(wù)提供移動(dòng)可視化開發(fā)、Web 可視化開發(fā)、服務(wù)開發(fā)與設(shè)備開發(fā)等。本案例使用基于 Web 的可視化開發(fā)插件,用戶通過遠(yuǎn)程輸入地址即可輕松實(shí)現(xiàn)對(duì)數(shù)據(jù)的讀取和寫入。此外后續(xù)還可以通過使用云數(shù)據(jù)庫(kù)結(jié)合機(jī)器學(xué)習(xí) PAI 實(shí)現(xiàn)基于大數(shù)據(jù)的預(yù)測(cè),或通過阿里云的其他服務(wù)實(shí)現(xiàn)更多功能,其總體框架如圖 1 所示。本文側(cè)重介紹前段通信的建立, 針對(duì)大數(shù)據(jù)分析不做詳細(xì)介紹。
系統(tǒng)中主要的設(shè)備為 MQTT 網(wǎng)關(guān),MQTT 中定義了兩種對(duì)象,即客戶端和發(fā)布服務(wù)器。發(fā)布服務(wù)器是整個(gè)通信系統(tǒng)的網(wǎng)絡(luò)核心,可以連接多個(gè)客戶端,客戶端則作為框架中信息的產(chǎn)生者和接收者 :
(1)客戶端通過 Subscribe向發(fā)布服務(wù)器聲明自己想接收的 Topic信息 ;
(2)相關(guān)客戶端通過 Publish 向發(fā)布服務(wù)器上某個(gè) Topic發(fā)布信息 ;
(3)發(fā)布服務(wù)器將該信息轉(zhuǎn)發(fā)到對(duì)該 Topic感興趣的客戶端。
MQTT 運(yùn)行原理如圖 2 所示。
實(shí)驗(yàn)中使用的 MQTT 網(wǎng)關(guān)采用 BECKHOFF 公司開發(fā)的TwinCAT 3 作為軟件平臺(tái)。TwinCAT 3 是一款基于IEC 61131 編程語(yǔ)言的自動(dòng)化軟件,其工程環(huán)境完全集成在 Microsoft Visual Studio 框架中,除了系統(tǒng)配置、運(yùn)動(dòng)控制、I/O 控制之外,還可以進(jìn)行編程和調(diào)試。
作為網(wǎng)關(guān)的輸入端,該平臺(tái)可以支持市面上 90% 以上的 通 信 協(xié) 議 , 如 OPC-UA/DA,Modbus TCP,EtherCAT, PROFINRET,EtherNET/IP,CANopen,DeviceNet,Profibus DP 等,可以真正實(shí)現(xiàn)與不同廠商 PLC 進(jìn)行數(shù)據(jù)對(duì)接。作為網(wǎng)關(guān)的輸出端,連接互聯(lián)網(wǎng)后可以直接通過 MQTT 協(xié)議與阿里云的物聯(lián)網(wǎng)平臺(tái)進(jìn)行數(shù)據(jù)對(duì)接 [5-6]。
1.2 MQTT 網(wǎng)關(guān)與物聯(lián)網(wǎng)平臺(tái)的連接
在物聯(lián)網(wǎng)平臺(tái)中建立連接,需在云端創(chuàng)建產(chǎn)品和對(duì)應(yīng)設(shè)備。產(chǎn)品相當(dāng)于某一類設(shè)備的集合,該類設(shè)備具有相同的功能,可以根據(jù)產(chǎn)品批量管理對(duì)應(yīng)設(shè)備。
為了保證傳輸數(shù)據(jù)的安全性和可靠性, 每個(gè)設(shè)備需要具備物聯(lián)網(wǎng)平臺(tái)頒發(fā)的憑證才能連接, 憑證內(nèi)容包含ProductKey,DeviceName 和 DeviceSecret,在云服務(wù)器中可以找到對(duì)應(yīng)信息。設(shè)備憑證是設(shè)備與物聯(lián)網(wǎng)平臺(tái)交流的重要依據(jù),需要在 PLC 程序中進(jìn)行相關(guān)加載 [7-8]。
1.3 MQTT 網(wǎng)關(guān)與 PLC 的連接
為了收集現(xiàn)場(chǎng)不同 PLC 所采集的過程數(shù)據(jù),需要將它們連接至 MQTT 網(wǎng)關(guān)。本文采用 OPC-UA 作為通信協(xié)議, OPC UA 技術(shù)在國(guó)內(nèi)正形成一個(gè)熱潮,在工業(yè) 4.0、智能制造等領(lǐng)域被廣泛認(rèn)可。OPC-UA 與 MQTT 網(wǎng)關(guān)采用客戶端 / 服務(wù)器的通信模式,這種對(duì)等方式可提供安全和確定的信息交換 [9-10]。
不同 PLC 供應(yīng)商所提供的 OPC-UA 設(shè)置軟件略有不同, 在此不做過多介紹,可以在對(duì)應(yīng)廠商的官網(wǎng)找到相關(guān)資料。MQTT 網(wǎng)關(guān)作為 OPC-UA 客戶端可以同時(shí)連接多個(gè) OPC Server 的 PLC,其網(wǎng)絡(luò)拓?fù)淙鐖D 3 所示。在本文中分別使用了 4 款不同系列的 PLC,分別為 SIEMENS 的 1500 和 1200 系列,F(xiàn)ESTO CECC 和 BECKHOFF CX2020 系列。
2 系統(tǒng)關(guān)鍵模塊功能的實(shí)現(xiàn)
2.1 MQTT 網(wǎng)關(guān)與物聯(lián)網(wǎng)平臺(tái)的連接
作為MQTT網(wǎng)關(guān),TwinCAT3軟件可以通過庫(kù)文件“TC3_ IotBase.library”實(shí)現(xiàn)與 MQTTBroker的數(shù)據(jù)交互。網(wǎng)關(guān)可以收集下位機(jī)或本地所采集的數(shù)據(jù),通過將數(shù)據(jù)進(jìn)行 JSON格式的轉(zhuǎn)換上傳至云端,其結(jié)構(gòu)示意如圖 4 所示。
2.1.1 MQTT 通信的建立
MQTT 網(wǎng)關(guān)的編程基于 IEC 61131-3 中的結(jié)構(gòu)化文本, 與通信建立相關(guān)的主要代碼如下 :
2.1.2 物聯(lián)網(wǎng)平臺(tái)數(shù)據(jù)的 Publish/Subscribe
在 MQTT 中,數(shù)據(jù)的發(fā)送和接收通過 Publish/Subscribe 實(shí)現(xiàn),對(duì)應(yīng)的 Topic 信息可以在云端設(shè)備信息中查閱,針對(duì)本次測(cè)試,對(duì)應(yīng)的 Topic 如下 :
2.2 MQTT 網(wǎng)關(guān)與 PLC 的連接
將 4 臺(tái) PLC 通過交換機(jī)連接,在各 PLC 中添加一個(gè)溫度變量傳輸至 MQTT 服務(wù)器來(lái)模擬效果,硬件連接如圖 5 所示。
圖 5 實(shí)際硬件連接
TwinCAT 3 OPC-UA Client 的設(shè)置界面中分別添加4 臺(tái) PLC 的 Server 信息,其 URL 為 OPC UA Server 所在主機(jī)的 IP 地址 :端口號(hào),例如 opc.tcp ://192.168.1.1 :4840,隨后找到節(jié)點(diǎn)名稱,即設(shè)備在 OPC UA Server 中的變量節(jié)點(diǎn)DisplayName 的值即可。
2.3 測(cè)試與結(jié)果
采集的溫度發(fā)送至 MQTT 網(wǎng)關(guān),再傳輸至物聯(lián)網(wǎng)平臺(tái)后通過適當(dāng)?shù)脑O(shè)置即可直接在控制臺(tái)信息中找到實(shí)時(shí)溫度數(shù)據(jù),如圖 6 所示。

為了顯示更詳細(xì)的數(shù)據(jù),如實(shí)時(shí)數(shù)據(jù)和歷史數(shù)據(jù),可以在 IoT Studio Web 中進(jìn)行可視化圖形界面的開發(fā),本案例將溫度數(shù)據(jù)與趨勢(shì)圖插件的數(shù)據(jù)源接口進(jìn)行對(duì)接,設(shè)置好映射關(guān)系后,該可視化界面就完成了部署到云端的工作。最終用戶只要通過帶瀏覽器的手機(jī)、筆記本電腦直接打開網(wǎng)頁(yè)就能實(shí)時(shí)訪問數(shù)據(jù),可視化界面如圖 7 所示。
圖 7 可視化界面
為測(cè)試系統(tǒng)的響應(yīng)性能及網(wǎng)絡(luò)延時(shí),每分鐘通過 PLC 向云端發(fā)送一條溫度數(shù)據(jù)以測(cè)試系統(tǒng)整體的實(shí)時(shí)性能,本實(shí)驗(yàn)維持了 12 h, 取每小時(shí)的平均值, 最終的平均值為3.7 ms,其結(jié)果如圖 8 所示。
3 結(jié) 語(yǔ)
實(shí)驗(yàn)表明該 MQTT 網(wǎng)關(guān)具有較高的安全性、可擴(kuò)展性和實(shí)時(shí)性等優(yōu)點(diǎn),能夠?qū)崿F(xiàn)現(xiàn)場(chǎng)設(shè)備數(shù)據(jù)采集并連接至云服務(wù)器,對(duì)將來(lái)的大數(shù)據(jù)分析有著非常重要的指導(dǎo)意義。
本文僅是拋磚引玉,基于該 MQTT 的工業(yè)物聯(lián)網(wǎng)系統(tǒng)可用到更為廣泛的應(yīng)用場(chǎng)景,比如基于大數(shù)據(jù)的設(shè)備預(yù)防性檢測(cè)等,希望大家在工業(yè) 4.0 的大環(huán)境下能夠更好地利用云資源。