基于無(wú)線(xiàn)傳感器網(wǎng)絡(luò )仿真平臺的研究
——
一、引言
傳感器網(wǎng)絡(luò )(WSN)日新月異,各種網(wǎng)絡(luò )方案和協(xié)議日趨復雜,網(wǎng)絡(luò )規模日趨龐大,對網(wǎng)絡(luò )研究人員而言,掌握網(wǎng)絡(luò )仿真的重要性是不言而喻的。WSN仿真能夠在一個(gè)可控制的環(huán)境里研究WSN應用,包括操作系統和網(wǎng)絡(luò )協(xié)議棧,能夠仿真數量眾多的節點(diǎn),能夠觀(guān)察由不可預測的干擾和噪聲引起的難以琢磨的節點(diǎn)間的相互作用,獲取節點(diǎn)間詳細的細節,從而提高節點(diǎn)投放后的網(wǎng)絡(luò )成功率,減少投放后的網(wǎng)絡(luò )維護工作。目前無(wú)線(xiàn)傳感器網(wǎng)絡(luò )使用的仿真工具主要有NS2、TinyOS、OPNET、OMNET++等等。其中TinyOS是專(zhuān)門(mén)針對無(wú)線(xiàn)傳感器網(wǎng)絡(luò )的特點(diǎn)而研究開(kāi)發(fā)的。
二、無(wú)線(xiàn)傳感器網(wǎng)絡(luò )仿真簡(jiǎn)介
在傳感器網(wǎng)絡(luò )中,單個(gè)傳感器節點(diǎn)有兩個(gè)很突出的特點(diǎn)。一個(gè)特點(diǎn)是它的并發(fā)性很密集;另一個(gè)特點(diǎn)是傳感器節點(diǎn)模塊化程度很高.上述這些特點(diǎn)使得無(wú)線(xiàn)傳感器網(wǎng)絡(luò )仿真需要解決可擴展性與仿真效率、分布與異步特性、動(dòng)態(tài)性、綜合仿真平臺等等問(wèn)題。
三、無(wú)線(xiàn)傳感器網(wǎng)絡(luò )常用仿真工具
無(wú)線(xiàn)傳感器網(wǎng)絡(luò )常用仿真工具有NS2、OPNET、OMNET++、TinyOS,下面我們簡(jiǎn)要介紹它們各自的性能和特點(diǎn)。
3.1 NS2
NS是一種可擴展、以配置和可編程的時(shí)間驅動(dòng)的仿真工具,它是由REAL仿真器發(fā)展而來(lái).在NS的設計中,使用C++和OTCL兩種程序設計語(yǔ)言, C++是一種相對運行速度較快但是轉換比較慢的語(yǔ)言,所以C++語(yǔ)言被用來(lái)實(shí)現網(wǎng)絡(luò )協(xié)議, 編寫(xiě)NS底層的仿真引擎; OTCL是運行速度較慢,但可以快速轉換的腳本語(yǔ)言,正好和C++互補,所以OTCL語(yǔ)言被用來(lái)配置仿真中各種參數,建立仿真的整體結構, OTCL的腳本通過(guò)調用引擎中各類(lèi)屬性、方法,定義網(wǎng)絡(luò )的拓撲,配置源節點(diǎn)、目的節點(diǎn)建立鏈接,產(chǎn)生所有事件的時(shí)間表,運行并跟蹤仿真結果,還可以對結果進(jìn)行相應的統計處理或制圖.NS可以提供有線(xiàn)網(wǎng)絡(luò )、無(wú)線(xiàn)網(wǎng)絡(luò )中鏈路層及其上層精確到數據包的一系列行為仿真。NS中的許多協(xié)議都和真實(shí)代碼十分接近,其真實(shí)性和可靠性是非常高的。
3.2 OPNET
OPNET是在MIT研究成果的基礎上由MIL3公司開(kāi)發(fā)的網(wǎng)絡(luò )仿真軟件產(chǎn)品。 OPNET的主要特點(diǎn)包括以下幾個(gè)方面:(1)采用面向對象的技術(shù),對象的屬性可以任意配置,每一對象屬于相應行為和功能的類(lèi),可以通過(guò)定義新的類(lèi)來(lái)滿(mǎn)足不同的系統要求; (2)OPNET提供了各種通信網(wǎng)絡(luò )和信息系統的處理構件和模塊;(3) OPNET采用圖形化界面建模,為使用者提供三層(網(wǎng)絡(luò )層、節點(diǎn)層、進(jìn)程層)建模機制來(lái)描述現實(shí)的系統;(4) OPNET在過(guò)程層次中使用有限狀態(tài)機來(lái)對其它協(xié)議和過(guò)程進(jìn)行建模,用戶(hù)模型及OPNET內置模型將會(huì )自動(dòng)生成C語(yǔ)言實(shí)現可執行的高效、高離散事件的模擬流程;(5) OPNET內建了很多性能分析器,它會(huì )自動(dòng)采集模擬過(guò)程的結果數據;(6)OPNET幾乎預定義了所有常用的業(yè)務(wù)模型,如均勻分布、泊松分布、歐蘭分等。
3.3 OMNET++
OMNET++是面向對象的離散事件模擬工具,為基于進(jìn)程式和事件驅動(dòng)兩種方式的仿真提供了支持。 OMNET++采用混合式的建模方式,同時(shí)使用了OMNET++特有的ned(Network Discription,網(wǎng)絡(luò )描述)語(yǔ)言和C++進(jìn)行建模。OMNET++主要由六個(gè)部分組成:仿真內核庫、網(wǎng)絡(luò )描述語(yǔ)言的編譯器、圖形化的網(wǎng)絡(luò )編譯器、仿真程序的圖形化用戶(hù)接口、仿真程序的命令行用戶(hù)接口和圖形化的向量輸出工具。OMNET++的主要模型拓撲描述語(yǔ)言NED,采用它可以完成一個(gè)網(wǎng)絡(luò )模型的描述。 網(wǎng)絡(luò )描述包括下列組件:輸入申明、信道定義、系統模塊定義、簡(jiǎn)單模塊和復合模塊定義。使用NED描述網(wǎng)絡(luò ),產(chǎn)生.NED文件,該文件不能直接被C++編譯器使用,需要首先采用OMNET++提供的編譯工具NEDC將.NED文件編譯成.cpp文件。最后,使用C++編譯器將這些文件與用戶(hù)和自己設計的簡(jiǎn)單模塊程序連接成可執行程序。
3.4 TinyOS
TinyOS是專(zhuān)門(mén)針對傳感器研發(fā)出的操作系統。在TinyOS上編程序使用的語(yǔ)言為nesC(C language for network embedded systems) 語(yǔ)言。
nesC語(yǔ)言是由C語(yǔ)言擴展而來(lái)的,意在把組件化/模塊化思想和TinyOS基于事件驅動(dòng)的執行模型結合起來(lái)。 nesC 組件有Module(模塊)和Configuration(連接配置文件)兩種。在模塊中主要實(shí)現代碼的編制,在連接配置文件中主要是將各個(gè)組件和模塊連接起來(lái)成為一個(gè)整體。
TinyOS程序采用的是模塊化設計,所以它的程序核心往往都很小,能夠突破傳感器存儲資源少的限制,這能夠讓TinyOS很有效的運行在無(wú)線(xiàn)傳感器網(wǎng)絡(luò )上并去執行相應的管理工作等。TinyOS的特點(diǎn)主要體現在以下幾個(gè)方面:
(1)組件化編程(Componented-Based Architecture)。TinyOS的組件通??梢苑譃橐韵氯?lèi):硬件抽象組件、合成組件、高層次的軟件組件;硬件抽象組件將物理硬件映射到TinyOS組件模型.合成硬件組件模擬高級硬件的行為.高層次軟件模塊完成控制、路由以及數據傳輸等。}
(2)事件驅動(dòng)模式(Event-Driven Architecture)。事件驅動(dòng)分為硬件驅動(dòng)和軟件事件驅動(dòng)。硬件事件驅動(dòng)也就是由一個(gè)硬件發(fā)出中斷,然后進(jìn)入中斷處理函數。而軟件驅動(dòng)則是通過(guò)singal關(guān)鍵字發(fā)出一個(gè)事件。
(3)任務(wù)和事件并發(fā)模式(Tasks And Events Concurrency Model)。任務(wù)用在對于時(shí)間要求不是很高的應用中,任務(wù)之間是平等的,即在執行時(shí)是按順序先后來(lái)的,而不能相互搶占,TinyOS對任務(wù)是按簡(jiǎn)單的FIFO隊列進(jìn)行處理的。事件用在對于時(shí)間的要求很?chē)栏竦膽弥?而且它可以占先優(yōu)于任務(wù)和其他事件執行。
(4)分段執行(Split-Phase Operations)。在TinyOS中由于tasks 之間不能互相占先執行,所以TinyOS沒(méi)有提供任何阻塞操作,為了讓一個(gè)耗時(shí)較長(cháng)的操作盡快完成,一般來(lái)說(shuō)都是將對這個(gè)操作的需求和這個(gè)操作的完成分開(kāi)來(lái)實(shí)現,以便獲得較高的執行效率。
(5) 輕量級線(xiàn)程(lightweight thread)。輕量級線(xiàn)程(task, 即TinyOS中的任務(wù))按FIFO方式進(jìn)行調度,輕量級線(xiàn)程之間不允許搶占;而硬件處理線(xiàn)程(在TinyOS中,稱(chēng)為硬件處理器),即中斷處理線(xiàn)程可以打斷用戶(hù)的輕量級線(xiàn)程和低優(yōu)先級的中斷處理線(xiàn)程,對硬件中斷進(jìn)行快速處理響應。
(6) 主動(dòng)通信消息(active message)。每一個(gè)消息都維護一個(gè)應用層和處理器。當目標節點(diǎn)收到這個(gè)消息后,就會(huì )把消息中的數據作為參數,并傳遞給應用層的處理器進(jìn)行處理。應用層的處理器一般完成消息數據的解包操作、計算處理或發(fā)送響應消息等工作。
TinyOS操作系統中常用的仿真平臺主要是TOSSIM和Avrora
(1)TOSSIM(TinyOS simulation)是一個(gè)支持基于TinyOS的應用在PC機上運行的模擬器.TOSSIM運行和傳感器硬件相同的代碼,仿真編譯器能直接從TinyOS應用的組件表中編譯生成仿真程序。
(2)Avrora是一種專(zhuān)門(mén)為Atmel和Mica2節點(diǎn)上以AVR單片機語(yǔ)言編寫(xiě)的程序提供仿真分析的工具。它的主要特點(diǎn)如下:1) 為AVR單片機提供了cycle accurate級的仿真,使靜態(tài)程序可以準確的運行。它可以仿真片上(chip-on)設備驅動(dòng)程序,并為片外(off-chip)程序提供了有規則的接口;2)可以添加監測代碼來(lái)報告仿真程序運行的性能,或者可以在仿真結束后收集統計數據,并產(chǎn)生報告;3)提供了一套基本的監控器來(lái)剖析程序,這有助于分析程序的執行模式和資源使用等等;4)Avrora可以用gdb調試程序;5) Avrora可以為程序提供一個(gè)程序流圖,通過(guò)這個(gè)流程圖可以清楚的表示機器代碼程序的結構和組織;6) Avrora中提供了分析能量消耗的工具,并且可以設置設備的帶電大??;7) Avrora可以用來(lái)限制程序的最大堆??臻g,它會(huì )提供一些關(guān)于目前程序中的最大的堆棧結構,和一些關(guān)于空間和時(shí)間消耗的信息報告。
3.5性能比較
TinyOS 用行為建模,可以仿真跨層協(xié)議;仿真程序移植到節點(diǎn)上,不需要二次編碼。
通過(guò)對上述幾種仿真軟件的分析比較,我們可以清楚的看到各個(gè)仿真軟件的特點(diǎn)、適用范圍,我們可以根據研究需要選擇適合的仿真軟件,使得我們的學(xué)習研究可以事半功倍。
結束語(yǔ)
網(wǎng)絡(luò )仿真技術(shù)為通信網(wǎng)絡(luò )規劃和優(yōu)化提供了一種科學(xué)高效的方法。網(wǎng)絡(luò )仿真在國內是近幾年才發(fā)展起來(lái)的,但在國外網(wǎng)絡(luò )仿真技術(shù)已經(jīng)相當成熟,我們應該大膽地借鑒國外先進(jìn)技術(shù),促進(jìn)國內網(wǎng)絡(luò )仿真技術(shù)迅速發(fā)展。
參考文獻
【1】于海斌,曾鵬等.智能無(wú)線(xiàn)傳感器網(wǎng)絡(luò ).科學(xué)出版社,2006,p283~p303,
【2】石懷偉,李明生,王少華,網(wǎng)絡(luò )仿真技術(shù)與OPNET應用實(shí)踐,計算機系統應用2006.第3期
【3】李玥,吳辰文,基于OMNeT++地TCP/IP協(xié)議仿真,蘭州交通大學(xué)學(xué)報(自然科學(xué)版),2005年8月
【4】袁紅林,徐晨,章國安,TOSSIM:無(wú)線(xiàn)傳感器網(wǎng)絡(luò )仿真環(huán)境,傳感器與儀表儀器 ,2006年第22卷第7-1期
c語(yǔ)言相關(guān)文章:c語(yǔ)言教程
c++相關(guān)文章:c++教程
傳感器相關(guān)文章:傳感器工作原理
風(fēng)速傳感器相關(guān)文章:風(fēng)速傳感器原理
評論