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