《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 通信與網(wǎng)絡(luò) > 設(shè)計應(yīng)用 > 基于ModBus協(xié)議和ZigBee網(wǎng)絡(luò)的氣象無線傳感網(wǎng)設(shè)計
基于ModBus協(xié)議和ZigBee網(wǎng)絡(luò)的氣象無線傳感網(wǎng)設(shè)計
2014年電子技術(shù)應(yīng)用第10期
楊亦洲,周 杰,杜景林
南京信息工程大學(xué) 電子與信息工程學(xué)院,江蘇 南京210044
摘要: 提出了基于ModBus協(xié)議和ZigBee網(wǎng)絡(luò)的氣象無線傳感網(wǎng)采集系統(tǒng)的方案,該系統(tǒng)包括數(shù)據(jù)采集模塊、數(shù)據(jù)匯集模塊和數(shù)據(jù)管理模塊。多種傳感器和CC2531片上系統(tǒng)組成了氣象傳輸系統(tǒng)的采集節(jié)點,利用Mesh型網(wǎng)絡(luò)的自組織、自配置和自維護的功能,使系統(tǒng)允許多點采集,而且單個節(jié)點可以采集多種氣象要素并進行傳輸,遠端的節(jié)點可通過多跳的方式將數(shù)據(jù)傳輸?shù)浇K端。
中圖分類號: TN92
文獻標識碼: A
文章編號: 0258-7998(2014)10-0016-04
Meteorological WSN based on the ModBus protocol and ZigBee network
Yang Yizhou,Zhou Jie,Du Jinglin
School of Electronic and Information Engineering,Nanjing University of Information Science and Technology, Nanjing 210044,China
Abstract: In this paper, a wireless meteorological parameter transmission system based on ModBus and ZigBee is proposed,which consists of meteorological parameter acquisition module,data acquisition module and data management module. Different type sensors and CC2531 wireless SoC chip constitute the meteorological parameter acquisition node. With the help of the self-organization, self-organization and self-maintenance functions that Mesh network has,this system allows multi-node data acquisition, and a single node can control a variety of meteorological elements and transmitting wireless data. As all the nodes form a mesh structure, information on the remote nodes can finally reach the terminal via multi-hop. Furthermore,the system has characteristics of low cost and flexible arrangement.
Key words : WSN;ZigBee;ModBus;multi-hop;meteorological parameter transmission

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所示。

qrs3-t1.gif

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所示。

qrs3-t2.gif

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所示。

qrs3-t3-4.gif

qrs3-t5.gif

    一旦作為從站的傳感器處理來自主站控制器的請求,從站傳感器就會建立相應(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所示。

qrs3-t6.gif

2.1 通信距離的估算

    在自然環(huán)境中,任意兩個節(jié)點之間的通信都會有損耗,這些損耗由于環(huán)境的變化而無法預(yù)測。通過對鏈路損耗的估算可以減少計算傳播距離與實際的誤差,無線通信傳輸自由空間損耗計算如下:

    qrs3-gs1.gif

    由式(1)可知電磁波在理想空間傳輸時,傳播損耗只與傳輸距離發(fā)射頻率F和發(fā)射距離R相關(guān)。每當(dāng)頻率或傳輸距離增加一倍時,其鏈路損耗就會增加6 dB。傳輸距離計算如下:

    qrs3-gs2.gif

其中,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所示。

qrs3-t7.gif

    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所示。

qrs3-t8.gif

3.2 通信距離測試

    在上文中提到過,通過理論的計算最大通信距離可以達到3.7 km,測試地點在室外的大片空地上,試驗中隨著距離的加大,會出現(xiàn)傳感器節(jié)點能夠收到命令幀,但協(xié)調(diào)器收不到數(shù)據(jù)的情況,丟包率如表1所示。

qrs3-b1.gif

    由測試表可知,使用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.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。