王文慶, 唐 軒, 亢紅波
(西安郵電大學(xué) 自動(dòng)化學(xué)院, 陜西 西安 710121)
基于ZigBee的礦井監(jiān)測(cè)系統(tǒng)中以太網(wǎng)網(wǎng)關(guān)設(shè)計(jì)
王文慶, 唐 軒, 亢紅波
(西安郵電大學(xué) 自動(dòng)化學(xué)院, 陜西 西安 710121)
針對(duì)礦井監(jiān)測(cè)系統(tǒng)中將無線傳感網(wǎng)絡(luò)節(jié)點(diǎn)接入工業(yè)以太網(wǎng)的需求,提出一種ZigBee/以太網(wǎng)網(wǎng)關(guān)的設(shè)計(jì)方案。該方案使用CC2530作為傳感節(jié)點(diǎn)、路由節(jié)點(diǎn)及協(xié)調(diào)器節(jié)點(diǎn),組成樹型網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu);使用STM32F103做主控制器,ENC28J60做網(wǎng)絡(luò)控制器,實(shí)現(xiàn)ZigBee數(shù)據(jù)和以太網(wǎng)數(shù)據(jù)的相互轉(zhuǎn)換和傳輸。設(shè)計(jì)了網(wǎng)關(guān)硬件電路,ZigBee無線組網(wǎng)、數(shù)據(jù)幀轉(zhuǎn)換以及驅(qū)動(dòng)程序。測(cè)試結(jié)果表明,該網(wǎng)關(guān)能正常傳輸數(shù)據(jù),性能可靠,實(shí)現(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)測(cè)系統(tǒng)。目前基于無線采集的礦井監(jiān)測(cè)系統(tǒng)的網(wǎng)關(guān)研究中,文獻(xiàn)[1-3]設(shè)計(jì)實(shí)現(xiàn)了ZigBee傳感網(wǎng)絡(luò)與有線網(wǎng)絡(luò)結(jié)合的網(wǎng)關(guān)系統(tǒng),該類系統(tǒng)具有體積小、功耗低、井下便于安裝的特點(diǎn),但是不能接入以太網(wǎng)從而可以通過WEB方式監(jiān)測(cè);文獻(xiàn)[4]提出了ZigBee和GPRS相結(jié)合的網(wǎng)關(guān)設(shè)計(jì)方案,這類網(wǎng)關(guān)采用兩種不同無線技術(shù)兼容的方式,靈活性好、易于布線安放,但其傳輸速率較低;文獻(xiàn)[5]提出了ZigBee星型拓?fù)浣M網(wǎng)接入工業(yè)以太網(wǎng)的礦井環(huán)境監(jiān)測(cè)與定位系統(tǒng)的設(shè)計(jì)方案,此類系統(tǒng)中網(wǎng)關(guān)具有低成本、結(jié)構(gòu)簡(jiǎn)單以及較強(qiáng)抗干擾能力的特點(diǎn),但是星型拓?fù)浣M網(wǎng)決定了監(jiān)測(cè)范圍不足;文獻(xiàn)[6]設(shè)計(jì)了基于WIFI的無線網(wǎng)關(guān)礦井采集定位系統(tǒng),此系統(tǒng)中無線網(wǎng)關(guān)應(yīng)用靈活、成本低,但功耗高,組網(wǎng)能力差。
針對(duì)以上各類網(wǎng)關(guān)系統(tǒng)中存在的缺點(diǎn),本文從某金屬礦井環(huán)境對(duì)功耗、靈活性、抗干擾能力、監(jiān)測(cè)范圍等因素的實(shí)際需求出發(fā),將ZigBee無線傳感網(wǎng)絡(luò)接入工業(yè)以太網(wǎng),提出了一種ZigBee/以太網(wǎng)網(wǎng)關(guān)的設(shè)計(jì)與實(shí)現(xiàn)方案,采取樹型拓?fù)涠嗉?jí)采集方式組網(wǎng),完成不同數(shù)據(jù)幀之間的轉(zhuǎn)換與傳輸。
1.1 網(wǎng)關(guān)設(shè)計(jì)原理
ZigBee/以太網(wǎng)網(wǎng)關(guān)中的協(xié)調(diào)節(jié)點(diǎn)、路由節(jié)點(diǎn)、傳感節(jié)點(diǎn)組建樹型拓?fù)浣Y(jié)構(gòu),每一個(gè)路由節(jié)點(diǎn)下的傳感節(jié)點(diǎn)采集到的數(shù)據(jù)通過本路由轉(zhuǎn)發(fā)到協(xié)調(diào)器,采用點(diǎn)對(duì)點(diǎn)的數(shù)據(jù)發(fā)送方式。協(xié)調(diào)器作為數(shù)據(jù)匯集節(jié)點(diǎn),將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é)點(diǎn)、路由器節(jié)點(diǎn)、傳感節(jié)點(diǎn),都使用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,簡(jiǎn)稱USART)和串行外設(shè)接口(Serial Peripheral Interface,簡(jiǎn)稱SPI)外設(shè)。相對(duì)于8位單片機(jī)具有更強(qiáng)大的數(shù)據(jù)處理能力,性價(jià)比和實(shí)用性更高。滿足ZigBee/以太網(wǎng)網(wǎng)關(guān)的設(shè)計(jì)要求。
無線收發(fā)芯片采用CC2530,CC2530是作為ZigBee技術(shù)開發(fā)的一款片上系統(tǒng)芯片[7-8],使用高性能、低功耗的8051CPU內(nèi)核,具有8KB RAM,具有2個(gè)支持多種串行通信協(xié)議的強(qiáng)大USART,實(shí)用性能較為成熟。
以太網(wǎng)控制器采用ENC28J60芯片,兼容IEEE802.3標(biāo)準(zhǔn)協(xié)議,能夠移植開源的精簡(jiǎn)協(xié)議棧uIP協(xié)議[9-10]進(jìn)行開發(fā),采用SPI方式與主控制器通信。
2.2 ZigBee模塊硬件設(shè)計(jì)
本設(shè)計(jì)采用3塊CC2530模塊,作為協(xié)調(diào)器節(jié)點(diǎn)、路由器節(jié)點(diǎn)、采集終端節(jié)點(diǎn),協(xié)調(diào)器節(jié)點(diǎn)與STM32控制器通過USART接口相連,CC2530的P0_2和P0_3引腳分別連接STM32的PA9和PA10引腳。CC2530協(xié)調(diào)器節(jié)點(diǎn)外圍電路,如圖2所示。
圖2 CC2530協(xié)調(diào)器節(jié)點(diǎn)外圍電路圖
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實(shí)現(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è)計(jì)
ZigBee無線組網(wǎng)包括協(xié)調(diào)節(jié)點(diǎn)、路由節(jié)點(diǎn)、終端節(jié)點(diǎn)初始化,協(xié)調(diào)節(jié)點(diǎn)建立網(wǎng)絡(luò)并開啟綁定功能,傳感節(jié)點(diǎn)加入網(wǎng)絡(luò)并發(fā)送綁定請(qǐng)求,路由節(jié)點(diǎn)加入網(wǎng)絡(luò)發(fā)送路由請(qǐng)求事件。
組網(wǎng)程序流程如圖4所示。
(a) 協(xié)調(diào)器程序流程圖 (b) 路由節(jié)點(diǎn)程序流程圖 (c) 傳感節(jié)點(diǎn)程序流程圖
圖4 組網(wǎng)程序流程圖
3.1.1 協(xié)調(diào)節(jié)點(diǎn)軟件設(shè)計(jì)
協(xié)調(diào)器節(jié)點(diǎn)啟動(dòng)時(shí)首先進(jìn)行任務(wù)初始化osalInitTasks(),具體工作包含任務(wù)ID號(hào),設(shè)置綁定標(biāo)志位,初始化端點(diǎn)描述符,設(shè)置進(jìn)入事件,相關(guān)程序如下:
/*任務(wù)初始化*/
void SAPI_Init(byte task_id)
sapi_TaskID = task_id;
/*綁定標(biāo)志位,默認(rèn)不允許綁定*/
sapi_bindInProgress = 0xffff;
/*sapi層注冊(cè)網(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é)點(diǎn)軟件設(shè)計(jì)
當(dāng)路由節(jié)點(diǎn)加入網(wǎng)絡(luò)時(shí)候,將給予設(shè)備對(duì)象層反饋信息,相關(guān)程序如下:
/* ZDO啟動(dòng)設(shè)備,即ZDO的節(jié)點(diǎn)描述符的配置,邏輯類型的定義,以及啟動(dòng)模式*/
ZDO_StartDevice((uint8)ZDO_Config_Node_Descriptor.LogicalType,devStartMode,DEFAULT_BEACON_ORDER,DEFAULT_SUPERFRAME_ORDER);
/* ZDO設(shè)置延遲*/
uint8 ZDOInitDevice(uint16 startDelay)
/*點(diǎn)對(duì)點(diǎn)發(fā)送數(shù)據(jù)*/
void SampleApp_SendPointToPointMessage()
3.1.3 終端節(jié)點(diǎn)軟件設(shè)計(jì)
當(dāng)終端節(jié)點(diǎn)加入網(wǎng)絡(luò)后,發(fā)送綁定請(qǐng)求,接受并處理綁定響應(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è)計(jì)
ZigBee數(shù)據(jù)轉(zhuǎn)串行數(shù)據(jù),協(xié)調(diào)器節(jié)點(diǎn)接收到的數(shù)據(jù)為ZigBee幀結(jié)構(gòu),經(jīng)過處理轉(zhuǎn)化為串行數(shù)據(jù)發(fā)送到主控制器,軟件實(shí)現(xiàn)程序如下:
/*任務(wù)初始化、ID號(hào)、端口初始化*/
void SampleApp_Init(uint8 task_id)
SampleApp_TaskID = task_id;
SampleApp_NwkState = DEV_INIT;
SampleApp_TransID = 0
/*串口初始化*/
MT_UartInit();
/*登記任務(wù)號(hào)*/
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ū)動(dòng)設(shè)計(jì)
CC2530模塊若要實(shí)現(xiàn)與STM32相互通信的功能,需要對(duì)CC2530編寫串口驅(qū)動(dòng),包括驅(qū)動(dòng)初始化、數(shù)據(jù)發(fā)送和接收等,采用串口和DMA結(jié)合的方式進(jìn)行串口驅(qū)動(dòng)設(shè)計(jì),這樣可以降低CPU的負(fù)擔(dān),增強(qiáng)系統(tǒng)整體運(yùn)行速度。相關(guān)初始化程序如下:
/*串口初始化函數(shù)*/
void HalUARTInit(void)
/*打開串口,配置串口波特率,端口等*/
uint8 HalUARTOpen(uint8 port, halUARTCfg_t *config)
向串口發(fā)送數(shù)據(jù)時(shí),數(shù)據(jù)存放在DMA接收緩沖區(qū),系統(tǒng)調(diào)用HAL層中的HalUARTRead()函數(shù)讀取DMA緩沖區(qū)的數(shù)據(jù),包括緩沖區(qū)端口,數(shù)據(jù)長(zhǎng)度等,調(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è)計(jì)
串行數(shù)據(jù)轉(zhuǎn)以太網(wǎng)數(shù)據(jù)部分,開發(fā)環(huán)境為Keil MDK,程序設(shè)計(jì)包括ENC28J60初始化、數(shù)據(jù)收發(fā)模塊,SPI串口驅(qū)動(dòng)程序等。程序流程如圖5所示。
圖5 串網(wǎng)轉(zhuǎn)化器程序流程圖
ENC28J60驅(qū)動(dòng)程序可實(shí)現(xiàn)數(shù)據(jù)收發(fā),當(dāng)它收到一個(gè)串行數(shù)據(jù)幀時(shí),首先判斷幀格式,將幀長(zhǎng)度、地址等量寫入寄存器,然后添加MAC控制字符構(gòu)成以太網(wǎng)幀,最后發(fā)送數(shù)據(jù)包到以太網(wǎng),具體發(fā)送數(shù)據(jù)函數(shù)為enc28j60PacketSend(),ENC28J60接受數(shù)據(jù)接收函數(shù)為enc28j60PacketReceive()。
整個(gè)測(cè)試系統(tǒng)有ZigBee/以太網(wǎng)網(wǎng)關(guān)、ZigBee路由器節(jié)點(diǎn)、ZigBee終端節(jié)點(diǎn)、USB線、雙絞線、PC機(jī)以及ZigBee/以太網(wǎng)上位機(jī)軟件組成,網(wǎng)關(guān)實(shí)物,如圖6所示。
根據(jù)PC機(jī)的網(wǎng)絡(luò)IP,對(duì)ZigBee/以太網(wǎng)接口的網(wǎng)絡(luò)IP地址、子網(wǎng)掩碼以及端口號(hào)進(jìn)行配置,經(jīng)過配置后的網(wǎng)絡(luò)IP為:192.168.1.123,目的端口號(hào)為502。ZigBee/以太網(wǎng)接口ping狀態(tài),如圖7所示。
圖6 網(wǎng)關(guān)與PC機(jī)連接實(shí)物圖
打開多功能調(diào)試助手進(jìn)行通信測(cè)試,選擇16進(jìn)制數(shù)據(jù)發(fā)送。ZigBee/以太網(wǎng)網(wǎng)關(guān)測(cè)試界面,如圖8所示。
圖7 ZigBee/以太網(wǎng)接口ping狀態(tài)
圖8 ZigBee/以太網(wǎng)網(wǎng)關(guān)測(cè)試界面
測(cè)試界面里的數(shù)據(jù)接收區(qū)內(nèi)分別是數(shù)據(jù)幀頭、長(zhǎng)度、ZigBee節(jié)點(diǎn)地址、ID開始標(biāo)志、ZigBee節(jié)點(diǎn)ID號(hào)、溫度標(biāo)志位、溫度數(shù)據(jù)、校驗(yàn)值,信號(hào)強(qiáng)度值等13字節(jié)數(shù)據(jù),第9、10、11字節(jié)表示溫度的16進(jìn)制值。
本系統(tǒng)采用定時(shí)采集,通過一段時(shí)間的觀察,采集數(shù)據(jù)每隔5 s傳輸?shù)奖O(jiān)控中心,TCP監(jiān)控器采集到數(shù)據(jù),如圖9所示。
圖9 數(shù)據(jù)監(jiān)控界面
以STM32為主控制器,設(shè)計(jì)出的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é)點(diǎn),再通過以太網(wǎng)傳輸?shù)絇C機(jī)。系統(tǒng)測(cè)試顯示,該網(wǎng)關(guān)在實(shí)驗(yàn)室環(huán)境下性能穩(wěn)定,能夠?qū)崿F(xiàn)不同幀格式數(shù)據(jù)之間的通信。
[1] 薄英強(qiáng),歐陽名三,李業(yè)亮,等.基于ZigBee的礦井水文信息監(jiān)測(cè)系統(tǒng)[J].工礦自動(dòng)化,2014(10):84-87.
[2] 齊立磊,王超.基于Zigbee的礦井無線傳感器網(wǎng)絡(luò)監(jiān)測(cè)系統(tǒng)設(shè)計(jì)[J].煤礦機(jī)械,2013(9):252-254.
[3] 董文浩,郭森,劉希高,等.基于Zigbee的礦井移動(dòng)機(jī)器人環(huán)境監(jiān)測(cè)系統(tǒng)研究[J].煤礦機(jī)械,2012(9):84-86.
[4] 史麗娟,包亞萍,田峰.基于GPRS和ZigBee的礦井無線監(jiān)測(cè)系統(tǒng)的設(shè)計(jì)[J].煤炭技術(shù),2010(3):43-46.
[5] 滕志軍,李國(guó)強(qiáng),何建強(qiáng).基于ZigBee的礦井環(huán)境監(jiān)測(cè)與定位系統(tǒng)[J].自動(dòng)化與儀表,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ì)[J].工礦自動(dòng)化,2012(6):7-10.
[9] 李偉勤,李新獻(xiàn),施岱松.uIP協(xié)議在CC2430芯片上的移植研究[J].微計(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-),男,碩士研究生,研究方向?yàn)榍度胧较到y(tǒng)設(shè)計(jì)與開發(fā)。E-mail:497556687@qq.com
10.13682/j.issn.2095-6533.2015.03.021
TP212
A
2095-6533(2015)03-0113-07