組建SMAC協(xié)議構(gòu)架的ZigBee星形網(wǎng)絡(luò)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
在Freescale公司SMAC協(xié)議構(gòu)架的基礎(chǔ)上提出一種組建ZigBee星形網(wǎng)絡(luò)的有效方法。本文給出了網(wǎng)絡(luò)節(jié)點(diǎn)的硬件構(gòu)成,詳細(xì)分析了網(wǎng)絡(luò)組建的軟件設(shè)計(jì)思想;并將該無(wú)線網(wǎng)絡(luò)應(yīng)用于某紡織車(chē)間線路改造的項(xiàng)目中,解決了原車(chē)間布局下的多臺(tái)設(shè)備之間不易走線的問(wèn)題,大大降低了成本。
引言
ZigBee技術(shù)是最近發(fā)展起來(lái)的一種近距離無(wú)線通信技術(shù),功耗低、成本低、易應(yīng)用,工作在2.4 GHz頻段,采用擴(kuò)頻技術(shù)。ZigBee被業(yè)界認(rèn)為是最有可能應(yīng)用在工業(yè)監(jiān)控、傳感器網(wǎng)絡(luò)、家庭監(jiān)控、安全系統(tǒng)等領(lǐng)域的無(wú)線技術(shù)。目前市場(chǎng)上已經(jīng)有多家公司提供ZigBee產(chǎn)品,可是大多功能齊全的ZigBee無(wú)線通信系統(tǒng)(含協(xié)議棧)的價(jià)格卻比較昂貴,單獨(dú)的ZigBee模塊又不具有組網(wǎng)通信、節(jié)點(diǎn)自主加入的功能,這在很大程度上限制了ZigBee產(chǎn)品應(yīng)用的靈活性和廣泛性。本文在Freescale公司的SMAC協(xié)議包的軟件構(gòu)架的基礎(chǔ)上,采用MC13192 RF收發(fā)器成功組建了一個(gè)ZigBee星形網(wǎng)絡(luò)。在該網(wǎng)絡(luò)中,多個(gè)通信節(jié)點(diǎn)能夠自由入網(wǎng),在網(wǎng)絡(luò)中實(shí)現(xiàn)數(shù)據(jù)包的可靠傳輸。并且各個(gè)節(jié)點(diǎn)在軟件和硬件上有著良好的可擴(kuò)展性,能夠接入多路傳感器信號(hào)組網(wǎng)通信。
1 星形網(wǎng)絡(luò)的結(jié)構(gòu)體系
星形網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示,所有終端設(shè)備都與唯一的中央控制設(shè)備(PAN協(xié)調(diào)器)通信,終端設(shè)備之間的通信通過(guò)PAN協(xié)調(diào)器的轉(zhuǎn)發(fā)來(lái)實(shí)現(xiàn)。網(wǎng)絡(luò)終端設(shè)備要么是數(shù)據(jù)傳輸?shù)钠瘘c(diǎn),要么是數(shù)據(jù)傳輸?shù)慕K點(diǎn)。
網(wǎng)絡(luò)中必須有一個(gè)PAN協(xié)調(diào)器,它在網(wǎng)絡(luò)建立之前先對(duì)網(wǎng)絡(luò)的各個(gè)屬性初始化并建立協(xié)調(diào)器的描述符表,然后等待終端設(shè)備入網(wǎng)。星形網(wǎng)絡(luò)由于沒(méi)有路由器,最多只能允許255個(gè)終端設(shè)備加入網(wǎng)絡(luò)。終端設(shè)備進(jìn)行數(shù)據(jù)發(fā)送時(shí),必須先把數(shù)據(jù)包發(fā)送給PAN協(xié)調(diào)器,PAN協(xié)調(diào)器根據(jù)數(shù)據(jù)包中的源地址字段查詢(xún)近鄰設(shè)備列表,判斷該終端設(shè)備是否已在網(wǎng)絡(luò)中。當(dāng)近鄰設(shè)備列表中存在該設(shè)備時(shí),就說(shuō)明該終端設(shè)備已經(jīng)處在網(wǎng)絡(luò)中,然后PAN協(xié)調(diào)器對(duì)數(shù)據(jù)包進(jìn)行分析。若數(shù)據(jù)包的目的地址字段為PAN協(xié)調(diào)器,則PAN協(xié)調(diào)器接收數(shù)據(jù)包并處理其信息字段;若數(shù)據(jù)包的目的地址字段為其他終端設(shè)備,則PAN協(xié)調(diào)器根據(jù)數(shù)據(jù)包中的目的地址字段是否為終端設(shè)備進(jìn)行數(shù)據(jù)包的轉(zhuǎn)發(fā)。在星形網(wǎng)絡(luò)中,PAN協(xié)調(diào)器使用不間斷電源(UPS)供電,而其他設(shè)備采用電池供電。
2 網(wǎng)絡(luò)節(jié)點(diǎn)的硬件設(shè)計(jì)
不論是協(xié)調(diào)器還是終端設(shè)備,硬件設(shè)計(jì)上大體是一致的,只是外圍電路根據(jù)不同環(huán)境需要稍作改動(dòng)。在工作模式下,網(wǎng)絡(luò)節(jié)點(diǎn)的傳輸數(shù)據(jù)量很小,因此信號(hào)的收/發(fā)時(shí)間極短;而在非工作模式時(shí),網(wǎng)絡(luò)節(jié)點(diǎn)又處于休眠模式。而且設(shè)備的搜索、休眠激活和信道接入時(shí)延(分別為30 ms、15 ms、15 ms)都很短,使得網(wǎng)絡(luò)節(jié)點(diǎn)功耗極低,非常省電。圖2為硬件設(shè)計(jì)的基本框圖。
2.1 中央處理單元
MCU選用Freescale公司的8位微控制器MC9S08GT60,內(nèi)部總線頻率高達(dá)20 MHz,完全能夠支持高實(shí)時(shí)性的射頻模塊。60 KB的Flash足夠容納ZigBee協(xié)議棧。10位的A/D轉(zhuǎn)換模塊用于對(duì)傳感器信號(hào)的數(shù)據(jù)采集。2個(gè)串行通信接口(SCI)用于和上位機(jī)進(jìn)行通信。串行外設(shè)接口(SPI)用于MCU和射頻模塊之間的數(shù)據(jù)傳遞。每個(gè)功能模塊動(dòng)作完成后都能向MCU申請(qǐng)中斷,因此很少需要CPU干預(yù)。
2.2 射頻通信模塊
射頻通信模塊選用Freescale公司的MC13192 RF收發(fā)器,它內(nèi)部包含了完整的IEEE 802.15.4標(biāo)準(zhǔn)的物理層(PHY)調(diào)制解調(diào)器,用于支持IEEE 802.15.4標(biāo)準(zhǔn)所規(guī)定的點(diǎn)對(duì)點(diǎn)、星狀和網(wǎng)狀網(wǎng)絡(luò)通信。通信中,該收發(fā)器的包差錯(cuò)率在1.0%時(shí),輸出功率小于-92 dBm(典型值),遠(yuǎn)遠(yuǎn)低于IEEE 802.15.4標(biāo)準(zhǔn)所規(guī)定的-85 dBm。
2.3 MCU與射頻模塊的接口
MC13192的控制和數(shù)據(jù)傳送依靠4線串行外設(shè)接口(SPI)完成,其4個(gè)接口信號(hào)分別是MOSI、MISO、CE、SPICLK。主控MCU通過(guò)控制信號(hào)ATTN退出睡眠模式或休眠模式,通過(guò)RST來(lái)復(fù)位收發(fā)器,通過(guò)RXTXEN來(lái)控制數(shù)據(jù)的發(fā)送和接收,或者強(qiáng)制收發(fā)器進(jìn)入空閑模式。接口示意圖如圖3所示。
[!--empirenews.page--]3 網(wǎng)絡(luò)節(jié)點(diǎn)的軟件設(shè)計(jì)
3.1 SMAC協(xié)議包簡(jiǎn)介
Freescale公司提供足夠的軟件支持MC13192硬件,SMAC是MC13192射頻模塊產(chǎn)品隨機(jī)附帶的軟件協(xié)議包,用于簡(jiǎn)單的個(gè)人無(wú)線連接。SMAC協(xié)議包源程序是C語(yǔ)言,該協(xié)議包可以應(yīng)用在基于MC13192集成電路的RF收發(fā)器中。協(xié)議包包含一個(gè)SMAC應(yīng)用模版以及幾個(gè)應(yīng)用示例程序(Wireless UART、Packet Error Rate等),可以直接應(yīng)用于Freescale公司的2.4 GHz無(wú)線收發(fā)器*估板(MC13192EVB)。SMAC協(xié)議包雖是建立于HCS08系列的MCU和其串行接口SPI組成的硬件電路,但是具有很好的可移植性,能夠移植到大多數(shù)處理器內(nèi)核中使用。
3.2 軟件設(shè)計(jì)構(gòu)架
當(dāng)MC13192射頻模塊搭配了適合的MCU時(shí),用戶(hù)首先要在SMAC協(xié)議包的基礎(chǔ)上弄明白收發(fā)器各個(gè)工作狀態(tài)的基本特征,以及各個(gè)工作狀態(tài)之間的轉(zhuǎn)換機(jī)制。然后更改SMAC協(xié)議包中硬件接口部分的程序,在主程序中調(diào)用相應(yīng)功能服務(wù)函數(shù)進(jìn)行組合。整個(gè)SMAC協(xié)議構(gòu)架采用狀態(tài)轉(zhuǎn)換的思想,清楚地將MC13192收發(fā)器的休眠、睡眠、空閑、發(fā)送、接收等狀態(tài)抽象并分解出來(lái),收發(fā)器對(duì)接收到數(shù)據(jù)的有效信息的相應(yīng)字段進(jìn)行判斷之后,依據(jù)協(xié)議改變收發(fā)器的工作狀態(tài)。
SMAC協(xié)議包是不包含ZigBee規(guī)范的網(wǎng)絡(luò)層的,也就是說(shuō)該協(xié)議包中不具有組網(wǎng)通信、節(jié)點(diǎn)自主加入的功能程序,使用SMAC協(xié)議包只能夠?qū)崿F(xiàn)無(wú)線模塊之間進(jìn)行無(wú)目的的廣播方式的無(wú)線通信。要使用MC13192收發(fā)器組建一個(gè)有效的無(wú)線傳感器網(wǎng)絡(luò),并且能夠與其他的ZigBee產(chǎn)品相兼容,軟件設(shè)計(jì)必須嚴(yán)格遵守IEEE 802.15.4協(xié)議,在SMAC協(xié)議包構(gòu)架的基礎(chǔ)上進(jìn)一步對(duì)協(xié)議進(jìn)行擴(kuò)展。本文成功實(shí)現(xiàn)了非超幀結(jié)構(gòu)的星形網(wǎng)絡(luò),具體軟件流程如圖4所示。
3.3 組網(wǎng)的基本過(guò)程
PAN協(xié)調(diào)器選定創(chuàng)建網(wǎng)絡(luò)的信道后,首先要初始化網(wǎng)絡(luò)的各種屬性,建立協(xié)調(diào)器的PAN信息數(shù)據(jù)庫(kù),分配網(wǎng)絡(luò)ID號(hào)和16位的網(wǎng)絡(luò)短地址,設(shè)定允許設(shè)備入網(wǎng)機(jī)制并初始化設(shè)備近鄰表,然后進(jìn)入接收模式等待其他節(jié)點(diǎn)加入。網(wǎng)絡(luò)節(jié)點(diǎn)上電后,也要初始化內(nèi)部資源并建立其自身節(jié)點(diǎn)的PAN信息數(shù)據(jù)庫(kù)之后,發(fā)送掃描信號(hào)進(jìn)而準(zhǔn)備通過(guò)MAC層關(guān)聯(lián)過(guò)程加入網(wǎng)絡(luò)。
網(wǎng)絡(luò)節(jié)點(diǎn)先以廣播方式發(fā)送一個(gè)掃描信號(hào),查看當(dāng)前信道是否存在PAN。協(xié)調(diào)器收到廣播信號(hào)后會(huì)發(fā)送一個(gè)確認(rèn)幀。網(wǎng)絡(luò)節(jié)點(diǎn)若沒(méi)有收到確認(rèn)幀就代表當(dāng)前信道還沒(méi)有協(xié)調(diào)器,則繼續(xù)處于接收模式,等待協(xié)調(diào)器發(fā)現(xiàn)該節(jié)點(diǎn)后直接將其加入網(wǎng)絡(luò);若收到確認(rèn)幀,即存在PAN,該節(jié)點(diǎn)就可以嘗試加入網(wǎng)絡(luò)。網(wǎng)絡(luò)節(jié)點(diǎn)首先向PAN協(xié)調(diào)器發(fā)送信標(biāo)請(qǐng)求命令,收到協(xié)調(diào)器的信標(biāo)幀后,根據(jù)信標(biāo)幀更新自身節(jié)點(diǎn)的信息數(shù)據(jù)庫(kù)中的PAN標(biāo)識(shí)等相關(guān)屬性,并判斷當(dāng)前PAN協(xié)調(diào)器是否未飽和以及是否允許設(shè)備入網(wǎng)。若協(xié)調(diào)器允許設(shè)備入網(wǎng),網(wǎng)絡(luò)節(jié)點(diǎn)就要向協(xié)調(diào)器發(fā)送關(guān)聯(lián)請(qǐng)求命令,嘗試通過(guò)關(guān)聯(lián)方式加入網(wǎng)絡(luò)。協(xié)調(diào)器收到后把該節(jié)點(diǎn)信息(如64位擴(kuò)展地址等)寫(xiě)入設(shè)備近鄰表并向該節(jié)點(diǎn)分配16位的網(wǎng)絡(luò)短地址。該節(jié)點(diǎn)收到協(xié)調(diào)器的關(guān)聯(lián)響應(yīng)命令后,把短地址寫(xiě)入其數(shù)據(jù)信息庫(kù),即成功入網(wǎng)。然后網(wǎng)絡(luò)節(jié)點(diǎn)按照功能設(shè)定使用此短地址向協(xié)調(diào)器發(fā)送信息。網(wǎng)絡(luò)節(jié)點(diǎn)一般為電池供電,在空閑狀態(tài)時(shí)就會(huì)進(jìn)入休眠節(jié)能狀態(tài)。外圍電路的控制主要是針對(duì)傳感器、開(kāi)關(guān)、LED等器件的控制,可隨時(shí)根據(jù)不同需求對(duì)軟件進(jìn)行相應(yīng)修改。
3.4 調(diào)試及運(yùn)行
MC13192包括4種主動(dòng)模式:空閑模式、TX模式、RX模式和CCA/能量檢測(cè)模式??臻e模式是退出低功耗模式后的缺省模式,每次各個(gè)模式間轉(zhuǎn)換的起點(diǎn)必須是空閑模式,從該模式起才能轉(zhuǎn)化到其他主動(dòng)模式。
MC13192發(fā)送片上事件給主控MCU通過(guò)中斷(IRQ)來(lái)完成,作為主機(jī)的外部中斷源,主機(jī)通過(guò)讀MC13192的中斷標(biāo)志寄存器IRQ_status的相應(yīng)標(biāo)志位來(lái)判別各個(gè)片上事件的發(fā)生。然而IRQ的中斷優(yōu)先級(jí)在MCU中僅次于復(fù)位信號(hào),比計(jì)數(shù)器中斷、鍵盤(pán)中斷等優(yōu)先級(jí)都要高,因此當(dāng)程序中涉及其他中斷時(shí),用戶(hù)須先屏蔽MCU的外部中斷源(IRQ),再單獨(dú)打開(kāi)要使用的中斷源。
4 應(yīng)用
目前,本設(shè)計(jì)已被應(yīng)用于某紡織車(chē)間線路改造的項(xiàng)目中。該車(chē)間有200臺(tái)紡機(jī),每臺(tái)紡機(jī)獨(dú)立工作?,F(xiàn)在工廠要對(duì)車(chē)間實(shí)行統(tǒng)一控制,需要在每臺(tái)紡機(jī)上安裝.,把紡機(jī)數(shù)據(jù)實(shí)時(shí)上傳給中央控制器。中央控制器通過(guò)控制每臺(tái)紡機(jī)的停車(chē)狀態(tài)、車(chē)速、打緯次數(shù)、加時(shí)產(chǎn)量等信息,進(jìn)而控制整個(gè)車(chē)間的運(yùn)行狀態(tài)。這樣既可提高車(chē)間的生產(chǎn)效率,又使車(chē)間易于管理。若采用CAN總線等有線網(wǎng)絡(luò)進(jìn)行控制,由于車(chē)間各臺(tái)紡機(jī)布線通道已經(jīng)固定,且車(chē)間的空間較小,這些因素給車(chē)間的線路設(shè)計(jì)造成了不便,而且走線的過(guò)于密*給車(chē)間增加安全隱患。
ZigBee無(wú)線網(wǎng)絡(luò)的引入,解決了該車(chē)間布局下的多臺(tái)設(shè)備之間不易走線的問(wèn)題。中央控制器相當(dāng)于PAN協(xié)調(diào)器,而每臺(tái)紡機(jī)的.相當(dāng)于終端設(shè)備。網(wǎng)絡(luò)中只有這兩種角色,不需要增加PAN協(xié)調(diào)器。每臺(tái)紡機(jī)每0.5 s上傳一次數(shù)據(jù),而且最遠(yuǎn)的紡機(jī)距離區(qū)域控制器也在80 m之內(nèi),這些因素ZigBee星形網(wǎng)絡(luò)都能夠滿(mǎn)足。網(wǎng)絡(luò)中的應(yīng)答機(jī)制和數(shù)據(jù)校驗(yàn)機(jī)制能夠保證紡機(jī)數(shù)據(jù)的可靠傳輸,而且網(wǎng)絡(luò)節(jié)點(diǎn)功耗極低。測(cè)試表明,MC13192工作在停止、休眠、睡眠、空閑各模式時(shí)的工作電流依次為0.2 μA、1 μA、35 μA、200 μA。采用了低功耗的ZigBee無(wú)線技術(shù)之后,車(chē)間節(jié)約了大量成本。
5 結(jié)論
本文利用Freescale公司的8位微處理器MC9S08GT60和射頻模塊MC13192在硬件上實(shí)現(xiàn)了網(wǎng)絡(luò)節(jié)點(diǎn)的設(shè)計(jì)。通過(guò)對(duì)協(xié)議包SMAC進(jìn)行分析,在原有協(xié)議框架的基礎(chǔ)上對(duì)其進(jìn)行擴(kuò)展,在軟件上實(shí)現(xiàn)了ZigBee星形網(wǎng)絡(luò)的組建。該網(wǎng)絡(luò)實(shí)現(xiàn)了多個(gè)節(jié)點(diǎn)的自動(dòng)入網(wǎng)、網(wǎng)間可靠通信等功能,并且成功應(yīng)用于紡織車(chē)間線路改造的項(xiàng)目中。