文獻(xiàn)標(biāo)識(shí)碼: B
文章編號(hào): 0258-7998(2014)02-0016-03
廣播系統(tǒng)是為井下的語(yǔ)音通信而設(shè)計(jì)的,主要用于煤礦調(diào)度室對(duì)井下工作人員喊話、傳遞通知、播放音樂(lè)、緊急情況通報(bào)以及引導(dǎo)科學(xué)避險(xiǎn)等工作。在通信的過(guò)程中完全采用CAN總線或者是工業(yè)以太網(wǎng)[1-2]都是很困難的。因?yàn)镃AN總線本身的優(yōu)勢(shì)在于控制功能方面,若單獨(dú)采用CAN總線傳輸語(yǔ)音數(shù)據(jù),則會(huì)在數(shù)據(jù)傳輸?shù)男史矫娲蟠蛘劭邸6I(yè)以太網(wǎng)具有傳輸數(shù)據(jù)的優(yōu)勢(shì),但單獨(dú)使用又不便于語(yǔ)音數(shù)據(jù)的傳輸控制?;谝陨蠁?wèn)題,本文設(shè)計(jì)了一個(gè)較為方便實(shí)用的轉(zhuǎn)換器,可以使得煤礦企業(yè)方便地使用上位機(jī)通過(guò)工業(yè)以太網(wǎng)向井下設(shè)備傳送語(yǔ)音數(shù)據(jù),發(fā)揮現(xiàn)場(chǎng)總線和工業(yè)以太網(wǎng)各自的優(yōu)勢(shì),打造一個(gè)高效、安全的煤礦網(wǎng)絡(luò)。
1 煤礦井下廣播系統(tǒng)介紹
煤礦井下廣播系統(tǒng)由井上、井下兩部分組成。井上部分位于調(diào)度室,由電腦、主站(負(fù)責(zé)語(yǔ)音編碼發(fā)送)、網(wǎng)關(guān)組成;井下部分由網(wǎng)關(guān)、基站(負(fù)責(zé)語(yǔ)音的解碼播放)組成,分布于井下的工作面、掘進(jìn)面、運(yùn)輸巷等。
工作原理:主站將PC傳來(lái)的語(yǔ)音數(shù)據(jù)進(jìn)行編碼,然后將編碼后的數(shù)據(jù)經(jīng)CAN總線傳輸?shù)降谝粋€(gè)網(wǎng)關(guān),網(wǎng)關(guān)采用實(shí)時(shí)性較高的UDP協(xié)議作為傳輸層協(xié)議。網(wǎng)關(guān)接收到數(shù)據(jù)后立刻將CAN數(shù)據(jù)打包成以太網(wǎng)幀傳輸給第二個(gè)網(wǎng)關(guān)設(shè)備,該設(shè)備接收到以太網(wǎng)數(shù)據(jù)后根據(jù)協(xié)議轉(zhuǎn)換規(guī)則將其轉(zhuǎn)換成CAN總線數(shù)據(jù),并傳輸給掛接到CAN總線上的基站,基站再對(duì)CAN數(shù)據(jù)進(jìn)行解碼并通過(guò)喇叭播放出來(lái),這樣就完成了語(yǔ)音傳輸?shù)娜窟^(guò)程。本文主要針對(duì)此系統(tǒng)進(jìn)行網(wǎng)關(guān)設(shè)計(jì)。
2 系統(tǒng)硬件設(shè)計(jì)
2.1 硬件系統(tǒng)框圖
系統(tǒng)硬件主要由主控器、CAN收發(fā)器、以太網(wǎng)收發(fā)器、RJ45以及電源組成。系統(tǒng)主控器采用NXP的LPC2378[3],該主控器集成1個(gè)以太網(wǎng)接口和2個(gè)CAN接口,所以只要直接外接CAN收發(fā)器和以太網(wǎng)收發(fā)器即可實(shí)現(xiàn)協(xié)議轉(zhuǎn)換功能,其結(jié)構(gòu)框圖如圖1所示。
2.2 以太網(wǎng)接口模塊
系統(tǒng)要實(shí)現(xiàn)與以太網(wǎng)的互連,就必須配備以太網(wǎng)接口。以太網(wǎng)接口包括MAC控制器、物理層接口PHY、網(wǎng)絡(luò)變壓器和網(wǎng)卡插座RJ45四部分[4-5]。
系統(tǒng)主控器件LPC2378內(nèi)部集成了MAC控制器,所以不需外接MAC控制器。此處選用的PHY為DM9161A芯片。DM9161A是10/100M以太網(wǎng)物理層接口PHY收發(fā)器,符合IEEE802.3協(xié)議,采用3.3 V供電,支持MII和RMII接口。
網(wǎng)口插座采用RJ45插座HR911105A,它具有信號(hào)耦合、電氣隔離、阻抗匹配、抑制干擾等優(yōu)點(diǎn)。電路連接原理圖如圖2所示。
DM9161A的RMII接口包括發(fā)送數(shù)據(jù)腳TXD[0]、TXD[1]、發(fā)送數(shù)據(jù)使能腳TXEN、接收數(shù)據(jù)腳RXD[0]、RXD[1]、接收錯(cuò)誤腳RXER、載波偵聽腳CRS、參考時(shí)鐘XT2,這些腳以及MII管理接口的管理數(shù)據(jù)時(shí)鐘腳MDC、管理數(shù)據(jù)I/O腳MDIO等均與LPC2378相連。FDX/COLLED#/OP0、SPEEDLED#/OP1、LINK/ACTLED#/OP2均屬于LED接口,分別與3個(gè)LED相連,表示了DM9161A連接的不同狀態(tài),F(xiàn)DX/COLLED#/OP0表示正在運(yùn)行的是全雙工模式,SPEEDLED#/OP1表示連接的速率為100 Mb/s,LINK/ACTLED#/OP2表示在100 Mb/s模式時(shí)連接良好。以太網(wǎng)PHY芯片的TX+、TX-、RX+、RX-、VDD_PHY和AGND信號(hào)與RJ45相連,即與其內(nèi)部網(wǎng)絡(luò)變壓器相連。
2.3 CAN接口模塊
CAN接口模塊由CAN控制器和CAN收發(fā)器兩部分組成。由于主控器LPC2378本身集成了CAN控制器,這里CAN收發(fā)器采用廣州致遠(yuǎn)電子的CTM8251,該器件具有DC 2 500 V隔離功能、熱保護(hù)、對(duì)電磁干擾具有高抗干擾性等特點(diǎn)。采用了一體化的隔離收發(fā)器,簡(jiǎn)化了電路。CAN控制器與CAN收發(fā)器電路連接如圖3所示。
CAN收發(fā)器CTM8251采用5 V供電,它的RXD、TXD管腳分別接主控制器內(nèi)部CAN控制器的RD、TD管腳,RXD用來(lái)接收CAN總線的數(shù)據(jù),TXD則用來(lái)發(fā)送CAN數(shù)據(jù)。該模塊預(yù)留有終端電阻的接口,當(dāng)需要接入終端電阻時(shí)使用該接口,可接入120 ?贅的終端電阻,其作用是匹配總線電阻,提高數(shù)據(jù)通信的抗干擾性及可靠性。
3 軟件設(shè)計(jì)
3.1 以太網(wǎng)通信模塊
以太網(wǎng)主要功能是接收以太網(wǎng)數(shù)據(jù),并將經(jīng)過(guò)協(xié)議轉(zhuǎn)換好的以太網(wǎng)數(shù)據(jù)發(fā)送出去[6-7]。
3.1.1 以太網(wǎng)通信模塊的發(fā)送
(1)建立發(fā)送描述符
描述符中的指針設(shè)置為指向即將發(fā)送的一個(gè)數(shù)據(jù)幀或者幀片段。描述符命令區(qū)域中的Size應(yīng)設(shè)置為片段緩沖區(qū)中的字節(jié)數(shù),它使用減1編碼,其他控制信息可以在描述符的控制區(qū)域中指示(interrupt、Last、CRC、Pad位)。在對(duì)描述符執(zhí)行了寫操作之后,通過(guò)將TxProduceIndex寄存器加1來(lái)將描述符移交給硬件。
(2)TxDMA管理器讀取Tx描述符數(shù)組
在讀取描述符之后,發(fā)送DMA引擎從存儲(chǔ)器中讀取相關(guān)的幀數(shù)據(jù)并發(fā)送。在傳輸完成之后,TxDMA管理器將狀態(tài)信息寫回狀態(tài)區(qū)域的StatusInfo和StatusHashCRC中。TxConsumeIndex的值只有在狀態(tài)信息提交給存儲(chǔ)器之后才能更新。
(3)更新ConsumeIndex
每當(dāng)TxDMA管理器向存儲(chǔ)器提交一個(gè)狀態(tài)字時(shí),表明它完成了描述符的發(fā)送,并讓TxConsumeIndex加1,將描述符移交給設(shè)備驅(qū)動(dòng)軟件。軟件可在硬件移交完成之后重新使用描述符進(jìn)行新的發(fā)送操作。設(shè)備驅(qū)動(dòng)軟件通過(guò)讀取TxConsumeIndex寄存器的值來(lái)查看發(fā)送過(guò)程進(jìn)行的程度,從而能夠了解DMA管理器的進(jìn)程。
3.1.2 以太網(wǎng)通信模塊的接收
(1)建立接收描述符
初始化接收描述符和狀態(tài)數(shù)組之后,必須在MAC1寄存器和控制寄存器中使能接收通道。在初始化過(guò)程中,將描述符中的每個(gè)指針設(shè)置為指向數(shù)據(jù)片段緩沖區(qū)。
(2)RxDMA管理器讀取Rx描述符數(shù)組
將命令寄存器中的RxEnable位置位,RxDMA管理器讀取由RxDescriptor和RxProduceIndex確定的存儲(chǔ)器地址中的描述符。被讀取的描述符大小由硬件擁有的描述符總數(shù)RxConsumeIndex-RxProduceIndex-1決定。
(3)RxDMA管理器接收數(shù)據(jù)
在接收了一個(gè)片段之后,RxDMA管理器將狀態(tài)信息寫回狀態(tài)數(shù)組的StatusInfo和StatusHashCRC字中。以太網(wǎng)模塊將描述符的片段緩沖區(qū)的字節(jié)數(shù)寫入狀態(tài)字的RxSize中。RxProduceIndex的值只在片段數(shù)據(jù)和片段狀態(tài)已提交給存儲(chǔ)器之后更新。RxDMA管理器繼續(xù)接收幀信息,直到描述符數(shù)組為滿狀態(tài)。如果描述符數(shù)組已滿,則以太網(wǎng)硬件將置位IntStatus寄存器的RxFinishedInt位,此時(shí)接收任何新數(shù)據(jù)都將產(chǎn)生溢出錯(cuò)誤和中斷。
(4)更新ProduceIndex
每當(dāng)RxDMA管理器提交一個(gè)數(shù)據(jù)片段和相關(guān)的狀態(tài)字給存儲(chǔ)器時(shí),表示它已完描述符的接收,并且讓RxProduceIndex加1,將描述符移交給設(shè)備驅(qū)動(dòng)軟件。當(dāng)處理完接收數(shù)據(jù)時(shí),軟件通過(guò)將描述符移交給硬件使得描述符能夠重新用于新的接收操作。設(shè)備驅(qū)動(dòng)軟件通過(guò)讀取RxProduceIndex寄存器來(lái)監(jiān)視接收處理的進(jìn)度。
3.2 CAN通信模塊
3.2.1 CAN模塊發(fā)送
發(fā)送程序負(fù)責(zé)將以太網(wǎng)傳輸來(lái)的UDP 數(shù)據(jù)包按照CAN 協(xié)議轉(zhuǎn)換后的CAN報(bào)文傳輸?shù)紺AN 總線上[8]。LPC2378集成2路CAN控制器,每個(gè)CAN控制器都有3個(gè)發(fā)送緩沖器。發(fā)送數(shù)據(jù)時(shí)首先要查詢對(duì)應(yīng)狀態(tài)寄存器(CAN1SR或CAN2SR);其次需要加載4個(gè)寄存器,分別是發(fā)送幀信息寄存器、發(fā)送標(biāo)識(shí)符寄存器、發(fā)送數(shù)據(jù)寄存器A、發(fā)送數(shù)據(jù)寄存器B。發(fā)送幀信息寄存器主要用來(lái)表示發(fā)送的CAN幀的長(zhǎng)度;發(fā)送表示符寄存器用來(lái)表示發(fā)送的CAN幀的標(biāo)示符,發(fā)送數(shù)據(jù)寄存器A和B用來(lái)存放需要發(fā)送的CAN數(shù)據(jù)。每個(gè)寄存器可以存放4 B,所以每次發(fā)送的數(shù)據(jù)最多有8 B。最后在命令寄存器中選擇發(fā)送請(qǐng)求,并選擇相應(yīng)的發(fā)送寄存器發(fā)送數(shù)據(jù)。
3.2.2 CAN模塊接收
CAN控制器采用中斷接收數(shù)據(jù)。首先對(duì)接收的CAN數(shù)據(jù)進(jìn)行過(guò)濾,若符合設(shè)定的過(guò)濾規(guī)則,則會(huì)觸發(fā)CAN中斷程序。從接收幀狀態(tài)寄存器可以讀取接收數(shù)據(jù)的長(zhǎng)度,在接收標(biāo)識(shí)符寄存器可以查詢到CAN總線數(shù)據(jù)的標(biāo)識(shí)符,接收的數(shù)據(jù)則存放在數(shù)據(jù)寄存器A和接收數(shù)據(jù)寄存器B中,這兩個(gè)寄存器每個(gè)能存放4 B,所以每次最多接收8 B的CAN總線數(shù)據(jù)。
3.3 協(xié)議轉(zhuǎn)換程序設(shè)計(jì)
網(wǎng)關(guān)的基本功能是實(shí)現(xiàn)以太網(wǎng)與CAN總線之間的通信,所以協(xié)議轉(zhuǎn)換部分是程序設(shè)計(jì)的關(guān)鍵所在[9],具體流程如圖4所示。當(dāng)CAN總線數(shù)據(jù)需要轉(zhuǎn)換成以太網(wǎng)數(shù)據(jù)時(shí),首先將CAN幀的數(shù)據(jù)長(zhǎng)度、CAN標(biāo)識(shí)符、純數(shù)據(jù)提取出來(lái)組成以太網(wǎng)的數(shù)據(jù)區(qū)域,并按照UDP幀格式,依次添加UDP報(bào)頭、IP報(bào)頭,隨后將打包好的IP數(shù)據(jù)傳送給以太網(wǎng)PHY器件,對(duì)其添加以太網(wǎng)幀頭并發(fā)送至以太網(wǎng)。當(dāng)有以太網(wǎng)數(shù)據(jù)需要轉(zhuǎn)換成CAN數(shù)據(jù)時(shí),只要將上述打包順序反過(guò)來(lái)就可以了,依次是:去除IP報(bào)頭,去除UDP報(bào)頭,將純數(shù)據(jù)交由CAN控制器發(fā)送至CAN總線上。
本系統(tǒng)是基于煤礦井下的語(yǔ)音通信而設(shè)計(jì)的,選擇集成了2路CAN控制器和1路以太網(wǎng)控制器的LPC2378為主控制器,采用實(shí)時(shí)性較高的UDP協(xié)議,有效地解決了在語(yǔ)音通信的過(guò)程中單獨(dú)采用CAN總線數(shù)據(jù)傳輸效率低下、而單獨(dú)采用工業(yè)以太網(wǎng)不便于語(yǔ)音傳控制的問(wèn)題。
參考文獻(xiàn)
[1] 李正軍.現(xiàn)場(chǎng)總線與工業(yè)以太網(wǎng)及其應(yīng)用系統(tǒng)設(shè)計(jì)[M].北京:人民郵電出版社,2006.
[2] 夏繼強(qiáng),梁超眾,刑春香.工業(yè)通用網(wǎng)關(guān)設(shè)計(jì)及其關(guān)鍵技術(shù)研究[J].電子技術(shù)應(yīng)用,2010,36(2):118-121.
[3] LPC2378器件用戶手冊(cè)[Z].廣州周立功單片機(jī)發(fā)展有限公司,2008.
[4] 鄭建彬,楊亞莉.以太網(wǎng)和CAN現(xiàn)場(chǎng)總線間的嵌入式網(wǎng)關(guān)設(shè)計(jì)[J].信息技術(shù),2002(11):14-17.
[5] 袁學(xué)文.CAN總線與以太網(wǎng)互連系統(tǒng)設(shè)計(jì)[D].武漢:武漢大學(xué)圖書館,2004.
[6] 葉加青,李軍.CAN總線與Ethernet互連嵌入式研究與實(shí)現(xiàn)[J].計(jì)算機(jī)與現(xiàn)代化,2010(9):45-47,52.
[7] 王廣維,張浩然.基于ARM和W5100的嵌入式以太網(wǎng)通信接口設(shè)計(jì)[J].微型機(jī)與應(yīng)用,2011,30(5):50-53.
[8] 王保中,涂亞慶,張麗娟.工業(yè)以太網(wǎng)與CAN現(xiàn)場(chǎng)總線比較和應(yīng)用方案分析[J].工業(yè)儀表與自動(dòng)化裝置,2006(5):10-12.
[9] 張濤,喬毅.一種現(xiàn)場(chǎng)總線與以太網(wǎng)互連中協(xié)議轉(zhuǎn)換的設(shè)計(jì)[J].儀器儀表用戶,2005(1):50-51.