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