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