高仁璟, 劉國新, 唐禎安
(大連理工大學(xué) 電子信息與電氣工程學(xué)部,遼寧 大連 116023)
隨著半導(dǎo)體技術(shù)的發(fā)展和各種各樣的射頻集成芯片的大量涌現(xiàn),射頻技術(shù)在現(xiàn)代生產(chǎn)和生活中的應(yīng)用越來越廣泛。射頻技術(shù)在無線監(jiān)測、遠(yuǎn)程控制等領(lǐng)域有非常重要的應(yīng)用[1]。與傳統(tǒng)的有線傳輸方式相比,射頻傳輸具有安裝與維護(hù)方便、價(jià)格低廉、適用于復(fù)雜地理?xiàng)l件等優(yōu)點(diǎn)。
然而,實(shí)際的應(yīng)用環(huán)境中,經(jīng)常會有各種各樣的射頻網(wǎng)絡(luò)在運(yùn)行。如何實(shí)現(xiàn)射頻網(wǎng)絡(luò)管理,避免網(wǎng)絡(luò)沖突,保證數(shù)據(jù)正確傳輸便成為射頻技術(shù)應(yīng)用中非常重要的環(huán)節(jié)?,F(xiàn)將Zigbee協(xié)議的網(wǎng)絡(luò)管理方式,應(yīng)用于基于Si4432的無線射頻遙控系統(tǒng)中,并根據(jù)實(shí)際情況對協(xié)議進(jìn)行簡化,保證了系統(tǒng)的可靠運(yùn)行。
射頻遙控系統(tǒng)的整體框圖如圖1所示。系統(tǒng)由一個(gè)主節(jié)點(diǎn)、多個(gè)路由節(jié)點(diǎn)(從節(jié)點(diǎn))及手持移動遙控設(shè)備(移動節(jié)點(diǎn))組成。主節(jié)點(diǎn)主要實(shí)現(xiàn)網(wǎng)絡(luò)的建立和管理、數(shù)據(jù)的轉(zhuǎn)發(fā)功能以及向控制系統(tǒng)發(fā)送控制命令。路由節(jié)點(diǎn)實(shí)現(xiàn)入網(wǎng)及網(wǎng)絡(luò)維護(hù)、數(shù)據(jù)轉(zhuǎn)發(fā)功能。手持設(shè)備用于入網(wǎng)和發(fā)送控制命令。主節(jié)點(diǎn)和路由節(jié)點(diǎn)由主電源供電,一直處于工作狀態(tài);手持設(shè)備由電池供電,大部分時(shí)間處于休眠或關(guān)閉狀態(tài)。
圖1 射頻遙控系統(tǒng)整體框
圖 2所示為系統(tǒng)的硬件結(jié)構(gòu)圖,其中圖 2(a)為移動節(jié)點(diǎn)的結(jié)構(gòu)圖,圖 2(b)為路由節(jié)點(diǎn)和主節(jié)點(diǎn)的結(jié)構(gòu)圖。主節(jié)點(diǎn)和移動節(jié)點(diǎn)均采用高性能、低功耗的 8 位AVR 系列的單片機(jī)[2]??紤]移動節(jié)點(diǎn)是電池供電,為了延長供電時(shí)間,采用低功耗的ATmega168芯片。主節(jié)點(diǎn)采用ATmega32芯片。射頻收發(fā)采用的是Silicon Labs公司的Si4432芯片,該芯片集成度高、體積小、功耗低,具有-118dBm的超高靈敏度,可提供極佳的鏈路質(zhì)量,在擴(kuò)大傳輸范圍的同時(shí)將功耗降至最低。其工作頻段范圍為240~930 MHz,最高輸出功率可達(dá)+20 dBm,傳輸距離遠(yuǎn)。Si4432內(nèi)部集成了天線分集、休眠喚醒定時(shí)器、64字節(jié)收發(fā) FIFO等功能,同時(shí),Si4432芯片還具有跳頻和信道信號強(qiáng)度評估功能[3]。其外圍電路僅需要一個(gè)30 MHz晶振及幾個(gè)電阻、電容、電感等,電路設(shè)計(jì)簡單、成本低廉。AVR單片機(jī)與Si4432芯片通過標(biāo)準(zhǔn)的串行接口(SPI)相連。單片機(jī)通過SPI口配置Si4432內(nèi)部寄存器和實(shí)現(xiàn)數(shù)據(jù)的讀寫。Si4432的TX引腳為射頻信號發(fā)送端,RXp、RXn引腳為差分信號接收端,射頻信號的發(fā)射和接收端通過RF開關(guān)芯片UPG2214與天線相連。
為了提高系統(tǒng)的實(shí)用性,路由節(jié)點(diǎn)增加了串口,為系統(tǒng)功能擴(kuò)展奠定了基礎(chǔ)。移動節(jié)點(diǎn)增加了液晶顯示,顯示各節(jié)點(diǎn)的工作狀態(tài)以及信號強(qiáng)度;同時(shí),移動節(jié)點(diǎn)還配有多個(gè)按鍵,或用于發(fā)送控制命令,或用于發(fā)送網(wǎng)絡(luò)測試命令。
本系統(tǒng)采用EZMac協(xié)議定義的幀格式進(jìn)行通信,EZMac幀結(jié)構(gòu)如表1所示。
表1 EZMac幀結(jié)構(gòu)
每次發(fā)送數(shù)據(jù)必須以AA為前導(dǎo)碼,否則外部接收裝置無法接收數(shù)據(jù)。前導(dǎo)碼至少要有3個(gè)字節(jié)。D0到Dn是凈荷,不超過16個(gè)字節(jié)。2D、D4是同步模式的標(biāo)志碼。CID(用戶ID)位用于避免鄰近的不同系統(tǒng)使用EZMac而產(chǎn)生的干擾。SID(發(fā)送方ID)位和DID(目的地ID)位用于唯一標(biāo)識數(shù)據(jù)通信設(shè)備。PL(包長)位使用于傳輸?shù)臄?shù)據(jù)包長度需要動態(tài)變化時(shí)。CRC(循環(huán)冗余碼)位用于識別數(shù)據(jù)包中是否有錯(cuò)誤的數(shù)據(jù)位[4]。當(dāng)接收數(shù)據(jù)時(shí),數(shù)據(jù)包過濾是實(shí)時(shí)的,這樣 EZMac可以盡早剔除無效的數(shù)據(jù)包。數(shù)據(jù)包的實(shí)時(shí)過濾節(jié)約了資源,在某些情況下可顯著減少浪費(fèi)在處理無效數(shù)據(jù)包進(jìn)程上的資源。
系統(tǒng)中各節(jié)點(diǎn)的軟件由硬件管理層、數(shù)據(jù)管理層、應(yīng)用管理層、網(wǎng)絡(luò)管理層四部分組成。硬件管理層實(shí)現(xiàn)單片機(jī)的初始化、Si4432初始化、按鍵等外設(shè)管理。數(shù)據(jù)管理層主要對數(shù)據(jù)進(jìn)行處理,它與硬件管理層、網(wǎng)絡(luò)管理層及應(yīng)用管理層都存在數(shù)據(jù)接口。數(shù)據(jù)管理層與硬件管理層進(jìn)行無線收發(fā)數(shù)據(jù)交換,與網(wǎng)絡(luò)管理層和應(yīng)用層進(jìn)行命令數(shù)據(jù)交換。為加快程序的響應(yīng)速度,各層之間的消息傳遞主要通過置位標(biāo)志位的方式實(shí)現(xiàn)。應(yīng)用管理層主要實(shí)現(xiàn)用戶自定義的功能。網(wǎng)絡(luò)管理層主要用于實(shí)現(xiàn)網(wǎng)絡(luò)管理功能,節(jié)點(diǎn)類型不同,其實(shí)現(xiàn)的功能也不同。各節(jié)點(diǎn)網(wǎng)絡(luò)管理層的功能為:
(1)主節(jié)點(diǎn)
主節(jié)點(diǎn)實(shí)現(xiàn)組網(wǎng)及網(wǎng)絡(luò)管理功能。為避免因節(jié)點(diǎn)復(fù)位造成網(wǎng)絡(luò)故障,本系統(tǒng)充分利用了單片機(jī)的 EEPROM 數(shù)據(jù)存儲區(qū)。
主節(jié)點(diǎn)的組網(wǎng)過程:讀取EEPROM區(qū)的網(wǎng)絡(luò)參數(shù)數(shù)值,包括組網(wǎng)頻段、網(wǎng)絡(luò)ID值、子節(jié)點(diǎn)ID值(主節(jié)點(diǎn)的ID值設(shè)為0x00,廣播地址的值設(shè)為0xFF)。主節(jié)點(diǎn)對設(shè)定頻段進(jìn)行一段時(shí)間的偵聽,如果未發(fā)現(xiàn)有同頻的其他網(wǎng)絡(luò)存在,則確定本頻段為網(wǎng)絡(luò)建立頻段;若發(fā)現(xiàn)存在其他網(wǎng)絡(luò)則進(jìn)行跳頻管理,將網(wǎng)絡(luò)頻段調(diào)至相鄰頻段,同時(shí)將新的頻段值存入EEPROM區(qū)。
主節(jié)點(diǎn)網(wǎng)絡(luò)管理:主節(jié)點(diǎn)組網(wǎng)完成后,等待其他節(jié)點(diǎn)加入網(wǎng)絡(luò)。當(dāng)主節(jié)點(diǎn)收到子節(jié)點(diǎn)入網(wǎng)請求后,向子節(jié)點(diǎn)發(fā)送入網(wǎng)確認(rèn)消息,同時(shí)將子節(jié)點(diǎn)的地址存儲于EEPROM中的網(wǎng)絡(luò)拓?fù)涔芾韰^(qū)。若某一子節(jié)點(diǎn)長時(shí)間未響應(yīng),則主節(jié)點(diǎn)將其從網(wǎng)絡(luò)中剔除。在網(wǎng)絡(luò)運(yùn)行過程中,若主節(jié)點(diǎn)發(fā)現(xiàn)其他網(wǎng)絡(luò)在同一頻段運(yùn)行,則向全網(wǎng)發(fā)送跳頻命令,同時(shí)更改網(wǎng)絡(luò)頻段。
(2)路由節(jié)點(diǎn)
路由節(jié)點(diǎn)主要實(shí)現(xiàn)入網(wǎng)、網(wǎng)絡(luò)管理、數(shù)據(jù)轉(zhuǎn)發(fā)等功能。
路由節(jié)點(diǎn)入網(wǎng)過程:讀取EEPROM內(nèi)網(wǎng)絡(luò)參數(shù)數(shù)值,包括網(wǎng)絡(luò)ID,本節(jié)點(diǎn)ID,父節(jié)點(diǎn)ID,子節(jié)點(diǎn)ID,網(wǎng)絡(luò)頻段值。在設(shè)定頻段內(nèi)發(fā)送入網(wǎng)請求,收到入網(wǎng)確認(rèn)消息后,將新的網(wǎng)絡(luò)拓?fù)鋮?shù)存入EEPROM網(wǎng)絡(luò)拓?fù)涔芾韰^(qū)。若路由節(jié)點(diǎn)長時(shí)間未收到入網(wǎng)確認(rèn)消息,則自動跳至下一頻段搜索網(wǎng)絡(luò)。
路由節(jié)點(diǎn)網(wǎng)絡(luò)管理:路由節(jié)點(diǎn)動態(tài)監(jiān)測網(wǎng)絡(luò)狀態(tài),當(dāng)路由節(jié)點(diǎn)收到子節(jié)點(diǎn)入網(wǎng)請求時(shí),發(fā)送確認(rèn)消息,并將子節(jié)點(diǎn)的ID值存入EEPROM網(wǎng)絡(luò)拓?fù)涔芾韰^(qū);當(dāng)路由節(jié)點(diǎn)的父節(jié)點(diǎn)丟失時(shí),則尋找新的父節(jié)點(diǎn)重新入網(wǎng)。同時(shí),路由節(jié)點(diǎn)也具備網(wǎng)絡(luò)偵聽功能,當(dāng)路由節(jié)點(diǎn)發(fā)現(xiàn)同頻段其他網(wǎng)絡(luò)運(yùn)行時(shí),向主節(jié)點(diǎn)發(fā)送網(wǎng)絡(luò)沖突消息。
本系統(tǒng)中,路由節(jié)點(diǎn)作為數(shù)據(jù)的中轉(zhuǎn)站,同時(shí)具有數(shù)據(jù)暫存功能,即當(dāng)發(fā)往某節(jié)點(diǎn)的數(shù)據(jù)暫時(shí)無法收到確認(rèn)消息時(shí),路由節(jié)點(diǎn)將其暫存,等待節(jié)點(diǎn)重新入網(wǎng)后再傳遞數(shù)據(jù),長時(shí)間無響應(yīng)時(shí)則刪除數(shù)據(jù)。
(3)移動節(jié)點(diǎn)
手持設(shè)備作為移動節(jié)點(diǎn),無路由和數(shù)據(jù)轉(zhuǎn)發(fā)功能,采用電池供電。移動節(jié)點(diǎn)的主要功能是入網(wǎng)和發(fā)送控制命令,為了省電通常處于休眠狀態(tài)。
系統(tǒng)各節(jié)點(diǎn)的程序流程:
①硬件初始化:包括單片機(jī)初始化,Si4432初始化,其他外設(shè)初始化。
②網(wǎng)絡(luò)初始化:主節(jié)點(diǎn)發(fā)起網(wǎng)絡(luò),路由節(jié)點(diǎn)和移動節(jié)點(diǎn)進(jìn)行信道掃描并加入網(wǎng)絡(luò);
③用戶自定義功能初始化;
④程序進(jìn)入循環(huán)工作狀態(tài),檢測各層標(biāo)志位狀態(tài),當(dāng)標(biāo)志位狀態(tài)改變時(shí),則調(diào)用相應(yīng)的函數(shù)進(jìn)行處理。
當(dāng)多個(gè)節(jié)點(diǎn)間進(jìn)行數(shù)據(jù)傳遞時(shí),有可能發(fā)生通信沖突,造成信道阻塞,數(shù)據(jù)丟失。為避免這種狀況出現(xiàn),這里借鑒了CSMA/CA協(xié)議方式,在一個(gè)廣播形式的網(wǎng)絡(luò)中,當(dāng)一個(gè)節(jié)點(diǎn)發(fā)送消息時(shí),網(wǎng)絡(luò)中覆蓋范圍內(nèi)所有的節(jié)點(diǎn)都能接收到,容易形成數(shù)據(jù)阻塞,導(dǎo)致網(wǎng)絡(luò)速度變慢,甚至癱瘓。為了避免數(shù)據(jù)傳輸中的碰撞和重復(fù)發(fā)送,無線網(wǎng)絡(luò)中采用CSMA/CA協(xié)議,當(dāng)一個(gè)節(jié)點(diǎn)要發(fā)送數(shù)據(jù)時(shí),首先偵聽信道是否空閑,如果空閑則立即發(fā)送數(shù)據(jù),否則暫時(shí)不發(fā)送,退避一段時(shí)間,繼續(xù)偵聽[5]。該協(xié)議能夠?qū)崿F(xiàn)通信信道的合理利用。
CSMA/CA協(xié)議有三種檢測信道空閑的方式:能量檢測(ED)、載波檢測(CS)以及能量載波混合檢測。這里采用能量檢測的方式,當(dāng)節(jié)點(diǎn)要發(fā)送數(shù)據(jù)時(shí),首先檢測 Si4432的RSSI寄存器的值,以檢測信道能量值,當(dāng)RSSI值大于某一閾值時(shí)不進(jìn)行數(shù)據(jù)發(fā)送,退避一段時(shí)間,繼續(xù)檢測,直至將數(shù)據(jù)發(fā)出。
現(xiàn)利用跳頻管理機(jī)制,對射頻網(wǎng)絡(luò)頻段進(jìn)行管理。Si4432頻段管理寄存器分為兩種,一種是載波發(fā)生器,另一種是跳頻(FHSS)管理寄存器。載波發(fā)生器用于設(shè)置Si4432的基礎(chǔ)頻率(Fnom);跳頻管理寄存器用于設(shè)置跳頻參數(shù)。跳頻管理寄存器由跳頻頻道(fhch)選擇和跳頻步長(fhs)設(shè)置兩個(gè)寄存器組成。Si4432載波頻率計(jì)算式為:
由式(1)可知,當(dāng)設(shè)置好調(diào)頻步長(fhs)后,可以通過改變跳頻頻道選擇寄存器的數(shù)值(fhch)來實(shí)現(xiàn)跳頻功能。
首先,驗(yàn)證主節(jié)點(diǎn)的組網(wǎng)功能。開啟一個(gè)干擾網(wǎng)絡(luò),然后給主節(jié)點(diǎn)上電。當(dāng)主節(jié)點(diǎn)信道掃描時(shí)間設(shè)置合理時(shí),系統(tǒng)能夠檢測到網(wǎng)絡(luò)沖突,并進(jìn)行跳頻。
然后,驗(yàn)證各節(jié)點(diǎn)網(wǎng)絡(luò)管理功能。開啟路由節(jié)點(diǎn),路由節(jié)點(diǎn)進(jìn)行信道掃描,在主節(jié)點(diǎn)工作的頻段向主節(jié)點(diǎn)發(fā)送入網(wǎng)請求,主節(jié)點(diǎn)發(fā)送確認(rèn)消息并在液晶模塊上顯示路由節(jié)點(diǎn)狀態(tài)。實(shí)驗(yàn)證明,主節(jié)點(diǎn)能夠監(jiān)測路由節(jié)點(diǎn)入網(wǎng)及離網(wǎng)狀態(tài)。網(wǎng)絡(luò)運(yùn)行過程中引入干擾網(wǎng)絡(luò)時(shí),主節(jié)點(diǎn)能夠?qū)嵭刑l 管理。
在數(shù)據(jù)沖突驗(yàn)證中,當(dāng)各節(jié)點(diǎn)組成鏈狀網(wǎng)時(shí),數(shù)據(jù)發(fā)送正常。當(dāng)組成Mesh狀網(wǎng)時(shí),會出現(xiàn)數(shù)據(jù)沖突現(xiàn)象。將各節(jié)點(diǎn)的CSMA/CA退避時(shí)間設(shè)置為不同值時(shí),能夠有效降低沖突發(fā)生率。
在無線技術(shù)應(yīng)用中,為射頻網(wǎng)絡(luò)添加網(wǎng)絡(luò)管理功能,能夠有效的避免網(wǎng)間沖突,防止數(shù)據(jù)丟失,網(wǎng)絡(luò)癱瘓等故障,大大提高數(shù)據(jù)的傳輸效率。
相比于傳統(tǒng)的有線控制系統(tǒng),本系統(tǒng)體積小,安裝方便,功耗低,無線傳輸性能優(yōu)越;機(jī)械復(fù)雜度低,出現(xiàn)故障,易于查找故障點(diǎn),更換、維修方便;工業(yè)現(xiàn)場往往存在各種供電線路、控制線路等,電路極其復(fù)雜,采用本射頻控制系統(tǒng),能夠極大地降低電路復(fù)雜度,降低安全隱患。系統(tǒng)已成功應(yīng)用于冶金、水泥等行業(yè),實(shí)現(xiàn)了控制信號的無線傳輸。
[1] 羅春彬, 彭龑, 易彬. RFID技術(shù)發(fā)展與應(yīng)用[J]. 通信技術(shù), 2009,42(12): 112-114.
[2] 沈文, LEE Eagle, 詹衛(wèi)前. AVR單片機(jī)C語言開發(fā)入門指導(dǎo)[M].北京: 清華大學(xué)出版社, 2003: 2-3.
[3] Silicon Laboratories. Si4432 ISM transceiver DataSheet rev 0.3[EB/OL]. (2010-01-12) [2010-03-08]. http://www.silabs.com.
[4] 劉希若, 羅志祥. EZMac協(xié)議原理與應(yīng)用[J]. 計(jì)算機(jī)與數(shù)字工程,2007, 35(07): 98-99.
[5] Zigbee Alliance. Zigbee Document 053474r17: Zigbee specification[EB/OL]. (2010-01-12) [2010-03-08]. http://www.zigbee.org/.