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