貴陽(yáng)學(xué)院數(shù)學(xué)與信息科學(xué)學(xué)院 何 翼 劉 云
貴陽(yáng)學(xué)院科技處 劉合財(cái)
無(wú)線傳感網(wǎng)絡(luò)人工免疫智能診斷分析系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
貴陽(yáng)學(xué)院數(shù)學(xué)與信息科學(xué)學(xué)院 何 翼 劉 云
貴陽(yáng)學(xué)院科技處 劉合財(cái)
故障診斷是無(wú)線傳感器網(wǎng)絡(luò)面臨的一個(gè)共性關(guān)鍵技術(shù)問(wèn)題。人工免疫系統(tǒng)具有自適應(yīng)、自學(xué)習(xí)特征,通過(guò)算法優(yōu)化和系統(tǒng)設(shè)計(jì)可以滿足WSNs資源(帶寬、能量等)有限前提下的故障診斷需求。文章基于一個(gè)多節(jié)點(diǎn)的物理原型系統(tǒng)采用人工免疫原理研制一個(gè)無(wú)線傳感器網(wǎng)絡(luò)診斷系統(tǒng),進(jìn)行節(jié)點(diǎn)組網(wǎng)測(cè)試分析。
無(wú)線傳感網(wǎng)絡(luò);人工免疫;智能診斷
無(wú)線傳感網(wǎng)絡(luò)(WSNs)具有動(dòng)態(tài)拓?fù)渥兓⒛芰考s束和傳輸計(jì)算能力受限等特性[1,2],容易出現(xiàn)網(wǎng)絡(luò)能耗不均、路由質(zhì)量差和數(shù)據(jù)傳輸不穩(wěn)定等現(xiàn)象.導(dǎo)致WSNs故障的原因較多,如節(jié)點(diǎn)失效,負(fù)載不均衡和路由算法相關(guān)等。運(yùn)行良好的WSNs應(yīng)具有故障檢測(cè)、診斷與容錯(cuò),能自適應(yīng)地處理多種網(wǎng)絡(luò)異常現(xiàn)象。故障檢測(cè)是WSNs面臨著的一個(gè)共性的、亟待解決的關(guān)鍵性技術(shù)問(wèn)題[3]。
人工免疫系統(tǒng)(AIS)提供了許多信息處理機(jī)制,具有記憶學(xué)習(xí)、反饋機(jī)制、無(wú)中心控制的分布自治機(jī)理等,近年來(lái)開(kāi)始被應(yīng)用于WSNs的故障檢測(cè)與診斷方面。如Hwang等[4]提出了一種基于生物免疫機(jī)制的無(wú)線傳感器網(wǎng)絡(luò)容錯(cuò)結(jié)構(gòu)SASHA,將淋巴結(jié)機(jī)制用于產(chǎn)生檢測(cè)器對(duì)故障進(jìn)行檢測(cè), 胸腺機(jī)制完成對(duì)故障的確診。Jabbari等模擬生物免疫系統(tǒng)或神經(jīng)免疫系統(tǒng)的自學(xué)習(xí)、自組織、記憶和信息處理等機(jī)理,開(kāi)展無(wú)線傳感器網(wǎng)絡(luò)檢測(cè)、系統(tǒng)協(xié)調(diào)和故障容錯(cuò)研究[5-6]。這些研究大多是理論層面的研究,缺乏設(shè)計(jì)與實(shí)現(xiàn)層次的研究。
本文首先搭建了一個(gè)WSNs物理原型平臺(tái),然后運(yùn)用人工免疫系統(tǒng)的研究成果采用C#實(shí)現(xiàn)一個(gè)WSNs診斷系統(tǒng)。該系統(tǒng)主要由故障知識(shí)庫(kù)、故障診斷、故障分類(lèi)等模塊構(gòu)成,不但能識(shí)別已知故障, 對(duì)未知故障具有良好的自適應(yīng)學(xué)習(xí)和進(jìn)化能力。本研究可以為WSNs故障檢測(cè)系統(tǒng)的開(kāi)發(fā)提供有益的借鑒。
本文為實(shí)現(xiàn)智能診斷系統(tǒng),搭建了一個(gè)WSNs物理原型平臺(tái)。該平臺(tái)為三層結(jié)構(gòu):底層為采集層或傳感層,傳感器節(jié)點(diǎn)與基站相連,每10個(gè)傳感器節(jié)點(diǎn)與1 個(gè)基站組成局部網(wǎng)絡(luò)單元,使用TI 星型拓?fù)浣Y(jié)構(gòu)的多跳自組織網(wǎng)絡(luò);中間層為傳輸層,基站采集的實(shí)時(shí)數(shù)據(jù)通過(guò)CAN總線傳輸至網(wǎng)關(guān),網(wǎng)關(guān)完成與 Internet 協(xié)議的轉(zhuǎn)換,與后臺(tái)管理節(jié)點(diǎn)對(duì)接;最上層為應(yīng)用層,通過(guò) Internet 網(wǎng)絡(luò)實(shí)現(xiàn)管理節(jié)點(diǎn)與網(wǎng)關(guān)的連接,從而實(shí)現(xiàn)對(duì)采集數(shù)據(jù)的實(shí)時(shí)查詢與展示,故障查詢。系統(tǒng)結(jié)構(gòu)見(jiàn)圖1。
傳感器節(jié)點(diǎn)由傳感器、微處理單元(MCU)、通信模塊和電源組成。MCU和通信模塊采用模塊化芯片CC1110實(shí)現(xiàn), CC1110是一款低電壓、低功耗的無(wú)線通訊應(yīng)用設(shè)備。傳感器采用了DHT11溫濕度、MQ-2煙霧傳感器,傳感器與MCU的IO接口連接。電源模塊采用9v電池供電,通過(guò)LM 7805三端穩(wěn)壓器轉(zhuǎn)化為5V電源給傳感器供電,5V電源經(jīng)由TPS73HD301轉(zhuǎn)換為3.3V后給CC1110供電。
傳感器節(jié)點(diǎn)與基站相連,通過(guò)Simplici TI 協(xié)議實(shí)現(xiàn)一個(gè)基站與多個(gè)傳感節(jié)點(diǎn)的無(wú)線通信。
實(shí)現(xiàn)的功能包括:(1)完成基站和節(jié)點(diǎn)的組網(wǎng)和雙向數(shù)據(jù)傳輸;(2)基站與總線數(shù)據(jù)傳輸?shù)墓δ堋鞲衅鞴?jié)點(diǎn)集成了DHT11溫濕度、MQ-2煙霧傳感器,可實(shí)現(xiàn)數(shù)據(jù)主動(dòng)上傳、數(shù)據(jù)請(qǐng)求上傳和定時(shí)上傳功能。

圖1 WSNs網(wǎng)絡(luò)結(jié)構(gòu)
由于對(duì)電氣干擾的魯棒性,自我診斷能力,數(shù)據(jù)錯(cuò)誤修復(fù),適合苛刻環(huán)境,傳輸層采用CAN總線(Controller Area Network)。CAN總線是一種用于短消息傳輸?shù)拇型ㄐ趴偩€,采用MCP2515芯片實(shí)現(xiàn)。MCP2515是一個(gè)獨(dú)立的控制器區(qū)域網(wǎng)絡(luò)(CAN網(wǎng)絡(luò))協(xié)議控制器,帶有兩個(gè)接受掩碼和六個(gè)接收濾波器,可以過(guò)濾錯(cuò)誤的信息。對(duì)MCP2515芯片進(jìn)行初始化配置,使該模塊成功接收數(shù)據(jù)后產(chǎn)生中斷信號(hào),中斷信號(hào)與主控芯片外部中斷引腳相連,該中斷信號(hào)需要手動(dòng)清零。MCP2515 模塊與主控芯片通過(guò)SOC的SPI接口通信,由主控芯片提供MCP2515的 SPI 接口時(shí)鐘信號(hào),數(shù)據(jù)讀寫(xiě)嚴(yán)格遵守 SPI接口讀寫(xiě)操作指令規(guī)則。對(duì)AP 與網(wǎng)關(guān)移植Modicon Mod Bus協(xié)議。Modbus協(xié)議是一種應(yīng)用層的基于分組的傳輸協(xié)議,使用一個(gè)主機(jī)的一個(gè)或多個(gè)從機(jī)的通訊,使用命令/應(yīng)答模式實(shí)現(xiàn)網(wǎng)關(guān)對(duì)基站(點(diǎn)對(duì)點(diǎn))、各基站對(duì)網(wǎng)關(guān)(多點(diǎn)對(duì)一點(diǎn))以及網(wǎng)關(guān)廣播等通信方式,能有效保證基站數(shù)據(jù)主動(dòng)上傳和被動(dòng)查詢兩種數(shù)據(jù)采集方式。
傳感器網(wǎng)絡(luò)有自己的協(xié)議,最常用連接IP網(wǎng)絡(luò)的方法是在兩者之間部署網(wǎng)關(guān)。網(wǎng)關(guān)設(shè)備使用ARM9 Cortex A8嵌入式開(kāi)發(fā)版開(kāi)發(fā),安裝了嵌入式Linux操作系統(tǒng)+嵌入式數(shù)據(jù)庫(kù)sqlite,搭建嵌入式網(wǎng)關(guān)設(shè)備。網(wǎng)管實(shí)現(xiàn)原理如下:
從IP主機(jī)(主機(jī)A)到傳感器節(jié)點(diǎn)(節(jié)點(diǎn)x)的數(shù)據(jù)包流程。①初始狀態(tài),網(wǎng)關(guān)的映射表為空。網(wǎng)關(guān)為每個(gè)傳感器節(jié)點(diǎn)分配一個(gè)虛擬IP地址,并分配從傳感器節(jié)點(diǎn)接收無(wú)線傳感器網(wǎng)絡(luò)包的時(shí)間。此外,網(wǎng)關(guān)給每個(gè)IP主機(jī)的生成一個(gè)虛擬傳感器節(jié)點(diǎn)ID,一旦網(wǎng)關(guān)從IP主機(jī)接收到一個(gè)IP包。網(wǎng)關(guān)在映射表存儲(chǔ)分配的虛擬IP地址和ID(圖2);②然后主機(jī)A建立一個(gè)IP包。該數(shù)據(jù)包含IP地址作為源地址和節(jié)點(diǎn)x的虛擬IP作為目的地址,數(shù)據(jù)包需遵循WSN運(yùn)行的應(yīng)用層協(xié)議規(guī)范;③該數(shù)據(jù)包被路由到無(wú)線傳感器網(wǎng)絡(luò),并到達(dá)網(wǎng)關(guān)。網(wǎng)關(guān)分貝映射源和目標(biāo)地址到主機(jī)A的虛擬ID和節(jié)點(diǎn)XID(圖3);④網(wǎng)關(guān)建立一個(gè)WSN數(shù)據(jù)包,該包包含映射的IDS和IP數(shù)據(jù)包相同的內(nèi)容。使用WSN路由協(xié)議傳遞該包給到節(jié)點(diǎn)X。網(wǎng)關(guān)過(guò)濾冗余傳輸協(xié)議包(例如TCP SYN和SYN-ACK包)。

圖2 網(wǎng)關(guān)映射表

圖3 TCP/IP包從主機(jī)A到節(jié)點(diǎn)X
從傳感器節(jié)點(diǎn)(節(jié)點(diǎn)x)到IP主機(jī)(主機(jī)A)的數(shù)據(jù)包流過(guò)程。①節(jié)點(diǎn)X建立一個(gè)WSN數(shù)據(jù)包,該包使用它的ID作為源地址,主機(jī)A的虛擬ID為目的地址。根據(jù)以前的源于從主機(jī)A連接,網(wǎng)關(guān)已經(jīng)知道主機(jī)A的虛擬ID;②使用WSN路由協(xié)議數(shù)據(jù)包被路由到網(wǎng)關(guān)節(jié)點(diǎn);③網(wǎng)關(guān)分貝映射源和目標(biāo)ID到節(jié)點(diǎn)X的虛擬IP和主機(jī)A的IP(圖4)。網(wǎng)關(guān)建立了一個(gè)新IP包,該包包含映射的IP地址和無(wú)線傳感器網(wǎng)絡(luò)包指定的相同內(nèi)容。網(wǎng)關(guān)過(guò)濾冗余WSN傳輸協(xié)議包。

圖4 WSN包從節(jié)點(diǎn)X到主機(jī)A

圖5 WSNs故障檢測(cè)程序架構(gòu)
后臺(tái)管理接口采用UDP協(xié)議與網(wǎng)關(guān)設(shè)備的通信,主要功能是部署故障檢測(cè)程序和故障檢測(cè)結(jié)果的存儲(chǔ)。客戶端軟件采用C#,主要顯示故障檢測(cè)結(jié)果。
WSNs故障檢測(cè)程序基于opt-IA算法,是一種基于免疫原理的仿生算法,具有自適應(yīng)、自學(xué)習(xí)的特征。我們采用分布式設(shè)計(jì),見(jiàn)圖5。故障檢測(cè)包括客戶端故障檢測(cè)程序與故障顯示、基站故障識(shí)別和分類(lèi)程序。
2.1.1 故障識(shí)別庫(kù)生成
后臺(tái)客戶端故障識(shí)別庫(kù)生成程序包含4個(gè)基本類(lèi)。分別是:1.主要窗體類(lèi),提供了簡(jiǎn)單的圖形用戶界面;抗體庫(kù)生成控制類(lèi)Opt-IA;抗體類(lèi)Ab;適宜度函數(shù)類(lèi)Fitfunc。抗體類(lèi)Ab試圖模擬生物抗體細(xì)胞,具有克隆自己的方法Cloning()發(fā)現(xiàn)與另一種抗體的親和力、基于親和突變Hypermutation()、選擇方法Selection、老化方法Aging()。適應(yīng)度函數(shù)類(lèi)使靜態(tài)方法evaluatefuncation()返回節(jié)點(diǎn)特征向量的適宜度值。每個(gè)抗體代表一個(gè)候選解,在此代表的故障節(jié)點(diǎn)特征向量。免疫算法的控制器類(lèi)允許參數(shù)定義,并有一個(gè)Initial_Pop()產(chǎn)生抗體的初始種群。生產(chǎn)抗體庫(kù)的代碼如下:
Opt-IA(l,d,dup,TB,c,h,hm)
{t=0
P(t)=Opt-IA.Initial_Pop()
Fitfunc.evaluatefunction (P(0))
while(Fitfunc.evaluatefunction(P(0))<threshold) do
P(clo)= Ab.Cloning(P(t),dup)
If(H is TRUE)then
P(hyp)= Ab.Hypermutation(P(clo),c,l)
Fitfunc.evaluatefunction (P(hyp))
If(M is TRUE)then
P(macro)= Ab.Hypermutation(P(clo))
Fitfunc.evaluatefunction ( P(macro))
Ab.Aging(P(t),P(hyp),P(macro),TB)
P(t+1)=(μ+λ)- Ab.Selection(P(t),P(hyp),P(macro))
end while}
2.1.2 故障識(shí)別庫(kù)更新
一旦后續(xù)基站節(jié)點(diǎn)檢測(cè)抗原(任意一個(gè)節(jié)點(diǎn)的特征向量)的過(guò)程,發(fā)現(xiàn)落入抗體庫(kù)更新區(qū)域,就會(huì)向后臺(tái)管理節(jié)點(diǎn)發(fā)送信號(hào)讓其重新啟動(dòng)Opt-IA更新抗體庫(kù)。相應(yīng)的代碼如下:
raduis1=CompuRaduis1(Lib);\由簇頭節(jié)點(diǎn)計(jì)算抗體庫(kù)的內(nèi)圓半徑值
raduis2=CompuRaduis2(Lib);\由簇頭節(jié)點(diǎn)計(jì)算抗體庫(kù)的外圓半徑值
v=CompuV(Lib);\由簇頭節(jié)點(diǎn)計(jì)算抗體庫(kù)的中心
for(i = 1;i<=n;i++);
CompuDis(agi,v;)\計(jì)算節(jié)點(diǎn) i 與抗體庫(kù)圓心的歐氏距離div
if radius1<div<radius2
SendUpdate(管理節(jié)點(diǎn));\發(fā)送信號(hào)讓管理節(jié)點(diǎn)重新啟動(dòng)Opt-IA更新抗體庫(kù)
end if
end for
2.1.3 故障顯示
故障顯示定義了一個(gè)故障庫(kù)類(lèi)FaultLib,該類(lèi)存儲(chǔ)著發(fā)生故障節(jié)點(diǎn)的ID和故障類(lèi)型,該類(lèi)showfault()方法,將故障節(jié)點(diǎn)的ID、故障類(lèi)型顯示在客戶端程序出來(lái)。只有當(dāng)調(diào)用該方法時(shí),才由客戶端向基站節(jié)點(diǎn)發(fā)出查詢指令,基站節(jié)點(diǎn)反饋各自管理區(qū)域的故障節(jié)點(diǎn)信息。
2.2.1 故障檢測(cè)
故障檢測(cè)程序由基站節(jié)點(diǎn)運(yùn)行。故障庫(kù)類(lèi)FaultLib,還具有一個(gè)故障節(jié)點(diǎn)存儲(chǔ)的方法input()方法,該方法將故障節(jié)點(diǎn)的ID、類(lèi)型存儲(chǔ)起來(lái)。主要代碼如下:
n = 傳感節(jié)點(diǎn)數(shù)量
k = 故障節(jié)點(diǎn)的數(shù)量
CompuDis(agi,v);\計(jì)算節(jié)點(diǎn) i 與抗體庫(kù)圓心的歐氏距離div
raduis1=CompuRaduis1(Lib;)\由簇頭節(jié)點(diǎn)計(jì)算抗體庫(kù)的內(nèi)圓半徑值
for(i = 1;i<=n;i++);
if div<radius1
FaultLib.input();
k++;
end if
end for2.2.2 故障分類(lèi)
故障檢測(cè)程序由基站節(jié)點(diǎn)運(yùn)行。具體的方法為,計(jì)算故障節(jié)點(diǎn)與各個(gè)抗體的距離,與何種抗體相鄰距離近,則被將故障節(jié)點(diǎn)視為該類(lèi)故障。故障檢測(cè)的結(jié)果是由基站節(jié)點(diǎn)保存。相應(yīng)代碼如下:
b = 抗體庫(kù)包含抗體的數(shù)量
for(i =1,i<=k,i++)
for(j=1,j<=b,j++)
D[i,j]=ComputDis2(i,j)\計(jì)算各故障節(jié)點(diǎn)與抗體j的距離
end for
Min(D[i,j])\求出距離最小,即為該類(lèi)故障
end for
文章基于搭建的小型WSNs原型平臺(tái)和人工免疫原理,采用C#實(shí)現(xiàn)一個(gè)無(wú)線傳感器網(wǎng)絡(luò)智能診斷系統(tǒng),可以為建立類(lèi)似WSNs故障診斷平臺(tái)提供參考。為了節(jié)省能量,延長(zhǎng)WSNs的壽命,采用了分布與集中相結(jié)合的方式,由管理節(jié)點(diǎn)生成和更新故障庫(kù),然后傳遞給各個(gè)基站節(jié)點(diǎn),由各個(gè)基站節(jié)點(diǎn)負(fù)責(zé)管理區(qū)域(10個(gè)傳感器節(jié)點(diǎn))的故障檢測(cè)與分類(lèi)。該系統(tǒng)僅可以反饋檢測(cè)區(qū)域的溫濕度和煙霧濃度數(shù)據(jù),后期可以根據(jù)需要在傳感器節(jié)點(diǎn)連接其他類(lèi)型傳感器進(jìn)行擴(kuò)展。
[1]I.F.Akyildiz,W.Su,Y.Sankarasubramaniam,E.Cayirci. Wireless sensor networks: a survey: Computer Networks[J].Computer Networks,2002, 38(4):393–422.
[2]Jennifer Yick,Biswanath Mukherjee, Dipak Ghosal. Wireless sensor network survey[J].Computer Networks, 2008 (52) :2292–2330.
[3]Lilia Paradis and Qi Han. A Survey of Fault Management inWireless Sensor Networks[J].Journal of Network and Systems Management, 2007, 15(2):171-190.
[4]Soyoung Hwang,Gwang-Ja Jin, Bongsoo Kim. Lightweight Fault Tolerant Time Synchronization in Wireless Sensor Networks[C].5th International Conference on Networked Sensing Systems(INSS 2008),2008,pp.131-134.
[5]Jabbari,Amir;Lang,Walter. Advanced Bio-Inspired Plausibility Checking in a Wireless Sensor Network Using Neuro-Immune Systems. The Fourth International Conference on Sensor Technologies and Applications,2010,108-114.
[6]Barron,J.W.,Moustapha,A.I.,Selmic,R.R..Real-Time Implementation of Fault Detection in Wireless Sensor Networks Using Neural Networks[C].Fifth International Conference on Information Technology: New Generations(TNG 2008), 2008,pp.378-383.
項(xiàng)目來(lái)源:貴州省科學(xué)技術(shù)基金資助項(xiàng)目(黔科合J字LKG【2013】46號(hào)。