0 引言
無(wú)線傳感器網(wǎng)絡(luò)是由部署在監(jiān)測(cè)區(qū)域內(nèi)的大量廉價(jià)微型傳感器節(jié)點(diǎn),通過(guò)無(wú)線通信方式組成一個(gè)多跳的自組織的網(wǎng)絡(luò)系統(tǒng),其目的是協(xié)同感知、采集和處理網(wǎng)絡(luò)覆蓋區(qū)域中感知對(duì)象的信息,并發(fā)送給觀測(cè)者。無(wú)線傳感器網(wǎng)絡(luò)技術(shù)研究涉及到多個(gè)熱點(diǎn)學(xué)科的前沿領(lǐng)域,比如傳感器技術(shù)、現(xiàn)代網(wǎng)絡(luò)技術(shù)、嵌入式計(jì)算機(jī)技術(shù)、無(wú)線通信技術(shù)等。由于無(wú)線傳感器網(wǎng)絡(luò)在工業(yè)監(jiān)測(cè)、環(huán)境檢測(cè)、醫(yī)療監(jiān)護(hù)、軍事偵察等眾多的領(lǐng)域都有著廣闊的應(yīng)用前景,因而引起了世界各國(guó)工業(yè)界,學(xué)術(shù)界和軍事部門(mén)的重視,并且迅速成為當(dāng)今世界研究的熱點(diǎn)之一。
1 無(wú)線傳感器網(wǎng)絡(luò)的主要特點(diǎn)
傳感器網(wǎng)絡(luò)節(jié)點(diǎn)硬件一般都由數(shù)據(jù)采集、數(shù)據(jù)處理、數(shù)據(jù)收發(fā)和電源等四個(gè)單元組成。數(shù)據(jù)采集單元通過(guò)傳感器采集外界數(shù)據(jù)并將其轉(zhuǎn)化為數(shù)字信號(hào);數(shù)據(jù)處理單元是節(jié)點(diǎn)的核心模塊,負(fù)責(zé)協(xié)調(diào)節(jié)點(diǎn)各部分的工作,如對(duì)數(shù)據(jù)采集單元采集的數(shù)據(jù)進(jìn)行必要的處理和保存,以及數(shù)據(jù)收發(fā)單元工作模式的設(shè)置等;數(shù)據(jù)收發(fā)單元負(fù)責(zé)數(shù)據(jù)的無(wú)線傳輸以及與數(shù)據(jù)處理單元的數(shù)據(jù)交互。上述四大基本模塊與相應(yīng)的操作系統(tǒng)、協(xié)議棧和應(yīng)用程序共同構(gòu)成一個(gè)基本的無(wú)線傳感器網(wǎng)絡(luò)節(jié)點(diǎn),眾多的網(wǎng)絡(luò)節(jié)點(diǎn)分布在一起,就可以完成無(wú)線傳感網(wǎng)絡(luò)的基本功能。
在軟件設(shè)計(jì)方面,本系統(tǒng)以專用嵌入式實(shí)時(shí)操作系統(tǒng)為依托,來(lái)管理、協(xié)調(diào)傳感器節(jié)點(diǎn)各硬件部分的工作。上層應(yīng)用以及各層的通信協(xié)議都以節(jié)能為中心,必要時(shí)可以犧牲其他的一些網(wǎng)絡(luò)性能指標(biāo)來(lái)獲得更高的電源效率。圖1所示是一個(gè)傳感器網(wǎng)絡(luò)節(jié)點(diǎn)的基本組成。
傳統(tǒng)的無(wú)線網(wǎng)絡(luò)設(shè)計(jì)基本上都是為了同時(shí)滿足人們各種各樣的需要,如語(yǔ)音、視頻、圖像等。而無(wú)線傳感器網(wǎng)絡(luò)一般是為了某個(gè)特定的需要而設(shè)計(jì)的,它是一種基于應(yīng)用的無(wú)線網(wǎng)絡(luò),與移動(dòng)通信網(wǎng)、無(wú)線局域網(wǎng)、Bluetooth相比,無(wú)線傳感器網(wǎng)絡(luò)具有以下主要特點(diǎn):
(1)電源能量有限:無(wú)線網(wǎng)絡(luò)中,每個(gè)節(jié)點(diǎn)的電源都是有限的,網(wǎng)絡(luò)大多工作在無(wú)人區(qū)或者對(duì)人體有傷害的惡劣環(huán)境中,一般更換電源幾乎都是很困難的事。
(2)計(jì)算能力有限:傳感器網(wǎng)絡(luò)節(jié)點(diǎn)都采用具有嵌入式特性的處理器,但嵌入式處理器的處理能力,使傳感器節(jié)點(diǎn)的計(jì)算能力比較有限。
(3)無(wú)線傳感器網(wǎng)絡(luò)節(jié)點(diǎn)數(shù)量大,分布范圍廣,網(wǎng)絡(luò)中的傳感器節(jié)點(diǎn)十分密集,數(shù)量巨大,有時(shí)可能達(dá)到幾百,幾千,甚至更多。
(4)動(dòng)態(tài)性拓?fù)洌簜鞲衅骶W(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)可能因?yàn)榄h(huán)境或節(jié)點(diǎn)電能耗盡等因素而改變,這就要求傳感器網(wǎng)絡(luò)系統(tǒng)能夠適應(yīng)這種變化。
2 TinyOS操作系統(tǒng)
由于無(wú)線傳感器網(wǎng)絡(luò)節(jié)點(diǎn)的資源十分有限,傳統(tǒng)的嵌入式操作系統(tǒng)難以正常有效地運(yùn)行和工作,特別對(duì)能量和內(nèi)存的需求矛盾比較突出。因此,需要一種全新的嵌入式操作系統(tǒng)來(lái)滿足無(wú)線傳感器節(jié)點(diǎn)的基本需求。TinyOS操作系統(tǒng)就是美國(guó)加州大學(xué)伯克利分校的研究人員針對(duì)無(wú)線傳感器網(wǎng)絡(luò)設(shè)計(jì)的開(kāi)源嵌入式操作系統(tǒng)。TinyOS操作系統(tǒng)主要使用了輕量級(jí)線程、主動(dòng)消息通信、事件驅(qū)動(dòng)模式、組件化編程等技術(shù)。
TinyOS操作系統(tǒng)最初使用匯編和C語(yǔ)言。但經(jīng)研究人員進(jìn)一步的研究及使用后發(fā)現(xiàn),C語(yǔ)言并不能有效和方便地支持無(wú)線傳感器網(wǎng)絡(luò)應(yīng)用程序的開(kāi)發(fā)。因而在經(jīng)過(guò)仔細(xì)研究和設(shè)計(jì),并在對(duì)C語(yǔ)言進(jìn)行了一定擴(kuò)展的基礎(chǔ)上,提出了支持組件化編程的nesC語(yǔ)言,該語(yǔ)言可以把組件化、模塊化思想和基于事件驅(qū)動(dòng)的執(zhí)行模型結(jié)合起來(lái)。由于TinyOS操作系統(tǒng)和基于TinyOS操作系統(tǒng)的應(yīng)用程序全部使用nesC語(yǔ)言編寫(xiě),因此,在介紹TinyOS操作系統(tǒng)之前,首先介紹一下nesC語(yǔ)言。
3 nesC語(yǔ)言
TinyOS和在其上運(yùn)行的應(yīng)用程序可以看成是一個(gè)大的“執(zhí)行程序”,它由許多功能獨(dú)立且相互有聯(lián)系的軟件組件構(gòu)成,圖2所示是nesC語(yǔ)言的一般程序框架。該系統(tǒng)中的一個(gè)組件一般會(huì)提供一些接口(假定組件名為ComA),接口可以被認(rèn)為是這個(gè)軟件組件實(shí)現(xiàn)的一組函數(shù)的聲明,是單獨(dú)定義的一組命令和事件,其他組件通過(guò)引用相同接口聲明來(lái)使用這個(gè)組件(ComA)的函數(shù),從而實(shí)現(xiàn)組件間功能的相互調(diào)用,即組件的接口是實(shí)現(xiàn)組件間互連的通道。但若組件中實(shí)現(xiàn)的函數(shù)并未被它在接口中說(shuō)明,就不能被其他組件所使用。nesC語(yǔ)言的定義中存在兩種不同功能的組件:其中組件接口中的函數(shù)功能專門(mén)在模塊的組件文件中實(shí)現(xiàn),而不同組件之間的關(guān)系則是專門(mén)通過(guò)稱為配件的組件文件來(lái)描述的。
本系統(tǒng)中的接口一般指一系列聲明的有名函數(shù)的集合,同時(shí),接口也是連接不同組件的紐帶。組件的接口通常是雙向的,這種接口實(shí)際上是提供者組件和使用者組件之間的一個(gè)多功能交互通道。接口的提供者所實(shí)現(xiàn)的接口的一組功能函數(shù)稱為命令;接口的使用者需要實(shí)現(xiàn)的一組功能函數(shù)稱為事件。