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