楊玉紅 黑龍江建筑職業(yè)技術(shù)學(xué)院,哈爾濱 150025
無線傳感器網(wǎng)絡(luò)系統(tǒng)軟件開發(fā)研究與探求
楊玉紅 黑龍江建筑職業(yè)技術(shù)學(xué)院,哈爾濱 150025
軟件開發(fā)是整個(gè)項(xiàng)目系統(tǒng)設(shè)計(jì)的重點(diǎn)和關(guān)鍵所在。它直接決定著系統(tǒng)功能實(shí)現(xiàn)的好壞、網(wǎng)絡(luò)的運(yùn)行的穩(wěn)定性。在ZigBee技術(shù)的基礎(chǔ)上,本文進(jìn)行了無線傳感器網(wǎng)絡(luò)系統(tǒng)的軟件開發(fā),對(duì)系統(tǒng)軟件的總體結(jié)構(gòu)、開發(fā)流程進(jìn)行了介紹。
軟件系統(tǒng);路由節(jié)點(diǎn);協(xié)調(diào)器節(jié)點(diǎn)
Low-power wireless sensor networks wmbedded Software Development
Abstract: Software development is the focus of the project design and key. It directly determines the quality system function, operation of the network stability. Based on the ZigBee technology,this wireless sensor network system for software development, the overall structure of the system software, the development process was introduced.Key words software system; routing node; coordinator node
本系統(tǒng)軟件包括路由(Router)節(jié)點(diǎn)程序和協(xié)調(diào)器(Coordinator)節(jié)點(diǎn)程序兩部分,這兩部分程序相互配合,共同實(shí)現(xiàn)數(shù)據(jù)的采集以及傳輸。
路由節(jié)點(diǎn)一方面實(shí)現(xiàn)數(shù)據(jù)的采集和處理,另一方面實(shí)現(xiàn)數(shù)據(jù)的融合和路由,對(duì)本身采集的數(shù)據(jù)和收到的其他節(jié)點(diǎn)發(fā)送的數(shù)據(jù)進(jìn)行綜合,轉(zhuǎn)發(fā)路由到協(xié)調(diào)器節(jié)點(diǎn)。不論ZigBee網(wǎng)絡(luò)采用何種拓?fù)浞绞剑W(wǎng)絡(luò)都需要有一個(gè)并且只能有一個(gè)協(xié)調(diào)器節(jié)點(diǎn),它是整個(gè)網(wǎng)絡(luò)的控制中心。這種角色的設(shè)備一方面負(fù)責(zé)網(wǎng)絡(luò)的配置和管理,包括定義通信信道、網(wǎng)絡(luò)標(biāo)識(shí)符(PANID),配置網(wǎng)絡(luò)的profile,響應(yīng)節(jié)點(diǎn)加入網(wǎng)絡(luò)的請(qǐng)求和綁定請(qǐng)求,為其他節(jié)點(diǎn)分配網(wǎng)絡(luò)地址、維護(hù)路由表等;另一方面還負(fù)責(zé)接收各路由節(jié)點(diǎn)發(fā)來的數(shù)據(jù),并將所得到的數(shù)據(jù)通過串口上傳到PC。系統(tǒng)總體軟件結(jié)構(gòu)如圖1所示。
圖1 ZigBee網(wǎng)絡(luò)系統(tǒng)軟件總體結(jié)構(gòu)
由上圖可以看出,軟件設(shè)計(jì)部分基本上與硬件功能模塊相對(duì)應(yīng),路由節(jié)點(diǎn)和協(xié)調(diào)器節(jié)點(diǎn)相互獨(dú)立,但有時(shí)又必須交互運(yùn)行才能完成特定任務(wù)。路由節(jié)點(diǎn)通過執(zhí)行各類傳感器的驅(qū)動(dòng)程序采集環(huán)境數(shù)據(jù),然后啟動(dòng)數(shù)據(jù)發(fā)送程序,該程序模塊首先設(shè)置數(shù)據(jù)發(fā)送的參數(shù),構(gòu)造符合AFDE(應(yīng)用框架層數(shù)據(jù)實(shí)體)結(jié)構(gòu)的數(shù)據(jù)幀,然后通過各層的數(shù)據(jù)服務(wù)接入點(diǎn)發(fā)出數(shù)據(jù)發(fā)送請(qǐng)求,最后將數(shù)據(jù)發(fā)送出去。數(shù)據(jù)以多跳的形式到達(dá)協(xié)調(diào)器節(jié)點(diǎn)后,觸發(fā)協(xié)調(diào)器節(jié)點(diǎn)執(zhí)行數(shù)據(jù)接收程序,該程序模塊通過調(diào)用合適的函數(shù)將接收到的數(shù)據(jù)解析成應(yīng)用層能識(shí)別的數(shù)據(jù)結(jié)構(gòu),進(jìn)行數(shù)據(jù)處理后,調(diào)用串口數(shù)據(jù)發(fā)送程序,最終將數(shù)據(jù)上傳至計(jì)算機(jī)。
基于ZigBee的應(yīng)用程序?qū)嶋H上是和ZigBee協(xié)議棧交替的對(duì)處理器和外圍部件進(jìn)行操作。為了實(shí)現(xiàn)這個(gè)目標(biāo),Jennic在ZigBee協(xié)議棧的基礎(chǔ)上提供了BOS基本操作系統(tǒng)。ZigBee協(xié)議棧的開發(fā)接口API(Application Programming Interface,應(yīng)用程序編程接口)如圖2所示。圖中淺色部分就是BOS調(diào)用的用戶程序的接口。
圖2 ZigBee協(xié)議棧的開發(fā)接口API
這些函數(shù)是用戶應(yīng)用和ZigBee協(xié)議棧的進(jìn)行交互的基本接口。從縱向結(jié)構(gòu)看,這些API函數(shù)相互調(diào)用實(shí)現(xiàn)應(yīng)用層、網(wǎng)絡(luò)層、MAC層和底層硬件之間的數(shù)據(jù)和命令傳輸。從橫向來看,它們實(shí)現(xiàn)了用戶應(yīng)用程序、BOS簡(jiǎn)單操作系統(tǒng)和ZigBee協(xié)議棧之間的數(shù)據(jù)和命令傳輸。
這些函數(shù)大致可分成三類,第一類是應(yīng)用的初始化函數(shù),它們用于在設(shè)備上電時(shí)對(duì)協(xié)議棧進(jìn)行初始化;第二類是應(yīng)用程序調(diào)用協(xié)議棧函數(shù),這類函數(shù)通常由第一類函數(shù)進(jìn)行調(diào)用;第三類是協(xié)議棧調(diào)用應(yīng)用程序的函數(shù),這類函數(shù)通常作為協(xié)議棧和應(yīng)用程序進(jìn)行通訊的接口。
當(dāng)設(shè)備上電后,應(yīng)用程序從AppColdStart函數(shù)開始運(yùn)行。它是整個(gè)用戶應(yīng)用程序的入口,在該函數(shù)體中應(yīng)該調(diào)用一系列的協(xié)議棧和BOS的初始化函數(shù),完成無線信道編號(hào)、ZigBee網(wǎng)絡(luò)的ID等網(wǎng)絡(luò)系統(tǒng)參數(shù)的設(shè)置,之后啟動(dòng)BOS,并把程序控制權(quán)交給BOS。
在調(diào)用JZA_vAppDefineTasks函數(shù)之前,BOS還要執(zhí)行一些內(nèi)部函數(shù)。在這里應(yīng)用程序向BOS定義自己的任務(wù),定義完成后,控制權(quán)還給BOS。
執(zhí)行完內(nèi)部函數(shù)之后,BOS將控制權(quán)還給應(yīng)用程序來執(zhí)行最后一個(gè)初始化函數(shù)JZA_boAppStart。用戶程序可以利用該函數(shù)調(diào)用應(yīng)用框架API(AF API),為節(jié)點(diǎn)的端點(diǎn)注冊(cè)ZigBee描述符,為以后的數(shù)據(jù)傳輸做準(zhǔn)備。在JZA_boAppStart函數(shù)的最后需要調(diào)用JZS_vStartStack函數(shù)啟動(dòng)ZigBee協(xié)議棧。在執(zhí)行JZA_boAppStart函數(shù)過程中,協(xié)調(diào)器節(jié)點(diǎn)會(huì)試圖發(fā)起網(wǎng)絡(luò),而路由節(jié)點(diǎn)則試圖加入網(wǎng)絡(luò)。這些操作的結(jié)果可以通過指示網(wǎng)絡(luò)事件的JZA_vStackEvent函數(shù)進(jìn)行查詢。如果操作成功,協(xié)調(diào)器節(jié)點(diǎn)和路由節(jié)點(diǎn)則開始各自的工作。當(dāng)這些完成之后,應(yīng)用程序?qū)⒖刂茩?quán)交給BOS。
在BOS和ZigBee協(xié)議棧成功啟動(dòng)后,程序控制權(quán)會(huì)根據(jù)發(fā)生的網(wǎng)絡(luò)事件,通過調(diào)用應(yīng)用函數(shù)實(shí)現(xiàn)在BOS、ZigBee協(xié)議棧和應(yīng)用程序三者之間的傳遞。其中,JZA_vAppEventHandler函數(shù)一直被BOS自動(dòng)調(diào)用,用戶可以把定期執(zhí)行的任務(wù)或需要處理的硬件事件放在此函數(shù)中。其它函數(shù)是事件驅(qū)動(dòng)函數(shù),只有在相應(yīng)事件發(fā)生時(shí)才被調(diào)用。用戶執(zhí)行完一個(gè)函數(shù)之后,控制權(quán)將返還給BOS。BOS還會(huì)有規(guī)律的把控制權(quán)交給ZigBee協(xié)議棧,以便ZigBee協(xié)議棧及時(shí)處理一些必要的事務(wù)。
10.3969/j.issn.1001-8972.2011.08.058