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