郭 鑫,閆連山,李洪赭,張曉薇
(西南交通大學(xué)信息科學(xué)與技術(shù)學(xué)院,四川 成都 611756)
高危倉(cāng)庫(kù)是存儲(chǔ)和保管易燃、易爆、有毒、有害等危險(xiǎn)品的場(chǎng)所,一般位于環(huán)境偏僻的地區(qū),而且存儲(chǔ)的物品大多對(duì)人體有害,故通常采用無(wú)線傳感網(wǎng)絡(luò)對(duì)其進(jìn)行監(jiān)測(cè)[1-2]。
針對(duì)無(wú)線傳感網(wǎng)絡(luò)中網(wǎng)絡(luò)功能難以管理和部署后再利用困難等固有問(wèn)題,當(dāng)前學(xué)術(shù)界研究的熱點(diǎn)是將軟件定義技術(shù)應(yīng)用于無(wú)線傳感網(wǎng)絡(luò)中,即軟件定義無(wú)線傳感網(wǎng)絡(luò)[3](Software Defined Wireless Sensor Networks, SD-WSN)。董瑋等[4]將SD-WSN網(wǎng)絡(luò)劃分為軟件定義感知、軟件定義路由和軟件定義測(cè)量等類(lèi)型,從能耗、靈活性和編程便捷性的角度對(duì)現(xiàn)有的SD-WSN架構(gòu)進(jìn)行分析,提出將無(wú)線重編程與遠(yuǎn)程調(diào)試結(jié)合的觀點(diǎn),對(duì)設(shè)計(jì)需求做了理論上的分析;任萬(wàn)里[5]提出新型SD-WSN架構(gòu),并給出基于SD-WSN架構(gòu)的混合型路由算法,但只在Matlab下進(jìn)行理論仿真,未涉及架構(gòu)的具體實(shí)現(xiàn)設(shè)計(jì);秦凱倫[6]提出一種基于SD-WSN系統(tǒng)的網(wǎng)絡(luò)路由重配置算法,在Cooja網(wǎng)絡(luò)仿真平臺(tái)和Contiki操作系統(tǒng)上完成了SD-WSN軟件架構(gòu)和功能模塊的設(shè)計(jì),同樣缺乏具體硬件平臺(tái)的支持;李媚[7]重構(gòu)SD-WSN傳感節(jié)點(diǎn)模塊,通過(guò)空中下載技術(shù)分發(fā)節(jié)點(diǎn)鏡像以實(shí)現(xiàn)路由功能的無(wú)線重編程,但節(jié)點(diǎn)鏡像的產(chǎn)生必須依靠PC端的編譯環(huán)境,無(wú)法靈活配置網(wǎng)絡(luò),實(shí)用性較差。
上述工作大部分是在SD-WSN架構(gòu)中對(duì)路由性能進(jìn)行分析與改進(jìn),未體現(xiàn)無(wú)線傳感網(wǎng)絡(luò)感知測(cè)量的特點(diǎn)。同時(shí),在具體實(shí)現(xiàn)上未考慮實(shí)際嵌入式硬件有限的計(jì)算及存儲(chǔ)能力對(duì)系統(tǒng)性能的影響。針對(duì)以上問(wèn)題,本文給出一種基于SD-WSN的高危倉(cāng)儲(chǔ)監(jiān)測(cè)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)方案,其創(chuàng)新點(diǎn)在于:
1)節(jié)點(diǎn)在執(zhí)行路由傳輸?shù)耐瑫r(shí)加入具體的感知應(yīng)用,根據(jù)流表規(guī)則實(shí)現(xiàn)路由轉(zhuǎn)發(fā)和傳感監(jiān)測(cè)。
2)改進(jìn)流表生成與下發(fā)流程,以指令配置的方式實(shí)現(xiàn)節(jié)點(diǎn)功能的更新,簡(jiǎn)化匹配執(zhí)行過(guò)程。
3)通過(guò)嵌入式技術(shù)設(shè)計(jì)SD-WSN傳感節(jié)點(diǎn)和控制器,并給出具體的軟硬件實(shí)現(xiàn)方案,降低對(duì)服務(wù)器設(shè)備的依賴性。
如圖1所示,本文設(shè)計(jì)的基于SD-WSN的高危倉(cāng)儲(chǔ)監(jiān)測(cè)系統(tǒng)采用層次型網(wǎng)絡(luò)結(jié)構(gòu)[8-9],主要由傳感網(wǎng)絡(luò)層、控制層和應(yīng)用層這3層構(gòu)成。其中,傳感網(wǎng)絡(luò)層由多個(gè)可重構(gòu)的SD-WSN傳感節(jié)點(diǎn)相互連接構(gòu)成,負(fù)責(zé)環(huán)境參數(shù)的采集和傳感數(shù)據(jù)的轉(zhuǎn)發(fā);控制層由SD-WSN控制器構(gòu)成,負(fù)責(zé)網(wǎng)絡(luò)拓?fù)涞墓芾砗蛡鞲腥蝿?wù)的編排,并向終端提供網(wǎng)絡(luò)狀態(tài)信息和傳感任務(wù)的接口;應(yīng)用層由終端監(jiān)控軟件構(gòu)成,負(fù)責(zé)實(shí)時(shí)顯示倉(cāng)庫(kù)環(huán)境信息和制定傳感任務(wù)。系統(tǒng)包含傳感監(jiān)測(cè)和節(jié)點(diǎn)配置2個(gè)功能。
圖1 系統(tǒng)結(jié)構(gòu)圖
在執(zhí)行傳感監(jiān)測(cè)功能時(shí),傳感節(jié)點(diǎn)根據(jù)接收的控制包查詢流表,配置無(wú)線模塊數(shù)據(jù)和執(zhí)行預(yù)編譯生成的傳感任務(wù),并將數(shù)據(jù)上傳給控制器??刂破鲗?duì)數(shù)據(jù)進(jìn)行處理,生成網(wǎng)絡(luò)狀態(tài)信息和節(jié)點(diǎn)任務(wù)信息,傳輸給終端。終端將節(jié)點(diǎn)部署情況和環(huán)境參數(shù)實(shí)時(shí)顯示在監(jiān)控頁(yè)面上,供用戶查詢。
在執(zhí)行節(jié)點(diǎn)配置功能時(shí),用戶通過(guò)監(jiān)控軟件制定傳感任務(wù),并發(fā)送給控制器??刂破鞲鶕?jù)網(wǎng)絡(luò)拓?fù)渑c傳感任務(wù)篩選傳感節(jié)點(diǎn),制定路由路徑,同時(shí)生成新的流表,下發(fā)給指定節(jié)點(diǎn)。傳感節(jié)點(diǎn)接收配置包,以更新流表的方式實(shí)現(xiàn)功能的重新配置。
無(wú)線模塊作為可編程的RF收發(fā)器,通過(guò)串口與主控芯片連接實(shí)現(xiàn)無(wú)線通信,負(fù)責(zé)控制層與傳感網(wǎng)絡(luò)層間南向接口以及傳感網(wǎng)絡(luò)層中東西向接口的數(shù)據(jù)傳輸。
圖2 無(wú)線模塊結(jié)構(gòu)圖
設(shè)計(jì)選用MG2470芯片,該芯片工作在2.4 GHz ISM頻段,兼容ZigBee/IEEE802.15.4協(xié)議,發(fā)射功率+8 dBm,接收靈敏度-98 dBm,官方自帶調(diào)用API函數(shù)的控制指令,便于實(shí)現(xiàn)節(jié)點(diǎn)路由的靈活配置[10]。為保證無(wú)線模塊的可靠通信,在MG2470芯片后端加入集成功率放大器RFX2401C,并設(shè)計(jì)巴倫濾波電路,如圖2所示。經(jīng)測(cè)試,無(wú)線模塊的發(fā)射功率提高至+22 dBm,通信頻段為2.405 GHz~2.480 GHz,配合5 dbi的全向天線,可實(shí)現(xiàn)1 km的視距傳輸。
傳感節(jié)點(diǎn)選用STM32F407作為主控芯片,該芯片的工作頻率可達(dá)168 MHz,包含CAN、I2C、I2S、USART、USB、EARTHNET等工控總線[11]。
傳感節(jié)點(diǎn)結(jié)構(gòu)及實(shí)物如圖3所示,STM32F407通過(guò)TTL串口與無(wú)線模塊連接,以調(diào)用控制指令的方式實(shí)現(xiàn)無(wú)線模塊工作模式、目標(biāo)地址、通信速率等路由信息的重新配置。為采集環(huán)境信息,節(jié)點(diǎn)連接RS-485總線的溫濕度傳感器PKTH-100B、IIC總線的光強(qiáng)傳感器TSL2561、RS-485總線的CO2傳感器JXBS-3001-CO2[12],并將傳感任務(wù)預(yù)編譯生成可執(zhí)行程序,通過(guò)查詢總線接口編號(hào)和傳感器ID進(jìn)行調(diào)用。在執(zhí)行流表的查詢匹配工作時(shí),STM32F407根據(jù)控制指令配置無(wú)線模塊和調(diào)用傳感任務(wù)函數(shù),分別實(shí)現(xiàn)路由轉(zhuǎn)發(fā)和傳感監(jiān)測(cè)功能。
同時(shí),傳感節(jié)點(diǎn)預(yù)留SPI、IIC、RS-485等多種工業(yè)接口。當(dāng)存儲(chǔ)物資改變需要更新傳感任務(wù)時(shí),可以通過(guò)預(yù)留的接口連接新的傳感器,并根據(jù)控制器下發(fā)的流表重新配置節(jié)點(diǎn),從而實(shí)現(xiàn)對(duì)新指標(biāo)的感知測(cè)量。
圖3 傳感節(jié)點(diǎn)結(jié)構(gòu)框圖及實(shí)物圖
控制器選用基于ARM Cortex-A53內(nèi)核的S5P6818作為核心處理器,搭載512 MB DDR內(nèi)存和1 GB的Nand Flash。
控制器結(jié)構(gòu)及實(shí)物如圖4所示,S5P6818通過(guò)無(wú)線模塊與傳感網(wǎng)絡(luò)層進(jìn)行通信,包括節(jié)點(diǎn)的傳感數(shù)據(jù)、任務(wù)控制數(shù)據(jù)和功能配置數(shù)據(jù);通過(guò)以太網(wǎng)口與應(yīng)用層的終端通信,使用TCP/IP協(xié)議傳輸網(wǎng)絡(luò)狀態(tài)信息和節(jié)點(diǎn)任務(wù)數(shù)據(jù)。在系統(tǒng)運(yùn)行時(shí),控制器通過(guò)拓?fù)浒l(fā)現(xiàn)操作收集網(wǎng)絡(luò)狀態(tài)信息,結(jié)合網(wǎng)絡(luò)拓?fù)浜腿蝿?wù)信息生成流表并下發(fā),完成傳感監(jiān)測(cè)或更新配置功能。同時(shí),控制器也是網(wǎng)絡(luò)數(shù)據(jù)信息的存儲(chǔ)中心,包含網(wǎng)絡(luò)拓?fù)湫畔ⅰ⒐?jié)點(diǎn)任務(wù)信息和路由傳輸流表等數(shù)據(jù)庫(kù),并為終端提供查詢接口。
圖4 控制器結(jié)構(gòu)框圖及實(shí)物圖
本文所設(shè)計(jì)的傳感節(jié)點(diǎn)不僅能按照控制器的配置進(jìn)行數(shù)據(jù)轉(zhuǎn)發(fā)和傳感監(jiān)測(cè),還能以更新流表的方式實(shí)現(xiàn)功能上的重新定義,其軟件流程如圖5所示。
圖5 傳感節(jié)點(diǎn)軟件流程圖
傳感節(jié)點(diǎn)上電后,先初始化UCOSII系統(tǒng)及硬件端口,通過(guò)WLT協(xié)議的通信指令將無(wú)線模塊設(shè)置為路由節(jié)點(diǎn)模式。然后搜索附近的鄰居節(jié)點(diǎn)和節(jié)點(diǎn)間的信號(hào)強(qiáng)度,建立路由信息包,并上傳給控制器。之后等待控制器下發(fā)數(shù)據(jù)包,節(jié)點(diǎn)根據(jù)所接收數(shù)據(jù)包的類(lèi)型執(zhí)行不同的任務(wù),若為控制包則執(zhí)行傳感監(jiān)測(cè)任務(wù),若為配置包則執(zhí)行節(jié)點(diǎn)配置任務(wù)。
在傳感監(jiān)測(cè)任務(wù)中,節(jié)點(diǎn)通過(guò)match_flow()函數(shù)查詢內(nèi)部的流表,以控制包中的接口編號(hào)和傳感器ID數(shù)據(jù)進(jìn)行匹配。若匹配成功,則調(diào)用預(yù)先生成的傳感任務(wù)程序,并將傳感數(shù)據(jù)和任務(wù)編號(hào)上傳給控制器;若匹配失敗,根據(jù)Table Miss機(jī)制[13-14],節(jié)點(diǎn)需向控制器發(fā)送請(qǐng)求包,交由控制器處理。
在節(jié)點(diǎn)配置任務(wù)中,節(jié)點(diǎn)根據(jù)無(wú)線模塊配置指令和任務(wù)編號(hào),將配置包中的數(shù)據(jù)寫(xiě)入流表,實(shí)現(xiàn)功能上的重新配置。當(dāng)節(jié)點(diǎn)接收到能夠匹配該流表項(xiàng)的控制包后,即可執(zhí)行對(duì)應(yīng)的傳感任務(wù)函數(shù)。
SD-WSN中控制器的軟件流程如圖6所示,負(fù)責(zé)網(wǎng)絡(luò)拓?fù)涞墓芾砗蛡鞲腥蝿?wù)的編排,同時(shí)向終端提供網(wǎng)絡(luò)狀態(tài)信息和傳感任務(wù)的接口,包含路由發(fā)現(xiàn)與維護(hù)、任務(wù)制定、流表生成、流表下發(fā)功能。
圖6 控制器軟件流程圖
控制器上電后,先初始化Linux系統(tǒng)內(nèi)核,開(kāi)啟與無(wú)線模塊相連的/dev/ttySAC3驅(qū)動(dòng)文件,設(shè)置波特率為115200。同時(shí)建立TCP連接,將設(shè)備設(shè)置為服務(wù)器端,使用IPv4協(xié)議,端口號(hào)為8000,允許任何地址接入。然后,控制器等待接收傳感節(jié)點(diǎn)的路由信息包,建立網(wǎng)絡(luò)拓?fù)?,并?jì)算最短距離矩陣。在網(wǎng)絡(luò)拓?fù)浣⑼瓿珊?,控制器將進(jìn)入監(jiān)測(cè)運(yùn)行階段,根據(jù)監(jiān)控軟件下發(fā)的命令分別執(zhí)行傳感監(jiān)測(cè)任務(wù)和節(jié)點(diǎn)配置任務(wù)。
在傳感監(jiān)測(cè)任務(wù)中,傳感節(jié)點(diǎn)定時(shí)向控制器發(fā)送監(jiān)測(cè)數(shù)據(jù),控制器根據(jù)節(jié)點(diǎn)編號(hào)和任務(wù)編號(hào)對(duì)接收到的數(shù)據(jù)進(jìn)行分類(lèi)。之后,控制器對(duì)同一庫(kù)房中的節(jié)點(diǎn)數(shù)據(jù)求平均值,匯總各庫(kù)房的環(huán)境參數(shù),建立網(wǎng)絡(luò)拓?fù)湫畔ⅰ⒐?jié)點(diǎn)任務(wù)信息和路由傳輸流表數(shù)據(jù)庫(kù),并通過(guò)網(wǎng)口上傳給監(jiān)控軟件。
在節(jié)點(diǎn)配置任務(wù)中,監(jiān)控軟件通過(guò)網(wǎng)口下發(fā)任務(wù)信息至控制器,控制器根據(jù)路由拓?fù)浜蛶?kù)房編號(hào)篩選任務(wù)節(jié)點(diǎn),并將傳感任務(wù)分配給選中的節(jié)點(diǎn)。然后,控制器在目標(biāo)節(jié)點(diǎn)的流表中查詢?cè)擁?xiàng)任務(wù),若流表中包含該任務(wù),則將其封裝為控制包,提取路由路徑并下發(fā);若流表中不包含該任務(wù),則根據(jù)節(jié)點(diǎn)發(fā)送的請(qǐng)求包和網(wǎng)絡(luò)狀態(tài)信息生成新的流表,將其封裝為配置包,并通過(guò)Flow_Mod()函數(shù)下發(fā)給對(duì)應(yīng)節(jié)點(diǎn),實(shí)現(xiàn)節(jié)點(diǎn)的重新配置。
SD-WSN終端用戶可以通過(guò)監(jiān)控軟件接收、顯示倉(cāng)庫(kù)環(huán)境信息,并可以根據(jù)控制器提供的任務(wù)接口實(shí)時(shí)制定傳感任務(wù),其工作流程如圖7所示。
圖7 終端軟件流程圖
系統(tǒng)開(kāi)啟后,先圖形化顯示倉(cāng)庫(kù)布局,等待控制器上傳網(wǎng)絡(luò)狀態(tài)文件/bin/Net_info,在界面上顯示節(jié)點(diǎn)部署情況。然后接收各庫(kù)房的環(huán)境數(shù)據(jù),根據(jù)數(shù)據(jù)類(lèi)型和傳感器ID將獲取的傳感數(shù)據(jù)轉(zhuǎn)換為用戶可讀的信息。當(dāng)存儲(chǔ)物資改變,需要對(duì)新的安全指標(biāo)進(jìn)行監(jiān)測(cè)時(shí),用戶可以在監(jiān)測(cè)頁(yè)面輸入具體的庫(kù)房編號(hào)、工控接口編號(hào)和傳感器ID實(shí)現(xiàn)傳感任務(wù)的更新。該項(xiàng)任務(wù)的測(cè)量結(jié)果會(huì)在圖形界面中指定庫(kù)房的上方以窗口形式顯示。此外,系統(tǒng)還具有將監(jiān)測(cè)信息導(dǎo)出為表格形式保存的功能。
在建筑面積為500 m2的倉(cāng)庫(kù)中放置9個(gè)傳感節(jié)點(diǎn)設(shè)備,節(jié)點(diǎn)固定在水平高度為2 m的貨架上??刂破髟O(shè)備安放在監(jiān)控室內(nèi),便于用戶通過(guò)監(jiān)控軟件對(duì)系統(tǒng)進(jìn)行數(shù)據(jù)查詢和任務(wù)管理。
監(jiān)控系統(tǒng)正常工作時(shí)的界面如圖8所示,界面左方顯示倉(cāng)庫(kù)的布局簡(jiǎn)圖和節(jié)點(diǎn)的部署情況,右方分別為任務(wù)制定欄和數(shù)據(jù)顯示欄。PC端與控制器連接成功后,可在數(shù)據(jù)顯示欄中通過(guò)切換庫(kù)房編號(hào)查看各個(gè)庫(kù)房的環(huán)境參數(shù),包括溫度、濕度、光強(qiáng)、CO2濃度等信息[15-16]。為測(cè)試系統(tǒng)的任務(wù)更新功能,在2號(hào)庫(kù)房中添加CO濃度監(jiān)測(cè)任務(wù)。在傳感節(jié)點(diǎn)上安裝RS-485接口的CO濃度傳感器ECS000264,并在界面中的任務(wù)制定欄輸入庫(kù)房編號(hào)(“倉(cāng)庫(kù)2”)、接口編號(hào)(“RS-485-3”)和傳感器ID(“ECS000264”)。之后,等待任務(wù)下發(fā)以及傳感節(jié)點(diǎn)的重新配置,CO的監(jiān)測(cè)結(jié)果會(huì)以窗口形式顯示在2號(hào)庫(kù)房上方。由實(shí)時(shí)監(jiān)測(cè)結(jié)果可知,此時(shí)2號(hào)庫(kù)房的CO濃度為0 ppm。點(diǎn)擊頁(yè)面右下方的“保存”按鍵,系統(tǒng)會(huì)自動(dòng)讀取當(dāng)前時(shí)間,將接收的傳感數(shù)據(jù)繪制成表格并保存,如圖9所示。
圖8 監(jiān)測(cè)軟件界面
圖9 倉(cāng)庫(kù)參數(shù)表格
路由傳輸?shù)目煽啃允窃u(píng)估工業(yè)現(xiàn)場(chǎng)的無(wú)線監(jiān)測(cè)系統(tǒng)的重要指標(biāo)[17]。為測(cè)量基于SD-WSN的高危倉(cāng)儲(chǔ)監(jiān)測(cè)系統(tǒng)的通信可靠性,將傳感節(jié)點(diǎn)和控制器按4.1節(jié)中位置放置。將控制器作為源節(jié)點(diǎn),節(jié)點(diǎn)1作為目的節(jié)點(diǎn),分別通過(guò)本文設(shè)計(jì)的SD-WSN網(wǎng)絡(luò)和ZigBee Mesh網(wǎng)絡(luò)進(jìn)行數(shù)據(jù)傳輸。實(shí)驗(yàn)中截取200幀數(shù)據(jù),每幀數(shù)據(jù)60 Byte(傳感數(shù)據(jù)包長(zhǎng)度),改變數(shù)據(jù)幀之間的時(shí)間間隔,依次為10 ms、20 ms、25 ms、30 ms和40 ms,根據(jù)目的節(jié)點(diǎn)接收的字節(jié)數(shù)來(lái)評(píng)估網(wǎng)絡(luò)的通信可靠性,結(jié)果見(jiàn)表1。
表1 SD-WSN與ZigBee通信成功率對(duì)比
由實(shí)驗(yàn)結(jié)果可知,當(dāng)數(shù)據(jù)幀間隔為30 ms時(shí),SD-WSN網(wǎng)絡(luò)的通信成功率為98.35%,ZigBee網(wǎng)絡(luò)的通信成功率僅為91.69%;當(dāng)數(shù)據(jù)幀間隔為40 ms時(shí),ZigBee網(wǎng)絡(luò)通信成功率為97.62%,SD-WSN網(wǎng)絡(luò)近似完整接包。因?yàn)樵赟D-WSN網(wǎng)絡(luò)中,控制器根據(jù)路由環(huán)境的變化更新流表,集中管理所有傳感節(jié)點(diǎn)的路由路徑,使得傳感節(jié)點(diǎn)不需要自主尋路就能獲取高質(zhì)量的傳輸鏈路。所以在相同的網(wǎng)絡(luò)環(huán)境下,相比ZigBeeMesh網(wǎng)絡(luò),SD-WSN網(wǎng)絡(luò)具有更高的通信可靠性。
本文設(shè)計(jì)了一種基于SD-WSN的高危倉(cāng)儲(chǔ)無(wú)線監(jiān)測(cè)系統(tǒng),其中傳感節(jié)點(diǎn)負(fù)責(zé)基于流表的環(huán)境監(jiān)測(cè)和數(shù)據(jù)轉(zhuǎn)發(fā),控制器負(fù)責(zé)網(wǎng)絡(luò)拓?fù)涞墓芾砗蛡鞲腥蝿?wù)的編排,終端監(jiān)控軟件負(fù)責(zé)實(shí)時(shí)顯示傳感數(shù)據(jù)和發(fā)布傳感任務(wù)。實(shí)驗(yàn)結(jié)果表明,本文設(shè)計(jì)的系統(tǒng)具有可編程的特點(diǎn),能夠根據(jù)倉(cāng)儲(chǔ)物資的改變實(shí)時(shí)更新傳感任務(wù)。同時(shí),相比ZigBee Mesh網(wǎng)絡(luò),本文設(shè)計(jì)的SD-WSN網(wǎng)絡(luò)具有良好的通信可靠性,能滿足實(shí)際應(yīng)用的需求。