摘要:設(shè)計并實現(xiàn)了一種基于無線收發(fā)器芯片CC1101的測控網(wǎng)絡(luò),,簡要介紹了網(wǎng)絡(luò)中鏈路層協(xié)議的工作機(jī)制及相應(yīng)硬件電路設(shè)計,;詳細(xì)分析了使用CC1101進(jìn)行無線通信時的節(jié)能設(shè)計和防沖突設(shè)計原理,計算并給出了CC1101的有關(guān)內(nèi)部寄存器的取值,,同時也說明了使用PIC單片機(jī)PIC18F66J60進(jìn)行局域網(wǎng)互連的軟硬件設(shè)計方法,;介紹了最終系統(tǒng)的實現(xiàn)情況及應(yīng)用前景,。
關(guān)鍵詞:CC1101;節(jié)能,;網(wǎng)絡(luò),;PIC18F66J60
引言
CC1101是TI公司生產(chǎn)的一種單片、低成本的UHF頻段無線收發(fā)器,,基于IEEE 802.15.4標(biāo)準(zhǔn)開發(fā),,主要應(yīng)用領(lǐng)域為低功耗無線測控。芯片具有無線電喚醒(WOR),、數(shù)據(jù)包處理,、數(shù)據(jù)緩沖、突發(fā)數(shù)據(jù)傳輸,、清晰信道評估,、鏈接質(zhì)量指示等功能,內(nèi)部的參數(shù)寄存器和數(shù)據(jù)傳輸FIFO可通過SPI接口控制,,所需的周邊器件很少,,使用簡單。受限于發(fā)射功率和天線結(jié)構(gòu),,CC1101的視距傳輸距離一般在400~800 m范圍內(nèi),,超出此距離范圍則必須由中繼設(shè)備對無線信號進(jìn)行放大、轉(zhuǎn)發(fā),。本文設(shè)計的一種分布式無線測控系統(tǒng)通過局域網(wǎng)對中繼設(shè)備進(jìn)行互連,,大大降低了系統(tǒng)的無線通信協(xié)議復(fù)雜性,,同時達(dá)到了使用無線通信時伴隨的低功耗設(shè)計要求,,具備很強(qiáng)的實際工程應(yīng)用價值。
1 總體設(shè)計方案
測控網(wǎng)絡(luò)采用3級結(jié)構(gòu),,網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)如圖1所示,。
最底層的測控基站負(fù)責(zé)進(jìn)行工作現(xiàn)場的數(shù)據(jù)采集和控制指令的執(zhí)行,測控基站上安裝有無線收發(fā)器芯片CC1101和天線,,通過空中無線信道與中繼節(jié)點通信,。測控基站采用電池供電。
中間層的中繼節(jié)點負(fù)責(zé)接收中心計算機(jī)發(fā)出的控制指令,,向底層的測控基站轉(zhuǎn)發(fā),,或者接收底層測控基站發(fā)出的測量數(shù)據(jù),向中心計算機(jī)轉(zhuǎn)發(fā),。中繼節(jié)點上安裝有無線收發(fā)器芯片CC1101和天線,,通過空中無線信道與底層的測控基站通信;同時中繼節(jié)點也具備訪問局域網(wǎng)的功能,,可以通過外部局域網(wǎng)與中心計算機(jī)通信,。中繼節(jié)點采用市電經(jīng)AC—DC模塊變換出的直流電壓供電,。
中心計算機(jī)負(fù)責(zé)采集所有測控基站的測量數(shù)據(jù),進(jìn)行數(shù)據(jù)管理,,也可以向測控基站發(fā)出控制指令,。中心計算機(jī)通過網(wǎng)絡(luò)接口連接到外部局域網(wǎng),與中繼節(jié)點通信,。中心計算機(jī)采用市電交流供電,。
2 通信協(xié)議總體設(shè)計
中繼節(jié)點與中心計算機(jī)通過有線局域網(wǎng)通信,類似協(xié)議工程上有比較成熟的方案,,本文不再詳述,。
中繼節(jié)點與測控基站的無線鏈路層協(xié)議涉及到防沖突、節(jié)能等問題,,直接關(guān)系到系統(tǒng)可靠性,、可用性指標(biāo)最終實現(xiàn),是系統(tǒng)通信協(xié)議設(shè)計的重點,。
系統(tǒng)中依靠無線信道傳輸?shù)臄?shù)據(jù)歸結(jié)為4種,,簡述如下:
①命令幀。當(dāng)中繼節(jié)點向測控基站下傳控制指令時發(fā)出,。
②基站應(yīng)答幀,。當(dāng)測控基站收到中繼節(jié)點下傳的控制指令后,需要向中繼節(jié)點返回一個基站應(yīng)答幀,,告知指令執(zhí)行情況,。
③中繼應(yīng)答幀。當(dāng)測控基站向中繼節(jié)點上傳狀態(tài)信息后,,中繼節(jié)點需要向測控基站返回一個中繼應(yīng)答幀,,告知已經(jīng)收到狀態(tài)信息。
④測量幀,。當(dāng)測控基站測量到的工作現(xiàn)場數(shù)據(jù)發(fā)生改變后,,必須向中繼節(jié)點發(fā)出測量幀,通知中繼節(jié)點向中心計算機(jī)聲明更新對應(yīng)測控基站的記錄信息,。
為了簡化處理流程,,系統(tǒng)中傳輸?shù)乃械臄?shù)據(jù)的幀格式統(tǒng)一采用如下所示的固定長度12字節(jié)的格式。
由于CC1101通信時以數(shù)據(jù)包為最小處理單位,,可以也設(shè)置CC1101的包長度為12字節(jié),,借助CC1101的處理能力屏蔽掉對鏈路層級別以下的通信協(xié)議處理過程。
數(shù)據(jù)幀內(nèi)部各數(shù)據(jù)域定義簡述如下:
①同步頭,。標(biāo)記一幀數(shù)據(jù)的開始,,CC1101必須在收到與內(nèi)部設(shè)定的同步頭值相等的數(shù)據(jù)后才啟動內(nèi)部電路接收一個數(shù)據(jù)包。數(shù)據(jù)幀類型不同,,同步頭數(shù)值也不同,。
②地址,。每個測控基站都由系統(tǒng)分配一個唯一的2字節(jié)標(biāo)識地址,測控基站只響應(yīng)地址等于本地標(biāo)識地址的命令幀或中繼應(yīng)答幀,。
③幀類型,。用以區(qū)分本幀數(shù)據(jù)屬于4種類型中的哪一種。
④數(shù)據(jù),。本幀需要傳輸?shù)挠行?shù)據(jù),,可以是中繼節(jié)點下傳給測控基站的指令,也可以是測控基站上傳給中繼節(jié)點的狀態(tài),。
⑤CRC,。對數(shù)據(jù)幀前10個字節(jié)計算出一個2字節(jié)的校驗數(shù)據(jù),當(dāng)接收端發(fā)現(xiàn)CRC校驗錯誤時將丟棄本幀數(shù)據(jù),。
3 測控基站設(shè)計
測控基站采用電池供電,,處于無人職守的環(huán)境下工作,在設(shè)計方案中必須最大限度的考慮節(jié)能要求,,特別是對無線收發(fā)器芯片CC1101進(jìn)行低功耗設(shè)計,,這主要通過精心設(shè)計測控基站和中繼節(jié)點間的無線通信鏈路協(xié)議來實現(xiàn)。
測控基站使用TI公司的CC1101射頻收發(fā)器模塊作為無線通信接口,,該模塊已集成了CC1101,、外圍射頻電路和天線等硬件,只需直接通過SPI向其送入指令和數(shù)據(jù)即可,。模塊使用26 MHz時鐘工作,,通信頻段為433MHz,調(diào)制方式為GFSK,,通信速率為250 kbps,。
3.1 接收協(xié)議節(jié)能設(shè)計
CC1101具備WOR功能,使用該功能可以讓CC1101在睡眠態(tài)和接收態(tài)間自動輪流切換,,如圖2所示,,其中Time0為WOR周期,,Time1為接收時間,。由于在睡眠態(tài)時,CC1101的接收功耗電流僅為9.8μA,,而接收態(tài)時功耗電流達(dá)16.5 mA,,從節(jié)能的角度考慮,在使用WOR功能時,,應(yīng)該使睡眠態(tài)的工作時間占空比盡可能的大,。
但當(dāng)CC1101處于睡眠態(tài)時,無線接收電路不工作,,在此時間間隔內(nèi)無法收到從無線信道傳輸?shù)臄?shù)據(jù),,影響通信的正確性,。因此為保證可靠地接收數(shù)據(jù),必須保證在一個WOR周期內(nèi),,接收態(tài)期間CC1101能收到至少一幀完整的數(shù)據(jù),。
測控基站從中繼節(jié)點接收的控制命令幀長度為12字節(jié),當(dāng)CC1101通信速率為250 kbps時,,一個完整命令幀傳輸所需要的時間為:12×8/250=0.384(ms),。
選定WOR模式的接收態(tài)占空比為0.781%時,假定在接收態(tài)需要保留5個完整命令幀的接收時間窗口以確保穩(wěn)定,、可靠的收到一個完整命令幀,,那么可以計算出WOR周期為:5×0.384/0.781%≈246(ms)。
從CC1101的應(yīng)用手冊上可知,,WOR周期與CC1101內(nèi)部相關(guān)寄存器的值具有如下關(guān)系:
式(1)中fosc為CC1101的工作時鐘頻率,,為26 MHz,EVENT0為事件0計數(shù)器值,,WOR_RES為計數(shù)器分辨率,,一般可設(shè)置為0。這樣可以計算得到當(dāng)WOR周期為246 ms時,,EVENT0值為0x2150,。
當(dāng)WOR模式的接收占空比為0.781%時,可以根據(jù)接收態(tài)和睡眠態(tài)分別的功耗電流計算出CC1101總的功耗電流:9.8×10-3×99.219%+16.5×0.781%=0.13(mA),。
若測控基站使用兩節(jié)容量為2000 mAh的普通5號干電池供電,,可以計算出在只供CC1101工作的情況下設(shè)備可連續(xù)工作時間為:2×2000/0.13≈30 770(小時)=3.5(年)。
3.2 接收協(xié)議處理流程
CC1101接收數(shù)據(jù)時設(shè)定同步頭內(nèi)容為0xEB90,,這樣可以保證它只響應(yīng)同步頭為0xEB90的類型的數(shù)據(jù)幀,,其他類型的數(shù)據(jù)幀不會誤觸發(fā)CC1101,簡化測控基站軟件的協(xié)議處理流程,。
當(dāng)需要接收命令幀時測控基站工作流程如圖3所示,。測控基站默認(rèn)處于等待接收狀態(tài),此時CC1101工作于WOR模式,;當(dāng)收到一個完整命令幀后,,CC1101退出WOR工作模式,進(jìn)入發(fā)送工作模式,,同時測控基站控制軟件必須通過幀地址域判斷命令幀是否是發(fā)給本設(shè)備,,若命令幀是發(fā)給本設(shè)備,需要執(zhí)行該命令并返回應(yīng)答給中繼節(jié)點,,然后設(shè)置CC1101重新進(jìn)入WOR工作模式,,若命令幀不是發(fā)給本設(shè)備,則直接設(shè)置CC1101進(jìn)入WOR工作模式即可。
需要注意的是由于無線信道易受干擾,,測控基站在收到中繼節(jié)點的命令幀后必須給中繼節(jié)點回送一個應(yīng)答幀,,確認(rèn)命令幀執(zhí)行情況。為了防止應(yīng)答幀引起其它測控基站的錯誤觸發(fā),,應(yīng)答幀同步頭與命令幀同步頭不同,,為0x146F。
3.3 發(fā)送協(xié)議處理流程
當(dāng)測控基站需要反饋控制命令執(zhí)行情況或主動上傳測量數(shù)據(jù)時,,必須通過CC1101向外發(fā)送數(shù)據(jù),。為減少測控基站對無線信道的占用,只有在設(shè)備狀態(tài)產(chǎn)生變化時,,測控基站才主動向中繼節(jié)點發(fā)出數(shù)據(jù)幀通知本設(shè)備產(chǎn)生了狀態(tài)變化,,需要中繼節(jié)點向中心計算機(jī)登記該次變化。
為了防止多個測控基站同時共用無線信道時發(fā)生沖突,,必須對發(fā)送協(xié)議進(jìn)行防沖突設(shè)計,,這通過CC1101的載波偵聽功能實現(xiàn)。在每次需要發(fā)送數(shù)據(jù)前,,CC1101檢測無線信道中載波功率電平值,,并將電平值反映到RSSI寄存中,當(dāng)測控基站發(fā)現(xiàn)RSSI電平高于某一閾值時,,認(rèn)為無線信道已被占用,,將一直等待直到RSSI值低于閾值時才使用無線信道發(fā)送數(shù)據(jù)。
使用載波偵聽功能,,測控基站向中繼節(jié)點上傳測量數(shù)據(jù)時處理流程如圖4所示,。由于需要上傳測量數(shù)據(jù)的時間占總工作時間的比例很小,CC1101不需工作在WOR模式以節(jié)約電能,。為防止測量幀觸發(fā)其他處于接收命令狀態(tài)的測控基站,,測量幀同步頭設(shè)置為0x1ACF。
4 中繼節(jié)點設(shè)計
中繼節(jié)點使用Microchip公司PIC18FF66J60單片機(jī)進(jìn)行局域網(wǎng)協(xié)議的處理和上級中心計算機(jī)協(xié)議的轉(zhuǎn)發(fā)控制,,同時使用CC1101與下級的測控基站通信,。
PIC18F66J60芯片具有嵌入式以太網(wǎng)控制器模塊,是一個完整的以太網(wǎng)連接解決方案,,要完全實現(xiàn)介質(zhì)訪問控制和物理層收發(fā)器模塊功能,,只需使用2個脈沖變壓器和一些無源器件即可將單片機(jī)直接與以太網(wǎng)相連。該單片機(jī)內(nèi)部已經(jīng)嵌入了TCP/IP協(xié)議棧,,上電后協(xié)議棧自動運行,,單片機(jī)軟件只需調(diào)用相應(yīng)的TCP/IP處理函數(shù)即可。
中繼節(jié)點的硬件電路如圖5所示,,在與局域網(wǎng)通信端,PIC18F66J60單片機(jī)的4個以太網(wǎng)專用引腳TPOUT+、TPOUT-,、TPIN+,、TPIN-與網(wǎng)絡(luò)變壓器直接相連;在與無線信道通信端,,單片機(jī)通過SPI引腳與CC1101直接相連,。
中繼節(jié)點采用220 V市電經(jīng).AC—DC轉(zhuǎn)換后供電,沒有節(jié)能處理的要求,,CC1101不需使用WOR工作模式,,處于常開狀態(tài),最大限度的保證通信鏈路的可用性,。默認(rèn)狀態(tài)下中繼節(jié)點在與測控基站通信的過程中處于被動地位,,隨時準(zhǔn)備接收測控基站上傳的測量數(shù)據(jù)幀。
中繼節(jié)點時工作流程如圖6所示,,它不斷監(jiān)視本區(qū)域內(nèi)的無線基站狀態(tài),,只有當(dāng)發(fā)現(xiàn)測控基站測量數(shù)據(jù)有改變時才向中心計算機(jī)轉(zhuǎn)發(fā)數(shù)據(jù);同時響應(yīng)中心計算機(jī)發(fā)送的控制指令,,向本區(qū)域內(nèi)的無線基站轉(zhuǎn)發(fā),。
中繼節(jié)點使用PIC18F66J60單片機(jī)TCP/IP協(xié)議棧與中心計算機(jī)通信的軟件處理步驟簡介如下。
①PIC18F66J60單片機(jī)根據(jù)中心計算機(jī)IP地址向局域網(wǎng)廣播發(fā)出地址解析(ARP)包,。中心計算機(jī)工作在TCPSERVER的模式下,,應(yīng)答中繼節(jié)點發(fā)送的ARP解析請求,向中繼節(jié)點回送MAC地址,。相關(guān)函數(shù)調(diào)用為:voidARPResolve(IP ADDR*IPAddr),,發(fā)出地址解析包,IPAddr為模塊的IP地址,。BOOL ARPIsResolved(IP_ADDR*IPAddr,,MAC ADDR*MACAddr);IPAddr,,MACAddr為中心計算機(jī)的IP地址與MAC地址,。
②建立中繼節(jié)點與中心計算機(jī)的連接,查看連接是否建立與斷開連接,。相關(guān)函數(shù)調(diào)用為:TCP_SOCKETTCPConnect(NODE_INFO*remote,,TCP_PORT port),建立連接,。BOOL TCPIsConnected(TCP_SOCKEThTCP),,查看是否建立連接。void TCPDisconnect(TCP_SOCKET hTCP),,斷開連接,。
③PIC18F66J60單片機(jī)檢查網(wǎng)口緩沖區(qū)中是否有數(shù)據(jù)收到,如果有數(shù)據(jù),將數(shù)據(jù)組合成命令幀,。函數(shù)調(diào)用為:BOOL TCPIsGetReady(TCP SOCKET socket),,檢測網(wǎng)口是否收到數(shù)據(jù)。BOOL TCPGet(TCP_SOCKET,、socket,,BYTE*byte),從網(wǎng)口緩沖區(qū)中讀出一個字節(jié)數(shù)據(jù),。
④當(dāng)PIC18F66J60單片機(jī)需要向中心計算機(jī)發(fā)送數(shù)據(jù)時,,檢查網(wǎng)口是否做好準(zhǔn)備發(fā)送數(shù)據(jù),如已準(zhǔn)備好,,直接向網(wǎng)口緩沖區(qū)中寫入數(shù)據(jù),。函數(shù)調(diào)用為:BOOL TCPIsPutReady(TCP SOCKET socket),檢查網(wǎng)口是否準(zhǔn)備好發(fā)送數(shù)據(jù),。BOOL TCPPut(TCP_SOCKET hTCP,,BYTEbyte),向緩沖區(qū)寫入一個字節(jié)的注塑機(jī)參數(shù),。voidTCPFIush(TCP SOCKET hTCP),,將網(wǎng)口緩沖區(qū)的全部數(shù)據(jù)發(fā)送出去。
5 中心計算機(jī)設(shè)計
中心計算機(jī)由應(yīng)用軟件,、數(shù)據(jù)庫組成,,負(fù)責(zé)管理整個測控網(wǎng)絡(luò)系統(tǒng)的測控信息管理。該數(shù)據(jù)中心主要有以下功能:
①網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)的修改,,可以在網(wǎng)絡(luò)中增加或刪除中繼節(jié)點或測控基站,;
②與中繼節(jié)點或測控基站進(jìn)行通信,查詢運行狀態(tài),,發(fā)出動作指令,,完成運行維護(hù)管理;
③與中繼節(jié)點或測控基站進(jìn)行通信,,讀取測控基站測量數(shù)據(jù),,進(jìn)行測量信息的管理;
④各種統(tǒng)計和查詢,;
⑤數(shù)據(jù)維護(hù),。
結(jié)語
按上述設(shè)計方案研制成的分布式測控網(wǎng)絡(luò)系統(tǒng),在智能樓宇項目中得到成功應(yīng)用,。測控網(wǎng)絡(luò)系統(tǒng)利用樓宇中廣泛存在的網(wǎng)絡(luò)接口,,在總控室設(shè)置一臺中心主控計算機(jī),在每一層設(shè)置一個中繼節(jié)點,,它們之間通過網(wǎng)線互連,,不需重新布線,,大大節(jié)約了工程成本。另外,,在每一樓層各個房間安裝一個測控基站,,每層的測控基站只與同層的中繼節(jié)點聯(lián)系,,實現(xiàn)了對每個房間的智能化管理,。測控終端與中繼節(jié)點間通信速率為250 kbps,傳輸帶寬滿足大部分的日常測量,、控制信息的通信要求,;測控終端使用2節(jié)普通5號干電池供電,電量足夠一年使用,,維護(hù)成本極低,。
對測控網(wǎng)絡(luò)系統(tǒng)的技術(shù)方案稍加修改,如中繼節(jié)點與中心計算機(jī)間使用GPRS無線通信,,該測控網(wǎng)絡(luò)系統(tǒng)即可應(yīng)用于野外無人值守測控系統(tǒng),,或者是電力計費、管理系統(tǒng),。無線測控網(wǎng)絡(luò)系統(tǒng)具有構(gòu)建成本低,、易維護(hù)、通信性能高等優(yōu)點,,在分布式測控領(lǐng)域具備良好的應(yīng)用前景,。