竇文博,王衛(wèi)東
(江蘇科技大學(xué) 計(jì) 算機(jī)科學(xué)與工程學(xué)院,江蘇 鎮(zhèn) 江212003)
船舶狀態(tài)監(jiān)控系統(tǒng)是現(xiàn)代船舶自動(dòng)化的一個(gè)重要標(biāo)志,可分為機(jī)艙內(nèi)監(jiān)控和機(jī)艙外監(jiān)控。機(jī)艙內(nèi)船舶主要機(jī)械設(shè)備的工作狀態(tài)以及機(jī)艙外船舶的運(yùn)行環(huán)境是否正常,直接關(guān)系著整個(gè)船舶能否正常運(yùn)行,因而對(duì)船舶相關(guān)機(jī)械設(shè)備和環(huán)境的重要參數(shù)(溫度,壓力,氣體濃度等)進(jìn)行實(shí)時(shí)監(jiān)控具有重要意義。目前的船舶監(jiān)控模式基本為有線式的集中監(jiān)控,而利用無線傳感網(wǎng)絡(luò)節(jié)點(diǎn)來替代傳統(tǒng)的有線的傳感網(wǎng)絡(luò)節(jié)點(diǎn)進(jìn)行相關(guān)的監(jiān)測(cè)和控制工作,能夠有效的解決由于船舶空間的復(fù)雜性造成的布線困難、不易維護(hù)等技術(shù)難點(diǎn),此外還降低了施工人員的工作強(qiáng)度以及工程成本[1]。因此,利用Zigbee無線技術(shù)進(jìn)行監(jiān)控,相比與有線監(jiān)控技術(shù)具有許多技術(shù)優(yōu)勢(shì)。
Zigbee是一種新興的基于 IEEE802.15.4無線標(biāo)準(zhǔn)開發(fā)的近距離、低復(fù)雜度、低成本、低功耗、自組織的無線組網(wǎng)通信技術(shù),以 2.4 GHz為主要頻段,采用擴(kuò)頻技術(shù)[2]。每個(gè)具有完整功能的Zigbee節(jié)點(diǎn)有兩種功能:與監(jiān)控對(duì)象(如傳感器節(jié)點(diǎn))直接進(jìn)行連接,來完成數(shù)據(jù)的采集和監(jiān)控任務(wù);此外還有簡單的路由中轉(zhuǎn)功能,在自己信號(hào)覆蓋的范圍內(nèi),與網(wǎng)絡(luò)中其它的承擔(dān)中轉(zhuǎn)任務(wù)的多個(gè)節(jié)點(diǎn)進(jìn)行無線連接。由于其架構(gòu)簡單,再加上節(jié)點(diǎn)體積小,且能自動(dòng)組網(wǎng),因此網(wǎng)絡(luò)布局十分簡單方便;再加上大量的節(jié)點(diǎn)能進(jìn)行群體協(xié)作,網(wǎng)絡(luò)本身具有很強(qiáng)的自愈能力,任何一個(gè)節(jié)點(diǎn)的損壞都不會(huì)對(duì)整體任務(wù)的完成造成致命性的影響,非常適合用來組建無線傳感網(wǎng)絡(luò)[3]。由于這些特點(diǎn),Zigbee技術(shù)在將來的工業(yè)控制、家庭自動(dòng)化、汽車自動(dòng)化、樓宇自動(dòng)化、消費(fèi)電子、醫(yī)用設(shè)備等領(lǐng)域發(fā)揮的作用會(huì)越來越突出[4]。
Zigbee協(xié)議標(biāo)準(zhǔn)采用分層結(jié)構(gòu),每一層為其上層提供特定服務(wù):數(shù)據(jù)服務(wù)實(shí)體和管理實(shí)體分別提供數(shù)據(jù)傳輸服務(wù)和其他管理服務(wù)。?協(xié)議棧中的每一層都通過服務(wù)訪問點(diǎn)(SAP)向上層提供相應(yīng)的服務(wù),每個(gè)SAP通過服務(wù)原語來實(shí)現(xiàn)對(duì)應(yīng)的功能。Zigbee聯(lián)盟在IEEE802.15.4標(biāo)準(zhǔn)定義的物理層(PHY)和媒體訪問控制層 (MAC)的基礎(chǔ)上定義了網(wǎng)絡(luò)層(NWK)、應(yīng)用層(APL)以及安全服務(wù)規(guī)范。應(yīng)用層由應(yīng)用框架(AF)、應(yīng)用支持子層(APS)、Zigbee 設(shè)備對(duì)象(ZDO) 以及用戶自定義的應(yīng)用對(duì)象組成[5]。用戶可以在這個(gè)標(biāo)準(zhǔn)的基礎(chǔ)上開發(fā)所需的應(yīng)用。
系統(tǒng)主要由Zigbee終端設(shè)備節(jié)點(diǎn)(傳感器節(jié)點(diǎn))、路由設(shè)備節(jié)點(diǎn)、協(xié)調(diào)器節(jié)點(diǎn)和上位機(jī)監(jiān)控系統(tǒng)組成,整體結(jié)構(gòu)圖如圖1所示?;赯igbee的船舶狀態(tài)監(jiān)控系統(tǒng)的主要功能就是將船舶的傳感信息參數(shù)數(shù)據(jù)采集至Zigbee終端設(shè)備節(jié)點(diǎn),終端設(shè)備節(jié)點(diǎn)通過無線網(wǎng)絡(luò)把采集到的數(shù)據(jù)傳輸?shù)絑igbee路由器節(jié)點(diǎn),路由器節(jié)點(diǎn)主要承擔(dān)數(shù)據(jù)接力功能,然后路由器節(jié)點(diǎn)將轉(zhuǎn)發(fā)過來的數(shù)據(jù)通過無線網(wǎng)絡(luò)傳輸?shù)絑igbee協(xié)調(diào)器節(jié)點(diǎn),最后協(xié)調(diào)器節(jié)點(diǎn)利用串行接口把數(shù)據(jù)傳送至上位機(jī)監(jiān)控系統(tǒng)。
上位機(jī)系統(tǒng)部分是本系統(tǒng)的人機(jī)交互界面,主要負(fù)責(zé)數(shù)據(jù)的分析和顯示;協(xié)調(diào)器負(fù)責(zé)整個(gè)網(wǎng)絡(luò)的建立與管理,通過串口把終端設(shè)備采集到的數(shù)據(jù)傳送到上位機(jī);路由器主要負(fù)責(zé)數(shù)據(jù)的轉(zhuǎn)發(fā),從而擴(kuò)大網(wǎng)絡(luò)的覆蓋發(fā)范圍;終端設(shè)備節(jié)點(diǎn)主要負(fù)責(zé)現(xiàn)場數(shù)據(jù)的收集,并把數(shù)據(jù)傳到路由器或協(xié)調(diào)器。協(xié)調(diào)器能與多個(gè)終端設(shè)備進(jìn)行直接通信,路由器節(jié)點(diǎn)主要是起到多跳路由作用。由于船舶機(jī)艙環(huán)境復(fù)雜,無線信號(hào)極容易受到障礙物的阻擋,因此這就要求無線通信能實(shí)現(xiàn)多跳功能。所謂多跳無線通信就是指利用全功能節(jié)點(diǎn)的路由轉(zhuǎn)發(fā)功能,將數(shù)據(jù)通過轉(zhuǎn)發(fā)從而達(dá)到要求的傳輸距離或避開障礙物。Zigbee協(xié)議棧存在路由功能,只需在節(jié)點(diǎn)載入?yún)f(xié)議棧的路由程序,采用樹形或網(wǎng)狀的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)就可實(shí)現(xiàn)多跳的無線通信。本文的設(shè)計(jì)重點(diǎn)是介紹Zigbee無線傳感網(wǎng)絡(luò)在船舶上的具體實(shí)現(xiàn),因此將不討論上位機(jī)的用戶界面的具體設(shè)計(jì)。
本設(shè)計(jì)的硬件核心部分為TI公司生產(chǎn)的CC2530芯片。CC2530能以很低的材料成本以及很簡單的外部電路設(shè)計(jì)建立起非常強(qiáng)大的無線傳感網(wǎng)絡(luò)節(jié)點(diǎn),而且還不用考慮射頻電路的設(shè)計(jì),它集成了一個(gè)高性能的RF(射頻天線)收發(fā)器、一枚業(yè)界標(biāo)準(zhǔn)的增強(qiáng)型8501微控制器內(nèi)核(MCU)以及有8K的RAM,支持四種不同版本的Flash存儲(chǔ)器(32/64/128/256KB)擁有強(qiáng)大的五通道DMA,CSMA/CA硬件支持,AES加密安全協(xié)處理器,兩個(gè)通用同步串口,支持多種串行通信協(xié)議[6]。協(xié)調(diào)器在整個(gè)網(wǎng)絡(luò)中處理的數(shù)據(jù)最多,職責(zé)最重,因此協(xié)調(diào)器選擇使用存儲(chǔ)器是256K的CC2530芯片。由于CC2530有多種不同的運(yùn)作模式和真正的片上系統(tǒng) (Soc)解決方案,使得很適合用在低功耗的系統(tǒng)中,而且不需要國語復(fù)雜的外圍電路。
協(xié)調(diào)器與路由器的硬件模塊基本相同,最大的不同就是路由節(jié)點(diǎn)沒有串口電路,以下只介紹協(xié)調(diào)器的硬件設(shè)計(jì)。協(xié)調(diào)器節(jié)點(diǎn)是由CC2530芯片與串口模塊組成,本設(shè)計(jì)的串口模塊選用的是MAX3232芯片來完成RS232串口數(shù)據(jù)的電平轉(zhuǎn)換。此外協(xié)調(diào)器節(jié)點(diǎn)還包括電源模塊、射頻天線(RF)模塊以及晶振電路等模塊。電源模塊用于為協(xié)調(diào)器節(jié)點(diǎn)的其它功能模塊供電,保證節(jié)點(diǎn)的正常運(yùn)行,供電電壓為2.0~3.6 V之間。RF模塊主要用于數(shù)據(jù)的無線收發(fā)和傳送。晶振模塊是兩個(gè)不同頻率的晶振,分別用于無線收發(fā)數(shù)據(jù)和休眠狀態(tài)。協(xié)調(diào)器節(jié)點(diǎn)硬件的結(jié)構(gòu)框圖如圖2所示。
圖2 協(xié)調(diào)器節(jié)點(diǎn)結(jié)構(gòu)框圖Fig.2 Structure diagram of the coordinator node
在監(jiān)控系統(tǒng)中,分布最廣數(shù)量最多的就是終端設(shè)備節(jié)點(diǎn),主要負(fù)責(zé)對(duì)船艙重要數(shù)據(jù)的收集與傳送。終端設(shè)備節(jié)點(diǎn)由處理器模塊(CC2530)、電源模塊、射頻天線(RF)模塊、晶振電路模塊以及傳感器單元等模塊組成。傳感器單元模塊主要是一些溫度,濕度,氣體濃度,壓力等傳感器。另外為保證終端節(jié)點(diǎn)設(shè)備的靈活性,電源的供電方式一般采用兩節(jié)電池供電,因?yàn)镃C2530的工作電壓在 2~3.6 V,而兩節(jié)電池的電壓一般在3 V左右,因此完全能滿足其工作電壓。不過對(duì)于部分對(duì)工作電壓要求高的傳感器,電池電壓達(dá)不到其工作的最低標(biāo)準(zhǔn)時(shí),可以使用外部直流電源為其供電。終端設(shè)備節(jié)點(diǎn)硬件的結(jié)構(gòu)框圖如圖3所示。
圖3 終端設(shè)備節(jié)點(diǎn)結(jié)構(gòu)框圖Fig.3 Structure diagram of the terminal device node
硬件的設(shè)計(jì)的只是完成了協(xié)議棧中物理層的一些功能,而物理層以上的功能單獨(dú)依靠硬件則是不能實(shí)現(xiàn)的,它還需要軟件的驅(qū)動(dòng)才能實(shí)現(xiàn)。本系統(tǒng)軟件使用IAR Embedded Workbench作為開發(fā)平臺(tái),并在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)不同的功能。整個(gè)應(yīng)用程序運(yùn)行時(shí)可以自動(dòng)形成一個(gè)網(wǎng)絡(luò),終端設(shè)備節(jié)點(diǎn)能夠主動(dòng)發(fā)現(xiàn)路由節(jié)點(diǎn)或協(xié)調(diào)器節(jié)點(diǎn)(上級(jí)節(jié)點(diǎn)),并且一旦加入網(wǎng)路,能夠自動(dòng)建立綁定。
Zigbee網(wǎng)絡(luò)的建立和維護(hù)不論多復(fù)雜,都從建立網(wǎng)絡(luò)開始。當(dāng)協(xié)調(diào)器啟動(dòng)以后,此時(shí)協(xié)調(diào)器會(huì)在應(yīng)用指定一個(gè)的網(wǎng)絡(luò)信道范圍內(nèi)進(jìn)行能量掃描,通過監(jiān)聽獲得各個(gè)信道上的能量值,并把能量值進(jìn)行排序,列出信道上的干擾值,拋棄超過最大允許的能量值的信道,在已存在網(wǎng)絡(luò)最少的信道上建立網(wǎng)絡(luò),若信道上的存在網(wǎng)絡(luò)數(shù)一樣,則在沖突和干擾最少的信道上建立網(wǎng)絡(luò)。當(dāng)選定網(wǎng)絡(luò)信道以后,會(huì)進(jìn)行一系列的參數(shù)設(shè)置,包括網(wǎng)絡(luò)地址、PAN標(biāo)識(shí)以及擴(kuò)展PAN標(biāo)識(shí)等。當(dāng)這些參數(shù)都設(shè)置好后,網(wǎng)絡(luò)就基本建立起來了,只等待其它節(jié)點(diǎn)的加入。
組建一個(gè)Zigbee網(wǎng)絡(luò)主要由Zigbee協(xié)議棧的網(wǎng)絡(luò)層實(shí)現(xiàn)[7],協(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)啟動(dòng)后,Zigbee協(xié)議棧會(huì)按照上節(jié)所介紹的組網(wǎng)流程去組建一個(gè)Zigbee網(wǎng)絡(luò),首先在系統(tǒng)初始化之后,掃描并選擇合適的信道后對(duì)網(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)測(cè)是否有入網(wǎng)請(qǐng)求并允許有請(qǐ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)器在正常工作的過程中,不斷的檢測(cè)有無數(shù)據(jù)傳送。其實(shí),當(dāng)協(xié)調(diào)器檢測(cè)到有數(shù)據(jù)的傳送時(shí),程序會(huì)自動(dòng)進(jìn)入中斷接收狀態(tài),在此過程中,數(shù)據(jù)會(huì)被暫時(shí)存放在指定的區(qū)域,其它外部程序以指針的形式調(diào)用這些數(shù)據(jù)。隨后,協(xié)調(diào)器會(huì)判斷數(shù)據(jù)的來源,若是上位機(jī)通過串口發(fā)來的數(shù)據(jù),則認(rèn)為是命令,之后對(duì)命令會(huì)進(jìn)行相應(yīng)的處理;若是傳感數(shù)據(jù),則又會(huì)啟動(dòng)相應(yīng)的數(shù)據(jù)處理程序,并更新存儲(chǔ)區(qū)內(nèi)的數(shù)據(jù),之后通過串口傳送至上位機(jī)進(jìn)行進(jìn)一步的處理。圖4所示是其程序流程圖。
路由節(jié)點(diǎn)程序除了一些配置和協(xié)調(diào)器節(jié)點(diǎn)不同之外,其它基本一致。
終端設(shè)備節(jié)點(diǎn)要將收集到的溫度信息送到路由器或協(xié)調(diào)器,終端設(shè)備節(jié)點(diǎn)首先要加入網(wǎng)絡(luò),與此同時(shí),該節(jié)點(diǎn)還要將自己綁定到第一個(gè)響應(yīng)的協(xié)調(diào)器節(jié)點(diǎn)或路由節(jié)點(diǎn)。終端設(shè)備節(jié)點(diǎn)通過函數(shù)ZDO_StartDevice()自發(fā)的加入網(wǎng)絡(luò),并通過函數(shù)zb_BindDevice()發(fā)出綁定請(qǐng)求,綁定成功后終端設(shè)備節(jié)點(diǎn)程序循環(huán)調(diào)用SendData()函數(shù)周期性的發(fā)送采集到的溫度信息,采取端到端確認(rèn)的發(fā)送模式。函數(shù)zb_SendDataConfirm()可以作為指示應(yīng)答,如果協(xié)調(diào)器節(jié)點(diǎn)或路由節(jié)點(diǎn)沒有指示應(yīng)答,終端設(shè)備節(jié)點(diǎn)會(huì)自動(dòng)解除本次綁定,重新尋找網(wǎng)絡(luò)并進(jìn)行綁定。圖5所示為其程序流程圖。
圖4 協(xié)調(diào)器節(jié)點(diǎn)軟件流程圖Fig.4 Flow chart of the coordinator node
圖5 終端節(jié)點(diǎn)軟件流程圖Fig.5 Flow chart of the terminal device node
用IAR把相應(yīng)的程序分別下載到各節(jié)點(diǎn)。通過串口接入電腦,在對(duì)串口進(jìn)行相應(yīng)設(shè)置后,程序運(yùn)行時(shí),便可在PC機(jī)的終端中查看到經(jīng)過處理后的的溫度數(shù)據(jù)信息 (為方便測(cè)試,終端設(shè)備節(jié)點(diǎn)只進(jìn)行溫度的采集)。利用串口調(diào)試助手接收到的溫度數(shù)據(jù)如圖6所示。在此過程中,用標(biāo)準(zhǔn)溫度計(jì)對(duì)同一空間進(jìn)行溫度測(cè)量,測(cè)量結(jié)果顯示和本實(shí)驗(yàn)結(jié)果只有極小誤差,可以滿足大部分測(cè)量需求。同時(shí)進(jìn)行了通信距離測(cè)試,在沒有路由節(jié)點(diǎn)的情況下進(jìn)行點(diǎn)對(duì)點(diǎn)的測(cè)試,測(cè)試環(huán)境為實(shí)驗(yàn)室樓并有墻壁阻擋,測(cè)試結(jié)果如表1所示。數(shù)據(jù)表明,無線網(wǎng)絡(luò)完全可以覆蓋大部分中小型船舶機(jī)艙環(huán)境。如果需要還可以添加功放芯片CC2591,經(jīng)測(cè)試,傳播距離會(huì)成倍數(shù)增加。
圖6 溫度測(cè)試結(jié)果Fig.6 The results of temperature test
表1 通信距離測(cè)試結(jié)果(無路由節(jié)點(diǎn))Tab.1 The results of communication distance test(No route node)
溫度傳感節(jié)點(diǎn)的功耗問題直接影響了系統(tǒng)的壽命,在傳感節(jié)點(diǎn)每發(fā)送一次數(shù)據(jù)后就進(jìn)入休眠狀態(tài),在完成一次數(shù)據(jù)的采集和發(fā)送后,傳感節(jié)點(diǎn)會(huì)自動(dòng)進(jìn)入休眠低功耗狀態(tài);在休眠狀態(tài)結(jié)束時(shí),傳感節(jié)點(diǎn)就會(huì)重新進(jìn)入到工作過程,可有效降低功耗。溫度傳感節(jié)點(diǎn)采用兩節(jié)5號(hào)電池供能,休眠狀態(tài)下電流為0.4 μA,工作狀態(tài)下電流為24.3 mA。經(jīng)測(cè)試,兩節(jié)5號(hào)電池的正常工作時(shí)間在6個(gè)月左右,完全符合低功耗的性能需求。
根據(jù)船舶內(nèi)部的實(shí)際情況,以片上系統(tǒng)CC2530芯片為核心設(shè)計(jì)了一個(gè)完整的Zigbee無線船舶狀態(tài)監(jiān)控網(wǎng)絡(luò)。它能有效解決有線監(jiān)控網(wǎng)絡(luò)布線難、擴(kuò)展性差等問題,并具有可靠性強(qiáng),組網(wǎng)靈活性高以及自愈能力強(qiáng)等特點(diǎn),基本能滿足對(duì)中小型船舶機(jī)艙一些重要設(shè)備、環(huán)境參數(shù)的無線監(jiān)控。
[1]張米雅,姚建飛.Zigbee技術(shù)在船舶機(jī)艙監(jiān)控系統(tǒng)中的應(yīng)用[J].船舶工程,2010,32(2):100-102.ZHANG Mi-ya,YAO Jian-fei.Application of ZigBee in monitoring system of marine engine room[J].Ship Engineering,2010,32(2):100-102.
[2]Wheeler A.Commercial applications of wireless sensor networks using Zigbee [J].IEEE Communications Magazine,2007,45(4):70-77.
[3]高守瑋,吳燦陽.Zigbee技術(shù)實(shí)踐教程[M].北京:北京航空航天大學(xué)出版社,2009.
[4]李文仲,段朝玉.Zigbee2006無線網(wǎng)絡(luò)與無線定位實(shí)戰(zhàn)[M].北京:北京航空航天大學(xué)出版社,2008.
[5]虞志飛,鄔家煒.ZigBee技術(shù)及其安全性研究[J].計(jì)算機(jī)技術(shù)與發(fā)展,2008,18(8):144-145.YU Zhi-fei,WU Jia-wei.Research of Zigbee technology and its security[J].Computer Technology and Development,18(8):144-145.
[6]Texas Instruments.CC2530:A True System-on-Chip solution for 2.4GHZ IEEE 802.15.4 and ZigBee Applications[EB/OL].[2010-10-05].http://www.ti.com/lit/ds/symlink/cc2530.pdf.
[7]楊誠,聶章龍.ZigBee網(wǎng)絡(luò)層協(xié)議的分析與設(shè)計(jì)[J].計(jì)算機(jī)應(yīng)用與軟件,2009(12):219-221.YANG Cheng,NIE Zhang-long.Analysing and designing Zigbee network layers protocol[J].Computer Application and Sofeware,2009(12):219-221.