基于Zigbee的船舶狀態(tài)監控系統的設計與實(shí)現

4 系統軟件設計
硬件的設計的只是完成了協(xié)議棧中物理層的一些功能,而物理層以上的功能單獨依靠硬件則是不能實(shí)現的,它還需要軟件的驅動(dòng)才能實(shí)現。本系統軟件使用IAR Embedded
Workbench作為開(kāi)發(fā)平臺,并在Z—Stack協(xié)議棧的基礎上進(jìn)行應用軟件的開(kāi)發(fā)。Z—Stack是TI公司的基于Zigbee標準的協(xié)議棧,包含了Zigbee標準描述的各層功能組件模塊,向開(kāi)發(fā)人員提供了一系列的API接口,通過(guò)調用這些接口來(lái)實(shí)現不同的功能。整個(gè)應用程序運行時(shí)可以自動(dòng)形成一個(gè)網(wǎng)絡(luò ),終端設備節點(diǎn)能夠主動(dòng)發(fā)現路由節點(diǎn)或協(xié)調器節點(diǎn)(上級節點(diǎn)),并且一旦加入網(wǎng)路,能夠自動(dòng)建立綁定。
4.1 組網(wǎng)及協(xié)調器節點(diǎn)程序設計
Zigbee網(wǎng)絡(luò )的建立和維護不論多復雜,都從建立網(wǎng)絡(luò )開(kāi)始。當協(xié)調器啟動(dòng)以后,此時(shí)協(xié)調器會(huì )在應用指定一個(gè)的網(wǎng)絡(luò )信道范圍內進(jìn)行能量掃描,通過(guò)監聽(tīng)獲得各個(gè)信道上的能量值,并把能量值進(jìn)行排序,列出信道上的干擾值,拋棄超過(guò)最大允許的能量值的信道,在已存在網(wǎng)絡(luò )最少的信道上建立網(wǎng)絡(luò ),若信道上的存在網(wǎng)絡(luò )數一樣,則在沖突和干擾最少的信道上建立網(wǎng)絡(luò )。當選定網(wǎng)絡(luò )信道以后,會(huì )進(jìn)行一系列的參數設置,包括網(wǎng)絡(luò )地址、PAN標識以及擴展PAN標識等。當這些參數都設置好后,網(wǎng)絡(luò )就基本建立起來(lái)了,只等待其它節點(diǎn)的加入。
組建一個(gè)Zigbee網(wǎng)絡(luò )主要由Zigbee協(xié)議棧的網(wǎng)絡(luò )層實(shí)現,協(xié)調器節點(diǎn)工作的軟件部分包括初始化并組建網(wǎng)絡(luò )、允許子節點(diǎn)加入網(wǎng)絡(luò )以及傳輸數據三大部分構成。在協(xié)調器節點(diǎn)啟動(dòng)后,Zigbee協(xié)議棧會(huì )按照上節所介紹的組網(wǎng)流程去組建一個(gè)Zigbee網(wǎng)絡(luò ),首先在系統初始化之后,掃描并選擇合適的信道后對網(wǎng)絡(luò )參數進(jìn)行設置,并最后確定網(wǎng)絡(luò )是否組建成功,如沒(méi)有組建成功,則協(xié)調器節點(diǎn)重新執行上面的步驟,直至網(wǎng)絡(luò )成功組建。組網(wǎng)成功以后還不算真正的Zigbee傳感網(wǎng)絡(luò ),協(xié)調器還需要監測是否有入網(wǎng)請求并允許有請求的子節點(diǎn)加入網(wǎng)絡(luò ),并成功分配給自己點(diǎn)相應的網(wǎng)絡(luò )地址后,才算組網(wǎng)成功,這只是協(xié)調器的部分任務(wù)。
上面的組網(wǎng)階段完成以后,協(xié)調器在正常工作的過(guò)程中,不斷的檢測有無(wú)數據傳送。其實(shí),當協(xié)調器檢測到有數據的傳送時(shí),程序會(huì )自動(dòng)進(jìn)入中斷接收狀態(tài),在此過(guò)程中,數據會(huì )被暫時(shí)存放在指定的區域,其它外部程序以指針的形式調用這些數據。隨后,協(xié)調器會(huì )判斷數據的來(lái)源,若是上位機通過(guò)串口發(fā)來(lái)的數據,則認為是命令,之后對命令會(huì )進(jìn)行相應的處理;若是傳感數據,則又會(huì )啟動(dòng)相應的數據處理程序,并更新存儲區內的數據,之后通過(guò)串口傳送至上位機進(jìn)行進(jìn)一步的處理。圖4所示是其程序流程圖。

路由節點(diǎn)程序除了一些配置和協(xié)調器節點(diǎn)不同之外,其它基本一致。
4.2 終端設備節點(diǎn)程序設計
終端設備節點(diǎn)要將收集到的溫度信息送到路由器或協(xié)調器,終端設備節點(diǎn)首先要加入網(wǎng)絡(luò ),與此同時(shí),該節點(diǎn)還要將自己綁定到第一個(gè)響應的協(xié)調器節點(diǎn)或路由節點(diǎn)。終端設備節點(diǎn)通過(guò)函數ZDO_StartDevice0自發(fā)的加入網(wǎng)絡(luò ),并通過(guò)函數zb_BindDevice0發(fā)出綁定請求,綁定成功后終端設備節點(diǎn)程序循環(huán)調用SendData0函數周期性的發(fā)送采集到的溫度信息,采取端到端確認的發(fā)送模式。函數zb_SendDataConfirm0可以作為指示應答,如果協(xié)調器節點(diǎn)或路由節點(diǎn)沒(méi)有指示應答,終端設備節點(diǎn)會(huì )自動(dòng)解除本次綁定,重新尋找網(wǎng)絡(luò )并進(jìn)行綁定。圖5所示為其程序流程圖。

5 系統測試
5.1 通信測試
用IAR把相應的程序分別下載到各節點(diǎn)。通過(guò)串口接入電腦,在對串口進(jìn)行相應設置后,程序運行時(shí),便可在PC機的終端中查看到經(jīng)過(guò)處理后的的溫度數據信息(為方便測試,終端設備節點(diǎn)只進(jìn)行溫度的采集)。利用串口調試助手接收到的溫度數據如圖6所示。在此過(guò)程中,用標準溫度計對同一空間進(jìn)行溫度測量,測量結果顯示和本實(shí)驗結果只有極小誤差,可以滿(mǎn)足大部分測量需求。同時(shí)進(jìn)行了通信距離測試,在沒(méi)有路由節點(diǎn)的情況下進(jìn)行點(diǎn)對點(diǎn)的測試,測試環(huán)境為實(shí)驗室樓并有墻壁阻擋,測試結果如表1所示。數據表明,無(wú)線(xiàn)網(wǎng)絡(luò )完全可以覆蓋大部分中小型船舶機艙環(huán)境。如果需要還可以添加功放芯片CC2591,經(jīng)測試,傳播距離會(huì )成倍數增加。

5.2 功耗測試
溫度傳感節點(diǎn)的功耗問(wèn)題直接影響了系統的壽命,在傳感節點(diǎn)每發(fā)送一次數據后就進(jìn)入休眠狀態(tài),在完成一次數據的采集和發(fā)送后,傳感節點(diǎn)會(huì )自動(dòng)進(jìn)入休眠低功耗狀態(tài);在休眠狀態(tài)結束時(shí),傳感節點(diǎn)就會(huì )重新進(jìn)入到工作過(guò)程,可有效降低功耗。溫度傳感節點(diǎn)采用兩節5號電池供能,休眠狀態(tài)下電流為0.4μA,工作狀態(tài)下電流為243 mA。經(jīng)測試,兩節5號電池的正常工作時(shí)間在6個(gè)月左右,完全符合低功耗的性能需求。
6 結束語(yǔ)
根據船舶內部的實(shí)際情況,以片上系統CC2530芯片為核心設計了一個(gè)完整的Zigbee無(wú)線(xiàn)船舶狀態(tài)監控網(wǎng)絡(luò )。它能有效解決有線(xiàn)監控網(wǎng)絡(luò )布線(xiàn)難、擴展性差等問(wèn)題,并具有可靠性強,組網(wǎng)靈活性高以及自愈能力強等特點(diǎn),基本能滿(mǎn)足對中小型船舶機艙一些重要設備、環(huán)境參數的無(wú)線(xiàn)監控。
評論