李 瀟 凌志浩,2 左 蕓
(華東理工大學(xué)信息科學(xué)與工程學(xué)院1,上海 200237;化工過(guò)程先進(jìn)控制和優(yōu)化技術(shù)教育部重點(diǎn)實(shí)驗(yàn)室2,上海 200237)
在工業(yè)環(huán)境應(yīng)用過(guò)程中,無(wú)線傳感器網(wǎng)絡(luò)技術(shù)具有使工業(yè)自動(dòng)化系統(tǒng)配置更方便、維護(hù)成本更低、數(shù)據(jù)傳輸速率更高等特點(diǎn)。但由于網(wǎng)絡(luò)設(shè)備電源能量受限,必須優(yōu)先考慮網(wǎng)絡(luò)設(shè)備分布、數(shù)據(jù)通信方式等能耗[1-2]。無(wú)線MESH網(wǎng)絡(luò)具有自形成、自愈性和自組織性,是一種由MESH路由組成主干網(wǎng)的多跳無(wú)線網(wǎng)絡(luò)。路由器的移動(dòng)性小,用來(lái)實(shí)現(xiàn)路由和配置決策;移動(dòng)性終端設(shè)備通過(guò)網(wǎng)絡(luò)基礎(chǔ)設(shè)施接入網(wǎng)絡(luò)[3]。當(dāng)前應(yīng)用廣泛的 ZigBee協(xié)議和新提出的 WirelessHART、ISP100、WIA-PA三種主流協(xié)議都支持 MESH結(jié)構(gòu)[4-6]。關(guān)于這方面的應(yīng)用,研究人員已經(jīng)取得一定的研究成果[7]。可見(jiàn),在工業(yè)環(huán)境中將逐步實(shí)現(xiàn)MESH結(jié)構(gòu)的應(yīng)用。
本文首先介紹無(wú)線MESH網(wǎng)絡(luò)分類及MESH結(jié)構(gòu)性質(zhì),繼而基于通信網(wǎng)絡(luò)仿真平臺(tái)OMNeT++搭建一種MESH結(jié)構(gòu)無(wú)線傳感器模型。同時(shí),采用最經(jīng)典的最短路徑算法確定路由路徑,以實(shí)現(xiàn)網(wǎng)絡(luò)中數(shù)據(jù)的可靠通信,并對(duì)得到的試驗(yàn)結(jié)果進(jìn)行總結(jié)分析。
無(wú)線網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)有多種組態(tài)方式。網(wǎng)絡(luò)基礎(chǔ)拓?fù)浣Y(jié)構(gòu)分為星型(STAR)、樹(shù)型(TREE)、網(wǎng)狀型(MESH)、總線型(BUS)和環(huán)型(RING)等。實(shí)際應(yīng)用中,大多采用幾種拓?fù)湎嘟Y(jié)合的布網(wǎng)方式。
MESH結(jié)構(gòu)是一種相對(duì)自由的網(wǎng)絡(luò)拓?fù)?。由于MESH網(wǎng)絡(luò)結(jié)構(gòu)可實(shí)現(xiàn)多路由路徑,使網(wǎng)絡(luò)具有較強(qiáng)的容錯(cuò)能力和魯棒性。當(dāng)采用MESH結(jié)構(gòu)時(shí),盡管各個(gè)節(jié)點(diǎn)處于對(duì)等地位,但可指定某個(gè)節(jié)點(diǎn)為簇首節(jié)點(diǎn),以執(zhí)行附加功能。當(dāng)簇首節(jié)點(diǎn)因故障、能量耗盡而失效時(shí),可以立刻選擇另一個(gè)節(jié)點(diǎn)補(bǔ)充并接管原簇首,執(zhí)行原簇首所實(shí)現(xiàn)的功能。
無(wú)線MESH網(wǎng)絡(luò)具有分布式網(wǎng)絡(luò)所提供的冗余機(jī)制和重新路由功能。通常,無(wú)線MESH網(wǎng)絡(luò)由MESH路由和MESH客戶端組成。該網(wǎng)絡(luò)允許每個(gè)節(jié)點(diǎn)都發(fā)送和接收信號(hào),終端設(shè)備之間自動(dòng)連成網(wǎng)狀結(jié)構(gòu),設(shè)備節(jié)點(diǎn)具有自動(dòng)路由能力。添加或移動(dòng)設(shè)備時(shí),網(wǎng)絡(luò)能夠自動(dòng)發(fā)現(xiàn)拓?fù)渥兓⒆詣?dòng)調(diào)整通信路由,以獲取最有效的傳輸路徑。無(wú)線MESH網(wǎng)絡(luò)的網(wǎng)絡(luò)拓?fù)涔灿泄歉删W(wǎng)型MESH、客戶端型MESH、混合型MESH三種結(jié)構(gòu)。
1.1.1 骨干網(wǎng)型MESH結(jié)構(gòu)
通信網(wǎng)絡(luò)中,MESH路由器通過(guò)無(wú)線技術(shù)相連,組成具有自動(dòng)配置、自我愈合能力的網(wǎng)絡(luò)骨干。它們之間以點(diǎn)對(duì)點(diǎn)或多次跳轉(zhuǎn)的通信方式相連,形成MESH結(jié)構(gòu)。網(wǎng)絡(luò)中一些MESH路由與上層網(wǎng)絡(luò)連接,使整個(gè)骨干網(wǎng)絡(luò)與上層網(wǎng)絡(luò)連通。MESH路由器采用相同無(wú)線技術(shù)的客戶端,可以直接與骨干網(wǎng)絡(luò)中的路由相連,從而接入上層網(wǎng)絡(luò)。
1.1.2 客戶端型MESH結(jié)構(gòu)
客戶端型MESH結(jié)構(gòu)網(wǎng)絡(luò)采用多點(diǎn)對(duì)多點(diǎn)的通信方式,由使用相同無(wú)線技術(shù)的客戶端直接互聯(lián)而成。與星型網(wǎng)絡(luò)相比,客戶端型MESH結(jié)構(gòu)沒(méi)有采用銜接節(jié)點(diǎn),因此每個(gè)客戶端設(shè)備必須具有自動(dòng)配置和路由功能。這樣既可以實(shí)現(xiàn)相鄰節(jié)點(diǎn)之間的直接通信,又可保證不相鄰節(jié)點(diǎn)間通過(guò)多跳方式完成數(shù)據(jù)通信。
1.1.3 混合型MESH結(jié)構(gòu)
混合型MESH結(jié)構(gòu)網(wǎng)絡(luò)是以上兩種結(jié)構(gòu)網(wǎng)絡(luò)的合理結(jié)合,既有骨干網(wǎng)絡(luò)、客戶端網(wǎng)絡(luò),又在客戶端和路由器之間形成MESH結(jié)構(gòu)的網(wǎng)絡(luò)?;旌闲蚆ESH結(jié)構(gòu)如圖1所示。
圖1 混合型MESH結(jié)構(gòu)Fig.1 Hybrid MESH structure
圖1中,實(shí)心圓表示 MESH路由,空心圓表示MESH客戶端。
在MESH結(jié)構(gòu)無(wú)線傳感器網(wǎng)絡(luò)中,每個(gè)節(jié)點(diǎn)可以使用的鏈路數(shù)較多,這樣能夠避免網(wǎng)絡(luò)“接入點(diǎn)”的繁重工作量,可從根本上解決網(wǎng)絡(luò)中特殊節(jié)點(diǎn)能量消耗過(guò)快以及后續(xù)相關(guān)問(wèn)題。
每個(gè)節(jié)點(diǎn)都具有選路功能,一旦某條鏈路故障,節(jié)點(diǎn)可自動(dòng)跳轉(zhuǎn)到其他可選鏈路,從而提高了網(wǎng)絡(luò)的可靠性。多條可選路徑可減輕服務(wù)執(zhí)行時(shí)發(fā)生碰撞的可能性,減少碰撞造成的影響。與星型網(wǎng)絡(luò)相比,MESH結(jié)構(gòu)網(wǎng)使無(wú)線鏈路設(shè)計(jì)更簡(jiǎn)化、可擴(kuò)展性更高、維護(hù)更簡(jiǎn)單。
無(wú)線傳輸之間互相影響的固有特性所導(dǎo)致的同一信道相鄰節(jié)點(diǎn)間的干擾,以及基于競(jìng)爭(zhēng)型MAC層接入機(jī)制所導(dǎo)致的多跳傳輸?shù)牟淮_定性,是保證無(wú)線MESH網(wǎng)絡(luò)實(shí)時(shí)可靠傳輸需要解決的關(guān)鍵問(wèn)題。同時(shí),工業(yè)現(xiàn)場(chǎng)環(huán)境的復(fù)雜性和無(wú)線傳輸?shù)娜臻g性,使得無(wú)線信號(hào)在傳輸?shù)倪^(guò)程中常常發(fā)生衰變、中斷以及出現(xiàn)各種缺陷,如頻散、多徑時(shí)延、干擾和安全相關(guān)問(wèn)題。因此,工業(yè)無(wú)線MESH傳感器網(wǎng)絡(luò)必須解決路由路徑的可靠性、實(shí)時(shí)性和安全性問(wèn)題。
考慮到工業(yè)環(huán)境中靜態(tài)設(shè)備對(duì)可靠性和網(wǎng)絡(luò)容量的要求,本文選擇混合型MESH結(jié)構(gòu)網(wǎng)絡(luò)作為模型仿真網(wǎng)絡(luò)。
基于C++對(duì)象化網(wǎng)絡(luò)建模實(shí)驗(yàn)床(objective modular network testbed in C++,OMNeT++)是一款開(kāi)源的、面向?qū)ο蟮碾x散事件網(wǎng)絡(luò)模擬器。它是一種用來(lái)構(gòu)架實(shí)際系統(tǒng)結(jié)構(gòu)的有效工具。其主要特征是分級(jí)嵌套模塊和模塊之間以消息的方式進(jìn)行通信和拓?fù)湔Z(yǔ)言描述。
在OMNeT++平臺(tái)中搭建的網(wǎng)絡(luò)模型由相互之間以消息方式通信的分級(jí)嵌套模塊組成[8]。其中,模塊嵌套沒(méi)有深度限制,模塊間通過(guò)交換消息建立通信。消息代表實(shí)際網(wǎng)絡(luò)中的幀、信息包、任務(wù)等可移動(dòng)實(shí)體。消息可以直接發(fā)送到目的地,也可以通過(guò)門(mén)和鏈接沿預(yù)定義的路徑傳送,傳遞過(guò)程對(duì)用戶是透明可見(jiàn)的。
在OMNeT++搭建的網(wǎng)絡(luò)模型中,鏈接可以被賦予傳播延時(shí)、比特誤差率和數(shù)據(jù)速率三個(gè)參數(shù)。傳播延時(shí)是由于消息通過(guò)信道傳輸而引起的到達(dá)時(shí)間的延遲量。比特誤差率指定了比特?cái)?shù)據(jù)在傳輸時(shí)發(fā)生錯(cuò)誤的概率。當(dāng)設(shè)置了一定數(shù)據(jù)速率時(shí),“消息發(fā)送”對(duì)應(yīng)于消息的第一個(gè)比特的傳送,“消息到達(dá)”對(duì)應(yīng)于最后一個(gè)比特的接收。但數(shù)據(jù)速率在令牌環(huán)協(xié)議和光纖分布式數(shù)據(jù)接口協(xié)議中并不適用。
在搭建仿真模型時(shí),首先創(chuàng)建描述網(wǎng)絡(luò)節(jié)點(diǎn)和相互鏈接的拓?fù)湮募?.ned),然后編寫(xiě)C++代碼實(shí)現(xiàn)模塊功能(.cc),從而完成對(duì)通信網(wǎng)絡(luò)的模擬檢測(cè)[9]。
本文中搭建的通信網(wǎng)絡(luò)模型僅包括ISO七層網(wǎng)絡(luò)協(xié)議中的三層:物理層、數(shù)據(jù)鏈路層和網(wǎng)絡(luò)層。仿真網(wǎng)絡(luò)由網(wǎng)關(guān)、路由、終端節(jié)點(diǎn)這三種設(shè)備子模塊組成。設(shè)備模塊功能由應(yīng)用層、路由層、物理層子模塊實(shí)現(xiàn)。仿真網(wǎng)絡(luò)結(jié)構(gòu)如圖2所示。
圖2 仿真網(wǎng)絡(luò)結(jié)構(gòu)圖Fig.2 Structure of the simulation network
2.2.1 設(shè)備模塊功能
通信網(wǎng)絡(luò)包含網(wǎng)關(guān)、路由器和終端節(jié)點(diǎn)三種設(shè)備。網(wǎng)關(guān)作為網(wǎng)絡(luò)模型中的上層通信設(shè)備,中間層是路由器,終端節(jié)點(diǎn)作為網(wǎng)絡(luò)的通信網(wǎng)絡(luò)終端。網(wǎng)關(guān)與路由器之間為星型連接,路由器與終端設(shè)備之間形成混合型MESH結(jié)構(gòu)。
網(wǎng)關(guān)將本地網(wǎng)絡(luò)與其他工業(yè)網(wǎng)絡(luò)設(shè)備相連接,由有線電源供電,實(shí)現(xiàn)協(xié)議轉(zhuǎn)換、數(shù)據(jù)映射、對(duì)消息進(jìn)行本地處理等功能。路由設(shè)備是全功能節(jié)點(diǎn),由有線電源供電,連接現(xiàn)場(chǎng)終端設(shè)備和網(wǎng)關(guān),具有優(yōu)化網(wǎng)絡(luò)、減少網(wǎng)關(guān)負(fù)擔(dān)、延長(zhǎng)現(xiàn)場(chǎng)終端節(jié)點(diǎn)壽命的作用。終端節(jié)點(diǎn)為精簡(jiǎn)功能設(shè)備,在網(wǎng)絡(luò)覆蓋范圍內(nèi)隨機(jī)分布,具有獲知自身在本地網(wǎng)絡(luò)的相對(duì)位置的能力,負(fù)責(zé)實(shí)現(xiàn)工業(yè)現(xiàn)場(chǎng)數(shù)據(jù)采集等功能。
通信網(wǎng)絡(luò)運(yùn)行時(shí),終端節(jié)點(diǎn)將在工業(yè)現(xiàn)場(chǎng)中采集到的數(shù)據(jù)發(fā)送到所屬路由設(shè)備進(jìn)行本地處理;路由設(shè)備對(duì)數(shù)據(jù)進(jìn)行分析,將整合結(jié)果上傳至網(wǎng)關(guān)或發(fā)送請(qǐng)求給該數(shù)據(jù)的終端節(jié)點(diǎn)。上述過(guò)程中,通信網(wǎng)絡(luò)通過(guò)由路由算法選擇的路由路徑來(lái)完成數(shù)據(jù)傳輸。
2.2.2 功能實(shí)現(xiàn)模塊
設(shè)備模塊內(nèi)部三個(gè)子模塊實(shí)現(xiàn)設(shè)備相應(yīng)的應(yīng)用層、路由層、物理層功能,子模塊相互之間通過(guò)“門(mén)”連接。
應(yīng)用層模塊用于設(shè)定設(shè)備通信地址、數(shù)據(jù)包發(fā)送時(shí)間間隔、數(shù)據(jù)包的長(zhǎng)度,實(shí)現(xiàn)確定數(shù)據(jù)傳輸?shù)哪繕?biāo)節(jié)點(diǎn)、產(chǎn)生或接收數(shù)據(jù)包等功能。
路由層模塊用于設(shè)定終端節(jié)點(diǎn)和路由設(shè)備通信距離、數(shù)據(jù)傳輸速率、傳輸延時(shí),建立網(wǎng)絡(luò)設(shè)備與鄰近設(shè)備之間的連接,并完成數(shù)據(jù)路由路徑的選擇任務(wù)。
物理層模塊用于設(shè)定仿真設(shè)備的物理框架結(jié)構(gòu),如發(fā)射接收數(shù)據(jù)端口,實(shí)現(xiàn)設(shè)備物理層的數(shù)據(jù)接收、發(fā)送、丟棄等相關(guān)控制。
Dijkstra算法是一種貪心算法,用來(lái)解決帶權(quán)圖(權(quán)值為非負(fù)數(shù))的單源最短路徑問(wèn)題,實(shí)現(xiàn)尋找從某一源節(jié)點(diǎn)發(fā)送到所有其他節(jié)點(diǎn)的最短路徑的功能。
Dijkstra算法的輸入包含一個(gè)有權(quán)重的有向圖G和G中的一個(gè)源節(jié)點(diǎn)vi。以V表示G中所有節(jié)點(diǎn)的集合。每一個(gè)有向圖中的邊都是由兩個(gè)節(jié)點(diǎn)所形成的有序元素對(duì)。(u,v)表示從節(jié)點(diǎn)u到節(jié)點(diǎn)v有路徑相連。以E表示所有邊的集合,而邊的權(quán)重則由權(quán)重函數(shù)W:E→[0,∞]定義。因此,W(u,v)就是從節(jié)點(diǎn) u到節(jié)點(diǎn)v的非負(fù)權(quán)。任意兩個(gè)節(jié)點(diǎn)之間路徑的權(quán),就是該路徑上所有邊的權(quán)值總和。也就是說(shuō),如果路徑(u,v)由邊 e0,e1,…,ek-1組成,那么 W(u,v)定義如下:
已知節(jié)點(diǎn)vi及vj,通過(guò)Dijkstra算法可以找到vi到vj的最小權(quán)值路徑,也稱為vi到vj的最短路徑。
對(duì)于每一個(gè)節(jié)點(diǎn)vi,Dijkstra算法將記錄ki、di和pi三條信息。這三條信息的含義具體說(shuō)明如下。
①ki是一個(gè)布爾值型的標(biāo)記,它表示到源節(jié)點(diǎn)vi的最短路徑已知。
②di是從vi到vj的已知的最短路徑長(zhǎng)度。算法開(kāi)始時(shí),最短路徑是未知的,di也是不確定的。在算法執(zhí)行期間,算法檢查候選路徑并修改di的值。
③pi是源節(jié)點(diǎn)的前驅(qū)。
在每次執(zhí)行過(guò)程中,只有一個(gè)節(jié)點(diǎn)的ki設(shè)置為true。在運(yùn)行O(|V|)次之后算法終止,即可找出當(dāng)前源節(jié)點(diǎn)vi到vj所有的最短路徑。
本文中,網(wǎng)絡(luò)設(shè)備分布及設(shè)備間的鏈接形成有向圖G。初始化時(shí),每個(gè)設(shè)備分別充當(dāng)源節(jié)點(diǎn)vi,將所有設(shè)備間連接權(quán)值都設(shè)置為1,以跳數(shù)選擇路徑,即上述算法得出的路由路徑為最小跳數(shù)路徑。
采用OMNeT++通信網(wǎng)絡(luò)仿真平臺(tái)搭建的通信網(wǎng)絡(luò)模型包含一個(gè)網(wǎng)關(guān)設(shè)備、三個(gè)路由設(shè)備和60個(gè)終端節(jié)點(diǎn)設(shè)備,數(shù)據(jù)傳輸路徑選擇經(jīng)典的最短路徑算法實(shí)現(xiàn)。網(wǎng)絡(luò)中數(shù)據(jù)傳輸速率為106bit/s,信道延時(shí)為0.01 ms,數(shù)據(jù)包長(zhǎng)度為 1024 B。
按源節(jié)點(diǎn)、目的節(jié)點(diǎn)的屬性不同,網(wǎng)絡(luò)通信傳輸分為以下四種數(shù)據(jù)傳輸類型:①工業(yè)現(xiàn)場(chǎng)的終端設(shè)備將采集到的數(shù)據(jù)傳輸?shù)铰酚稍O(shè)備;②路由設(shè)備根據(jù)數(shù)據(jù)包中目的節(jié)點(diǎn)信息確定是否轉(zhuǎn)發(fā)至其他路由設(shè)備或經(jīng)網(wǎng)關(guān)發(fā)送至其他網(wǎng)域;③路由設(shè)備之間必要信息的相互備份;④路由設(shè)備將經(jīng)過(guò)處理整合的數(shù)據(jù)上報(bào)網(wǎng)關(guān)。混合型MESH結(jié)構(gòu)包含前三種傳輸方式。
在網(wǎng)絡(luò)模型中,定義網(wǎng)關(guān)設(shè)備、路由設(shè)備在網(wǎng)絡(luò)中的位置固定,終端節(jié)點(diǎn)設(shè)備在整個(gè)布網(wǎng)范圍內(nèi)隨機(jī)分布。
在網(wǎng)絡(luò)初始化時(shí),需要做以下工作:建立網(wǎng)關(guān)與路由設(shè)備間、各路由設(shè)備間的連接;路由設(shè)備根據(jù)自身的通信范圍,搜索鄰近終端設(shè)備并建立連接,同時(shí)形成路由表;終端節(jié)點(diǎn)設(shè)備搜索分布在通信范圍內(nèi)的鄰近終端設(shè)備并建立連接,形成路由表。
在通信仿真過(guò)程中,源節(jié)點(diǎn)在可選地址中隨機(jī)產(chǎn)生數(shù)據(jù)包的目的地址,然后根據(jù)存儲(chǔ)的路由表信息確定數(shù)據(jù)包的傳輸路徑,最后將數(shù)據(jù)包按照選定的路徑傳輸至目的地址。
采集仿真過(guò)程的前3200個(gè)事件作為分析對(duì)象,共完成282個(gè)分源節(jié)點(diǎn)和目的節(jié)點(diǎn)間的數(shù)據(jù)包傳輸。數(shù)據(jù)包傳輸信息和傳輸跳數(shù)信息分別如表1、表2所示。
表1 數(shù)據(jù)包傳輸信息Tab.1 Transmission information of the data packet
表2 傳輸跳數(shù)信息Tab.2 Information of transmission hops
由表1和表2可以看出,仿真網(wǎng)絡(luò)隨機(jī)產(chǎn)生的數(shù)據(jù)包被均勻地傳輸?shù)礁鱾€(gè)路由設(shè)備,且傳輸過(guò)程絕大多數(shù)在兩跳之內(nèi)完成。
數(shù)據(jù)包路由路徑如表3所示。
表3 數(shù)據(jù)包路由路徑Tab.3 Routing paths of data packets
在采樣過(guò)程中,各數(shù)據(jù)傳輸各自沿上述路徑完成2、4、3、2次數(shù)據(jù)傳遞,驗(yàn)證了網(wǎng)絡(luò)中路徑傳輸?shù)目煽啃院痛_定性。
本文針對(duì)工業(yè)環(huán)境對(duì)無(wú)線傳感器網(wǎng)絡(luò)的特殊需求,對(duì)比現(xiàn)有的無(wú)線通信協(xié)議,選擇應(yīng)用靈活的OMNeT++通信網(wǎng)絡(luò)仿真平臺(tái),成功搭建了混合MESH結(jié)構(gòu)無(wú)線傳感器網(wǎng)絡(luò)模型。同時(shí),采用經(jīng)典的最短路徑算法搜索源/目的節(jié)點(diǎn)數(shù)據(jù)路由路徑,實(shí)現(xiàn)了路由路徑的確定性。
[1]Hu Zhihua,Li Baochun.On the fundamental capacity and lifetime limits of energy-constrained wireless sensor networks[C]//Realtime and Embedded Technology and Applications Symposium,2004:2-9.
[2]牟連佳,牟連泳.無(wú)線傳感器網(wǎng)絡(luò)及其在工業(yè)領(lǐng)域應(yīng)用研究[J].工業(yè)控制計(jì)算機(jī),2005,18(1):3-5.
[3]Akyldiz I F,Wang Xudong,Wang Weilin.A survey on wireless mesh networks[J].Computer Networks,2005,4(4):445-487.
[4]Li Pengfei,Li Jiakun,Nie Luhua,et al.Research and application of ZigBee protocol stack[C]∥Measuring Technology and Mechatronics Automation,2010,6(2):1031-1034.
[5]Zhao Jingdong,Wang Qin,Yu Feng.A route-based scheduling in wireless multi-hop mesh networks for collision avoidance[C]∥Wireless Communications,2009:1-4.
[6]Anna N,F(xiàn)redrik H,Stig P,et al.When HART goes wireless:understanding and implementing the WirelessHART standard[C]∥Emerging Techologies and Factory Automation,2008:899-907.
[7]Fan Jing,Yin Shitang,Wu Qiong,et al.Study on refined deployment of wireless mesh sensor network[C]∥Wireless Communications Networking and Mobile Computing,2010:1-5.
[8]石為人,黃河,鮮曉東,等.OMNeT++與NS2在無(wú)線傳感器網(wǎng)絡(luò)仿真中的比較研究[J].計(jì)算機(jī)科學(xué),2008(10):53-57.