崔遠(yuǎn)
(蘭州職業(yè)技術(shù)學(xué)院 電子信息工程系,甘肅蘭州,730070)
隨著“智慧生活”觀念的深入人心以及“中國(guó)制造2025”[1]的持續(xù)推進(jìn),監(jiān)控系統(tǒng)以及工業(yè)互聯(lián)網(wǎng)廣泛的應(yīng)用在日常生活和工業(yè)領(lǐng)域中。2010年國(guó)務(wù)院發(fā)布的文件,將物聯(lián)網(wǎng)提升為國(guó)家發(fā)展戰(zhàn)略的重要組成部分[2]。2016年國(guó)家在“十三五”規(guī)劃中提出“發(fā)展物聯(lián)網(wǎng)開(kāi)環(huán)應(yīng)用”,加強(qiáng)物聯(lián)網(wǎng)實(shí)現(xiàn)互聯(lián)互通,數(shù)據(jù)共享和協(xié)同化引用[3]。同年NB-IoT(Narrow Band Internet of Things,窄帶物聯(lián)網(wǎng))標(biāo)準(zhǔn)[4]的確立,為物聯(lián)網(wǎng)的廣泛推廣鋪平了道路。2018年,國(guó)家印發(fā)了《工業(yè)互聯(lián)網(wǎng)發(fā)展行動(dòng)計(jì)劃(2018-2020年)》,強(qiáng)調(diào)了物聯(lián)網(wǎng)在工業(yè)應(yīng)用中的重要性[5]?,F(xiàn)階段,物聯(lián)網(wǎng)活躍設(shè)備已達(dá)到100億臺(tái)以上,預(yù)估2025年該數(shù)量會(huì)增加到1000億臺(tái)。
監(jiān)控系統(tǒng)廣泛的應(yīng)用于人們的日常生活中,傳統(tǒng)監(jiān)控系統(tǒng)大部分本地采集,本地存儲(chǔ),然而隨著監(jiān)控設(shè)備數(shù)量的增加以及數(shù)據(jù)采集類型的擴(kuò)充,本地存儲(chǔ)既無(wú)法實(shí)現(xiàn)長(zhǎng)期存儲(chǔ),也不利于后續(xù)數(shù)據(jù)的分析。云平臺(tái)經(jīng)過(guò)多年的發(fā)展,無(wú)論在數(shù)據(jù)存儲(chǔ)還是數(shù)據(jù)處理方面都展現(xiàn)出強(qiáng)大的優(yōu)勢(shì),將云平臺(tái)引入監(jiān)控系統(tǒng)已經(jīng)成為一種可能。提出的基于云平臺(tái)的物聯(lián)網(wǎng)監(jiān)控系統(tǒng)通過(guò)物聯(lián)網(wǎng)實(shí)現(xiàn)監(jiān)控系統(tǒng)的低功耗運(yùn)行,并使用云端實(shí)現(xiàn)數(shù)據(jù)的高性能存儲(chǔ),以及監(jiān)控?cái)?shù)據(jù)的統(tǒng)一處理和分析,可有效提高系統(tǒng)的安全和拓展性能,便于實(shí)現(xiàn)物聯(lián)網(wǎng)監(jiān)控系統(tǒng)的穩(wěn)定運(yùn)行。
物聯(lián)網(wǎng)云平臺(tái)是物聯(lián)網(wǎng)與云平臺(tái)結(jié)合的產(chǎn)物,其中物聯(lián)網(wǎng)負(fù)責(zé)數(shù)據(jù)的采集和傳輸,而云平臺(tái)負(fù)責(zé)數(shù)據(jù)的存儲(chǔ)和分析處理等。云平臺(tái)有效降低了應(yīng)用的搭建和應(yīng)用的后續(xù)開(kāi)發(fā)升級(jí)的成本?;谠破脚_(tái)的物聯(lián)網(wǎng)監(jiān)控系統(tǒng)的架構(gòu)如圖1所示。
圖1 基于云平臺(tái)的物聯(lián)網(wǎng)監(jiān)控系統(tǒng)架構(gòu)
為了簡(jiǎn)化設(shè)計(jì),系統(tǒng)采用分層結(jié)構(gòu),主要包括:感知控制層,網(wǎng)絡(luò)傳輸層,平臺(tái)服務(wù)層以及應(yīng)用服務(wù)層。
(1)感知控制層:主要包括主控單元,數(shù)據(jù)采集單元和動(dòng)作執(zhí)行單元。其中主控單元負(fù)責(zé)數(shù)據(jù)采集頻率,采集類型,采集時(shí)間等的控制,以及執(zhí)行單元控制命令的轉(zhuǎn)發(fā)。主控單元以主控芯片為控制核心,實(shí)現(xiàn)設(shè)備和環(huán)境信息的采集,同時(shí)根據(jù)預(yù)先設(shè)定的程序應(yīng)對(duì)環(huán)境參數(shù)的變化,如溫度上升到一定的數(shù)值,開(kāi)啟降溫設(shè)備,發(fā)現(xiàn)明火時(shí)自動(dòng)開(kāi)啟消防設(shè)備等。
(2)網(wǎng)絡(luò)傳輸層:負(fù)責(zé)物聯(lián)網(wǎng)數(shù)據(jù)的傳輸,該層包括多種網(wǎng)絡(luò)協(xié)議的實(shí)現(xiàn)。以低能耗為基本要求,以數(shù)據(jù)傳輸可靠性為底線,以保證系統(tǒng)穩(wěn)定性為目標(biāo),選用合適的網(wǎng)絡(luò)數(shù)據(jù)傳輸方式實(shí)現(xiàn)數(shù)據(jù)的傳輸。針對(duì)不同環(huán)境不同類型的數(shù)據(jù)采集設(shè)備,選用不同的網(wǎng)絡(luò)傳輸協(xié)議實(shí)現(xiàn)數(shù)據(jù)穩(wěn)定可靠的傳輸。
(3)平臺(tái)服務(wù)層:負(fù)責(zé)物聯(lián)網(wǎng)設(shè)備的接入,網(wǎng)絡(luò)身份認(rèn)證以及數(shù)據(jù)解析,安全管理,數(shù)據(jù)模型和數(shù)據(jù)的分析規(guī)則,同時(shí)向上層提供API接口實(shí)現(xiàn)物聯(lián)網(wǎng)數(shù)據(jù)的讀寫。平臺(tái)服務(wù)層以物聯(lián)網(wǎng)云平臺(tái)為核心,以消息訂閱的模式實(shí)現(xiàn)數(shù)據(jù)向不同的應(yīng)用系統(tǒng)分發(fā),從而保證數(shù)據(jù)可以及時(shí)有效的傳輸?shù)綉?yīng)用系統(tǒng),在緊急情況出現(xiàn)時(shí),可以有效的實(shí)現(xiàn)精準(zhǔn)調(diào)控。
(4)應(yīng)用服務(wù)層:負(fù)責(zé)數(shù)據(jù)的分析處理以及數(shù)據(jù)的展示,以及用戶規(guī)則的制定,緊急預(yù)案的生成。通過(guò)web應(yīng)用的方式實(shí)現(xiàn)前后端分離,以滿足應(yīng)用層的可靠穩(wěn)定和高并發(fā),后端負(fù)責(zé)從平臺(tái)服務(wù)層獲取數(shù)據(jù)并進(jìn)行相應(yīng)的處理,通過(guò)與前端建立通信接口,將感知控制層的狀態(tài)信息展現(xiàn)給用戶,同時(shí)提供接口給用戶,以便用戶實(shí)現(xiàn)對(duì)感知控制層執(zhí)行單元的控制。
數(shù)據(jù)傳輸主要是網(wǎng)絡(luò)傳輸層將采集單元獲取的數(shù)據(jù)上傳到平臺(tái)服務(wù)層,同時(shí)將應(yīng)用服務(wù)層的命令下發(fā)給執(zhí)行單元,也可以將預(yù)定義的處理方案下發(fā)給控制單元。感知控制層內(nèi)采集單元和控制單元的數(shù)量較多,不同設(shè)備由于類型和作用不同,因此使用的通信協(xié)議也各不相同,為了實(shí)現(xiàn)數(shù)據(jù)的統(tǒng)一管理和存儲(chǔ),在網(wǎng)絡(luò)傳輸層實(shí)現(xiàn)協(xié)議設(shè)配模塊,并采用統(tǒng)一的數(shù)據(jù)傳輸格式向平臺(tái)服務(wù)層發(fā)送數(shù)據(jù)。
為了屏蔽各數(shù)據(jù)之間的差異,降低數(shù)據(jù)解析和處理的難度,制定統(tǒng)一的消息上報(bào)格式,以JSON數(shù)據(jù)格式為標(biāo)準(zhǔn),如表1所示,將每個(gè)上報(bào)數(shù)據(jù)類型定義為一個(gè)主題,由“l(fā)ocation:type”構(gòu)成。
表1 數(shù)據(jù)參數(shù)
為了解決物聯(lián)網(wǎng)監(jiān)控系統(tǒng)中大量并發(fā)消息請(qǐng)求而導(dǎo)致數(shù)據(jù)丟失和服務(wù)延遲的問(wèn)題,系統(tǒng)采用了基于消息中間件kafka[6]以及消息處理工具storm[7]的數(shù)據(jù)接入方案,以采集單元生產(chǎn)數(shù)據(jù),使用kafka實(shí)現(xiàn)消息緩存,同時(shí)在平臺(tái)服務(wù)層設(shè)計(jì)storm集群服務(wù)器作為消息的消費(fèi)者,應(yīng)用服務(wù)層的各個(gè)訂閱者從storm集群服務(wù)器獲取實(shí)時(shí)數(shù)據(jù),經(jīng)過(guò)過(guò)濾后將數(shù)據(jù)存儲(chǔ)在平臺(tái)服務(wù)層中,實(shí)現(xiàn)數(shù)據(jù)的持久化存儲(chǔ)。基于云平臺(tái)的物聯(lián)網(wǎng)數(shù)據(jù)接入模型如圖2所示。
圖2 數(shù)據(jù)接入模型
物聯(lián)網(wǎng)監(jiān)控系統(tǒng)中存在大量的各式數(shù)據(jù),且會(huì)隨著時(shí)間的推移,會(huì)有更多的設(shè)備更多的數(shù)據(jù)類型接入系統(tǒng)。本系統(tǒng)中的數(shù)據(jù)主要來(lái)自兩個(gè)方向三種類型的數(shù)據(jù):設(shè)備產(chǎn)生的由下至上的數(shù)據(jù)和用戶產(chǎn)生的由上至下的數(shù)據(jù)。感知控制層生產(chǎn)的傳感器數(shù)據(jù),應(yīng)用服務(wù)層用戶生產(chǎn)的業(yè)務(wù)數(shù)據(jù)以及用戶制定并下發(fā)的應(yīng)急規(guī)則等。為了實(shí)現(xiàn)數(shù)據(jù)的合理快速持久化存儲(chǔ),需要針對(duì)三類數(shù)據(jù)采用不同的存儲(chǔ)方案。
感知控制層的設(shè)備數(shù)據(jù)由傳感器采集,數(shù)據(jù)量隨著時(shí)間呈線性增長(zhǎng),且由于監(jiān)控系統(tǒng)的特點(diǎn),傳感器數(shù)據(jù)都是寫多讀少,為了應(yīng)對(duì)這種使用環(huán)境,采用非關(guān)系型數(shù)據(jù)庫(kù)MongoDB集群[8]部署方案,物聯(lián)網(wǎng)數(shù)據(jù)由配置節(jié)點(diǎn),路由節(jié)點(diǎn)和存儲(chǔ)節(jié)點(diǎn)組成,客戶端負(fù)責(zé)連接路由節(jié)點(diǎn),將數(shù)據(jù)分散均勻的保存在各存儲(chǔ)節(jié)點(diǎn)上。數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)如圖3所示。
圖3 分片式數(shù)據(jù)存儲(chǔ)
使用MongoDB存儲(chǔ)物聯(lián)網(wǎng)監(jiān)控?cái)?shù)據(jù),適用于保存結(jié)構(gòu)松散的物聯(lián)網(wǎng)設(shè)備數(shù)據(jù),當(dāng)新的設(shè)備加入或者舊的設(shè)備淘汰,都不會(huì)因?yàn)閿?shù)據(jù)類型的增加或者減少導(dǎo)致數(shù)據(jù)庫(kù)結(jié)構(gòu)出現(xiàn)問(wèn)題。采用集群化部署方式,降低數(shù)據(jù)庫(kù)的讀寫壓力,采用分布式存儲(chǔ)的方案,并使用分片存儲(chǔ),提高系統(tǒng)的吞吐率。對(duì)于用戶產(chǎn)生的數(shù)據(jù),采用mysql存儲(chǔ)。
基于云平臺(tái)的物聯(lián)網(wǎng)監(jiān)控系統(tǒng)的硬件設(shè)計(jì)如圖4所示,主要有控制模塊,通信模塊,傳感器以及執(zhí)行模塊組成,為了提高系統(tǒng)的擴(kuò)展性,各模塊之間通過(guò)Arduino接口[9]進(jìn)行連接。
圖4 系統(tǒng)硬件設(shè)計(jì)
系統(tǒng)各模塊功能如下:
(1)電源模塊:主要負(fù)責(zé)向不同模塊提供不同的直流電壓,如向控制模塊提供12V電源,向傳感器和執(zhí)行模塊提供5V和3.3V電壓等。其電路原理如圖5所示。
圖5 電源模塊原理
電源模塊以220V交流電作為輸入,由變壓器將220V電壓直接轉(zhuǎn)換為12V直流電,通過(guò)開(kāi)關(guān)電源這季節(jié)連接12V驅(qū)動(dòng)板,然后有驅(qū)動(dòng)板實(shí)現(xiàn)動(dòng)作單元模塊的供電開(kāi)關(guān)。與此同時(shí),12V電壓還作為MP1584EN模組的輸入電壓,輸出5V電壓供傳感器單元使用,5V電壓也作為模組LM1117K3.3的輸入,轉(zhuǎn)化為3.3V電壓作為輸出。
(2)控制模塊:負(fù)責(zé)環(huán)境調(diào)節(jié)器的本地業(yè)務(wù)邏輯以及與云平臺(tái)的通信建立和消息傳輸。本系統(tǒng)使用STM32L4作為主控芯片,實(shí)現(xiàn)環(huán)境傳感器獲取環(huán)境參數(shù)信息,通過(guò)控制執(zhí)行模塊的控制模塊和環(huán)境調(diào)節(jié)器進(jìn)行工作。在本系統(tǒng)中,使用NB-IoT實(shí)現(xiàn)相互連接,進(jìn)行本地業(yè)務(wù)邏輯進(jìn)行控制,同時(shí)設(shè)定內(nèi)置的應(yīng)急處理程序,實(shí)現(xiàn)對(duì)系統(tǒng)的自動(dòng)化處理。
為了實(shí)現(xiàn)能耗和性能的平衡,本系統(tǒng)選擇STM32L4 R5ZIT6單片機(jī)作為主控系統(tǒng),L4系列主打低功耗特征,特別適用于在大規(guī)模云監(jiān)控平臺(tái)中,該單片機(jī)使用了ARM Contex-M4內(nèi)核,配備2M的Flash和640K的SRAM空間,基本滿足系統(tǒng)的自主控制程序所需空間。在接口方面,配備了SPI,GPIO,UART等外設(shè),可有效實(shí)現(xiàn)與大部分傳感器的通信需求。由于STM32L4系列的高效能耗管理程序,該單片機(jī)提供了低功耗的睡眠模式和運(yùn)行模式,在保證最低功耗的同時(shí)基本功能的運(yùn)行,并且可實(shí)現(xiàn)從睡眠模式快速切換為完整功能模式。
(3)通信模塊:使用BC28模塊實(shí)現(xiàn)該功能,支持B1/B3/B20/B28等頻段,是一款低功耗的NB-IoT無(wú)線通信模塊,可以實(shí)現(xiàn)系統(tǒng)與運(yùn)營(yíng)商網(wǎng)絡(luò)進(jìn)行無(wú)線通信。BC28通信模塊的功能如圖6所示。
圖6 BC28模塊功能圖
通信模塊通過(guò)接收控制模塊發(fā)送過(guò)來(lái)的AT指令,在運(yùn)算和處理后,返回響應(yīng)信息到控制模塊,常用的AT指令如表2所示。
表2 NB-IoT模塊常用AT指令
?
(4)執(zhí)行模塊:包括MCU控制的MOS作為控制單元,實(shí)現(xiàn)控制模塊的IO輸出等。
對(duì)于嵌入式終端來(lái)說(shuō),所有的控制程序都集中于主控系統(tǒng)中,系統(tǒng)通過(guò)NB-IoT模塊進(jìn)行通信管理,同時(shí)使用hash加密的方式建立設(shè)備與云平臺(tái)之間的MQTT聯(lián)系,并制定相應(yīng)的Topic,并制定Topic的訂閱消息。
平臺(tái)服務(wù)層主要實(shí)現(xiàn)設(shè)備接入和數(shù)據(jù)處理相關(guān)工作,主要包括:
(1)設(shè)備接入:在設(shè)備接入之前,需要通過(guò)三元組對(duì)設(shè)備進(jìn)行綁定,從而獲取系統(tǒng)認(rèn)可的設(shè)備證書(shū),設(shè)備的三元組用于與云平臺(tái)建立MQTT連接的憑據(jù),其中參數(shù)如表3所示。
表3 MQTT參數(shù)
(2)自定義topic:根據(jù)業(yè)務(wù)內(nèi)容自定義的MQTT通信topic,將各項(xiàng)環(huán)境參數(shù)閾值進(jìn)行設(shè)定的topic,如報(bào)警條件,消除報(bào)警條件,啟動(dòng)環(huán)境調(diào)節(jié)條件,以及其他基礎(chǔ)topic等。
將云平臺(tái)引入監(jiān)控系統(tǒng),可有效的解決本地存儲(chǔ)無(wú)法實(shí)現(xiàn)長(zhǎng)期存儲(chǔ),也不利于后續(xù)分析的問(wèn)題,提出的基于云平臺(tái)的物聯(lián)網(wǎng)監(jiān)控系統(tǒng)通過(guò)物聯(lián)網(wǎng)實(shí)現(xiàn)監(jiān)控系統(tǒng)的低功耗運(yùn)行,并使用云端實(shí)現(xiàn)數(shù)據(jù)的高性能存儲(chǔ),以及監(jiān)控?cái)?shù)據(jù)的統(tǒng)一處理和分析,可有效提高系統(tǒng)的安全和拓展性能,便于實(shí)現(xiàn)物聯(lián)網(wǎng)監(jiān)控系統(tǒng)的穩(wěn)定運(yùn)行。