劉志斌,雷景生,杜海舟
(上海電力學(xué)院 a.電子與信息工程學(xué)院,b.計算機(jī)科學(xué)與技術(shù)學(xué)院,上海 200090)
電能是日常生活和企業(yè)生產(chǎn)必不可少的能源,面對日益凸顯的資源環(huán)境問題和更高的用戶服務(wù)質(zhì)量要求,建設(shè)智能電網(wǎng)已成為全球電力行業(yè)應(yīng)對挑戰(zhàn)、實現(xiàn)可持續(xù)發(fā)展的共同選擇.
智能用電作為智能電網(wǎng)的重要組成部分,如何科學(xué)使用越來越受到重視,智能用電軟硬件設(shè)備開始得到應(yīng)用.但目前的智能用電設(shè)備大多使用C語言甚至匯編開發(fā),開發(fā)難度大,開發(fā)周期長,而且往往只提供單一的保護(hù)、監(jiān)測或控制功能,各設(shè)備獨立工作,無法實現(xiàn)多個設(shè)備的聯(lián)動運作,很難實現(xiàn)信息化和遠(yuǎn)程控制.
本文結(jié)合當(dāng)前熱門的無線傳感器網(wǎng)絡(luò)(Wireless Sensor Networks,WSN)技術(shù),設(shè)計了基于TinyOS系統(tǒng)的個人用戶側(cè)用電監(jiān)測無線傳感器節(jié)點,并通過實驗平臺進(jìn)行了節(jié)點組網(wǎng)測試.節(jié)點設(shè)計成插座形式,可以監(jiān)測到該路電壓、電流及負(fù)載功率、功率因數(shù)等,并通過無線模塊將獲得的數(shù)據(jù)發(fā)送至連接在個人計算機(jī)(Personal Computer,PC)上的匯聚(基站)節(jié)點,還可通過繼電器控制負(fù)載電源通斷.
無線傳感器網(wǎng)絡(luò)是由部署在監(jiān)測區(qū)域內(nèi)大量的廉價微型傳感器節(jié)點組成的,由無線通信方式形成的一個多跳的自組織網(wǎng)絡(luò)系統(tǒng),[1]其目的是對網(wǎng)絡(luò)覆蓋區(qū)域中感知對象的信息進(jìn)行協(xié)作感知、采集和處理,并發(fā)送給觀察者.[2]一般監(jiān)測的無線傳感器網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示,由以通訊為中心的、大量的、小型和微型數(shù)據(jù)采集設(shè)備構(gòu)成,具有動態(tài)性、適應(yīng)性和分布處理能力,適用于智能用電監(jiān)測及控制系統(tǒng).[3-4]
圖1 無線傳感器網(wǎng)絡(luò)結(jié)構(gòu)
本設(shè)計使用的TinyOS是一個開源的嵌入式操作系統(tǒng),在目前的無線傳感器網(wǎng)絡(luò)研究領(lǐng)域使用最為廣泛.[5]它是一個基于事件驅(qū)動的系統(tǒng),采用組件化的架構(gòu)方式和模塊化設(shè)計,具有輕線程、主動消息等特點,能夠快速實現(xiàn)各種應(yīng)用,達(dá)到代碼量小、耗能少、并發(fā)性高、魯棒性好的設(shè)計目標(biāo).[6]
TinyOS系統(tǒng)、庫以及應(yīng)用程序都采用 nesC語言編寫.nesC語言是一種新的用于結(jié)構(gòu)化的基于組件的應(yīng)用程序語言,具有類似 C語言的語法,并且支持TinyOS的并發(fā)模型.[7]nesC設(shè)計中數(shù)據(jù)結(jié)構(gòu)大小的固定、存儲空間的預(yù)分配等技術(shù)的采用,都有利于硬件化軟件組件的實現(xiàn);各個構(gòu)件在編譯時通過接口進(jìn)行組件組裝,有利于提高程序的運行效率,并在一定程度上簡化了構(gòu)件化的軟件設(shè)計.
就整體而言,節(jié)點硬件應(yīng)包含數(shù)據(jù)采集、數(shù)據(jù)處理、無線通信、繼電器控制和電源供應(yīng)5個模塊.
本文節(jié)點設(shè)計采用ADE7763+MSP430+CC2420芯片組合構(gòu)成硬件解決方案:采集電壓電流轉(zhuǎn)換為小信號,經(jīng)美國模擬器件公司專用的電能計量芯片ADE7763計算出各電能參數(shù);使用美國德州儀器公司的一款超低功耗處理器MSP430作為核心,讀取計量芯片數(shù)據(jù),處理后通過Chipcon As公司符合 2.4 GHz IEEE802.15.4 標(biāo)準(zhǔn)的射頻收發(fā)器CC2420將芯片數(shù)據(jù)發(fā)送出去.傳感器節(jié)點結(jié)構(gòu)如圖2所示.
圖2 無線傳感器節(jié)點結(jié)構(gòu)
串口模塊使用FT232BM芯片,用于節(jié)點程序燒錄以及與PC的通信和調(diào)試.采用剩磁型自鎖式繼電器控制負(fù)載電源開關(guān),節(jié)電效果明顯.電源模塊將220 V交流電轉(zhuǎn)換為5 V和3.3 V直流電供給各功能模塊.
本設(shè)計的處理單元和通信單元是在Telos節(jié)點平臺基礎(chǔ)上進(jìn)行修改和擴(kuò)展的,它是一種用于無線傳感器網(wǎng)絡(luò)的低功耗產(chǎn)品,在設(shè)計和使用時采用了工業(yè)化的標(biāo)準(zhǔn),符合通用串行總線(Universal Serial Bus,USB)和 IEEE 802.15.4協(xié)議.[8-9]
采用Moteiv公司的升級版TelosB節(jié)點硬件平臺,將MSP430F1611單片機(jī)作為微處理器,具有良好的超低功耗特性.
電能數(shù)據(jù)采集單元是節(jié)點的重要部分.這里采用專用的電能計量芯片ADE7763來測量有功電能、視在電能、瞬時電壓、瞬時電流,以及電壓和電流均方根值等電量參數(shù),具有精度高、誤差低、體積小、安全穩(wěn)定性好,以及外圍電路簡單等特點.
ADE7763有2個模擬電壓輸入通道,分別為引腳V1P/V1N和V2P/V2N,如圖3所示.通道1用于處理電流信號i(t),通道2用于處理電壓信號u(t).
輸入的電壓和電流強(qiáng)電信號首先通過分壓電阻、錳銅片轉(zhuǎn)換為弱電信號,在進(jìn)入ADE7763之前還需通過低通濾波器濾波,以消除諧波的影響.
濾波器采用巴特沃斯型開關(guān)電容濾波器MAX291,應(yīng)用時外接一截止頻率為100 Hz的電容即可.
輸入的電壓和電流信號通過ADE7763內(nèi)部的模數(shù)轉(zhuǎn)換器變成數(shù)字信號后,進(jìn)行相乘,計算出瞬時功率p(t),再通過低通濾波器LPF2后,得到有功功率P,利用功率偏差校準(zhǔn)寄存器 APOS的值對有功功率進(jìn)行校準(zhǔn),放入采樣波形數(shù)據(jù)寄存器中,然后對采樣波形數(shù)據(jù)寄存器的值進(jìn)行累加,再存入電能寄存器中.
圖3 電能計量芯片ADE7763引腳
微控制對ADE7763的所有操作都是通過SPI串行口操作ADE7763的各個寄存器實現(xiàn)的,其工作狀態(tài)則通過中斷模塊反饋給微控制器,DIN(輸入)、DOUT(輸出)、SCLK(時鐘信號)、CS(片選)4個引腳為ADE7763的4線串行外部設(shè)備接口(Serial Peripheral Interface,SPI).
軟件的整體設(shè)計思路如下:各節(jié)點周期性地采集電量參數(shù),并通過無線模塊將數(shù)據(jù)包發(fā)送出去,數(shù)據(jù)包在無線傳感器網(wǎng)絡(luò)中經(jīng)過多跳(或直接)匯聚到基站節(jié)點發(fā)送至PC.PC端通過基站節(jié)點將控制命令分發(fā)到各節(jié)點,節(jié)點收到命令后進(jìn)行判斷,如果節(jié)點響應(yīng)則控制繼電器通斷.
表1列出了節(jié)點正常運行程序包含的5個文件.
表1 節(jié)點軟件設(shè)計程序文件介紹
在頭文件Power.h中,對主程序模塊用到的常量進(jìn)行了枚舉說明,定義的無線傳輸?shù)臄?shù)據(jù)包格式如下:
數(shù)據(jù)包的內(nèi)容包括:當(dāng)前節(jié)點號;數(shù)據(jù)包計數(shù);父節(jié)點號;經(jīng)過的跳數(shù);數(shù)據(jù)標(biāo)志位;電能數(shù)據(jù).數(shù)據(jù)包中變量類型的nx前綴表示外部數(shù)據(jù)類型,所有平臺下的形式相同,由編譯器負(fù)責(zé)重新添加相應(yīng)平臺的數(shù)據(jù)類型,用來指示大端模式和小端模式.
處理器MSP430通過SPI與計量芯片通信,獲取采集數(shù)據(jù).該配置文件包含時鐘分頻因子、時鐘源、相位極性、字符長度和主從模式等信息.
節(jié)點加電啟動后,運行PowerM模塊中設(shè)定的程序,首先初始化并啟動相關(guān)接口,然后采集數(shù)據(jù)并發(fā)送廣播包,最后收到廣播包并發(fā)送數(shù)據(jù)包.
3.3.1 接口程序
主程序中使用的接口類型主要包括用于無線信號的數(shù)據(jù)收發(fā)接口、用于計時的定時器接口和一些控制類接口.
無線通信的兩個基本功能為分發(fā)和收集.分發(fā)協(xié)議的目的是將數(shù)據(jù)可靠地傳輸?shù)骄W(wǎng)絡(luò)中的每一個節(jié)點,并需要具有一定的魯棒性來保證在鏈路臨時斷開以及丟包率較高等情況下的可靠性,它由DisseminationC組件提供相關(guān)接口.收集是分發(fā)的相對應(yīng)操作,目的是將其他節(jié)點的數(shù)據(jù)匯聚到基站節(jié)點.通常的做法是建立一個或多個收集樹,樹的根為基站節(jié)點,當(dāng)一個節(jié)點需要遞交數(shù)據(jù)時,就將該數(shù)據(jù)沿著樹的路徑進(jìn)行傳輸.收集過程的接口由 tos/lib/net/ctp/Collection.nc提供,發(fā)送接口由抽象的CollectionSenderC組件提供.使用CtpInfo和CtpCongestion接口獲取有關(guān)樹的內(nèi)部信息和節(jié)點阻塞情況.
3.3.2 程序運行過程
程序運行流程如圖4所示.首先是加電后各接口的開啟和初始化配置,然后是主程序執(zhí)行.
圖4 程序運行流程
(1)初始化和啟動過程 節(jié)點加電啟動后初始化接口,開啟無線電模塊和路由控制,將ADE7763參數(shù)配置寫入,然后主程序運行.分發(fā)協(xié)議接口也在初始化時開啟,收到基站節(jié)點分發(fā)命令后觸發(fā)響應(yīng)事件,控制負(fù)載電源的開關(guān).
(2)數(shù)據(jù)采集和廣播包的發(fā)送 主程序運行首先啟動一個定時器Timer_begin,響應(yīng)后啟動兩個循環(huán)定時器Timer_DataAq和Timer_AM.前者響應(yīng)事件中規(guī)定了如何調(diào)用數(shù)據(jù)采集接口進(jìn)行電能數(shù)據(jù)的采集和存儲;后者規(guī)定了如何進(jìn)行廣播包的發(fā)送,節(jié)點經(jīng)過一個隨機(jī)延遲Timer_rand后進(jìn)行廣播包的發(fā)送,這里將廣播包的發(fā)送定義為一個不帶返回值Broadcast()的任務(wù)執(zhí)行.
(3)數(shù)據(jù)包的封裝和發(fā)送 節(jié)點收到廣播包后將采集到的數(shù)據(jù)和獲取的收集樹信息按照頭文件里定義的數(shù)據(jù)格式進(jìn)行封裝,最后提交一個無返回值的Sendmessage()任務(wù)將數(shù)據(jù)發(fā)送至基站節(jié)點.
配置模塊PowerAppC用來導(dǎo)通PowerM模塊與應(yīng)用程序所需的其他組件,將配置模塊和程序模塊予以嚴(yán)格的區(qū)分,可以快速地重新裝配應(yīng)用程序,使得應(yīng)用程序的設(shè)計和更新更加簡便.
Makefile文件說明如何編譯各個源文件并連接生成可執(zhí)行的文件,還要求定義源文件之間的依賴關(guān)系.make命令通過Makefile文件自動完成編譯工作,最后生成可執(zhí)行文件main.exe.例如:
COMPONENT=PowerAppC
include../Makerules
第一行代碼表示TinyOS的make系統(tǒng)需要執(zhí)行的應(yīng)用程序組件名是PowerAppC,第二行代碼表示將Makerules里的編譯規(guī)則裝載到TinyOS的編譯系統(tǒng)中.
根據(jù)上述設(shè)計方案制作了少量節(jié)點,實驗?zāi)M一個家居環(huán)境進(jìn)行了小規(guī)模組網(wǎng)測試.組網(wǎng)中設(shè)置了9個節(jié)點,負(fù)載范圍為220 V,10(40)A,分別用來檢測飲水機(jī)、空調(diào)、臺式計算機(jī)、筆記本電腦.各節(jié)點將電壓、電流采樣電路采集的數(shù)據(jù)處理后得到電壓、電流、功率等數(shù)據(jù),通過射頻模塊發(fā)送到無線傳感器網(wǎng)絡(luò)中,最終傳送至基站節(jié)點;基站節(jié)點將數(shù)據(jù)經(jīng)USB發(fā)送至PC,并通過設(shè)計軟件讀取原始數(shù)據(jù)后再解析展現(xiàn)給用戶.
圖5為制作的傳感器節(jié)點實物,配有外置天線以增加無線信號強(qiáng)度.
圖6為監(jiān)測系統(tǒng)軟件界面,以列表的形式顯示了各節(jié)點實時的電壓、功率、功率因數(shù)等數(shù)據(jù),軟件還顯示了節(jié)點狀態(tài)和一段時間內(nèi)電壓和功率變化的曲線圖.由圖6可以看出,監(jiān)測數(shù)據(jù)與負(fù)載電器的工作狀態(tài)一致,驗證了節(jié)點工作的可靠性和穩(wěn)定性.
圖5 節(jié)點實物
圖6 監(jiān)測系統(tǒng)界面
本文在TinyOS操作系統(tǒng)下設(shè)計了一種個人用戶側(cè)用電數(shù)據(jù)采集、發(fā)送、監(jiān)控的無線傳感器節(jié)點,并進(jìn)行了組網(wǎng)測試.使用nesC語言開發(fā),提高了程序運行效率,簡化了構(gòu)件化的軟件設(shè)計;利用無線傳感器網(wǎng)絡(luò)大規(guī)模組網(wǎng)協(xié)同運行的特點,對各節(jié)點的大量信息進(jìn)行集中顯示、綜合處理,實現(xiàn)了以往單個設(shè)備無法實現(xiàn)的智能化運作.通過系統(tǒng)的運行及對輸出數(shù)據(jù)的觀測,驗證了節(jié)點設(shè)計的有效性,為智能化控制網(wǎng)絡(luò)節(jié)點上的電器開關(guān),實現(xiàn)科學(xué)用電、節(jié)電提供了一種解決方案.下一步工作將對現(xiàn)有的無線路由協(xié)議進(jìn)行優(yōu)化,使其更適合室內(nèi)無線通信,以進(jìn)一步降低無線傳感器網(wǎng)絡(luò)的功耗.
[1]任豐原,黃海寧,林闖.無線傳感器網(wǎng)絡(luò)[J].軟件學(xué)報,2003,14(7):1 282-1 291.
[2]孫利民,李建中,陳渝,等.無線傳感器網(wǎng)絡(luò)[M].北京:清華大學(xué)出版社有限公司,2005:3-10.
[3]劉振亞.智能電網(wǎng)技術(shù)[M].北京:中國電力出版社,2010:18-24.
[4]張強(qiáng),孫雨耕,楊挺,等.無線傳感器網(wǎng)絡(luò)在智能電網(wǎng)中的應(yīng)用[J].中國電力,2010(6):31-36.
[5]LEVIS P.TinyOS programming[EB/OL].[2013-12-10].http:∥www.tinyos.net/tinyos-2.x/doc/pdf/tinyosprogramming.pdf .
[6]林喜源.基于TinyOS的無線傳感器網(wǎng)絡(luò)體系結(jié)構(gòu)[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2006(9):44-47.
[7]MCINNES A I.Modeling and analysis of TinyOS sensor node firmware:a CSP approach[J]. ACM Transactions on Embedded Computing Systems(TECS),2013,12(1):5.
[8]POLASTRE J,SZEWCZYK R,CULLER D.Telos:enabling ultra-low power wireless research[C]∥ Information Processing in Sensor Networks. Fourth International Symposium on.IEEE,2005:364-369.
[9]劉克.無線傳感器網(wǎng)絡(luò)數(shù)據(jù)采集及組網(wǎng)算法設(shè)計與實現(xiàn)[D].青島:中國海洋大學(xué),2010.