基于Zigbee的船舶狀態(tài)監(jiān)控系統(tǒng)的設(shè)計與實(shí)現(xiàn)
4 系統(tǒng)軟件設(shè)計
硬件的設(shè)計的只是完成了協(xié)議棧中物理層的一些功能,而物理層以上的功能單獨(dú)依靠硬件則是不能實(shí)現(xiàn)的,它還需要軟件的驅(qū)動才能實(shí)現(xiàn)。本系統(tǒng)軟件使用IAR Embedded
Workbench作為開發(fā)平臺,并在Z—Stack協(xié)議棧的基礎(chǔ)上進(jìn)行應(yīng)用軟件的開發(fā)。Z—Stack是TI公司的基于Zigbee標(biāo)準(zhǔn)的協(xié)議棧,包含了Zigbee標(biāo)準(zhǔn)描述的各層功能組件模塊,向開發(fā)人員提供了一系列的API接口,通過調(diào)用這些接口來實(shí)現(xiàn)不同的功能。整個應(yīng)用程序運(yùn)行時可以自動形成一個網(wǎng)絡(luò),終端設(shè)備節(jié)點(diǎn)能夠主動發(fā)現(xiàn)路由節(jié)點(diǎn)或協(xié)調(diào)器節(jié)點(diǎn)(上級節(jié)點(diǎn)),并且一旦加入網(wǎng)路,能夠自動建立綁定。
4.1 組網(wǎng)及協(xié)調(diào)器節(jié)點(diǎn)程序設(shè)計
Zigbee網(wǎng)絡(luò)的建立和維護(hù)不論多復(fù)雜,都從建立網(wǎng)絡(luò)開始。當(dāng)協(xié)調(diào)器啟動以后,此時協(xié)調(diào)器會在應(yīng)用指定一個的網(wǎng)絡(luò)信道范圍內(nèi)進(jìn)行能量掃描,通過監(jiān)聽獲得各個信道上的能量值,并把能量值進(jìn)行排序,列出信道上的干擾值,拋棄超過最大允許的能量值的信道,在已存在網(wǎng)絡(luò)最少的信道上建立網(wǎng)絡(luò),若信道上的存在網(wǎng)絡(luò)數(shù)一樣,則在沖突和干擾最少的信道上建立網(wǎng)絡(luò)。當(dāng)選定網(wǎng)絡(luò)信道以后,會進(jìn)行一系列的參數(shù)設(shè)置,包括網(wǎng)絡(luò)地址、PAN標(biāo)識以及擴(kuò)展PAN標(biāo)識等。當(dāng)這些參數(shù)都設(shè)置好后,網(wǎng)絡(luò)就基本建立起來了,只等待其它節(jié)點(diǎn)的加入。
組建一個Zigbee網(wǎng)絡(luò)主要由Zigbee協(xié)議棧的網(wǎng)絡(luò)層實(shí)現(xiàn),協(xié)調(diào)器節(jié)點(diǎn)工作的軟件部分包括初始化并組建網(wǎng)絡(luò)、允許子節(jié)點(diǎn)加入網(wǎng)絡(luò)以及傳輸數(shù)據(jù)三大部分構(gòu)成。在協(xié)調(diào)器節(jié)點(diǎn)啟動后,Zigbee協(xié)議棧會按照上節(jié)所介紹的組網(wǎng)流程去組建一個Zigbee網(wǎng)絡(luò),首先在系統(tǒng)初始化之后,掃描并選擇合適的信道后對網(wǎng)絡(luò)參數(shù)進(jìn)行設(shè)置,并最后確定網(wǎng)絡(luò)是否組建成功,如沒有組建成功,則協(xié)調(diào)器節(jié)點(diǎn)重新執(zhí)行上面的步驟,直至網(wǎng)絡(luò)成功組建。組網(wǎng)成功以后還不算真正的Zigbee傳感網(wǎng)絡(luò),協(xié)調(diào)器還需要監(jiān)測是否有入網(wǎng)請求并允許有請求的子節(jié)點(diǎn)加入網(wǎng)絡(luò),并成功分配給自己點(diǎn)相應(yīng)的網(wǎng)絡(luò)地址后,才算組網(wǎng)成功,這只是協(xié)調(diào)器的部分任務(wù)。
上面的組網(wǎng)階段完成以后,協(xié)調(diào)器在正常工作的過程中,不斷的檢測有無數(shù)據(jù)傳送。其實(shí),當(dāng)協(xié)調(diào)器檢測到有數(shù)據(jù)的傳送時,程序會自動進(jìn)入中斷接收狀態(tài),在此過程中,數(shù)據(jù)會被暫時存放在指定的區(qū)域,其它外部程序以指針的形式調(diào)用這些數(shù)據(jù)。隨后,協(xié)調(diào)器會判斷數(shù)據(jù)的來源,若是上位機(jī)通過串口發(fā)來的數(shù)據(jù),則認(rèn)為是命令,之后對命令會進(jìn)行相應(yīng)的處理;若是傳感數(shù)據(jù),則又會啟動相應(yīng)的數(shù)據(jù)處理程序,并更新存儲區(qū)內(nèi)的數(shù)據(jù),之后通過串口傳送至上位機(jī)進(jìn)行進(jìn)一步的處理。圖4所示是其程序流程圖。
路由節(jié)點(diǎn)程序除了一些配置和協(xié)調(diào)器節(jié)點(diǎn)不同之外,其它基本一致。
4.2 終端設(shè)備節(jié)點(diǎn)程序設(shè)計
終端設(shè)備節(jié)點(diǎn)要將收集到的溫度信息送到路由器或協(xié)調(diào)器,終端設(shè)備節(jié)點(diǎn)首先要加入網(wǎng)絡(luò),與此同時,該節(jié)點(diǎn)還要將自己綁定到第一個響應(yīng)的協(xié)調(diào)器節(jié)點(diǎn)或路由節(jié)點(diǎn)。終端設(shè)備節(jié)點(diǎn)通過函數(shù)ZDO_StartDevice0自發(fā)的加入網(wǎng)絡(luò),并通過函數(shù)zb_BindDevice0發(fā)出綁定請求,綁定成功后終端設(shè)備節(jié)點(diǎn)程序循環(huán)調(diào)用SendData0函數(shù)周期性的發(fā)送采集到的溫度信息,采取端到端確認(rèn)的發(fā)送模式。函數(shù)zb_SendDataConfirm0可以作為指示應(yīng)答,如果協(xié)調(diào)器節(jié)點(diǎn)或路由節(jié)點(diǎn)沒有指示應(yīng)答,終端設(shè)備節(jié)點(diǎn)會自動解除本次綁定,重新尋找網(wǎng)絡(luò)并進(jìn)行綁定。圖5所示為其程序流程圖。
5 系統(tǒng)測試
5.1 通信測試
用IAR把相應(yīng)的程序分別下載到各節(jié)點(diǎn)。通過串口接入電腦,在對串口進(jìn)行相應(yīng)設(shè)置后,程序運(yùn)行時,便可在PC機(jī)的終端中查看到經(jīng)過處理后的的溫度數(shù)據(jù)信息(為方便測試,終端設(shè)備節(jié)點(diǎn)只進(jìn)行溫度的采集)。利用串口調(diào)試助手接收到的溫度數(shù)據(jù)如圖6所示。在此過程中,用標(biāo)準(zhǔn)溫度計對同一空間進(jìn)行溫度測量,測量結(jié)果顯示和本實(shí)驗(yàn)結(jié)果只有極小誤差,可以滿足大部分測量需求。同時進(jìn)行了通信距離測試,在沒有路由節(jié)點(diǎn)的情況下進(jìn)行點(diǎn)對點(diǎn)的測試,測試環(huán)境為實(shí)驗(yàn)室樓并有墻壁阻擋,測試結(jié)果如表1所示。數(shù)據(jù)表明,無線網(wǎng)絡(luò)完全可以覆蓋大部分中小型船舶機(jī)艙環(huán)境。如果需要還可以添加功放芯片CC2591,經(jīng)測試,傳播距離會成倍數(shù)增加。
5.2 功耗測試
溫度傳感節(jié)點(diǎn)的功耗問題直接影響了系統(tǒng)的壽命,在傳感節(jié)點(diǎn)每發(fā)送一次數(shù)據(jù)后就進(jìn)入休眠狀態(tài),在完成一次數(shù)據(jù)的采集和發(fā)送后,傳感節(jié)點(diǎn)會自動進(jìn)入休眠低功耗狀態(tài);在休眠狀態(tài)結(jié)束時,傳感節(jié)點(diǎn)就會重新進(jìn)入到工作過程,可有效降低功耗。溫度傳感節(jié)點(diǎn)采用兩節(jié)5號電池供能,休眠狀態(tài)下電流為0.4μA,工作狀態(tài)下電流為243 mA。經(jīng)測試,兩節(jié)5號電池的正常工作時間在6個月左右,完全符合低功耗的性能需求。
6 結(jié)束語
根據(jù)船舶內(nèi)部的實(shí)際情況,以片上系統(tǒng)CC2530芯片為核心設(shè)計了一個完整的Zigbee無線船舶狀態(tài)監(jiān)控網(wǎng)絡(luò)。它能有效解決有線監(jiān)控網(wǎng)絡(luò)布線難、擴(kuò)展性差等問題,并具有可靠性強(qiáng),組網(wǎng)靈活性高以及自愈能力強(qiáng)等特點(diǎn),基本能滿足對中小型船舶機(jī)艙一些重要設(shè)備、環(huán)境參數(shù)的無線監(jiān)控。
評論