文獻標識碼: A
文章編號: 0258-7998(2014)10-0016-04
0 引言
氣象要素(如氣壓、氣溫和風(fēng)速等)都是重要的天氣信息,在國民經(jīng)濟建設(shè)的各個領(lǐng)域中都有很高的價值,能夠準確、有效、實時地獲取氣象要素對氣象采集提出了很高的要求。在氣象采集中,需要做到實時監(jiān)測、集中管理,氣象采集的網(wǎng)絡(luò)化尤為重要。本文引入氣象無線傳感器網(wǎng)絡(luò)的概念,將無線傳感器網(wǎng)絡(luò)技術(shù)[1]應(yīng)用于氣象要素的觀測中,并結(jié)合工業(yè)現(xiàn)場總線技術(shù),采用RS-485作為總線傳輸接口,ModBus協(xié)議為串口通信協(xié)議,ZigBee協(xié)議為無線通信協(xié)議,TI公司SimpleLinkTM解決方案提供并支持TinyOS系統(tǒng)的嵌入式微控制器CC2531為控制芯片。
氣象采集系統(tǒng)將ModBus協(xié)議和ZigBee協(xié)議成功移植到TinyOS系統(tǒng)中,所設(shè)計的ModBus協(xié)議與ZigBee協(xié)議轉(zhuǎn)換方法能夠很好地進行雙邊協(xié)議的通信,實現(xiàn)了經(jīng)典協(xié)議與高效系統(tǒng)的完美結(jié)合,并以此為基礎(chǔ)設(shè)計了網(wǎng)絡(luò)化的氣象無線傳感網(wǎng)采集系統(tǒng)。
本文設(shè)計并實現(xiàn)了基于ModBus協(xié)議和ZigBee網(wǎng)絡(luò)的氣象無線傳感網(wǎng)采集系統(tǒng),系統(tǒng)主要包含3個節(jié)點:數(shù)據(jù)采集節(jié)點、路由中繼節(jié)點和協(xié)調(diào)器節(jié)點。其中數(shù)據(jù)采集節(jié)點構(gòu)成數(shù)據(jù)采集模塊,完成氣象參數(shù)的采集和發(fā)送,節(jié)點由掛載傳感器的RS-485接口、電平轉(zhuǎn)換模塊和CC2531芯片電路構(gòu)成,用于氣象要素的采集、協(xié)議轉(zhuǎn)換和數(shù)據(jù)發(fā)送等處理。路由中繼節(jié)點和協(xié)調(diào)器節(jié)點協(xié)同工作組成數(shù)據(jù)匯集模塊,數(shù)據(jù)匯集模塊將采集的信息通過路由中繼節(jié)點以多跳的方式匯聚到協(xié)調(diào)器節(jié)點,數(shù)據(jù)管理模塊將協(xié)調(diào)器節(jié)點接收的數(shù)據(jù)匯總到PC端,用于后續(xù)的數(shù)據(jù)分析、儲存等工作,實現(xiàn)了終端PC對整個傳感器網(wǎng)絡(luò)的控制。
1 采集節(jié)點與ModBus協(xié)議分析
1.1 ModBus協(xié)議設(shè)計
ModBus支持在同一個網(wǎng)絡(luò)中,主設(shè)備最多與247個從設(shè)備連接,本文通過RS-485接口來設(shè)計一種具有分時處理能力的串口協(xié)議,該協(xié)議將運用于數(shù)據(jù)采集模塊,通過單個的RS485接口與CC2531的I/O口連接,達到同時控制多個傳感器的目的,該總線結(jié)構(gòu)如圖1所示。
1.1.1 ModBus串行鏈路
ModBus在串行鏈路上位于OSI模型的數(shù)據(jù)鏈路層,它為網(wǎng)絡(luò)設(shè)備之間提供主從通信,本文提到氣象采集系統(tǒng)采用ModBus-RTU模式,其中報文幀采用無校驗?zāi)J?,每個字節(jié)包括1 bit起始位、8 bit數(shù)據(jù)位、0 bit校驗位、2 bit停止位。在RTU模式下,幀與幀之間的間隔至少為3.5個字符時間,而字符之間的間隔不能大于1.5個字符時間,否則將會認為報文幀不完整,并且丟棄該報文幀,具體幀格式如圖2所示。
1.1.2 協(xié)議功能碼
在ModBus協(xié)議中,從站通過地址碼來識別是否屬于自己的查詢報文,通信鏈路空閑的時候,主機發(fā)送報文給從機,通過功能碼來確定需要執(zhí)行的功能,如果CRC校驗無誤,則執(zhí)行需要的任務(wù),然后把任務(wù)的結(jié)果返回給主機,本系統(tǒng)定義了通用功能模塊。
#define READ_COIL_STATUS 1 //讀取線圈狀態(tài)
#define READ_INPUT_STATUS 2 //讀取輸入狀態(tài)
#define READ_HOLD_REGISTER 3 //讀取保持寄存器
#define READ_INPUT_REGISTER 4 //讀取輸入寄存器
……
1.1.3 協(xié)議軟件設(shè)計方案
MoudBus串行鏈路協(xié)議的編程主要包括主函數(shù)、串口模塊、功能模塊、CRC校驗?zāi)K、數(shù)據(jù)處理模塊。運行串口模塊生成PDU協(xié)議報文,通過CRC校驗?zāi)K生成CRC效驗碼并與PDU協(xié)議報文生成ADU數(shù)據(jù)單元,采用廣播模式發(fā)送給從機傳感器,傳感器執(zhí)行相應(yīng)的命令將數(shù)據(jù)返回給主機。
數(shù)據(jù)采集節(jié)點遵循ModBus通信過程,采用ModBus RTU協(xié)議的命令子集。數(shù)據(jù)傳輸方式為異步10位,數(shù)據(jù)傳輸速率為4 800 b/s,傳輸一個字節(jié)需要1/4 800×11×1 000≈2.29 ms,一個ModBus發(fā)送命令有8 B,響應(yīng)命令有7 B,由于RS-485為半雙工,所以本文中ModBus進行一次通信的時間約35 ms,主機請求數(shù)據(jù)報文描述如圖3所示。從機響應(yīng)報文描述如圖4所示。RTU通信從站側(cè)事務(wù)處理流程圖如圖5所示。
一旦作為從站的傳感器處理來自主站控制器的請求,從站傳感器就會建立相應(yīng)的響應(yīng),根據(jù)不同的處理結(jié)果,建立兩種響應(yīng)類型:
(1)正常的響應(yīng),響應(yīng)的功能碼與請求功能碼一致。
(2)異常的響應(yīng),異常的功能碼等于請求的功能碼加上0x080,并提供一個異常碼指示原因。
1.2 ModBus協(xié)議與ZigBee協(xié)議轉(zhuǎn)換
ModBus協(xié)議與ZigBee協(xié)議的轉(zhuǎn)換包括RS-485接口模塊,電平驅(qū)動模塊與控制模塊,RS-485接口向電平驅(qū)動模塊輸入數(shù)據(jù),而后與節(jié)點進行數(shù)據(jù)電平的轉(zhuǎn)換,節(jié)點控制器與電平驅(qū)動模塊相連傳輸電平數(shù)據(jù),并將得到的ModBus報文與ZigBee報文進行轉(zhuǎn)換。
1.2.1 電平驅(qū)動模塊
RS-485接口的電平轉(zhuǎn)換通過半雙工收發(fā)器SP485實現(xiàn)[2],SP485包括一個接收器和一個發(fā)送器,其中接收器將RS-485接口的RX端電平轉(zhuǎn)換為+5 V并發(fā)送給控制模塊,發(fā)送器將來自控制模塊的電平轉(zhuǎn)換成RS-485接口的TX端接口電平,實現(xiàn)電平的轉(zhuǎn)換。
1.2.2 ModBus報文轉(zhuǎn)換ZigBee報文
主控芯片收到轉(zhuǎn)換的電平后,控制模塊將定義一個char型數(shù)組MBUF[],其中MBUF[0]是地址位,MBUF[1]是功能位,MBUF[2]是數(shù)據(jù)位,MBUF[2]的長度是數(shù)據(jù)幀的長度減去4 B,包括1 B地址、1 B功能碼和2 B CRC校驗碼,將電平數(shù)據(jù)幀的數(shù)據(jù)位存入數(shù)組MBUF[]中,再將存入數(shù)據(jù)位的數(shù)組MBUF[]加入到ZigBee的數(shù)據(jù)幀中,轉(zhuǎn)換得到ZigBee報文[3]。
1.2.3 ZigBee報文轉(zhuǎn)換ModBus報文
從ZigBee報文中提取數(shù)據(jù)幀,得到數(shù)組ZBUF[]。其中ZBUF[1]是功能位,ZBUF[2]是數(shù)據(jù)位,將數(shù)據(jù)幀的長度減去4 B得到ZBUF[2]的長度,提取數(shù)據(jù)位,將ZBUF放入ModBus數(shù)據(jù)幀中,通過電平驅(qū)動轉(zhuǎn)換得到數(shù)據(jù)報文。
2 匯聚模塊與ZigBee協(xié)議設(shè)計
ZigBee協(xié)議設(shè)計,即數(shù)據(jù)匯集模塊的設(shè)計,采用芯片CC2531和CC2591,CC2531主要負責(zé)對節(jié)點的控制和處理,CC2591負責(zé)信號功率放大。CC2591是TI公司的低功耗射頻前端,最大可以提高22 dBm的輸出功率,CC2530和CC2591的結(jié)合使用僅需極少的外部元器件[4],具體連接如圖6所示。
2.1 通信距離的估算
在自然環(huán)境中,任意兩個節(jié)點之間的通信都會有損耗,這些損耗由于環(huán)境的變化而無法預(yù)測。通過對鏈路損耗的估算可以減少計算傳播距離與實際的誤差,無線通信傳輸自由空間損耗計算如下:
由式(1)可知電磁波在理想空間傳輸時,傳播損耗只與傳輸距離發(fā)射頻率F和發(fā)射距離R相關(guān)。每當(dāng)頻率或傳輸距離增加一倍時,其鏈路損耗就會增加6 dB。傳輸距離計算如下:
其中,GT、GR分別為發(fā)送、接收天線增益。本方案中采用的天線增益GT、GR均為2 dB,鏈路損耗為110 dBm,載波頻率為2 450 MHz,可得無線通信傳輸距離R=3.87 km。
2.2 ZigBee協(xié)議設(shè)計方案與流程
本方案采用TI ZStack-CC2530-2.4.0-1.4.0協(xié)議棧作為軟件平臺,由終端、ZigBee模塊和采集模塊組成,網(wǎng)絡(luò)結(jié)構(gòu)如圖7所示。
ZigBee協(xié)議主要設(shè)計包括協(xié)調(diào)器程序、路由程序和終端程序[5],在所設(shè)計網(wǎng)絡(luò)中節(jié)點之間采用Mesh型網(wǎng)絡(luò),由路由節(jié)點匯集參數(shù)到終端,在同一個ZigBee網(wǎng)絡(luò)內(nèi)所有的節(jié)點必須有相同的channel和PAN ID[6]。Mesh網(wǎng)中的MAC層由于調(diào)度機制的不同會影響網(wǎng)絡(luò)層路由的性能[7],因此需要讓網(wǎng)絡(luò)層實時感受到MAC層的變化才可以自組織的改變路由性能。
在ZigBee軟件設(shè)計中由協(xié)調(diào)器來完成網(wǎng)絡(luò)的啟動,調(diào)用以下函數(shù)啟動網(wǎng)絡(luò)建立。
NIME_NetworkFormation.Request(
METPANDID,//命令I(lǐng)D
METChannels, //信道掃描
METScanDruation,//時間掃描
METBeaconOrder,//信標號
METFramOrder,//幀序號
Battery
)
網(wǎng)絡(luò)建立成功后,網(wǎng)絡(luò)的地址將會被初始化為0x0000,并為新的網(wǎng)絡(luò)定義標示符,此后節(jié)點將會被允許加入網(wǎng)絡(luò)與協(xié)調(diào)器通信,網(wǎng)絡(luò)中用MET_Data.Request發(fā)出請求,協(xié)調(diào)器用MET_Data.Confirm來響應(yīng)。
MET_Data.Request(
……
RouteF,//路由檢測
……)
當(dāng)RoutF為真的時候,網(wǎng)絡(luò)層就通過AODV路由算法進行工作,并創(chuàng)建路由表,發(fā)送路由請求幀。AODV路由算法主要包括路由發(fā)現(xiàn),路由建立,路由維護和路由管理,在AODV算法中,源節(jié)點以廣播形式發(fā)送路由請求(RREQ)報文,RREQ報文中有著源節(jié)點和目的節(jié)點的網(wǎng)絡(luò)地址,當(dāng)相鄰節(jié)點收到RRQE后判斷是否屬于自己的命令,不是則尋找下一個,是則響應(yīng)請求[8-10]。
在公共層中,網(wǎng)絡(luò)層向所連接設(shè)備的MAC層發(fā)送數(shù)據(jù)幀。
MET_AF_Data.Request(
METAddr_t *Addr,//網(wǎng)絡(luò)地址及發(fā)送格式
METPoint_t *EP,//端口地址
PANID,//命令I(lǐng)D
*buf,//緩沖區(qū)指針
*judgeID,//判斷序號
……
)
當(dāng)MAC層接收到對應(yīng)報文之后,MAC層將發(fā)送一條MET_RC_Data.Request語句給物理層,物理層響應(yīng)一個MET_RC_Data.Confirm語句給MAC層,MAC層通過射頻發(fā)送給所需要的目的節(jié)點中,完成無線通信的功能。
3 系統(tǒng)測試與數(shù)據(jù)處理
3.1 傳感器采集測試
根據(jù)上述方案組建系統(tǒng)后,將系統(tǒng)中各節(jié)點上電并燒錄相應(yīng)的程序,安裝到室外進行測試,測試系統(tǒng)準備了3個采集節(jié)點和一個協(xié)調(diào)器。通過遠程的控制可以實時了解氣象參數(shù)的變化,最終這些參數(shù)回傳到PC上。
經(jīng)實際測試表明,基于ModBus協(xié)議和ZigBee網(wǎng)絡(luò)的氣象無線傳感網(wǎng)采集系統(tǒng)實現(xiàn)了對有線節(jié)點和無線傳感網(wǎng)的通信與控制,測量值如圖8所示。
3.2 通信距離測試
在上文中提到過,通過理論的計算最大通信距離可以達到3.7 km,測試地點在室外的大片空地上,試驗中隨著距離的加大,會出現(xiàn)傳感器節(jié)點能夠收到命令幀,但協(xié)調(diào)器收不到數(shù)據(jù)的情況,丟包率如表1所示。
由測試表可知,使用CC2951芯片后節(jié)點的通信距離得到了顯著的提高,1 000 m以內(nèi)的通信丟包率很低,當(dāng)通信距離達到1 500 m以上時通信鏈路出現(xiàn)了不穩(wěn)定,測試結(jié)果發(fā)現(xiàn),理論計算值和測量值存在很大差異,不過測試的效果還是達到了預(yù)期要求。如果單以CC2531的射頻功率,射頻距離是遠遠達不到要求的。
4 結(jié)論
本文基于ModBus協(xié)議和ZigBee網(wǎng)絡(luò)開發(fā)了氣象無線傳感網(wǎng)采集系統(tǒng)。系統(tǒng)由數(shù)據(jù)采集節(jié)點、路由中繼節(jié)點和協(xié)調(diào)器節(jié)點組成,節(jié)點以CC2531芯片為主控芯片,實現(xiàn)了氣象參數(shù)網(wǎng)絡(luò)化的采集,由PC端控制傳感器的工作,可以同時采集包括氣壓、氣溫、濕度、光照、風(fēng)速和風(fēng)向的氣象參數(shù)。系統(tǒng)使用低成本的無線模塊和傳感器,具有價格低廉的特點。性能試驗表明:
(1)通過氣象無線傳感網(wǎng)采集系統(tǒng),用戶使用PC可動態(tài)訪問戶外氣象信息,為野外氣象信息獲取提供了一種低成本、方便的技術(shù)方案。
(2)傳感器采集試驗表明,通過RS-485接口能夠成功地由單端口控制多傳感器,并且能夠?qū)崟r地采集到戶外的氣象信息。
(3)通信距離試驗表明,在正常工作狀態(tài),1 km通信距離下丟包率小于0.1,能夠滿足正常工作需求。
(4)由于掛載的傳感器功能單一,造成了不必要的空間和資源的浪費,尤其是增加了電能的損耗,如果使用多參數(shù)傳感器,可以使系統(tǒng)集成度更高。下一步將采用大規(guī)模的節(jié)點設(shè)計,嘗試單節(jié)點掛載多個多參數(shù)傳感器,通過進一步的改進,提高系統(tǒng)的穩(wěn)定性和實用性。
參考文獻
[1] YICK J,MUKHERJEE B,GHOSAL D.Wireless sensor network survey[J].Computer Networks,2008,52(12):2292-2330.
[2] 邰鳴,李雙.基于RS485通信方式的多單片機控制系統(tǒng)[J].微計算機應(yīng)用,2008,29(7):109-112.
[3] Yu Chengbo,Liu Yanfei,Wang Cheng.Research on ZigBee wireless sensors network based on ModBus protocol[J].Wireless Sensor Network,2009,1(1):43-47.
[4] 馬飛,鄭云水.基于ZigBee網(wǎng)絡(luò)的智能鐵鞋系統(tǒng)設(shè)計[J].電子技術(shù)應(yīng)用,2012,38(12):26-28.
[5] 萬蓉鳳,修春波,盧少磊.基于ZigBee技術(shù)的風(fēng)速測量系統(tǒng)的設(shè)計[J].中南大學(xué)學(xué)報(自然科學(xué)版),2013,44(51):162-165.
[6] AKYILDIZI F,WANG X D,WANG W L.Wireless meshnetworks:Asurvey[J].Computer Networks,2005,47(4):445-487.
[7] 章偉聰,俞新武,李忠成.基于CC2530及ZigBee協(xié)議棧設(shè)計無線網(wǎng)絡(luò)傳感器節(jié)點[J].計算機系統(tǒng)應(yīng)用,2011,20(7):184-187.
[8] 黃旭,王子歐,季愛明.基于ZigBee無線Mesh網(wǎng)絡(luò)的溫濕度測量系統(tǒng)[J].微型機與應(yīng)用,2014,31(9):89-91.
[9] Xu Bing.Design of automatic weather station based on ZigBee[D].Nanjing,China:Nanjing University of Information Science&Technology,2008.
[10] 劉邵華,黃廷磊,夏鋒.一種基于AODV路由協(xié)議改進的無線Mesh路由協(xié)議[J].微型機與應(yīng)用,2013,32(4):54-57.