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