基于ZigBee技術(shù)的無(wú)線傳感器網(wǎng)絡(luò)系統(tǒng)研究-學(xué)士學(xué)位論文_第1頁(yè)
基于ZigBee技術(shù)的無(wú)線傳感器網(wǎng)絡(luò)系統(tǒng)研究-學(xué)士學(xué)位論文_第2頁(yè)
基于ZigBee技術(shù)的無(wú)線傳感器網(wǎng)絡(luò)系統(tǒng)研究-學(xué)士學(xué)位論文_第3頁(yè)
基于ZigBee技術(shù)的無(wú)線傳感器網(wǎng)絡(luò)系統(tǒng)研究-學(xué)士學(xué)位論文_第4頁(yè)
基于ZigBee技術(shù)的無(wú)線傳感器網(wǎng)絡(luò)系統(tǒng)研究-學(xué)士學(xué)位論文_第5頁(yè)
已閱讀5頁(yè),還剩43頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

PAGE基于ZigBee技術(shù)的無(wú)線傳感器網(wǎng)絡(luò)系統(tǒng)研究

摘要隨著信息技術(shù)的發(fā)展,人們對(duì)無(wú)線通信技術(shù)的要求日益提高。傳統(tǒng)的無(wú)線通信技術(shù)Wi-Fi、超寬帶通信UWB、近場(chǎng)通信NFC、藍(lán)牙、紅外無(wú)線數(shù)據(jù)通信(IrDA)等技術(shù),已經(jīng)不能滿足當(dāng)今對(duì)無(wú)線應(yīng)用的需求。尤其是物聯(lián)網(wǎng)技術(shù)的提出,需要傳感器網(wǎng)絡(luò)具有低速率、低功耗、低成本、自組網(wǎng)能力強(qiáng)等特點(diǎn),并且在惡劣的自然環(huán)境下也能正常工作。ZigBee技術(shù)就是在這樣的歷史背景下應(yīng)運(yùn)而生。ZigBee技術(shù)是一種新興的短距離、低速率無(wú)線網(wǎng)絡(luò)技術(shù),是一種介于無(wú)線標(biāo)識(shí)技術(shù)和藍(lán)牙之間的技術(shù)提案,主要用于近距離無(wú)線連接,其優(yōu)良的自組網(wǎng)性能和網(wǎng)絡(luò)的健壯性整體的網(wǎng)絡(luò)協(xié)調(diào)性等都是其它無(wú)線技術(shù)無(wú)法比擬的。本設(shè)計(jì)是基于ZigBee技術(shù)開(kāi)發(fā)的一套無(wú)線傳感網(wǎng)絡(luò)模擬裝置。該裝置采用射頻性能優(yōu)良的Ti(TexasInstruments)公司CC2430芯片作為核心的控制模塊,使用高效的IAR集成開(kāi)發(fā)環(huán)境作為軟件平臺(tái),顯示模塊采用HS12232-9LCD液晶屏顯示模塊,上位機(jī)可通過(guò)PC串口管理全網(wǎng)的數(shù)據(jù)和命令的收發(fā)。串口通信軟件采用VC6.0開(kāi)發(fā),界面友好,使用方便。當(dāng)數(shù)據(jù)的在ZigBee網(wǎng)絡(luò)中傳播時(shí),可以在PC機(jī)上使用PackedSniffer等抓包軟件捕獲網(wǎng)絡(luò)中的數(shù)據(jù),進(jìn)行研究和分析。本模擬裝置的功能實(shí)現(xiàn)比較完善,網(wǎng)絡(luò)協(xié)調(diào)性較好。可以按照組網(wǎng)要求發(fā)送和接收數(shù)據(jù),并將數(shù)據(jù)和命令清楚的顯示在LCD液晶屏上,且數(shù)據(jù)也能夠及時(shí)的上傳給上位機(jī),供管理和使用人員參考和調(diào)試?!娟P(guān)鍵詞】ZigBee;無(wú)線傳感器網(wǎng)絡(luò);Z-Stack;CC2430AbstractWiththedevelopmentofinformationtechnology,theincreasingdemandforwirelesscommunicationstechnology.ThewirelesscommunicationstechnologyWi-Fi,ultra-widebandcommunicationsUWB,NearFieldCommunicationtheNFC,Bluetooth,infraredwirelessdatacommunications(IrDA)technology,cannolongermeettoday'sdemandforwirelessapplications.EspeciallytheInternetofThingstechnology,theneedtosensornetworkswithlow-rate,lowpower,lowcost,sincethenetworkingabilityandothercharacteristics,andintheharshnaturalenvironmentcanworkproperly.ZigBeetechnologyisagainstthishistoricalbackground,cameintobeing.ZigBeetechnologyisanemergingshort-range,low-ratewirelessnetworktechnologyisacrossbetweenawirelessidentificationtechnologyandBluetoothtechnologyproposals,mainlyforshort-rangewirelessconnections,goodnetworkperformanceandnetworktherobustnessoftheoverallnetworkcoordinationareotherwirelesstechnologiescannotmatch.

ThedesignisbasedonZigBeetechnologydevelopedbyawirelesssensornetworksimulator.ThedeviceusestheexcellentRFperformanceofTi(TexasInstruments)CompanyCC2430chipasthecoreofthecontrolmodule,theuseofefficientIARIntegratedDevelopmentEnvironmentsoftwareplatform,thedisplaymoduleHS12232-9LCDLCDscreendisplaymodule,thehostcomputerthroughthePCserialportmanagethewholenetworktosendandreceivedataandcommands.ThehostcomputerusingVC6.0development-friendlyinterface,easytouse.WhenthespreadofdataintheZigBeenetwork,youcanuseonaPCPackedtheSniffercapturesoftwaretocapturenetworkdata,conductresearchandanalysis.

Simulatorfunctionstoachievearelativelycompletenetworkcoordination.Accordancewiththerequirementsofthenetworktosendandreceivedata,anddataandcommandstodisplayontheLCDscreenandthedatacanalsobetimelyuploadtothehostcomputerformanagementanduseofpersonalreferenceanddebugging.【Keywords】ZigBeeWirelessSensorNetwork;Z-Stack;theCC2430PAGE44目錄TOC\o\h\z\u第1章緒論 41.1研究背景 41.2研究?jī)?nèi)容 41.3研究意義 5第2章ZigBee技術(shù) 62.1ZigBee技術(shù)概述 62.2ZigBee技術(shù)的主要特征 72.3ZigBee技術(shù)的應(yīng)用 72.4分層協(xié)議的概念 82.5物理層(PHY)規(guī)范 82.5.1物理層服務(wù)規(guī)范 92.5.2物理層協(xié)議數(shù)據(jù)單元(PPDU)格式 92.6媒體介質(zhì)訪問(wèn)層(MAC)層概述 92.6.1MAC層數(shù)據(jù)服務(wù)信息流程 102.6.2安全機(jī)制 102.6.3MAC層幀格式 112.7ZigBee網(wǎng)絡(luò)層服務(wù) 112.7.1網(wǎng)絡(luò)層服務(wù)介紹 112.7.2ZigBee的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu) 122.7.3網(wǎng)絡(luò)層路由算法的分析 132.8ZigBee應(yīng)用支持子層(APS層)協(xié)議 152.8.1應(yīng)用層概述 152.8.2幀格式 152.8.3ZigBee協(xié)議棧各層幀結(jié)構(gòu)之間的關(guān)系 16第3章ZigBee開(kāi)發(fā)平臺(tái) 173.1ZigBee開(kāi)發(fā)平臺(tái)介紹 173.1.1IAREW8051集成開(kāi)發(fā)環(huán)境及其使用說(shuō)明 173.1.2CC2430芯片概述 173.2TIZ-Stack軟件架構(gòu) 173.2.1系統(tǒng)初始化 173.2.2初始化的具體流程 183.2.3操作系統(tǒng)的執(zhí)行 203.2.4ZStack-1.4.3-1.2.1協(xié)議棧項(xiàng)目文件的組織架構(gòu) 21第4章系統(tǒng)模塊的設(shè)計(jì)與實(shí)現(xiàn) 234.1設(shè)備類型 234.2信道 234.3PANID 234.4方案的整體設(shè)計(jì) 244.5CC2430的串口機(jī)制 244.5.1回調(diào)函數(shù) 254.5.2處理事件UART_RX_CB_EVT 254.6工程任務(wù)的初始化操作 264.6.1工程選項(xiàng)設(shè)置 264.7ZigBee自動(dòng)建網(wǎng)過(guò)程 284.8協(xié)調(diào)器對(duì)節(jié)點(diǎn)的感知 304.9上位機(jī)軟件 334.10運(yùn)行時(shí)數(shù)據(jù)報(bào)解析 34第五章總結(jié) 36附錄1:CC2430芯片架構(gòu) 37附錄2:硬件連接圖 38附錄3:協(xié)議設(shè)計(jì) 40參考文獻(xiàn) 42致謝 44第1章緒論1.1研究背景近年來(lái),隨著社會(huì)的發(fā)展,無(wú)線通信技術(shù)的不斷進(jìn)步,新的無(wú)線技術(shù)正發(fā)揮著新的重要的作用,給人們的生活帶來(lái)新的享受[1]。物物聯(lián)網(wǎng)的物聯(lián)網(wǎng)世界的提出,被很多國(guó)家政府和企業(yè)提上日程,人們對(duì)無(wú)線技術(shù)也提出了更新的要求。回顧傳統(tǒng)的無(wú)線網(wǎng)絡(luò)例如,藍(lán)牙(BlueTooth)、WiFi、紅外等技術(shù)已經(jīng)無(wú)法適應(yīng)當(dāng)前的實(shí)際需要[2]。于是人們致力開(kāi)發(fā)出一種新比較適合人們需要的,近距離,低速率,組網(wǎng)方便的新的無(wú)線技術(shù),其中ZigBee技術(shù)是最具有代表性,最能夠由能力適應(yīng)現(xiàn)代無(wú)線網(wǎng)絡(luò)要求的技術(shù)[3]。ZigBee協(xié)議是基于IEEE802.15.4協(xié)議制定的物理層(PhysicalLayer,PHY)和介質(zhì)訪問(wèn)層(Mediumaccesscontrollayer,MAC)的基礎(chǔ)上,由ZigBee聯(lián)盟制定網(wǎng)絡(luò)層和應(yīng)用支持層組成的。Zigbee技術(shù)具有很多其他網(wǎng)絡(luò)無(wú)法比擬的優(yōu)點(diǎn)。一節(jié)ZigBee的終端節(jié)點(diǎn)模塊,可以連續(xù)使用長(zhǎng)達(dá)2年。其整體的ZigBee組網(wǎng)能力,快速的反應(yīng)能力,已經(jīng)模塊的低成本能經(jīng)受嚴(yán)酷的自然條件等,都是現(xiàn)代無(wú)線傳感網(wǎng)絡(luò)十分需要的特點(diǎn)。然而作為一種新興的無(wú)線技術(shù),和一切新鮮事物一樣,并不能馬上的被適用于人們的生活、生產(chǎn)中。ZigBee技術(shù)在中國(guó)正處于這樣一種狀態(tài),政府和很多的企業(yè)都在致力于研發(fā)各種ZigBee產(chǎn)品以便盡快將ZigBee技術(shù)應(yīng)用于市場(chǎng)。很多高校也正在加緊對(duì)ZigBee技術(shù)方面的人才的培養(yǎng),以及技術(shù)的創(chuàng)新等。本文正是從這一背景出發(fā),調(diào)查當(dāng)前社會(huì)對(duì)無(wú)線技術(shù)的需求,結(jié)合無(wú)線技術(shù)的發(fā)展趨勢(shì)和ZigBee的技術(shù)特點(diǎn),利用ZigBee無(wú)線技術(shù)實(shí)現(xiàn)無(wú)線傳感器網(wǎng)絡(luò)模擬裝置。1.2研究?jī)?nèi)容使用ZigBee技術(shù)來(lái)實(shí)現(xiàn)無(wú)線傳感器網(wǎng)絡(luò),主要需要考慮通信節(jié)點(diǎn)的硬件設(shè)計(jì),以及實(shí)現(xiàn)相應(yīng)功能所必須的軟件開(kāi)發(fā)。本設(shè)計(jì)從實(shí)際出發(fā),采用先進(jìn)的Ti公司的CC2430芯片,利用性能較高的IAREmbeddedWorkbench開(kāi)發(fā)工具對(duì)一個(gè)完整的ZigBee網(wǎng)絡(luò)的組網(wǎng)過(guò)程進(jìn)行實(shí)驗(yàn),然后在無(wú)線傳感網(wǎng)ZigBee套件上實(shí)現(xiàn)了一個(gè)網(wǎng)狀拓?fù)浣Y(jié)構(gòu)的通信實(shí)驗(yàn)。在無(wú)線網(wǎng)絡(luò)組網(wǎng)完成后,通過(guò)設(shè)定的協(xié)議命令在PC機(jī)端使用串口將數(shù)據(jù)發(fā)至ZigBee的協(xié)調(diào)器模塊。ZigBee模塊即可完成全網(wǎng)的數(shù)據(jù)監(jiān)控。同時(shí)在無(wú)線網(wǎng)絡(luò)的傳輸中,加入自己網(wǎng)絡(luò)控制命令,使得全網(wǎng)能按照預(yù)定的要求進(jìn)行數(shù)據(jù)的傳輸,同時(shí)結(jié)合上位機(jī)軟件將網(wǎng)絡(luò)數(shù)據(jù)通過(guò)協(xié)調(diào)器傳至PC機(jī)的人機(jī)交互界面,友好的展示了數(shù)據(jù)的傳輸方式和傳輸過(guò)程。此模擬裝置充分的展示了ZigBee的功能特性,解析了ZigBee各層協(xié)議的數(shù)據(jù)封裝,使開(kāi)發(fā)者能快速的掌握Z(yǔ)igBee的技術(shù)要領(lǐng),給需要使用ZigBee的項(xiàng)目提供借鑒。同時(shí)具有移植方便,稍微加以修改即可應(yīng)用在實(shí)際的項(xiàng)目中。1.3研究意義ZigBee技術(shù)的諸多特性,必然使得其在未來(lái)的無(wú)線領(lǐng)域中占有很大的優(yōu)勢(shì)。ZigBee技術(shù)的普及也將為企業(yè)在無(wú)線器材的選擇方面多了很大的信心。但是目前,國(guó)內(nèi)ZigBee技術(shù)尚處在萌芽階段,市場(chǎng)是可行的ZigBee解決方案屈指可數(shù)。一方面對(duì)于準(zhǔn)備進(jìn)入ZigBee領(lǐng)域的人來(lái)說(shuō),苦于找不好很好的教材,和很合適的模塊。另一方面,中小型企業(yè)也無(wú)精力和財(cái)力去從零開(kāi)始研發(fā)ZigBee的設(shè)備。本設(shè)計(jì)從選擇芯片和搭建軟件平臺(tái),到完成整體的設(shè)計(jì)架構(gòu)和測(cè)試流程。本身就是一次ZigBee技術(shù)的實(shí)際應(yīng)用,演示了如何將ZigBee技術(shù)應(yīng)用于實(shí)際的生活生產(chǎn)中。根據(jù)具體的需要,降低產(chǎn)品成本,定制出屬于特定環(huán)境和特定任務(wù)的無(wú)線傳感器模塊,增加協(xié)議命令控制傳感器的特定動(dòng)作。以及選擇ZigBee無(wú)線傳感器網(wǎng)絡(luò)的使用條件和范圍等。目前大多數(shù)用戶只能借鑒于ZigBee廠商提供的開(kāi)發(fā)平臺(tái)進(jìn)行應(yīng)用層程序的開(kāi)發(fā),但是運(yùn)用廠商提供的開(kāi)發(fā)平臺(tái)和開(kāi)發(fā)工具,用戶再選芯片型等方面會(huì)受到很大限制,極大的束縛了ZigBee產(chǎn)業(yè)的發(fā)展。所以搭建一個(gè)可以很快就應(yīng)用于商業(yè)用途的ZigBee使用模型就顯得非常重要,本課題正是在此思想上設(shè)計(jì)了一套非常實(shí)用的模擬裝置,實(shí)現(xiàn)了ZigBee的重要的功能特性。無(wú)論從ZigBee的理論上,還是從實(shí)際的應(yīng)用中都很有價(jià)值。第2章ZigBee技術(shù)2.1ZigBee技術(shù)概述ZigBee技術(shù)有很多的優(yōu)點(diǎn),無(wú)線收發(fā)距離短、協(xié)議復(fù)雜度較低、整體耗能低、成本低廉、網(wǎng)絡(luò)反應(yīng)快等。這使ZigBee技術(shù)非常適合對(duì)距離和傳輸速率不高的場(chǎng)合,可以有效的降低使用成本,長(zhǎng)時(shí)間的持續(xù)工作也很方便去管理ZigBee的無(wú)線網(wǎng)絡(luò)[4]。2000年12月美國(guó)電氣和電子工程師協(xié)會(huì)(IEEE)成立了IEEE802.15.4工作組,目的在于研究一種低速率、低成本、低功耗、低時(shí)延的無(wú)線網(wǎng)絡(luò)協(xié)議。ZigBee技術(shù)正是這一網(wǎng)絡(luò)協(xié)議的代名詞[5]。ZigBee棧體系結(jié)構(gòu)是一種分層結(jié)構(gòu)。每一個(gè)層的主要任務(wù)是向上層提供兩種服務(wù):數(shù)據(jù)實(shí)體服務(wù)和管理實(shí)體服務(wù)。服務(wù)實(shí)體是通過(guò)服務(wù)接入點(diǎn)(SAP)為上層提供所需的服務(wù)。其中SAP的功能是通過(guò)一些服務(wù)原語(yǔ)來(lái)實(shí)現(xiàn)。ZigBee協(xié)議棧結(jié)構(gòu),基于開(kāi)放網(wǎng)絡(luò)互連(OSI)七層協(xié)議模型。IEEE802.15.4-2003標(biāo)準(zhǔn)定義了ZigBee協(xié)議的低兩層,物理層(PHY)和數(shù)據(jù)鏈路層(MAC)。ZigBee聯(lián)盟在物理層和MAC層的基礎(chǔ)上制定了網(wǎng)絡(luò)層和應(yīng)用支持子層。如圖2-1為ZigBee體系堆棧的框架圖。圖2-1ZigBee堆??蚣?.2ZigBee技術(shù)的主要特征與藍(lán)牙、WiFi等無(wú)線通信技術(shù)相比,ZigBee協(xié)議相對(duì)簡(jiǎn)單、所需要的硬件資源較少,所以硬件平臺(tái)相對(duì)十分簡(jiǎn)單,主要有以下特點(diǎn):⑴低功耗:省電是ZigBee一個(gè)非常重要的特點(diǎn),ZigBee節(jié)點(diǎn)的工作周期短、信息收發(fā)功耗低、ZigBee終端節(jié)點(diǎn)采用了休眠機(jī)制,兩節(jié)普通的5號(hào)干電池可以支持6個(gè)月到2年的工作時(shí)間。⑵低成本:由于ZigBee協(xié)議棧需要想對(duì)較少的資源,極大降低了ZigBee的開(kāi)發(fā)成本,據(jù)官方稱,最少可以達(dá)到兩美元,而且ZigBee協(xié)議是免專利費(fèi)的。⑶短時(shí)延:網(wǎng)絡(luò)通信時(shí)延短,ZigBee節(jié)點(diǎn)從休眠狀態(tài)轉(zhuǎn)到工作狀態(tài)很迅速。搜索一個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)時(shí)延僅為30ms,休眠激活時(shí)延和信道接入時(shí)延均為為15ms。⑷短距離:一個(gè)ZigBee節(jié)點(diǎn)的有效傳播距離為30-200m。可以覆蓋家庭等空間較小的應(yīng)用場(chǎng)所⑸低速率:2.4GHz頻段為250kb/s,915MHz頻段為40kb/s,868MHz頻段只有20kb/s。⑹數(shù)據(jù)可靠傳輸:ZigBee采用了CSMA/CA碰撞避免機(jī)制(CarrierSenseMultipleAccesswithCollisionAvoidance),提高了無(wú)線的傳輸效率。媒體接入層采用完全確認(rèn)的數(shù)據(jù)傳輸機(jī)制,每個(gè)數(shù)據(jù)包的發(fā)送,都需要接收方的給出確認(rèn)操作,保證了數(shù)據(jù)包可靠地傳輸。2.3ZigBee技術(shù)的應(yīng)用基于ZigBee技術(shù)的無(wú)線傳感網(wǎng)絡(luò)在現(xiàn)實(shí)生活中具有重大的應(yīng)用前景,目前已存在的傳感器廣泛的應(yīng)用于各個(gè)領(lǐng)域:煤炭、醫(yī)療、航天、國(guó)防、建筑物的測(cè)量、生態(tài)系統(tǒng)的觀察等等[6]。礦井下人員的定位,隨時(shí)了解井下作業(yè)人員的工作位置;瓦斯的偵測(cè),防止意外的瓦斯泄露等。緊急情況發(fā)生時(shí)還可以指導(dǎo)作業(yè)人員安全撤離。醫(yī)院護(hù)理人員可以通過(guò)ZigBee定位設(shè)備設(shè)備隨時(shí)了解病人的活動(dòng)或貴重醫(yī)療器械的放置等。結(jié)合相關(guān)傳感器還可以偵測(cè)病人的身體和生理狀態(tài)。保證病人的24小時(shí)看護(hù)狀態(tài)。士兵身上攜帶ZigBee設(shè)備,在條件復(fù)雜的環(huán)境下,可便于統(tǒng)一的指揮和管理,同時(shí)單兵的身體狀態(tài)等也能及時(shí)反饋給后勤人員,以便及時(shí)的求助。生態(tài)系統(tǒng)的觀察,在一些人類無(wú)法輕易進(jìn)入的地方,可以利用ZigBee節(jié)點(diǎn),將設(shè)備分布在監(jiān)護(hù)地區(qū)的各個(gè)地方。結(jié)合溫濕度、光度、風(fēng)度等傳感器可將數(shù)據(jù)上匯聚至協(xié)調(diào)器后通過(guò)有線或者其他無(wú)線網(wǎng)絡(luò)傳至千里之外的控制中心,極大的方便了研究人員的工作。隨著我國(guó)政府大力倡導(dǎo)無(wú)線網(wǎng)絡(luò)射頻技術(shù)的發(fā)展,構(gòu)建物物聯(lián)網(wǎng)的未來(lái)世界相信也在不久的將來(lái)。而ZigBee技術(shù)無(wú)疑是這一領(lǐng)域的先力軍,其優(yōu)越的性能必將給即將到來(lái)的物聯(lián)網(wǎng)的時(shí)代創(chuàng)造一個(gè)很好的條件。ZigBee技術(shù)必將廣泛的應(yīng)用到生活的各個(gè)層面。2.4分層協(xié)議的概念分層是ZigBee協(xié)議的重要概念,每一層是通過(guò)建立服務(wù)接入點(diǎn)完成對(duì)上層提供服務(wù)。層與層間通過(guò)服務(wù)原語(yǔ)進(jìn)行數(shù)據(jù)與管理的交互服務(wù)。原語(yǔ)只是一種抽象的概念,用來(lái)指定所提供的服務(wù),但不指定具體的服務(wù)角色。下圖說(shuō)明了原語(yǔ)的概念。服務(wù)提供層服務(wù)提供層(本層)()服務(wù)使用者(上層)服務(wù)使用者(上層)REQUESTINDICATIONCONFIRMRESPONSE圖2-2原語(yǔ)的概念原語(yǔ)通常分為四種基本類型[7]:⑴Request:請(qǐng)求原語(yǔ)用于上層向本層請(qǐng)求指定的服務(wù)。⑵Confirm:確認(rèn)原語(yǔ)本層用于相應(yīng)上層發(fā)來(lái)的請(qǐng)求原語(yǔ)。⑶Indication:指示原語(yǔ)用本層發(fā)給上層指示本層的某一內(nèi)部事件。⑷Response:響應(yīng)原語(yǔ)用于上層響應(yīng)本層發(fā)出的指示原語(yǔ)。2.5物理層(PHY)規(guī)范IEEE802.15.4定義了兩個(gè)物理層標(biāo)準(zhǔn),它操作于兩個(gè)分離的頻率范圍:868/915MHz(美國(guó)、歐洲和澳大利亞)和2.4GHz供全世界使用。ZigBee的物理層主要的任務(wù)是以下幾點(diǎn)[8]:⑴無(wú)線收發(fā)機(jī)的開(kāi)啟和關(guān)閉⑵檢測(cè)信道上的能量⑶查看分組的鏈路質(zhì)量⑷基于CSMA-CA的空閑信道評(píng)估(CCA)⑸發(fā)送和接受數(shù)據(jù)2.5.1物理層服務(wù)規(guī)范物理層定義了物理無(wú)線信道和與MAC層之間的接口,提供物理層數(shù)據(jù)服務(wù)和物理層管理服務(wù)。物理層數(shù)據(jù)服務(wù)是從無(wú)線物理信道上收發(fā)數(shù)據(jù),物理層管理服務(wù)維護(hù)一個(gè)由物理層相關(guān)數(shù)據(jù)組成的數(shù)據(jù)庫(kù)。2.5.2物理層協(xié)議數(shù)據(jù)單元(PPDU)格式物理層協(xié)議數(shù)據(jù)單元(PPDU)由三部分組成:同步頭(SHR)允許接收設(shè)備同步并鎖定比特流;物理層幀頭(PHR)包含的是幀長(zhǎng)信息;有效載荷部分PSDU。表2-1PPDU的格式字節(jié)數(shù):411可變長(zhǎng)度引導(dǎo)序列幀開(kāi)始符幀長(zhǎng)(7位)預(yù)留(1位)物理層服務(wù)數(shù)據(jù)單元同步頭(SHR)物理層幀頭(PHR)物理層有效載荷同步碼域用來(lái)為后續(xù)數(shù)據(jù)的收發(fā)提供碼片或者數(shù)據(jù)符號(hào)的同步;幀定界符用來(lái)表示同步域的結(jié)束及報(bào)文數(shù)據(jù)的開(kāi)始;幀長(zhǎng)度域用7bit定義物理層凈荷的字節(jié)數(shù);物理層數(shù)據(jù)域長(zhǎng)度根據(jù)情況可變(長(zhǎng)度為5字節(jié)或大于7字節(jié))、承載了物理層報(bào)文數(shù)據(jù),包含有MAC層數(shù)據(jù)幀。2.6媒體介質(zhì)訪問(wèn)層(MAC)層概述IEEE802.15.4定義的媒體介入控制層的使用了傳統(tǒng)無(wú)線局域網(wǎng)中的帶沖突避免的載波多路偵聽(tīng)訪問(wèn)技術(shù)CSMA/CA方式,MAC層主要提供了數(shù)據(jù)傳輸服務(wù)(MCPS)和管理服務(wù)(MLME),其功能主要入下:(1)網(wǎng)絡(luò)協(xié)調(diào)器產(chǎn)生并發(fā)送信標(biāo)幀(2)設(shè)備與信標(biāo)同步(3)支持RAN網(wǎng)絡(luò)的關(guān)聯(lián)和取消關(guān)聯(lián)操作。(4)為設(shè)備的安全性提供支持。(5)信道接入方式采用免沖突載波檢測(cè)多路訪問(wèn)(CSMA-CA)機(jī)制;(6)處理和維護(hù)保護(hù)時(shí)隙機(jī)制(7)在對(duì)等的MAC實(shí)體之間提供一個(gè)可靠地通信鏈路。圖2-3物理層參考模型2.6.1MAC層數(shù)據(jù)服務(wù)信息流程請(qǐng)求由發(fā)送方上層發(fā)起,調(diào)用原語(yǔ)MCPS-DATA-request將數(shù)據(jù)傳至MAC層。MAC層將數(shù)據(jù)再次封裝形成PPDU通過(guò)物理層發(fā)送。數(shù)據(jù)傳至對(duì)方的物理直到MAC層,對(duì)方會(huì)對(duì)數(shù)據(jù)進(jìn)行確認(rèn),這是數(shù)據(jù)鏈路層上的確認(rèn)協(xié)議。隨后對(duì)方的接收的數(shù)據(jù)通過(guò)發(fā)起MCPS-DATA-indicate將數(shù)據(jù)傳至上層。確認(rèn)幀被發(fā)送方接收后一次完整的數(shù)據(jù)傳輸才結(jié)束。如圖2-4為數(shù)據(jù)的在協(xié)議層之間的傳送。圖2-4協(xié)議層之間數(shù)據(jù)的傳送數(shù)據(jù)在協(xié)調(diào)器中的傳輸模式分為數(shù)據(jù)傳輸?shù)絽f(xié)調(diào)器和數(shù)據(jù)從協(xié)調(diào)器傳出。2.6.2安全機(jī)制ZigBee使用MAC層的安全機(jī)制來(lái)加密MAC命令、信標(biāo)和確認(rèn)幀。MAC層使用AES(AdvancedEncryptionStandard)作為其核心加密算法,通過(guò)該算法來(lái)保證MAC幀的機(jī)密性、完整性和真實(shí)性。MAC層使用加密方式來(lái)發(fā)送(或接收)幀時(shí),首先查看幀的目的地址(或源地址),取得與目的(或源)地址相關(guān)的密鑰,并使用為該密鑰指定的安全組合來(lái)處理該幀。每個(gè)密鑰都與單獨(dú)的安全組合相關(guān)。MAC幀的頭部有一個(gè)比特來(lái)指示該幀是否加密[9]。2.6.3MAC層幀格式介質(zhì)訪問(wèn)控制層(MAC)幀被稱為MAC協(xié)議數(shù)據(jù)單元(MPDU),其長(zhǎng)度不超過(guò)127個(gè)字節(jié)。表2-2MAC幀的通用格式幀控制序列號(hào)地址字段負(fù)載校驗(yàn)(FCS)MACHeader(MHR)MAC載荷MACFooter(MFR)MAC層定義了4種不同的幀格式,分別是信標(biāo)幀、數(shù)據(jù)幀、確認(rèn)幀和MAC命令2.7ZigBee網(wǎng)絡(luò)層服務(wù)2.7.1網(wǎng)絡(luò)層服務(wù)介紹網(wǎng)絡(luò)層提供保證IEEE802.15.4MAC層正確工作的能力并為應(yīng)用層提供合適的服務(wù)接口。網(wǎng)絡(luò)層(NWK)負(fù)責(zé)建立和維護(hù)網(wǎng)絡(luò)連接,它獨(dú)立處理傳入數(shù)據(jù)請(qǐng)求、關(guān)聯(lián)、解除關(guān)聯(lián)和孤立通知請(qǐng)求。網(wǎng)狀層主要負(fù)責(zé)網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)的建立與管理,以及維護(hù)網(wǎng)絡(luò)的連接,主要功能包括:⑴設(shè)備連接和斷開(kāi)網(wǎng)絡(luò)時(shí)所采用的機(jī)制,以及在幀信息傳輸過(guò)程中所采用的安全策略。⑵作為網(wǎng)絡(luò)中路由器和協(xié)調(diào)器的網(wǎng)絡(luò)層還負(fù)責(zé)路由發(fā)現(xiàn),維護(hù)路由表、轉(zhuǎn)交路由信息、下一跳路由的發(fā)現(xiàn)等,網(wǎng)絡(luò)層還維護(hù)一個(gè)信息庫(kù)(PIB)來(lái)存儲(chǔ)這些必要的路由信息,當(dāng)網(wǎng)絡(luò)出現(xiàn)異常或者電源重啟時(shí),可以快速恢復(fù)網(wǎng)絡(luò)。⑶協(xié)調(diào)器節(jié)點(diǎn)的網(wǎng)絡(luò)層還必須具有創(chuàng)建新網(wǎng)絡(luò)的能力,同時(shí)也有為新加入的其他節(jié)點(diǎn)分配ZigBee網(wǎng)絡(luò)短地址的能力。⑷網(wǎng)絡(luò)層還需要提供其他的功能接口,確保MAC層能正常工作,同時(shí)向上層(APS)層提供數(shù)據(jù)和管理等服務(wù)接口。圖2-6網(wǎng)絡(luò)層參考模型NWK層通過(guò)兩個(gè)服務(wù)接入點(diǎn)(SAP)提供了兩種服務(wù)。ZigBee的網(wǎng)絡(luò)層采用基于AdHoc的路由協(xié)議,除了具有通用的網(wǎng)絡(luò)層功能外,還應(yīng)該與底層的IEEE802.15.4標(biāo)準(zhǔn)的功耗一樣小,同時(shí)要實(shí)現(xiàn)網(wǎng)絡(luò)的自組織和自維護(hù)。應(yīng)用支持子層把不同的應(yīng)用映射到ZigBee網(wǎng)絡(luò)上,主要包括安全屬性的設(shè)置、業(yè)務(wù)發(fā)現(xiàn)、設(shè)備發(fā)現(xiàn)和多個(gè)業(yè)務(wù)數(shù)據(jù)流的匯聚等功能。NLME需要提供一個(gè)管理服務(wù)以允許一個(gè)應(yīng)用來(lái)與協(xié)議操作交互,NLME需要提供以下服務(wù):⑴配置一個(gè)新網(wǎng)絡(luò),具有必須的配置硬件資源,如棧等。配置選項(xiàng)包括:ZigBee協(xié)調(diào)器的開(kāi)始操作,申請(qǐng)加入存在的ZigBee網(wǎng)絡(luò)。⑵啟動(dòng)網(wǎng)絡(luò),具有創(chuàng)建網(wǎng)絡(luò)的能力⑶能夠加入和退出ZigBee網(wǎng)絡(luò)。⑷尋址,具有由ZigBee協(xié)調(diào)器或者ZigBee路由器給其他剛加入的網(wǎng)絡(luò)節(jié)點(diǎn)分配ZigBee短地址的能力。⑸鄰居路由的發(fā)現(xiàn),具有發(fā)現(xiàn)、記錄并報(bào)告一跳范圍內(nèi)設(shè)備的能力。⑹路由發(fā)現(xiàn):具有發(fā)現(xiàn)并記錄路徑的能力。表2-3NWK幀格式字節(jié)數(shù):22211可變長(zhǎng)度幀控制目地址源地址半徑序號(hào)幀有效載荷路由字段NWK頭NWK有效載荷2.7.2ZigBee的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)ZigBee定義了三種網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu):星型網(wǎng)絡(luò)拓?fù)?Star),主要針對(duì)小范圍內(nèi)的數(shù)據(jù)通信,節(jié)點(diǎn)較簡(jiǎn)單網(wǎng)絡(luò)中無(wú)路由器;簇樹(shù)網(wǎng)絡(luò)拓?fù)?Tree),是將星型網(wǎng)絡(luò)與網(wǎng)狀網(wǎng)絡(luò)結(jié)合的折中方案,結(jié)構(gòu)比網(wǎng)狀網(wǎng)絡(luò)簡(jiǎn)單,其網(wǎng)絡(luò)健壯性比星型網(wǎng)絡(luò)要強(qiáng)很多;網(wǎng)狀網(wǎng)絡(luò)拓?fù)?Mesh),是一種類似網(wǎng)狀的拓?fù)浣Y(jié)構(gòu),網(wǎng)絡(luò)健壯性最強(qiáng),但同時(shí)也需要很大的硬件資源來(lái)支持。2.7.3網(wǎng)絡(luò)層路由算法的分析在無(wú)線傳感網(wǎng)絡(luò)中,如何降低節(jié)點(diǎn)的功耗是個(gè)很重要的研究課題。經(jīng)研究顯示:路由選擇協(xié)議和MAC協(xié)議對(duì)無(wú)線通信模塊的能量消耗起著關(guān)鍵的影響。衡量一個(gè)傳感器網(wǎng)絡(luò)路由協(xié)議的重要指標(biāo)就是合理的利用網(wǎng)絡(luò)中各個(gè)傳感器節(jié)點(diǎn)的有限能量,使得網(wǎng)絡(luò)保持聯(lián)通性的時(shí)間更長(zhǎng)。一個(gè)好的ZigBee路由,不僅要在有效利用ZigBee協(xié)議不太豐富的硬件資源基礎(chǔ)上,還要符合ZigBee協(xié)議的低功耗要求。路由成本計(jì)算路由成本使用到得算法是衡量路徑成本在路由發(fā)現(xiàn)和維護(hù)之間進(jìn)行路徑比較。例如鏈路成本,就是針對(duì)網(wǎng)絡(luò)中的每一鏈路。對(duì)鏈路成本值求和,即是這個(gè)鏈路層上的路勁成本。一般情況下,定義路徑M長(zhǎng)N,對(duì)于一組有序的節(jié)點(diǎn)[A1,A2,A3...,AL],其中一個(gè)鏈路,[Ai,Aj],其子路徑長(zhǎng)度為2,那么成本就是S{P}=對(duì)于每個(gè)值作為一個(gè)鏈路的成本。鏈路成本S(l)是對(duì)鏈路l的函數(shù),取值范圍為[0…7],公式定義為:其中Pl為在鏈路層上傳輸數(shù)據(jù)包的概率[10]。問(wèn)題是如何計(jì)算pl的??梢酝ㄟ^(guò)計(jì)算實(shí)際接收到的信標(biāo)和數(shù)據(jù)幀,即是通過(guò)觀察合適的數(shù)據(jù)序列號(hào)來(lái)檢測(cè)丟失的幀,這種方法被認(rèn)為是接受概率最準(zhǔn)確的測(cè)量方法。然而實(shí)際應(yīng)用中最直接的方法就是估算一個(gè)均值,這個(gè)均值是有IEEE802.15.4-2003物理層和媒體接入層提供的每一個(gè)幀LQI值的平均。可以使用一個(gè)函數(shù)映射出LQI與S(l)的關(guān)系。由于不精確的測(cè)量結(jié)果會(huì)影響到ZigBee路由算法的性能,所以該組織推薦使用者要檢測(cè)他們生產(chǎn)的測(cè)試數(shù)據(jù)[11]。⑵路由表非終端節(jié)點(diǎn)需要對(duì)路由進(jìn)行維護(hù),并將數(shù)據(jù)暫存于ZigBee路由表中。如表2-4路由表所示。表2-4路由表域名型號(hào)描述目的地址2B本節(jié)點(diǎn)2Byte網(wǎng)絡(luò)地址狀態(tài)3B路由狀態(tài),見(jiàn)表3-5下一條地址2B下一條2Bytet網(wǎng)絡(luò)地址表2-5路由狀態(tài)域值數(shù)值狀態(tài)0x0ACTIVE0x1DISCOVERY_UNDERWAY0x2DISCOVERY_FAILED0x3INACTIVE0x4-0x7保留作為有路由能力的非終端的ZigBee節(jié)點(diǎn)(協(xié)調(diào)器、路由器)它本身需要有一定的物理資源來(lái)存儲(chǔ)這些表項(xiàng)。同時(shí)它也需要維護(hù)一個(gè)路由發(fā)現(xiàn)表,路由表項(xiàng)是一直存在的,并使動(dòng)態(tài)更行的。路由發(fā)現(xiàn)表的持續(xù)時(shí)間僅僅在當(dāng)路由器需要進(jìn)行路由發(fā)現(xiàn)操作時(shí)進(jìn)行[12],如表2-6路由發(fā)現(xiàn)表所示。表2-6路由發(fā)現(xiàn)表域名型號(hào)描述路由請(qǐng)求ID16bit路由的請(qǐng)求命令幀序列號(hào),在每次的操作后會(huì)自動(dòng)加1源地址16bit數(shù)據(jù)發(fā)出節(jié)點(diǎn)的16bit的網(wǎng)絡(luò)地址發(fā)送者地址16bit數(shù)據(jù)在路由中,這個(gè)表項(xiàng)記錄發(fā)出最新最低成本的路由的中間路由節(jié)點(diǎn)的16bit的網(wǎng)絡(luò)地址,這個(gè)值最終決定了路由響應(yīng)的命令幀的路徑。運(yùn)輸成本16bit累計(jì)一個(gè)數(shù)據(jù)包從源地址到當(dāng)前設(shè)備所經(jīng)過(guò)的所有路徑成本剩余成本16bit累計(jì)一個(gè)數(shù)據(jù)包從當(dāng)前設(shè)備到目的設(shè)備所經(jīng)過(guò)的的路徑成本⑶路由發(fā)現(xiàn)當(dāng)一個(gè)數(shù)據(jù)需要被發(fā)送時(shí),如果此節(jié)點(diǎn)是終端節(jié)點(diǎn)則直接將數(shù)據(jù)傳至給其能夠進(jìn)行路由的父親節(jié)點(diǎn)。由父親節(jié)點(diǎn)代為進(jìn)行路由發(fā)現(xiàn)。當(dāng)網(wǎng)絡(luò)層接收到來(lái)自高層的NLDE_DATA.Reques原語(yǔ)時(shí),其Discover參數(shù)設(shè)置為0x02或者是0x01時(shí),都需要使用網(wǎng)絡(luò)層路由發(fā)現(xiàn)能力。如果網(wǎng)絡(luò)層接收到了來(lái)自底層MAC層的數(shù)據(jù)幀,而且其地址為廣播地址,首先網(wǎng)絡(luò)層將會(huì)廣播這個(gè)數(shù)據(jù)幀,然后將數(shù)據(jù)幀轉(zhuǎn)交給上層進(jìn)行處理。如果接收到的來(lái)自MAC的幀不是廣播幀,網(wǎng)絡(luò)層將檢查數(shù)據(jù)幀的目的地址是否是它本身的邏輯地址。如果相等則說(shuō)明是傳給自己幀,立刻交給上層APS層進(jìn)行數(shù)據(jù)的處理,否則,該設(shè)備將作為中間設(shè)備繼續(xù)講此數(shù)據(jù)幀進(jìn)行路由發(fā)現(xiàn)操作[13]。圖2-8為節(jié)點(diǎn)接收到上層或其他節(jié)點(diǎn)發(fā)送的數(shù)據(jù)包時(shí),網(wǎng)絡(luò)層處理程序的流程圖。圖2-8路由算法流程圖2.8ZigBee應(yīng)用支持子層(APS層)協(xié)議2.8.1應(yīng)用層概述應(yīng)用層包括應(yīng)用支持子層,設(shè)備管理配置層(ZDO)和用戶的應(yīng)用程序組成的。用戶的應(yīng)用程序由具體的ZigBee模塊生產(chǎn)廠商,根據(jù)需求來(lái)規(guī)定。它使用應(yīng)用支持層提供的協(xié)議棧管理功能,來(lái)管理ZigBee協(xié)議棧。2.8.2幀格式APS幀格式由一個(gè)APS幀頭和APS有效載荷組成。APS幀頭域有固定的順序,在幀中可以不包含地址域,圖2-9為APS的幀格式結(jié)構(gòu)圖。圖2-9APS幀格式結(jié)構(gòu)圖2.8.3ZigBee協(xié)議棧各層幀結(jié)構(gòu)之間的關(guān)系在ZigBee的協(xié)議棧中,協(xié)議層之間的數(shù)據(jù)的通信是利用幀的格式來(lái)組織的。協(xié)議層的每一層都有自己特定的結(jié)構(gòu),當(dāng)應(yīng)用層需要發(fā)送數(shù)據(jù)時(shí),協(xié)議層會(huì)將數(shù)據(jù)從應(yīng)用層向下一層層的封裝,經(jīng)過(guò)的每一層都需要加上相應(yīng)的幀頭部,最后構(gòu)成要發(fā)送的幀的信息。其幀結(jié)構(gòu)之間的關(guān)系如下圖2-10所示:圖2-10協(xié)議幀之間的關(guān)系第3章ZigBee開(kāi)發(fā)平臺(tái)3.1ZigBee開(kāi)發(fā)平臺(tái)介紹3.1.1IAREW8051集成開(kāi)發(fā)環(huán)境及其使用說(shuō)明IAREmbeddedWorkbench是一套集成開(kāi)發(fā)工具,主要是使用c/c++等語(yǔ)言編寫(xiě)的嵌入式程序進(jìn)行編譯和調(diào)試。IAREmbeddedWorkbench是一套高度精密且使用方便的嵌入式應(yīng)用編程開(kāi)發(fā)工具。IAR集成了,編輯器,編譯器,連接器,調(diào)試器,工程管理器等。使用非常的方便,而且編譯出二進(jìn)制代碼的效率非常高。代碼優(yōu)化性能好。3.1.2CC2430芯片概述CC2420/30射頻芯片是Chipcon公司(挪威)推出的全球首款符合ZigBee聯(lián)盟制定的標(biāo)準(zhǔn)的設(shè)備芯片,主要工作在2.4GHz。CC2430采用的是片上集成系統(tǒng)(SoC),是高集成度的解決方案。不需要搭配過(guò)多的外置原件,使用底層本的原件,使得ZigBee節(jié)點(diǎn)的構(gòu)建成本低廉。CC2430延續(xù)了CC2420的優(yōu)良的射頻性能。功耗低,靈敏度高,抗噪性能好以及抗干擾性強(qiáng)等。CC2430采用工業(yè)標(biāo)準(zhǔn)的增強(qiáng)型8051作為微控制核心,另外CC2430同時(shí)具有很強(qiáng)大的外設(shè)功能。例如定時(shí)器/計(jì)數(shù)器、看門(mén)狗(WatchDog)、ADC、以及多個(gè)中斷源上電復(fù)位電路等。在接收和發(fā)射時(shí)電流損耗低,工作模式轉(zhuǎn)換迅速,這使得模塊節(jié)點(diǎn)的損耗更低,滿足ZigBee低功耗的要求,是一款很好的ZigBee節(jié)電模塊的解決方案[14]。ZigBee網(wǎng)絡(luò)中的節(jié)點(diǎn)都可以實(shí)用CC2430作為主要的控制芯片。Ti(德州儀器公司)研發(fā)的CC2430/31、CC2530/31等芯片具備了實(shí)現(xiàn)ZigBee技術(shù)的各種底層硬件要求,是真正的一體化解決方案,完全符合ZigBee技術(shù)對(duì)節(jié)點(diǎn)“體積小、低功耗、低成本”的要求[15]。3.2TIZ-Stack軟件架構(gòu)3.2.1系統(tǒng)初始化 Z--Stack的main函數(shù)在ZMain.c中,main函數(shù)里主要是先進(jìn)行各種硬件模塊的初始化操作,完成后進(jìn)入一個(gè)簡(jiǎn)單的ZigBee操作系統(tǒng)實(shí)體,如圖3-1Z-Stack軟件架構(gòu)所示。系統(tǒng)初始化初始化系統(tǒng)初始化初始化執(zhí)行操作系統(tǒng)主程序開(kāi)始圖3-1Z-Stack軟件架構(gòu)在系統(tǒng)初始化階段,主要是完成各個(gè)硬件外設(shè)和軟件的初始化,為進(jìn)入操作系統(tǒng)做好準(zhǔn)備。下面結(jié)合代碼說(shuō)明:ZSEGintmain(void){osal_int_disable(INTS_ALL);//關(guān)閉所有的中斷HAL_BOARD_INIT();//初始化晶振zmain_vdd_check();//檢測(cè)電壓zmain_ram_init();//初始化堆棧InitBoard(OB_COLD);//配置系統(tǒng)定時(shí)器以及重啟原因檢查HalDriverInit();//初始化硬件模塊osal_nv_init(NULL);//NVSystem初始化Flash存儲(chǔ)zmain_ext_addr();//形成節(jié)點(diǎn)MAC地址zgInit();//NVitems初始化非易失變量ZMacInit();//MAC初始化MAC層osal_init_system();//初始化操作系統(tǒng)osal_int_enable(INTS_ALL);//打開(kāi)中斷InitBoard(OB_READY);//初始化按鍵osal_start_system();//執(zhí)行操作系統(tǒng)}//main()3.2.2初始化的具體流程系統(tǒng)的初始化,主要是對(duì)軟、硬件的初始化,為進(jìn)入操作系統(tǒng)準(zhǔn)備條件。主要分為初始化系統(tǒng)時(shí)鐘、檢測(cè)芯片的工作電壓、初始化堆棧、初始化各個(gè)硬件模塊、初始化FLASH存儲(chǔ)、形成芯片MAC地址、初始化非易失變量、初始化MAC層協(xié)議、初始化應(yīng)用層幀協(xié)議、初始化操作系統(tǒng)等十余部分[16],其具體流程圖和對(duì)應(yīng)的函數(shù)如圖3-2所示。圖3-2ZigBee系統(tǒng)結(jié)構(gòu)的初始化3.2.3操作系統(tǒng)的執(zhí)行 程序的開(kāi)始代碼里,首先進(jìn)行一系列的初始化工作,(主要是針對(duì)ZigBee模塊上的硬件)。隨后啟動(dòng)代碼為操作系統(tǒng)執(zhí)行做好準(zhǔn)備工作后,就開(kāi)始執(zhí)行操作系統(tǒng)入口程序,并由此徹底將控制權(quán)移交給操作系統(tǒng),完成新老更替,自己則光榮的推出舞臺(tái)。操作系統(tǒng)實(shí)體只有一句代碼:Osal_start_system();//沒(méi)有返回值這是一個(gè)死循環(huán)的函數(shù)。當(dāng)程序進(jìn)入到操作系統(tǒng)里,就會(huì)一直重復(fù)操作系統(tǒng)的規(guī)則,去輪詢的檢查各個(gè)事件的發(fā)生并及時(shí)的去處理優(yōu)先級(jí)較高的部分,函數(shù)主題代碼如下:voidosal_start_system(void){for(;;){//進(jìn)入死循環(huán)uint8idx=0;Hal_ProcessPoll();//硬件抽象層事件的檢測(cè)do{if(tasksEvents[idx]){//高優(yōu)先級(jí)事件產(chǎn)生.break;}}while(++idx<tasksCnt);if(idx<tasksCnt){uint16events;halIntState_tintState;HAL_ENTER_CRITICAL_SECTION(intState);//進(jìn)入臨界去tasksEvents[task_id]|=event_flag;events=tasksEvents[idx];//提取事件tasksEvents[idx]=0;//清除事件HAL_EXIT_CRITICAL_SECTION(intState);events=(tasksArr[idx])(idx,events);//調(diào)用處理函數(shù)HAL_ENTER_CRITICAL_SECTION(intState);tasksEvents[idx]|=events;//未處理完的事件繼續(xù)放入事件數(shù)組中HAL_EXIT_CRITICAL_SECTION(intState);//}}其中tasksEvens[]用于存放所有事件的數(shù)組,數(shù)組中每一個(gè)元素對(duì)應(yīng)一個(gè)任務(wù)事件。程序中,首先使用while循環(huán)檢查是否有事件發(fā)生,按照順序檢查這樣就會(huì)先考慮較高優(yōu)先級(jí)的任務(wù)事件也就是安排到數(shù)組地位置的任務(wù)事件。在找到具有事件的第一個(gè)任務(wù)后,跳出循環(huán)并獲得此任務(wù)的idx號(hào)events=tastsEvents[idx]。然后調(diào)用存放對(duì)應(yīng)位置的事件處理函數(shù)(tasksArr[idx])(idx,events)來(lái)對(duì)所發(fā)生的事件進(jìn)行處理。根據(jù)不同的idx就可以執(zhí)行不同的處理不同的事件[17]。3.2.4ZStack-1.4.3-1.2.1協(xié)議棧項(xiàng)目文件的組織架構(gòu)⑴App:應(yīng)用層目錄,這個(gè)目錄下的三個(gè)文件就是創(chuàng)建一個(gè)新項(xiàng)目時(shí)主要添加的文件,當(dāng)要?jiǎng)?chuàng)建另外一個(gè)新項(xiàng)目時(shí),也只需主要換掉這三個(gè)文件。⑵HAL:硬件抽象層,用于調(diào)試,hal_drivers.c驅(qū)動(dòng)文件,抽象出與硬件無(wú)關(guān)的函數(shù),包含有與硬件相關(guān)的配置和驅(qū)動(dòng)及操作函數(shù)。Include目錄下主要包含各個(gè)硬件模塊的頭文件,而Target目錄下的文件是跟硬件相關(guān)的可以看出有兩個(gè)平臺(tái)CC2430DB和CC2430EB其中CC2430DB是白色的,說(shuō)明當(dāng)前并沒(méi)有使用此平臺(tái)。⑶MAC:MAC層目錄,HighLevel和lowLevel兩個(gè)目錄表示MAC層分為了高層和底層兩層,在Include文件下存放了MAC層的一些參數(shù)配置文件和MAC的Lib庫(kù)文件。⑷MT:該目錄下主要是存放了一些用于通過(guò)串口調(diào)試與各層進(jìn)行交互的內(nèi)容。⑸NWK:該目錄下主要是存放了網(wǎng)絡(luò)層的配置參數(shù)文件及網(wǎng)絡(luò)層庫(kù)的函數(shù)接口文件。⑹OSAL:簡(jiǎn)單的針對(duì)協(xié)議棧的操作系統(tǒng)⑺Profile:AF層目錄,主要包含了AF層處理函數(shù)接口文件。⑻Security:安全層目錄,包含安全層處理函數(shù)接口文件。⑼Services:ZigBee和802.15.4處理地址的函數(shù)目錄。⑽Tools:配置工程的目錄,包括空間劃分及ZigBee配置的相關(guān)信息。⑾ZDO:指ZigBee設(shè)備對(duì)象,可認(rèn)為是一種公共的功能集,方便用戶用自定義的對(duì)象調(diào)用APS子層的服務(wù)和NWK層的服務(wù)。⑿ZMac:其中zmac.c是Z-StackMAC導(dǎo)出層接口文件,ZDAPP_CONFIG_PAN_ID是ZMAC需要調(diào)用的網(wǎng)絡(luò)層函數(shù)。⒀ZMain:在此文件中最終了函數(shù)是ZSEGintmain(void)它在ZMain.c中是整個(gè)程序的入口。⒁Output:工程輸出文件目錄,這個(gè)是由IAR自動(dòng)生成的文件。第4章系統(tǒng)模塊的設(shè)計(jì)與實(shí)現(xiàn)4.1設(shè)備類型在ZigBee網(wǎng)絡(luò)中存在三種邏輯設(shè)備類型:協(xié)調(diào)器(coordinator),路由器(router)和終端設(shè)備(end-device)。ZigBee網(wǎng)絡(luò)由一個(gè)協(xié)調(diào)器以及多個(gè)路由器和多個(gè)終端設(shè)備組成,它最主要的作用是啟動(dòng)網(wǎng)絡(luò),其方法是選擇一個(gè)相對(duì)空閑的信道,形成一個(gè)PANID。它也會(huì)協(xié)助建立網(wǎng)絡(luò)中的安全層及處理應(yīng)用層的綁定。當(dāng)整個(gè)網(wǎng)絡(luò)啟動(dòng)和配置完成后,它的功能退化為一個(gè)路由器。路由器的主要功能是提供接力作用,能擴(kuò)展信號(hào)的傳輸范圍,因此,一般情況下它應(yīng)該一直處于活動(dòng)狀態(tài)下,不應(yīng)睡眠。終端設(shè)備可以睡眠或者喚醒,因此可以用電池供電。4.2信道2.4GHz的射頻頻段被分為16個(gè)獨(dú)立的信道。每一個(gè)設(shè)備都有一個(gè)DEFAULT_CHANLIST的默認(rèn)信道集。協(xié)調(diào)器掃描自己的默認(rèn)信道并選擇噪聲最小的信道作為自己所建網(wǎng)絡(luò)的信道。終端節(jié)點(diǎn)和路由器也要掃描默認(rèn)信道集并選擇一個(gè)信道已經(jīng)存在的網(wǎng)絡(luò)加入。4.3PANIDPANID是網(wǎng)絡(luò)的編號(hào),用于標(biāo)識(shí)不同的ZigBee網(wǎng)絡(luò)。設(shè)備的PANID值與ZDAPP_CONFIG_PAN_ID值的設(shè)置有關(guān)。如果協(xié)調(diào)器ZDAPP_CONFIG_PAN_ID被設(shè)置為0xffff,協(xié)調(diào)器將會(huì)產(chǎn)生一個(gè)隨機(jī)的PANID,最為自己的網(wǎng)絡(luò)編號(hào)。如果路由器的ZDAPP_CONFIG_PAN_ID為0xffff,路由器將根據(jù)自己的配置信道隨機(jī)選擇一個(gè)ZigBee網(wǎng)絡(luò)加入。若協(xié)調(diào)器的ZDAPP_CONFIG_PAN_ID非0xffff那么協(xié)調(diào)器將會(huì)根據(jù)自己的網(wǎng)絡(luò)長(zhǎng)地址(64bit)隨機(jī)產(chǎn)生一個(gè)PANID。并以此PANID建立網(wǎng)絡(luò)。如果非協(xié)調(diào)器節(jié)點(diǎn)的ZDAPP_CONFIG_PAN_ID非0xffff則該節(jié)點(diǎn)將會(huì)以ZDAPP_CONFIG_PAN_ID作為PANID去加入此網(wǎng)絡(luò)。如果協(xié)調(diào)器的PANID為小于0x3fff的值。那么協(xié)調(diào)器將會(huì)以此PANID去建立網(wǎng)絡(luò),如果在此PANID上已經(jīng)存在了ZigBee網(wǎng)絡(luò),那么協(xié)調(diào)器將會(huì)繼續(xù)搜尋其他的PANID直到不沖突為止。這樣就存在了問(wèn)題如果協(xié)調(diào)器在默認(rèn)的信道上發(fā)生了PANID的沖突而去更改了自己的PANID,而路由器和終端節(jié)點(diǎn)并不知道協(xié)調(diào)器PANID的改變。還會(huì)集訓(xùn)加入的PANID為ZDAPP_CONFIG_PAN_ID值的網(wǎng)絡(luò)中[18]。4.4方案的整體設(shè)計(jì)該設(shè)計(jì)選用天運(yùn)公司的ZigBee模塊,該模塊主要集成了Ti公司cc2430為主要控制芯片,使用搭配的SmartRF04EB下載調(diào)試器進(jìn)行實(shí)驗(yàn)。工程的整體架構(gòu)的數(shù)據(jù)流向如圖3-4所示,其中兩個(gè)非協(xié)調(diào)器端點(diǎn)各自攜帶了一個(gè)顯示lcd設(shè)備。Lcd設(shè)備選擇HS12232-9,它內(nèi)置了ST7920A驅(qū)動(dòng)控制器,點(diǎn)陣為122×32點(diǎn),每行7個(gè)半漢字,共2行HS12232-9集成了漢字字模且具有顯示信息豐富、功耗低、體積小、重量輕、超薄,與單品機(jī)的連接可選擇并行或者串行兩種方式等優(yōu)點(diǎn)[21]。圖4-1方案的總體設(shè)計(jì)4.5CC2430的串口機(jī)制協(xié)調(diào)器通過(guò)232串口于上位機(jī)進(jìn)行數(shù)據(jù)的交流,主要是將網(wǎng)絡(luò)中的數(shù)據(jù)通過(guò)串口傳送給上位機(jī),同時(shí)接收上位機(jī)發(fā)出的命令和數(shù)據(jù)。協(xié)調(diào)器到路由器數(shù)據(jù)流程的流程圖如圖3-3所示。圖4-2串口機(jī)制流程圖4.5.1回調(diào)函數(shù)當(dāng)與協(xié)調(diào)器連接的設(shè)備(通常為PC機(jī))向協(xié)調(diào)器通過(guò)232串口寫(xiě)入數(shù)據(jù)時(shí),協(xié)調(diào)器的串口回調(diào)函數(shù)將處理相關(guān)信息,并在串口回調(diào)函數(shù)中觸發(fā)事件UART_RX_CB_EVT通知應(yīng)用層進(jìn)行處理[22]。串口回調(diào)函數(shù)代碼如下。程序代碼:staticvoidrxCB(uint8port,uint8event){externuint8SampleApp_TaskID;rxlen=Hal_UART_RxBufLen(SPI_MGR_DEFAULT_PORT);//接收緩沖區(qū)數(shù)據(jù)長(zhǎng)度,字節(jié)為單位rbuf=osal_mem_alloc(rxlen+1);//多分配3字節(jié),分配如下rbuf[0]=rxlen;//一字節(jié)存放數(shù)據(jù)長(zhǎng)度HalUARTRead(SPI_MGR_DEFAULT_PORT,rbuf+1,rxlen);//讀接收緩沖區(qū)數(shù)據(jù)到內(nèi)存if(!rxlen)osal_mem_free(rbuf);//釋放內(nèi)存osal_set_event(SampleApp_TaskID,UART_RX_CB_EVT);//向所注冊(cè)的層發(fā)送事件}4.5.2處理事件UART_RX_CB_EVT當(dāng)接收到來(lái)自串口的信息后,在串口回調(diào)函數(shù)的最后觸發(fā)了事件UART_RX_CB_EVT,而該事件的任務(wù)ID為SampleApp_TaskID,即應(yīng)用層任務(wù)ID,所以會(huì)被SampleApp工程應(yīng)用層的事件處理函數(shù)SampleApp_ProcessEvent()處理,具體程序如下。uint16SampleApp_ProcessEvent(uint8task_id,uint16events){……if(events&UART_RX_CB_EVT)//串口有數(shù)據(jù)需要處理{SampleApp_UART(MSGpkt);//調(diào)用處理函數(shù),處理來(lái)自上位機(jī)的信息return(events^UART_RX_CB_EVT);}……}4.6工程任務(wù)的初始化操作4.6.1工程選項(xiàng)設(shè)置自定義的任務(wù)事件:#defineRETURN_NET_WORK_ADDR0x01//返回物理地址#defineRETURN_PHY_WORK_ADDR0x02//返回網(wǎng)絡(luò)地址#defineNET_ADDR_SEND0x03//發(fā)送命令#definePHY_ADDR_SEND0x04//發(fā)送命令#defineBROAST_SEND0x05//廣播#defineGROUP_SEND0x06//組播#defineCOUNT_NODE0x07//返回節(jié)點(diǎn)個(gè)數(shù)#defineBIND0x08//綁定#defineSPI_INCOMING_ZTOOL_PORT0x21//串口數(shù)據(jù)觸發(fā)事件#defineAF_INCOMING_MSG_CMD0x1A//有網(wǎng)絡(luò)層數(shù)據(jù)到來(lái)觸發(fā)事件這些事件由pc串口與單片機(jī)通信使用,為pc通過(guò)串口傳送中使用的命令。應(yīng)用層定義輸入和輸出協(xié)議簇命令。constcId_tSampleApp_ClusterList[SAMPLEAPP_MAX_CLUSTERS]={SAMPLEAPP_PERIODIC_CLUSTERID,//周期信息SAMPLEAPP_FLASH_CLUSTERID};定義端點(diǎn)描述符:constSimpleDescriptionFormat_tSampleApp_SimpleDesc={SAMPLEAPP_ENDPOINT,//應(yīng)用層端點(diǎn)號(hào)SAMPLEAPP_PROFID,//profileIDSAMPLEAPP_DEVICEID,//設(shè)備IDSAMPLEAPP_DEVICE_VERSION,//設(shè)備版本SAMPLEAPP_FLAGS,//程序標(biāo)識(shí)SAMPLEAPP_MAX_CLUSTERS,//輸入命令數(shù)(cId_t*)SampleApp_ClusterList,//輸入命令列表地址SAMPLEAPP_MAX_CLUSTERS,//輸出命令數(shù)(cId_t*)SampleApp_ClusterList//輸出命令列表};在程序初始化階段,voidSampleApp_Init(uint8task_id),會(huì)被調(diào)用完成端點(diǎn)的注冊(cè)。同時(shí)在該函數(shù)體中:RegisterForKeys(SampleApp_TaskID);//向應(yīng)用層注冊(cè)按鍵事件。SPIMgr_RegisterTaskID(SampleApp_TaskID);//向應(yīng)用層注冊(cè)串口任務(wù)串口會(huì)向應(yīng)用層某一個(gè)端點(diǎn)注冊(cè)事件,事件注冊(cè)成功,則當(dāng)CPU輪詢到串口,串口有數(shù)據(jù)產(chǎn)生,會(huì)像注冊(cè)的該端點(diǎn)發(fā)送一個(gè)串口事件[23]。事件在該端點(diǎn)處理程序中被捕捉并執(zhí)行:caseSPI_INCOMING_ZAPP_DATA://事件SampleApp_UART(MSGpkt);break;其中SampleApp_UART(MSGpkt)就是串口處理函數(shù)。應(yīng)用層端點(diǎn)處理函數(shù)當(dāng)有應(yīng)用的事件觸發(fā)時(shí),將調(diào)用此函數(shù):uint16SampleApp_ProcessEvent(uint8task_id,uint16events){afIncomingMSGPacket_t*MSGpkt;if(events&SYS_EVENT_MSG)//判斷任務(wù)(一個(gè)任務(wù)可以有多個(gè)事件){MSGpkt=(afIncomingMSGPacket_t*)osal_msg_receive(SampleApp_TaskID);//獲取TaskID對(duì)應(yīng)的任務(wù)while(MSGpkt)//對(duì)比事件{switch(MSGpkt->hdr.event){caseKEY_CHANGE://判斷是否是按鍵事件...break;caseAF_INCOMING_MSG_CMD://判斷是否有消息到來(lái)...break;caseZDO_STATE_CHANGE://判斷是否有狀態(tài)改變...break;caseSPI_INCOMING_ZAPP_DATA://...break;caseSHANG_SEND_DATA_TIME_OUT://自定義事件,消息發(fā)送超時(shí)觸發(fā)...break;return(events^SYS_EVENT_MSG);//返回沒(méi)有處理完成的事件}當(dāng)ZigBee的網(wǎng)絡(luò)層接收到數(shù)據(jù),且判斷出發(fā)給自己的數(shù)據(jù)報(bào)時(shí),它會(huì)檢測(cè)數(shù)據(jù)報(bào)中的端點(diǎn),基于此向相關(guān)注冊(cè)了此端點(diǎn)的應(yīng)用層發(fā)送數(shù)據(jù)結(jié)構(gòu)體。4.7ZigBee自動(dòng)建網(wǎng)過(guò)程每一個(gè)設(shè)備都有一組能配置的參數(shù),整個(gè)設(shè)備的參數(shù)在代碼中已經(jīng)定義了默認(rèn)值。屬于同一個(gè)網(wǎng)絡(luò)中的ZigBee節(jié)點(diǎn),其網(wǎng)絡(luò)配置等參數(shù)的值應(yīng)該是一樣的。針對(duì)具體的設(shè)備其設(shè)備屬性配置,是可以不一樣的。首先協(xié)調(diào)器將掃描所有被ZCD_NV_CHANLIST參數(shù)給定的通道和選擇一個(gè)最小能量的通道。如果有超過(guò)1的最小能量通道則協(xié)調(diào)器默認(rèn)選擇較小的序號(hào)通道。協(xié)調(diào)器選擇用ZCD_NV_PANID參數(shù)指定的網(wǎng)絡(luò)ID。路由器和端點(diǎn)設(shè)備將掃描用指定的信道和指定的PANID掃描網(wǎng)絡(luò)然后加入[24]。協(xié)調(diào)器掃描ZCD_NV_CHANLIST指定的信道后會(huì)在其中一個(gè)信道上形成網(wǎng)絡(luò),如果此時(shí)其ZDAPP_CONFIG_PAN_ID被定義為0xffff,則協(xié)調(diào)器將根據(jù)自己的設(shè)置隨機(jī)的PAN_ID然后啟動(dòng)網(wǎng)絡(luò);反之,協(xié)調(diào)器將以非0xffff作為網(wǎng)絡(luò)啟動(dòng)的PAN_ID當(dāng)所有的參數(shù)設(shè)定好之后,調(diào)用下面這個(gè)函數(shù)來(lái)格式化網(wǎng)絡(luò):ZStatus_tNLME_NetworkFormationRequest(uint16PanId,uint32ScanChannels,byteScanDuration,byteBeaconOrder,byteSuperframeOrder,byteBateryLifeExtension);而路由器和終端節(jié)點(diǎn)將調(diào)用下面的函數(shù)加入網(wǎng)絡(luò),Zstatus_tNLME_NetworkDiscoveryReques(uint32ScanChannels,byteScanDuration);當(dāng)作為第一個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)啟動(dòng)的協(xié)調(diào)器初始化網(wǎng)絡(luò)、設(shè)置網(wǎng)絡(luò)參數(shù)完成之后,自己退化為一個(gè)路由器。此時(shí)當(dāng)有新的節(jié)點(diǎn)軟啟動(dòng)時(shí),會(huì)檢測(cè)當(dāng)前網(wǎng)絡(luò)中在自己已經(jīng)設(shè)定好的網(wǎng)絡(luò)參數(shù)里是否存在網(wǎng)絡(luò)[25],如果有則加入并通知協(xié)調(diào)器應(yīng)用層自己的加入:i=NLME_GetShortAddr();//獲取自己的短地址if(i!=0x0000){//不是協(xié)調(diào)器init_lcd();//初始化液晶send_my_stat();//發(fā)送當(dāng)下的物理地址和網(wǎng)絡(luò)地址給協(xié)調(diào)器。osal_start_timerEx(SampleApp_TaskID,SAMPLEAPP_SEND_PERIODIC_MSG_EVT,SAMPLEAPP_SEND_PERIODIC_MSG_TIMEOUT);mylcd_show(0,1,“網(wǎng)絡(luò)地址為:%d”,i);//顯示自己的短地址show16(4,1,i);}Else{//作為協(xié)調(diào)器啟動(dòng)}在send_my_stat()函數(shù)體中地調(diào)用了一個(gè)很重要的函數(shù):afStatus_tAF_DataRequest(afAddrType_t*dstAddr,endPointDesc_t*srcEP,uint16cID,uint16len,uint8*buf,uint8*transID,uint8options,uint8radius)AF_DataRequest()函數(shù)參數(shù)說(shuō)明如下:*dstAddr發(fā)送目的地址、端點(diǎn)地址以及傳送模式*srcEP源端點(diǎn)cID簇IDlen數(shù)據(jù)長(zhǎng)度*buf數(shù)據(jù)*transID序列號(hào)options發(fā)送選項(xiàng)radius跳數(shù)*dstAddr決定了消息發(fā)送到那個(gè)設(shè)備及那個(gè)endpoint,而簇ID(cID)決定了設(shè)備接收到信息如何處理。簇可以理解為是一種約定,約定了信息怎么處理。4.8協(xié)調(diào)器對(duì)節(jié)點(diǎn)的感知基于樹(shù)形路由考慮,如果節(jié)點(diǎn)非正常離開(kāi),協(xié)調(diào)器是沒(méi)法快速感知的。程序的設(shè)計(jì)思路及算法如下:每個(gè)父親節(jié)點(diǎn)都記得所有自己孩子的信息(短地址或者長(zhǎng)地址)。協(xié)調(diào)器(連接著pc機(jī)的路由器)首先給自己的孩子廣播一個(gè)數(shù)據(jù)報(bào)。數(shù)據(jù)發(fā)送的同時(shí)開(kāi)啟適當(dāng)時(shí)間的定時(shí)器,在這個(gè)時(shí)間內(nèi)搜集反饋的信息,根據(jù)接收到的數(shù)據(jù)的源地址和自己維護(hù)的孩子的信息進(jìn)行匹配,匹配到的孩子節(jié)點(diǎn),說(shuō)明還在網(wǎng)絡(luò)中。在時(shí)間結(jié)束時(shí)還未匹配的孩子節(jié)點(diǎn)可認(rèn)為是已經(jīng)非正常離開(kāi)的節(jié)點(diǎn)。此時(shí)協(xié)調(diào)器將刪除維護(hù)的這個(gè)孩子節(jié)點(diǎn)的信息,并告知上位機(jī)節(jié)點(diǎn)離開(kāi)的消息。由此可知,定時(shí)器越短,則感知網(wǎng)絡(luò)拓?fù)涞臅r(shí)間越快。但是如果時(shí)間太短,會(huì)因?yàn)榫W(wǎng)絡(luò)信道不好等其它原因?qū)е聰?shù)據(jù)報(bào)的晚到照成誤報(bào)。此外如果收到節(jié)點(diǎn)丟失的單播時(shí),立即將此消息反饋給上位機(jī)。路由器當(dāng)接受到來(lái)自父親節(jié)點(diǎn)的廣播信息時(shí),首先給父親一個(gè)確認(rèn)幀。然后依照父親節(jié)點(diǎn)發(fā)來(lái)的數(shù)據(jù)報(bào)中的信息,設(shè)定自己的時(shí)間再次在自己的孩子節(jié)點(diǎn)中廣播數(shù)據(jù)包。此時(shí)如果在定時(shí)內(nèi),完全匹配到了孩子的信息。則不作任何事。反之如果發(fā)現(xiàn)自己的孩子節(jié)點(diǎn)非正常離開(kāi)時(shí),立即將此消息單播給協(xié)調(diào)器(0x0000)并將自己的信息庫(kù)中刪除此孩子節(jié)點(diǎn)的信息。程序流程圖如下:圖4-3程序流程圖程序源碼:定義事件:命令簇,周期事件#defineSAMPLEAPP_SEND_PERIODIC_MSG_EVT0x0001定義事件:定時(shí)器超時(shí)時(shí)間,約10ms#defineSAMPLEAPP_SEND_PERIODIC_MSG_TIMEOUT40//10ms定義事件:定時(shí)器超時(shí)事件#defineCHECK_MY_TABLE0x0008定義事件:路由器孩子節(jié)點(diǎn)丟失事件#defineCHILD_LOSE0x0010在協(xié)調(diào)器啟動(dòng)時(shí)開(kāi)啟定時(shí)器事件:osal_start_timerEx(SampleApp_TaskID,CHECK_MY_TABLE,TIME_OUT);if(events&CHECK_MY_TABLE){if(table_count<temp_table_count){for(i=0;i<temp_table_count;i++){if(!Is_in_my_table(temp_table_addr[i])){//臨時(shí)表中的數(shù)不在表中,說(shuō)明來(lái)了新數(shù)據(jù)了。add_to_table(temp_table_addr[i]);}else{while(table_count>temp_table_count){for(i=0;i<table_count;i++){if(!Is_in_temp_table(table_addr[i])){//表中的數(shù)不在臨時(shí)表中,說(shuō)明來(lái)一個(gè)節(jié)點(diǎn)離開(kāi)了。HalUARTWrite(0,"thenodeisleft:",18);Write_Uart_16Bit(table_addr[i]);//向串口報(bào)告remove_from_table(table_addr[i]);}}//清除臨時(shí)表reset_temp_table();osal_start_timerEx(SampleApp_TaskID,CHECK_MY_TABLE,TIME_OUT);return(events^CHECK_MY_TABLE);//返回沒(méi)有處理完成的事件}路由器代碼與協(xié)調(diào)器類似,只是路由器執(zhí)行廣播之前需要接收來(lái)自父親節(jié)點(diǎn)的廣播信息:caseAF_INCOMING_MSG_CMD://接收網(wǎng)絡(luò)層信息SampleApp_MessageMSGCB(MSGpkt);//信息處理Break;SampleApp_MessageMSGCB(afIncomingMSGPacket_t*pkt);處理函數(shù)中...Switch(pkt->clusterId)...CaseSAMPLEAPP_SEND_PERIODIC_MSG_EVT://是我們定義的周期事件則執(zhí)行廣播觀察孩子節(jié)點(diǎn)的信息。如果沒(méi)有孩子節(jié)點(diǎn)離開(kāi),則不做任何事。否則:執(zhí)行AF_DataRequest(&SampleApp_Flash_DstAddr,&SampleApp_epDesc,CHILD_LOSE,//命令為孩子離開(kāi)事件3,buffer,&SampleApp_TransID,AF_DISCV_ROUTE,AF_DEFAULT_RADIUS)在目的地址中填入?yún)f(xié)調(diào)器的地址:0x0000.當(dāng)數(shù)據(jù)到達(dá)協(xié)調(diào)器時(shí),協(xié)調(diào)器會(huì)根據(jù)協(xié)議簇:CHILD_LOSE立即將數(shù)據(jù)通過(guò)串口傳遞給上位機(jī)。運(yùn)行時(shí)數(shù)據(jù)流如下,這是通過(guò)軟件ChipconGeneralPacketSniffer抓包軟件獲取的數(shù)據(jù)包顯示結(jié)果。4.9上位機(jī)軟件該裝置上位機(jī)軟件使用vc6.0設(shè)計(jì),界面簡(jiǎn)單,方便使用,如圖3-4??梢允褂么松衔粰C(jī)軟件,發(fā)送單播、組播、廣播等命令給協(xié)調(diào)器。協(xié)調(diào)器接收到命令后會(huì)做相應(yīng)的處理,之后將必須的數(shù)據(jù)通過(guò)串口返回。圖中模擬的是使協(xié)調(diào)器向地址為0x0001的路由器發(fā)送一個(gè)命令簇為SAMPLEAPP_FLASH_CLUSTERID,數(shù)據(jù)為0x23的單播命令。按下路由器上的對(duì)應(yīng)的模擬按鍵,則上位機(jī)上顯示發(fā)生的事件。關(guān)閉0x0001地址的路由器,協(xié)調(diào)器將感知路由器的離開(kāi),將數(shù)據(jù)傳給上位機(jī)。 圖4-4ZigBee上位機(jī)軟件運(yùn)行效果圖4.10運(yùn)行時(shí)數(shù)據(jù)報(bào)解析首先爭(zhēng)取設(shè)置PacketSniffer連接好各個(gè)模塊后,將一個(gè)節(jié)點(diǎn)作為監(jiān)聽(tīng)網(wǎng)絡(luò)節(jié)點(diǎn),(此時(shí),此節(jié)點(diǎn)將不會(huì)最為網(wǎng)絡(luò)中的一員)然后啟動(dòng)一個(gè)ZigBee模塊,則次模塊將作為協(xié)調(diào)器。再啟動(dòng)另一個(gè)模塊,當(dāng)兩個(gè)模塊進(jìn)行數(shù)據(jù)的首發(fā)時(shí),監(jiān)聽(tīng)模塊將監(jiān)聽(tīng)到空中的數(shù)據(jù),并通過(guò)PacketSniffer將數(shù)據(jù)顯示出來(lái)。如圖3-5是PacketSniffer軟件運(yùn)行時(shí)的效果圖。下面將具體解析數(shù)據(jù)包:圖4-5PacketSniffer運(yùn)行時(shí)效果圖⑴網(wǎng)絡(luò)層數(shù)據(jù)分析: 如圖3

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論