劉佳
摘 要:伴隨著城市化的快速發(fā)展,當前供水監(jiān)控系統(tǒng)已經(jīng)實現(xiàn)了自動化,但這些供水監(jiān)控系統(tǒng)多數(shù)成為了信息孤島,水務部門難以進行水資源的有效調(diào)度。為此使用MQTT協(xié)議設計了一套應用于水務監(jiān)管的工業(yè)物聯(lián)網(wǎng)系統(tǒng),該系統(tǒng)將原先不同區(qū)域內(nèi)各自封閉的工業(yè)控制系統(tǒng)通過物聯(lián)網(wǎng)有效融合,并開發(fā)了OPC/MQTT協(xié)議網(wǎng)關(guān)和物聯(lián)網(wǎng)網(wǎng)關(guān)。通過軟件或硬件形式的物聯(lián)網(wǎng)網(wǎng)關(guān)將現(xiàn)場設備和儀表虛擬在工業(yè)云上,組成云上的設備池,依靠虛擬的設備池實現(xiàn)了基于B/S架構(gòu)的云組態(tài)。系統(tǒng)還開發(fā)了工業(yè)APP和基于WebSocket的網(wǎng)頁人機界面,方便高層管理人員和現(xiàn)場操作人員使用。為了應對日益凸顯的工業(yè)信息安全問題,系統(tǒng)在設備入網(wǎng)、數(shù)據(jù)傳輸?shù)确矫孢M行了安全設計,通過使用白名單鑒權(quán)和數(shù)據(jù)AES加密校驗等方式確保工業(yè)物聯(lián)網(wǎng)系統(tǒng)的安全。
關(guān)鍵詞:工業(yè)物聯(lián)網(wǎng);MQTT;供水監(jiān)控;協(xié)議網(wǎng)關(guān);B/S架構(gòu);WebSocket
中圖分類號:TP39 文獻標識碼:A 文章編號:2095-1302(2019)06-00-03
0 引 言
“中國制造2025”計劃對新時期我國工業(yè)發(fā)展的方向提出了明確規(guī)劃,工業(yè)物聯(lián)網(wǎng)系統(tǒng)、工業(yè)大數(shù)據(jù)平臺等高端工業(yè)軟件核心技術(shù)成為今后研發(fā)和投資的重點[1]。經(jīng)過多年的快速發(fā)展,城市自來水設施有了長足進步,水務部門的供水監(jiān)控系統(tǒng)基本實現(xiàn)了自動化。但是這些監(jiān)控系統(tǒng)信息化程度不高,水務部門與下級水廠之間的數(shù)據(jù)集成度不夠,各下級水廠和水站遠程監(jiān)控點大多以信息孤島的形式存在,難于實現(xiàn)水資源的有效調(diào)度,導致人口密集的城區(qū)間斷性停水的情況時有發(fā)生。供水工程是社會民生保障的重要一環(huán),使用先進的工業(yè)物聯(lián)網(wǎng)和工業(yè)云平臺技術(shù)對水務部門的供水監(jiān)控系統(tǒng)進行升級改造,對水資源高效利用和居民用水安全保障而言有著迫切的現(xiàn)實意義[2]。
工業(yè)物聯(lián)網(wǎng)可以認為是企業(yè)中與生產(chǎn)相關(guān)的傳感器、設備與互聯(lián)網(wǎng)的連接,它實現(xiàn)了物與物、物與人的相連,達到企業(yè)信息和資源的高效利用,最終實現(xiàn)智能制造[3]。當前供水監(jiān)控系統(tǒng)中應用最廣泛的當屬SCADA(數(shù)據(jù)采集與監(jiān)控)系統(tǒng),這是以計算機為核心的過程控制和遠程監(jiān)控系統(tǒng)。在SCADA系統(tǒng)中也有與物聯(lián)網(wǎng)類似的“感知”概念,但由于其內(nèi)部大多采用封閉的工業(yè)協(xié)議,造成這種“感知”僅限于控制系統(tǒng)內(nèi)部,導致企業(yè)內(nèi)部信息孤島的形成。SCADA系統(tǒng)最初以主機控制系統(tǒng)的形式誕生,經(jīng)過了基于現(xiàn)場總線和基于TCP/IP以太網(wǎng)的發(fā)展歷程,業(yè)界公認SCADA系統(tǒng)今后的發(fā)展方向是工業(yè)物聯(lián)網(wǎng)[4],其網(wǎng)絡結(jié)構(gòu)、數(shù)據(jù)傳遞方式和系統(tǒng)軟硬件組成將發(fā)生巨大變化。為了解決水務部門面臨的信息難于融合、水資源調(diào)度低效的問題,本文基于工業(yè)物聯(lián)網(wǎng)技術(shù)設計、建設了一套面向水務監(jiān)管的供水監(jiān)控系統(tǒng),通過應用物聯(lián)網(wǎng)協(xié)議使得原先自成一體的封閉的工業(yè)控制系統(tǒng)在確??刂坪蛿?shù)據(jù)安全的前提下具備了開放性。同時,針對水務部門資金有限的實際情況,依靠物聯(lián)網(wǎng)協(xié)議的優(yōu)勢,把上層系統(tǒng)建立在工業(yè)云平臺上,將SCADA系統(tǒng)中采用的基于桌面的組態(tài)變?yōu)榱嘶谠朴嬎愕腂/S云組態(tài),實現(xiàn)了上層系統(tǒng)的公有云托管,避免了自行建設和運維數(shù)據(jù)中心的高額投入。憑借上述技術(shù)的應用,最終實現(xiàn)了水務部門不同層級之間的信息融合和供水資源的高效調(diào)度。
1 MQTT簡介
MQTT協(xié)議的全稱為消息隊列遙測協(xié)議,由IBM公司于1999年提出,它是工作在TCP協(xié)議之上的基于發(fā)布/訂閱模式的輕量型協(xié)議,它在設計之初就充分考慮了控制器內(nèi)存有限、網(wǎng)絡帶寬低以及網(wǎng)絡不可靠情況下的數(shù)據(jù)傳輸問題,是實現(xiàn)物聯(lián)網(wǎng)M2M(Machine to Machine)架構(gòu)的理想選擇[5]。
由于采用發(fā)布/訂閱模式,MQTT協(xié)議解除了通信雙方應用程序間的耦合,規(guī)定了三種發(fā)布QoS(服務質(zhì)量等級):“最多一次”“至少一次”“只有一次”[6],發(fā)布方可以根據(jù)發(fā)布消息的重要程度進行合理選擇,以達到滿足數(shù)據(jù)傳輸可靠性要求下的協(xié)議交換最小化,從而降低網(wǎng)絡流量。
在MQTT協(xié)議中一次采集或控制數(shù)據(jù)的傳遞過程通常涉及三個對象,分別是發(fā)布者、訂閱者和代理。圖1所示為MQTT協(xié)議的工作原理圖[7],圖中客戶端A作為訂閱者,客戶端B作為發(fā)布者??蛻舳薃和B都需憑授權(quán)的登錄信息與代理取得連接??蛻舳薃首先向代理提出訂閱特定主題的請求,在接收到代理的請求確認回復后進入訂閱狀態(tài)??蛻舳薆一旦發(fā)送客戶端A所請求的主題給代理后,代理會把包含這條主題的數(shù)據(jù)轉(zhuǎn)發(fā)給客戶端A,完成一次消息傳遞??蛻舳薃和B可同時作為某個特定主題的發(fā)布者或訂閱者。
2 系統(tǒng)設計綜述
2.1 架構(gòu)設計
圖2為面向全流程監(jiān)管的城市水務物聯(lián)網(wǎng)監(jiān)控系統(tǒng)架構(gòu)。系統(tǒng)基于工業(yè)物聯(lián)網(wǎng)形式引入了MQTT云代理、B/S云組態(tài)軟件和視頻云等新技術(shù)。水務集團不再建立傳統(tǒng)意義上的監(jiān)控中心,也不再作為唯一的服務端維護方和數(shù)據(jù)匯總方向用戶提供數(shù)據(jù)。水務集團信息中心、企業(yè)用戶群、水廠和無人值守監(jiān)控點作為MQTT Client端與工業(yè)云平臺上的應用軟件通信,構(gòu)造物與物、端與端相連的網(wǎng)絡。在該網(wǎng)絡中任何一方都可作為發(fā)布者向特定對象發(fā)布采集到的實時數(shù)據(jù)或命令消息,也可作為接收者接收特定對象發(fā)來的控制指令或狀態(tài)數(shù)據(jù)。水廠建有獨立的SCADA系統(tǒng)以監(jiān)控廠區(qū)內(nèi)抽水、加壓泵站、電力系統(tǒng)等的工作。水廠SCADA系統(tǒng)的核心是部署于工控機上的SCADA軟件及其數(shù)據(jù)庫,通過現(xiàn)場的工業(yè)以太網(wǎng)或工業(yè)現(xiàn)場總線獲取子站的狀態(tài)數(shù)據(jù)。為實現(xiàn)水廠的物聯(lián)網(wǎng)升級改造,在不改變現(xiàn)有控制系統(tǒng)結(jié)構(gòu)的情況下,在水廠部署OPC/MQTT協(xié)議網(wǎng)關(guān),實現(xiàn)工業(yè)協(xié)議與MQTT協(xié)議的雙向互轉(zhuǎn),將水廠SCADA軟件變?yōu)镸QTT客戶端與MQTT物聯(lián)網(wǎng)云代理連接。協(xié)議網(wǎng)關(guān)以軟件形式存在,可獨立部署在硬件服務器上,也可與原SCADA軟件一同安裝在水廠工控機上。
對于通過控制柜控制的無人值守監(jiān)控點,如水源井或二次加壓泵站,由于現(xiàn)場沒有部署工控機和SCADA軟件,因此可選擇在現(xiàn)場的控制柜內(nèi)加裝物聯(lián)網(wǎng)網(wǎng)關(guān),網(wǎng)關(guān)通過串行接口或以太網(wǎng)與控制柜內(nèi)的控制器通信,把控制柜變?yōu)镸QTT客戶端與MQTT物聯(lián)網(wǎng)云代理進行有線或包括4G/3G/GPRS在內(nèi)的無線連接。當水務部門管轄的全部水廠和無人值守監(jiān)控點都以MQTT客戶端的形式登錄工業(yè)物聯(lián)網(wǎng)時,現(xiàn)場的全部控制器、設備和儀表都被加入到一個設備池,池中每一個對象的DI(開關(guān)量輸入)量、DO(開關(guān)量輸出)量、AI(模擬量輸入)量、AO(模擬量輸出)量都被虛擬為一條數(shù)據(jù)標簽。在此基礎上可以在工業(yè)云平臺上構(gòu)建基于B/S架構(gòu)的數(shù)據(jù)采集與監(jiān)控軟件,實現(xiàn)云組態(tài)。云組態(tài)軟件作為中間件實現(xiàn)數(shù)據(jù)分析、設備管理、報表管理、報警管理、歷史數(shù)據(jù)存儲與查詢等SCADA軟件應有的全部功能,并以SOA(面向服務)的形式向需求方提供。通過改造現(xiàn)場的攝像頭為網(wǎng)絡攝像頭或改造視頻服務器將視頻監(jiān)控系統(tǒng)升級為云視頻系統(tǒng),就可集成現(xiàn)場視頻與云組態(tài)軟件,用戶將在同一個頁面上集中顯示,實現(xiàn)遠程控制和調(diào)度,提高決策的現(xiàn)場感知效果。
企業(yè)用戶群包含水務集團調(diào)度部門、水廠管理部門、現(xiàn)場操作員等不同層級的系統(tǒng)使用者,將Web網(wǎng)頁和APP作為使用者的操作界面。對于Web網(wǎng)頁而言,使用WebSocket技術(shù)便可實現(xiàn)MQTT客戶端,而工業(yè)APP集成MQTT客戶端則實現(xiàn)了用戶對設備池中現(xiàn)場設備的直接訪問,有助于實現(xiàn)業(yè)務管理扁平化,體現(xiàn)出工業(yè)物聯(lián)網(wǎng)系統(tǒng)架構(gòu)的優(yōu)勢。
2.2 身份標識與安全機制設計
一旦將包括工控機和控制器在內(nèi)的現(xiàn)場設備接入互聯(lián)網(wǎng),設備就面臨被網(wǎng)絡攻擊的危險[8]。為了避免上述情況的發(fā)生,系統(tǒng)在通信過程中對用戶和設備的身份標識、權(quán)限管理和數(shù)據(jù)傳輸安全進行了設計。系統(tǒng)采用分級的方式對網(wǎng)絡中每一個通信對象進行身份標識,例如:“部門/區(qū)域/設備編號”或“部門/類別/人員編號”,每個對象都擁有唯一的編號。MQTT消息負載的部分交由開發(fā)人員設計,本文使用JSON文本格式的形式設計了消息負載中的通信協(xié)議,規(guī)定消息發(fā)送方需要將自己的身份標識寫在JSON文本中,以供接收方識別。在安全機制方面,系統(tǒng)設計了如下功能:
(1)OPC/MQTT協(xié)議網(wǎng)關(guān)和物聯(lián)網(wǎng)網(wǎng)關(guān)都有鑒權(quán)功能,使用白名單機制對消息發(fā)送方的身份進行識別。接收方判斷對方的身份是否在自己的白名單中,是否有足夠的權(quán)限操作設備,如果消息中不包含身份信息則消息將被丟棄。
(2)消息文本不采用明文形式傳遞,消息文本均通過AES方式加密后發(fā)送[9-10]。接收方會對消息進行解密和校驗,確保消息來源可靠,如果發(fā)現(xiàn)有偽造的數(shù)據(jù),則會生成日志記錄,同時把該記錄發(fā)送給云組態(tài)軟件,組態(tài)軟件將其記錄到日志數(shù)據(jù)庫中,并通知相關(guān)人員處理。
3 OPC/MQTT協(xié)議網(wǎng)關(guān)設計
OPC(OLE for Process Control)為基于Windows的應用程序和現(xiàn)場過程控制應用建立了連接,其是基于桌面的組態(tài)軟件的核心技術(shù)。組態(tài)軟件廠商通常在組態(tài)軟件中集成OPC服務器,方便其他軟件獲取組態(tài)軟件中包含的現(xiàn)場過程控制中的數(shù)據(jù)。由于OPC接口的存在,就可在不改變現(xiàn)場控制結(jié)構(gòu)的情況下通過協(xié)議翻譯的方式將現(xiàn)場設備接入物聯(lián)網(wǎng)系統(tǒng)中,為此本文以軟件的形式開發(fā)了OPC/MQTT協(xié)議網(wǎng)關(guān)。
協(xié)議網(wǎng)關(guān)軟件實現(xiàn)了OPC協(xié)議和MQTT協(xié)議的相互轉(zhuǎn)化,集成了OPC客戶端和MQTT客戶端。采用OPC DA規(guī)范進行實時數(shù)據(jù)的讀寫操作。OPC DA規(guī)范中定義了三種對象,分別為OpcServer,OpcGroup,OpcItem,即一個OpcServer可以包含多個OpcGroup,一個OpcGroup可以包含多個OpcItem。通常以OpcGroup為單位進行數(shù)據(jù)讀寫操作。在過程控制的實際應用中,一個OpcGroup通常為一個設備的控制器,其中OpcItem為設備的某一個特定寄存器的值。協(xié)議網(wǎng)關(guān)軟件采用面向?qū)ο缶幊痰姆绞?,將OPC中的三類對象轉(zhuǎn)化為虛擬設備的屬性,如圖3所示,根據(jù)OpcItem所代表的物理量的不同轉(zhuǎn)化為DI量、DO量、AI量、AO量,并且使用JSON格式文本對現(xiàn)場設備的數(shù)據(jù)和屬性進行描述。對設備OPC Server實時數(shù)據(jù)的每一次讀寫和重新使用JSON描述便實現(xiàn)了MQTT協(xié)議中消息負載的內(nèi)容。
由圖4可知,將OPC/MQTT協(xié)議網(wǎng)關(guān)作為MQTT Client與工業(yè)云平臺上的MQTT代理連接,發(fā)布和訂閱相關(guān)主題數(shù)據(jù)。用戶方的瀏覽器和工業(yè)APP可通過WebSocket方式作為MQTT Client與MQTT的代理連接。系統(tǒng)通過MQTT代理的消息轉(zhuǎn)發(fā)和協(xié)議網(wǎng)關(guān)的協(xié)議轉(zhuǎn)換實現(xiàn)了用戶對設備的監(jiān)控,同時實現(xiàn)了對現(xiàn)場設備的云上虛擬,為B/S云組態(tài)軟件的實現(xiàn)夯實了基礎。
4 物聯(lián)網(wǎng)網(wǎng)關(guān)設計
對于除水廠以外的遠程監(jiān)控站點,例如水源井監(jiān)控點和二次泵站監(jiān)控點等現(xiàn)場沒有工控機和SCADA軟件的監(jiān)控點可以使用物聯(lián)網(wǎng)網(wǎng)關(guān)進行協(xié)議轉(zhuǎn)換。傳統(tǒng)的遠程監(jiān)控點通常使用DTU、串口服務器、3G/4G路由器將PLC或數(shù)字儀表接入互聯(lián)網(wǎng)。本文使用物聯(lián)網(wǎng)網(wǎng)關(guān)將現(xiàn)場控制器接入物聯(lián)網(wǎng)中,實現(xiàn)控制協(xié)議的轉(zhuǎn)換,將PLC和傳感器數(shù)據(jù)采用MQTT協(xié)議形式上發(fā)給工業(yè)云平臺。物聯(lián)網(wǎng)網(wǎng)關(guān)在現(xiàn)場的連接方式如圖5所示,通過串口或網(wǎng)絡、電控柜中的控制器連接。與DTU、串口服務器只透傳數(shù)據(jù)的不同之處在于物聯(lián)網(wǎng)網(wǎng)關(guān)采用邊緣計算的概念進行設計,分擔部分組態(tài)軟件的功能,從而減輕云上的計算量。物聯(lián)網(wǎng)網(wǎng)關(guān)功能:MQTT協(xié)議與工控協(xié)議的轉(zhuǎn)換實現(xiàn)了Modbus RTU/TCP協(xié)議與MQTT協(xié)議的轉(zhuǎn)換,同時還將作為現(xiàn)場總線上的一個站點和物聯(lián)網(wǎng)中的一個節(jié)點;在物聯(lián)網(wǎng)網(wǎng)關(guān)上配置監(jiān)測值的上下限,發(fā)生超限時將生成的MQTT協(xié)議格式報警消息推送給相關(guān)人員;采用白名單機制對訪問設備的用戶進行鑒權(quán),遇到網(wǎng)絡攻擊時生成日志并上報;使用AES加密算法對消息進行加解密和校驗,確保消息真實可信。
本文開發(fā)的物聯(lián)網(wǎng)網(wǎng)關(guān)處理器選用TI出品的AM3352芯片,主頻為1 GHz,集成兩個網(wǎng)絡控制器。物聯(lián)網(wǎng)網(wǎng)關(guān)選用Linux作為操作系統(tǒng),合理對操作系統(tǒng)進行裁剪,以確保運算的高效性。
5 工業(yè)APP設計
工業(yè)控制系統(tǒng)通常選用觸摸屏、工程師站作為系統(tǒng)的人機界面,信息局限在部分操作員手中,因此難以滿足用戶移動辦公的需求。物聯(lián)網(wǎng)系統(tǒng)具備良好的開放性,能夠很好地支持遠程訪問。本文面向水務部門定制了工業(yè)APP,供管理人員和操作人員使用,通過MQTT協(xié)議使企業(yè)內(nèi)的不同人員以各取所需的方式獲取現(xiàn)場信息,并憑借自身權(quán)限操作現(xiàn)場設備。工業(yè)APP可面向管理人員提供數(shù)據(jù)匯總、分析及報表顯示功能。工業(yè)APP具有人機交互界面,對于操作者而言,現(xiàn)場設備被組態(tài)到手機界面上,同時工業(yè)APP上集成有視頻云的客戶端,可將數(shù)據(jù)和圖像同時顯示,方便操作員了解自己所管理的設備的實際工作情況。
6 結(jié) 語
工業(yè)物聯(lián)網(wǎng)是SCADA系統(tǒng)未來的發(fā)展方向,工業(yè)物聯(lián)網(wǎng)的應用會提升工控系統(tǒng)的效能。本文使用MQTT協(xié)議設計開發(fā)了一套面向水務部門全流程監(jiān)管的工業(yè)物聯(lián)網(wǎng)系統(tǒng),給出了在不改變原有控制系統(tǒng)結(jié)構(gòu)的情況下實現(xiàn)供水監(jiān)控系統(tǒng)的物聯(lián)網(wǎng)化技術(shù)路徑和設計方案。系統(tǒng)充分發(fā)揮了工業(yè)物聯(lián)網(wǎng)的優(yōu)勢,做到水務部門內(nèi)物與物、人與物、人與人的互聯(lián)。同時依靠工業(yè)云平臺降低了水務部門在建設過程中的投資。
參 考 文 獻
[1]尹子航,唐磊,沈緒榜.中國工業(yè)物聯(lián)網(wǎng)的發(fā)展研究與對策[J].機械工程與自動化,2018,8(4):217-219.
[2]孫國慶.智慧水務關(guān)鍵技術(shù)研究及應用[J].水利信息化,2018,2(1):46-49.
[3]王飛躍,張軍,張俊,等.工業(yè)智聯(lián)網(wǎng):基本概念、關(guān)鍵技術(shù)與核心應用[J].自動化學報,2018,44(9):1606-1617.
[4]宗子軒,諶海云,吉寧,等.物聯(lián)網(wǎng)和SCADA系統(tǒng)的發(fā)展、現(xiàn)狀與展望[J].物聯(lián)網(wǎng)技術(shù),2014,4(12):61-64.
[5]任亨,馬躍,楊海波,等.基于MQTT協(xié)議的消息推送服務器[J].計算機系統(tǒng)應用,2014,23(3):77-82.
[6] IBM.MQTT Protocol V3.1.1.http://mqtt.org/[Z].2018-12-16.
[7]姜妮,張宇,趙志軍.基于消息隊列遙測傳輸?shù)耐扑拖到y(tǒng)[J].計算機工程,2015,41(9):1-6.
[8]武傳坤.物聯(lián)網(wǎng)安全關(guān)鍵技術(shù)與挑戰(zhàn)[J].密碼學報,2015,2(1):40-53.
[9]程志強,連鴻鵬.物聯(lián)網(wǎng)通信特征數(shù)據(jù)信息加密仿真研究[J].計算機仿真,2016,33(11):324-327.
[10]仇國慶,包俊杰,曹冬梅,等.基于AES算法的ZigBee網(wǎng)絡加密方法研究[J].電子技術(shù)應用,2014(4):56-58.