王文慶, 唐 軒, 亢紅波
(西安郵電大學(xué) 自動化學(xué)院, 陜西 西安 710121)
基于ZigBee的礦井監(jiān)測系統(tǒng)中以太網(wǎng)網(wǎng)關(guān)設(shè)計
王文慶, 唐 軒, 亢紅波
(西安郵電大學(xué) 自動化學(xué)院, 陜西 西安 710121)
針對礦井監(jiān)測系統(tǒng)中將無線傳感網(wǎng)絡(luò)節(jié)點接入工業(yè)以太網(wǎng)的需求,提出一種ZigBee/以太網(wǎng)網(wǎng)關(guān)的設(shè)計方案。該方案使用CC2530作為傳感節(jié)點、路由節(jié)點及協(xié)調(diào)器節(jié)點,組成樹型網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu);使用STM32F103做主控制器,ENC28J60做網(wǎng)絡(luò)控制器,實現(xiàn)ZigBee數(shù)據(jù)和以太網(wǎng)數(shù)據(jù)的相互轉(zhuǎn)換和傳輸。設(shè)計了網(wǎng)關(guān)硬件電路,ZigBee無線組網(wǎng)、數(shù)據(jù)幀轉(zhuǎn)換以及驅(qū)動程序。測試結(jié)果表明,該網(wǎng)關(guān)能正常傳輸數(shù)據(jù),性能可靠,實現(xiàn)了不同數(shù)據(jù)幀之間的轉(zhuǎn)換。
ZigBee無線傳感器網(wǎng)絡(luò);工業(yè)以太網(wǎng);無線收發(fā)模塊CC2530;樹型拓?fù)?/p>
在礦業(yè)生產(chǎn)中,由于礦井環(huán)境比較惡劣,因而通過無線網(wǎng)絡(luò)采集環(huán)境參數(shù),經(jīng)過網(wǎng)關(guān)傳輸?shù)奖O(jiān)控中心,以此來建設(shè)高效、安全的礦業(yè)生產(chǎn)監(jiān)測系統(tǒng)。目前基于無線采集的礦井監(jiān)測系統(tǒng)的網(wǎng)關(guān)研究中,文獻(xiàn)[1-3]設(shè)計實現(xiàn)了ZigBee傳感網(wǎng)絡(luò)與有線網(wǎng)絡(luò)結(jié)合的網(wǎng)關(guān)系統(tǒng),該類系統(tǒng)具有體積小、功耗低、井下便于安裝的特點,但是不能接入以太網(wǎng)從而可以通過WEB方式監(jiān)測;文獻(xiàn)[4]提出了ZigBee和GPRS相結(jié)合的網(wǎng)關(guān)設(shè)計方案,這類網(wǎng)關(guān)采用兩種不同無線技術(shù)兼容的方式,靈活性好、易于布線安放,但其傳輸速率較低;文獻(xiàn)[5]提出了ZigBee星型拓?fù)浣M網(wǎng)接入工業(yè)以太網(wǎng)的礦井環(huán)境監(jiān)測與定位系統(tǒng)的設(shè)計方案,此類系統(tǒng)中網(wǎng)關(guān)具有低成本、結(jié)構(gòu)簡單以及較強(qiáng)抗干擾能力的特點,但是星型拓?fù)浣M網(wǎng)決定了監(jiān)測范圍不足;文獻(xiàn)[6]設(shè)計了基于WIFI的無線網(wǎng)關(guān)礦井采集定位系統(tǒng),此系統(tǒng)中無線網(wǎng)關(guān)應(yīng)用靈活、成本低,但功耗高,組網(wǎng)能力差。
針對以上各類網(wǎng)關(guān)系統(tǒng)中存在的缺點,本文從某金屬礦井環(huán)境對功耗、靈活性、抗干擾能力、監(jiān)測范圍等因素的實際需求出發(fā),將ZigBee無線傳感網(wǎng)絡(luò)接入工業(yè)以太網(wǎng),提出了一種ZigBee/以太網(wǎng)網(wǎng)關(guān)的設(shè)計與實現(xiàn)方案,采取樹型拓?fù)涠嗉壊杉绞浇M網(wǎng),完成不同數(shù)據(jù)幀之間的轉(zhuǎn)換與傳輸。
1.1 網(wǎng)關(guān)設(shè)計原理
ZigBee/以太網(wǎng)網(wǎng)關(guān)中的協(xié)調(diào)節(jié)點、路由節(jié)點、傳感節(jié)點組建樹型拓?fù)浣Y(jié)構(gòu),每一個路由節(jié)點下的傳感節(jié)點采集到的數(shù)據(jù)通過本路由轉(zhuǎn)發(fā)到協(xié)調(diào)器,采用點對點的數(shù)據(jù)發(fā)送方式。協(xié)調(diào)器作為數(shù)據(jù)匯集節(jié)點,將ZigBee數(shù)據(jù)轉(zhuǎn)換為串行數(shù)據(jù),并通過串行接口發(fā)送給主控制器進(jìn)行數(shù)據(jù)處理,最后封裝成以太網(wǎng)幀,通過以太網(wǎng)控制器以及網(wǎng)絡(luò)接口發(fā)送到以太網(wǎng)。
1.2 網(wǎng)關(guān)總體結(jié)構(gòu)
總體結(jié)構(gòu)包括協(xié)調(diào)器節(jié)點、路由器節(jié)點、傳感節(jié)點,都使用CC2530無線收發(fā)模塊,STM32F103C8T6作為主控制器,ENC28J60作為以太網(wǎng)控制器。ZigBee/以太網(wǎng)網(wǎng)關(guān)結(jié)構(gòu),如圖1所示。
圖1 ZigBee/以太網(wǎng)網(wǎng)關(guān)結(jié)構(gòu)
2.1 主要芯片和模塊的選擇
網(wǎng)關(guān)主控制器芯片采用32位微控制器STM32F103C8T6,支持通用同步/異步串行接收/發(fā)送器(Universal Synchronous/Asynchronous Receiver/Transmitter,簡稱USART)和串行外設(shè)接口(Serial Peripheral Interface,簡稱SPI)外設(shè)。相對于8位單片機(jī)具有更強(qiáng)大的數(shù)據(jù)處理能力,性價比和實用性更高。滿足ZigBee/以太網(wǎng)網(wǎng)關(guān)的設(shè)計要求。
無線收發(fā)芯片采用CC2530,CC2530是作為ZigBee技術(shù)開發(fā)的一款片上系統(tǒng)芯片[7-8],使用高性能、低功耗的8051CPU內(nèi)核,具有8KB RAM,具有2個支持多種串行通信協(xié)議的強(qiáng)大USART,實用性能較為成熟。
以太網(wǎng)控制器采用ENC28J60芯片,兼容IEEE802.3標(biāo)準(zhǔn)協(xié)議,能夠移植開源的精簡協(xié)議棧uIP協(xié)議[9-10]進(jìn)行開發(fā),采用SPI方式與主控制器通信。
2.2 ZigBee模塊硬件設(shè)計
本設(shè)計采用3塊CC2530模塊,作為協(xié)調(diào)器節(jié)點、路由器節(jié)點、采集終端節(jié)點,協(xié)調(diào)器節(jié)點與STM32控制器通過USART接口相連,CC2530的P0_2和P0_3引腳分別連接STM32的PA9和PA10引腳。CC2530協(xié)調(diào)器節(jié)點外圍電路,如圖2所示。
圖2 CC2530協(xié)調(diào)器節(jié)點外圍電路圖
2.3 以太網(wǎng)控制硬件電路
以太網(wǎng)控制器ENC28J60負(fù)責(zé)將STM32處理的串行數(shù)據(jù)幀轉(zhuǎn)化為以太網(wǎng)數(shù)據(jù)幀,同樣以太網(wǎng)數(shù)據(jù)幀也可以通過此接口轉(zhuǎn)化為串行數(shù)據(jù),該部分硬件電路與STM32控制器通過4線SPI實現(xiàn)通信,即CS引腳接SPI1_NSS,SCK引腳接SPI1_SCK,SO引腳接SPI1_MISO,SI引腳接SPI1_MOSI。ENC28J60網(wǎng)絡(luò)控制器外圍硬件電路,如圖3所示。
圖3 ENC28J60外圍電路
3.1 ZigBee無線組網(wǎng)設(shè)計
ZigBee無線組網(wǎng)包括協(xié)調(diào)節(jié)點、路由節(jié)點、終端節(jié)點初始化,協(xié)調(diào)節(jié)點建立網(wǎng)絡(luò)并開啟綁定功能,傳感節(jié)點加入網(wǎng)絡(luò)并發(fā)送綁定請求,路由節(jié)點加入網(wǎng)絡(luò)發(fā)送路由請求事件。
組網(wǎng)程序流程如圖4所示。
(a) 協(xié)調(diào)器程序流程圖 (b) 路由節(jié)點程序流程圖 (c) 傳感節(jié)點程序流程圖
圖4 組網(wǎng)程序流程圖
3.1.1 協(xié)調(diào)節(jié)點軟件設(shè)計
協(xié)調(diào)器節(jié)點啟動時首先進(jìn)行任務(wù)初始化osalInitTasks(),具體工作包含任務(wù)ID號,設(shè)置綁定標(biāo)志位,初始化端點描述符,設(shè)置進(jìn)入事件,相關(guān)程序如下:
/*任務(wù)初始化*/
void SAPI_Init(byte task_id)
sapi_TaskID = task_id;
/*綁定標(biāo)志位,默認(rèn)不允許綁定*/
sapi_bindInProgress = 0xffff;
/*sapi層注冊網(wǎng)絡(luò)地址響應(yīng)事件*/
ZDO_RegisterForZDOMsg(sapi_TaskID,NWK_addr_rsp);
/*進(jìn)入事件*/
UINT16 SAPI_ProcessEvent(byte task_id, UINT16 events)
/*讀取配置信息*/
zb_ReadConfiguration(ZCD_NV_STARTUP_OPTION,sizeof(uint8),&startOptions)
3.1.2 路由器節(jié)點軟件設(shè)計
當(dāng)路由節(jié)點加入網(wǎng)絡(luò)時候,將給予設(shè)備對象層反饋信息,相關(guān)程序如下:
/* ZDO啟動設(shè)備,即ZDO的節(jié)點描述符的配置,邏輯類型的定義,以及啟動模式*/
ZDO_StartDevice((uint8)ZDO_Config_Node_Descriptor.LogicalType,devStartMode,DEFAULT_BEACON_ORDER,DEFAULT_SUPERFRAME_ORDER);
/* ZDO設(shè)置延遲*/
uint8 ZDOInitDevice(uint16 startDelay)
/*點對點發(fā)送數(shù)據(jù)*/
void SampleApp_SendPointToPointMessage()
3.1.3 終端節(jié)點軟件設(shè)計
當(dāng)終端節(jié)點加入網(wǎng)絡(luò)后,發(fā)送綁定請求,接受并處理綁定響應(yīng),數(shù)據(jù)發(fā)送函數(shù)和處理函數(shù)分別為
AF_DataRequest((dstAddr),afFindEndPointDesc((srcEP)), (cID), (len), (buf), (transID), (options), (radius))
ZDApp_ProcessOSALMsg((osal_event_hdr_t*)msg_ptr)
3.2 數(shù)據(jù)幀格式處理軟件設(shè)計
ZigBee數(shù)據(jù)轉(zhuǎn)串行數(shù)據(jù),協(xié)調(diào)器節(jié)點接收到的數(shù)據(jù)為ZigBee幀結(jié)構(gòu),經(jīng)過處理轉(zhuǎn)化為串行數(shù)據(jù)發(fā)送到主控制器,軟件實現(xiàn)程序如下:
/*任務(wù)初始化、ID號、端口初始化*/
void SampleApp_Init(uint8 task_id)
SampleApp_TaskID = task_id;
SampleApp_NwkState = DEV_INIT;
SampleApp_TransID = 0
/*串口初始化*/
MT_UartInit();
/*登記任務(wù)號*/
MT_UartRegisterTaskID(task_id);
/*任務(wù)事件處理函數(shù)*/
uint16 SampleApp_ProcessEvent(uint8 task_id, uint16 events)
void SampleApp_MessageMSGCB(afIncoming MSGPacket_t *pkt)
switch (pkt->clusterId)
case SAMPLEAPP_PERIODIC_CLUSTERID:
/*復(fù)制內(nèi)存的數(shù)據(jù)信息*/
osal_memcpy(&rftx,pkt->cmd.Data,sizeof(rftx));
/*向串口發(fā)數(shù)據(jù)*/
HalUARTWrite(0,,rftx.databuf,sizeof(rftx));
3.3 CC2530串口驅(qū)動設(shè)計
CC2530模塊若要實現(xiàn)與STM32相互通信的功能,需要對CC2530編寫串口驅(qū)動,包括驅(qū)動初始化、數(shù)據(jù)發(fā)送和接收等,采用串口和DMA結(jié)合的方式進(jìn)行串口驅(qū)動設(shè)計,這樣可以降低CPU的負(fù)擔(dān),增強(qiáng)系統(tǒng)整體運行速度。相關(guān)初始化程序如下:
/*串口初始化函數(shù)*/
void HalUARTInit(void)
/*打開串口,配置串口波特率,端口等*/
uint8 HalUARTOpen(uint8 port, halUARTCfg_t *config)
向串口發(fā)送數(shù)據(jù)時,數(shù)據(jù)存放在DMA接收緩沖區(qū),系統(tǒng)調(diào)用HAL層中的HalUARTRead()函數(shù)讀取DMA緩沖區(qū)的數(shù)據(jù),包括緩沖區(qū)端口,數(shù)據(jù)長度等,調(diào)用HalUARTWrite()函數(shù)將數(shù)據(jù)寫入DMA緩沖區(qū)。Hal_UART_RxBufLen()函數(shù)的作用為串口接收緩存,相關(guān)程序如下:
uint16 Hal_UART_RxBufLen(uint8 port)
{(void)port;
#if (HAL_UART_DMA == 1)
if (port == HAL_UART_PORT_0) return
HalUARTRxAvailDMA();
#endif}
3.4 串網(wǎng)數(shù)據(jù)轉(zhuǎn)換軟件設(shè)計
串行數(shù)據(jù)轉(zhuǎn)以太網(wǎng)數(shù)據(jù)部分,開發(fā)環(huán)境為Keil MDK,程序設(shè)計包括ENC28J60初始化、數(shù)據(jù)收發(fā)模塊,SPI串口驅(qū)動程序等。程序流程如圖5所示。
圖5 串網(wǎng)轉(zhuǎn)化器程序流程圖
ENC28J60驅(qū)動程序可實現(xiàn)數(shù)據(jù)收發(fā),當(dāng)它收到一個串行數(shù)據(jù)幀時,首先判斷幀格式,將幀長度、地址等量寫入寄存器,然后添加MAC控制字符構(gòu)成以太網(wǎng)幀,最后發(fā)送數(shù)據(jù)包到以太網(wǎng),具體發(fā)送數(shù)據(jù)函數(shù)為enc28j60PacketSend(),ENC28J60接受數(shù)據(jù)接收函數(shù)為enc28j60PacketReceive()。
整個測試系統(tǒng)有ZigBee/以太網(wǎng)網(wǎng)關(guān)、ZigBee路由器節(jié)點、ZigBee終端節(jié)點、USB線、雙絞線、PC機(jī)以及ZigBee/以太網(wǎng)上位機(jī)軟件組成,網(wǎng)關(guān)實物,如圖6所示。
根據(jù)PC機(jī)的網(wǎng)絡(luò)IP,對ZigBee/以太網(wǎng)接口的網(wǎng)絡(luò)IP地址、子網(wǎng)掩碼以及端口號進(jìn)行配置,經(jīng)過配置后的網(wǎng)絡(luò)IP為:192.168.1.123,目的端口號為502。ZigBee/以太網(wǎng)接口ping狀態(tài),如圖7所示。
圖6 網(wǎng)關(guān)與PC機(jī)連接實物圖
打開多功能調(diào)試助手進(jìn)行通信測試,選擇16進(jìn)制數(shù)據(jù)發(fā)送。ZigBee/以太網(wǎng)網(wǎng)關(guān)測試界面,如圖8所示。
圖7 ZigBee/以太網(wǎng)接口ping狀態(tài)
圖8 ZigBee/以太網(wǎng)網(wǎng)關(guān)測試界面
測試界面里的數(shù)據(jù)接收區(qū)內(nèi)分別是數(shù)據(jù)幀頭、長度、ZigBee節(jié)點地址、ID開始標(biāo)志、ZigBee節(jié)點ID號、溫度標(biāo)志位、溫度數(shù)據(jù)、校驗值,信號強(qiáng)度值等13字節(jié)數(shù)據(jù),第9、10、11字節(jié)表示溫度的16進(jìn)制值。
本系統(tǒng)采用定時采集,通過一段時間的觀察,采集數(shù)據(jù)每隔5 s傳輸?shù)奖O(jiān)控中心,TCP監(jiān)控器采集到數(shù)據(jù),如圖9所示。
圖9 數(shù)據(jù)監(jiān)控界面
以STM32為主控制器,設(shè)計出的ZigBee/以太網(wǎng)網(wǎng)關(guān)能夠?qū)崿F(xiàn)ZigBee與以太網(wǎng)數(shù)據(jù)幀之間的傳輸以及數(shù)據(jù)幀的格式轉(zhuǎn)換,ZigBee數(shù)據(jù)可以通過樹型拓?fù)渚W(wǎng)絡(luò)傳輸?shù)骄W(wǎng)關(guān)節(jié)點,再通過以太網(wǎng)傳輸?shù)絇C機(jī)。系統(tǒng)測試顯示,該網(wǎng)關(guān)在實驗室環(huán)境下性能穩(wěn)定,能夠?qū)崿F(xiàn)不同幀格式數(shù)據(jù)之間的通信。
[1] 薄英強(qiáng),歐陽名三,李業(yè)亮,等.基于ZigBee的礦井水文信息監(jiān)測系統(tǒng)[J].工礦自動化,2014(10):84-87.
[2] 齊立磊,王超.基于Zigbee的礦井無線傳感器網(wǎng)絡(luò)監(jiān)測系統(tǒng)設(shè)計[J].煤礦機(jī)械,2013(9):252-254.
[3] 董文浩,郭森,劉希高,等.基于Zigbee的礦井移動機(jī)器人環(huán)境監(jiān)測系統(tǒng)研究[J].煤礦機(jī)械,2012(9):84-86.
[4] 史麗娟,包亞萍,田峰.基于GPRS和ZigBee的礦井無線監(jiān)測系統(tǒng)的設(shè)計[J].煤炭技術(shù),2010(3):43-46.
[5] 滕志軍,李國強(qiáng),何建強(qiáng).基于ZigBee的礦井環(huán)境監(jiān)測與定位系統(tǒng)[J].自動化與儀表,2013(1):22-25.
[6] 黃偉力,李增翠.一種基于WiFi的煤礦通信采集定位系統(tǒng)[J].科技信息,2012(7):212-213.
[7] Reen-Cheng Wang, Ruay-Shiung Chang, Jei-Hsiang Yen, and Pu-I Lee. A Dynamic Topology Reformation Algorithm for Power Saving in ZigBee Sensor Networks[J]. International Journal of Distributed Sensor Networks, 2013(2):1-10.
[8] 鄭茂全,侯媛彬.基于CC2530的井下人員信息采集模塊設(shè)計[J].工礦自動化,2012(6):7-10.
[9] 李偉勤,李新獻(xiàn),施岱松.uIP協(xié)議在CC2430芯片上的移植研究[J].微計算機(jī)信息,2012,28(9):177-179.
[10]劉健,薛吉.工業(yè)以太網(wǎng)EtherNet/IP性能分析[J].低壓電器,2010(16):17-19.
[責(zé)任編輯:汪湘]
Design of ethernet gateway for monitoring system in underground mine based on ZigBee
WANG Wenqing, TANG Xuan, KANG Hongbo
(School of Automation, Xi’an University of Posts and Telecommunications, Xi’an 710121, China)
There are great demand for wireless sensor network nodes to be accessible to industrial Ethernet in mine monitoring system. A design of ZigBee/Ethernet gateway is proposed in this paper. In this design, CC2530 is used as sensor node, routing node and coordinator node which is made up of a tree network topology, and STM32F103 is used as master controller, ENC28J60 as network controller to implement mutual data conversion and transmission between ZigBee and Ethernet. Gateway hardware circuit, ZigBee networking, data frame conversion, and the drivers are also implemented in this design. Systematic test results show that the gateway could accomplish data transfer, provide a reliable performance normally, and achieve the conversion between different data frame.
ZigBee, industrial Ethernet, CC2530, tree topology
2015-02-07
王文慶(1964-),男,教授,從事智能信息處理研究。E-mail:wwq@xupt.edu.cn 唐軒(1988-),男,碩士研究生,研究方向為嵌入式系統(tǒng)設(shè)計與開發(fā)。E-mail:497556687@qq.com
10.13682/j.issn.2095-6533.2015.03.021
TP212
A
2095-6533(2015)03-0113-07