<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應用 > 基于Ethernet 的冗余CAN 總線協(xié)議轉(zhuǎn)換器設(shè)計

          基于Ethernet 的冗余CAN 總線協(xié)議轉(zhuǎn)換器設(shè)計

          作者: 時間:2013-07-31 來源:網(wǎng)絡(luò) 收藏

            0 引 言

            CAN(Controller Area Network) 總線又稱控制局域網(wǎng)絡(luò),最早由德國BOSCH 公司推出,用于汽車內(nèi)部測量與執(zhí)行部件之間的數(shù)據(jù)通信,已被公認為幾種最有前途的現(xiàn)場總線之一 .CAN 總線采用短幀結(jié)構(gòu).非破壞仲裁技術(shù),具有傳輸速度快.可靠性高.結(jié)構(gòu)簡單.實時性和抗干擾能力較強等諸多優(yōu)點 ,可以滿足控制系統(tǒng)安全性.可靠性.快捷性的要求,但收發(fā)器驅(qū)動能力的限制使它不適合遠距離數(shù)據(jù)傳輸及遠程控制.而以太網(wǎng)技術(shù)成熟.通信速度快.軟硬件產(chǎn)品豐富和外圍技術(shù)支持全面,可以進行遠距離通信,因此將以太網(wǎng)和CAN 總線進行互聯(lián),能夠有效解決分布式控制系統(tǒng)中現(xiàn)場總線和上層信息管理層的互聯(lián)問題,可以方便地將現(xiàn)場總線控制系統(tǒng)改造為基于以太網(wǎng)的分布式控制系統(tǒng),既能滿足控制網(wǎng)絡(luò)的實時性,又能滿足控制系統(tǒng)的分布性,極大地促進了信息從節(jié)點設(shè)備到管理層的集成.文中設(shè)計了基于 接口的雙通道CAN 總線協(xié)議,能夠方便地實現(xiàn)以太網(wǎng)與現(xiàn)有CAN 總線網(wǎng)絡(luò)的直接數(shù)據(jù)互聯(lián),從而達到通過上位機進行總線數(shù)據(jù)遠程監(jiān)控.總線協(xié)議分析等目的.

            1 系統(tǒng)硬件設(shè)計

            本設(shè)計的硬件電路主要由單片機電路.雙通道CAN 總線接口電路.以太網(wǎng)接口電路.EEPROM 電路.POE 電路等電路組成.主控芯片電路是將CAN 協(xié)議數(shù)據(jù)包與UDP / TCP 協(xié)議數(shù)據(jù)包進行轉(zhuǎn)換,并負責對以太網(wǎng)接口芯片和CAN 接口芯片進行控制;CAN 通信接口電路主要用于采集現(xiàn)場儀表的數(shù)據(jù)和與主控芯片電路之間的數(shù)據(jù)傳遞;以太網(wǎng)通信接口電路主要負責主控芯片電路與以太網(wǎng)之間的數(shù)據(jù)傳輸;EEPROM電路實現(xiàn)CAN 總線初始化參數(shù)的寫入與讀取功能.

            工作原理如下:當以太網(wǎng)接口芯片收到以太網(wǎng)數(shù)據(jù)后,觸發(fā)單片機的中斷,單片機調(diào)用中斷響應程序把數(shù)據(jù)從以太網(wǎng)接口芯片的數(shù)據(jù)緩沖區(qū)存儲到自己的內(nèi)存空間,然后將數(shù)據(jù)轉(zhuǎn)換成CAN 格式再通過CAN 接口芯片轉(zhuǎn)發(fā)到CAN 總線網(wǎng)絡(luò);當CAN 總線上的節(jié)點設(shè)備需要將數(shù)據(jù)發(fā)送到以太網(wǎng),就會通過CAN 總線接口芯片向單片機發(fā)出中斷信號,單片機響應中斷將來自CAN 總線的數(shù)據(jù)存入相應的內(nèi)存空間,然后將數(shù)據(jù)拷貝至以太網(wǎng)接口芯片的發(fā)送緩沖區(qū)轉(zhuǎn)發(fā)數(shù)據(jù),最后由以太網(wǎng)接口芯片通過RJ45 插座發(fā)至以太網(wǎng).

          1. 1 單片機電路

            主控芯片選擇的是Silicon Labs 公司的單片機C8051F340,采用12V 直流電源供電或采用以太網(wǎng)48V供電,使用內(nèi)部看門狗單元及內(nèi)部晶體振蕩器.

            C8051F340 是一款完全集成的混合信號片上系統(tǒng)型MCU ,其高速8051 微控制器內(nèi)核具有流水線指令結(jié)構(gòu),70% 的指令執(zhí)行時間為一個或兩個系統(tǒng)時鐘周期,速率最高可達48MIPS;片內(nèi)調(diào)試電路提供全速.非侵入式的在線系統(tǒng)調(diào)試(不需仿真器),使得調(diào)試更加方便,比使用仿真芯片.目標仿真頭和仿真插座的仿真系統(tǒng)具有更優(yōu)越的性能;USB 控制器支持8 個端點通道,集成收發(fā)器并具有1 KB 的USB 緩存;具有一個10 位的單端/ 差分ADC,轉(zhuǎn)換速率可達200ksps,并帶有模擬多路復用器,數(shù)字外設(shè)方面具有16 位可編程計數(shù)器/定時器陣列,具有5 個捕捉比較模塊,同時具有4 個通用16 位計時器/ 定時器和40 個耐5V 電壓的端口I/O;存儲器方面具有4352Byte 的數(shù)據(jù)RAM 和64KB 的FLASH 存儲器;內(nèi)部高速振蕩器出廠時已經(jīng)較準為12MHz±1. 5% ,時鐘恢復電路允許內(nèi)部振蕩器與4 倍時鐘乘法器配合,提供全速方式USB 時鐘源;具有片內(nèi)上電復位.時鐘丟失檢測器和VDD 監(jiān)視器,電路原理圖見圖1.

            1. 2 CAN 總線接口電路

            采用NXP 公司SJA1000 作為CAN 總線.NXP 公司TJA1050 用做CAN 總線收發(fā)器.為了提高CAN 總線電路的可靠性,在設(shè)計中采用雙冗余的CAN總線結(jié)構(gòu),具體設(shè)計為:在各節(jié)點設(shè)備之間布下兩條基于CAN 的系統(tǒng)通信總線,即用兩套CAN 總線控制電路分別連接到兩路CAN 總線通路上,正常情況下在兩條總線上傳送相同的通信數(shù)據(jù),當一條總線出現(xiàn)故障時通信數(shù)據(jù)仍然可以通過另一條正常的總線傳輸,不影響節(jié)點設(shè)備的正常通信,然后對故障總線重新初始化使其恢復正常投入使用,這樣即使一條通信通道出現(xiàn)故障也不會影響整個系統(tǒng)的數(shù)據(jù)傳輸;同時考慮工業(yè)應用,在CAN 總線控制器和CAN 總線收發(fā)器之間進行隔離.

            在電路中將SJA1000 的AD0 ~ AD7 直接與主控芯片的低8 位地址/ 數(shù)據(jù)復用總線相連,MODE 引腳與+5V 相連使得SJA1000 工作于Intel 模式[4] , 兩路SJA1000 的中斷輸出信號分別連接至C8051F340 的端口P0. 2 和P0. 7,使得CAN 通信可以采用中斷或查詢兩種方式工作,其中雙冗余CAN 總線電路的晶振均為16MHz,復位信號采用軟件復位,詳細電路原理圖見圖2.

            1. 3 以太網(wǎng)接口電路

            在以太網(wǎng)接口電路中選用Silicon Labs 公司的CP2200 作為以太網(wǎng)控制器,采用HanRun 公司的內(nèi)部集成以太網(wǎng)隔離變壓器.指示燈和RJ45 插座的HR911175A 與以太網(wǎng)接口.CP2200 是Silicon Labs 公司推出的一款主流的8 位總線控制的以太網(wǎng)驅(qū)動芯片,其外圍電路非常簡單,集成了IEEE 802. 3 以太網(wǎng)媒體訪問控制器( MAC ).10 BASE – T 物理層(PHY) ,完全兼容100/1000 BASE-T 網(wǎng)絡(luò),具有自動極性檢測和糾正功能,可以自適應地工作在全雙工或半雙工模式,具有接收數(shù)據(jù)包中斷和網(wǎng)絡(luò)喚醒中斷功能.CP2200 內(nèi)部帶有2K 字節(jié)的專用發(fā)送緩沖RAM和4KB 接收FIFO 緩沖RAM ,同時還具有8K 字節(jié)的內(nèi)部非易失性Flash 存儲器,用于存儲用戶常數(shù).Web服務(wù)器內(nèi)容,它的最后6 個存儲單元是工廠預編程的唯一48 位MAC 地址 ,不需外部EEPROM .此芯片8 位并行總線接口支持Intel 和Motorola 總線方式,可以為具有11 個以上端口I/ O 引腳的主處理器或微處理器增加以太網(wǎng)通信功能,可以使用復用或非復用方式尋址,在非復用模式下數(shù)據(jù)傳輸率超過30Mbps,可以直接連接LED 表示網(wǎng)絡(luò)“連接”.“活動”狀態(tài).

            在電路中CP2200 采用數(shù)據(jù)地址復用模式,晶體頻率為20M,CP2200 的TX.RX 引腳連接到RJ45 插座的收發(fā)針腳,同時將信號LINK.ACK 也連接到后者的LED 控制針腳上,詳細電路原理圖見圖3.

            1. 4 EEPROM 接口電路

            該電路的作用是實現(xiàn)CAN 總線初始化參數(shù)的寫入與讀取功能, 設(shè)計中選用了512KB 的EEPROM24C512 芯片.詳細電路原理圖見圖4.

            1. 5 POE 電路

            以太網(wǎng)供電電路分別采用TI 公司的電源管理器芯片TPS 2383 和電源接口芯片TPS 2370,這2 款芯片完全符合以太網(wǎng)供電標準IEEE 802. 3af,利用這2 款芯片即可通過1 條標準的以太網(wǎng)線纜就實現(xiàn)同時傳輸電能和數(shù)據(jù).

            2 軟件設(shè)計

            本設(shè)計的軟件主要分為三部分: CAN-以太網(wǎng)協(xié)議轉(zhuǎn)換程序.CAN 通信程序和以太網(wǎng)通信程序.軟件整體的設(shè)計思路為:當CAN 總線節(jié)點設(shè)備需要向以太網(wǎng)發(fā)送數(shù)據(jù)時,首先通過CAN 通信程序讀取CAN 總線節(jié)點設(shè)備產(chǎn)生的CAN 協(xié)議數(shù)據(jù)包,并將其存儲在CAN 總線接口發(fā)送緩沖區(qū)中,然后調(diào)用CAN-以太網(wǎng)協(xié)議轉(zhuǎn)換程序?qū)AN 協(xié)議數(shù)據(jù)包解析并重新封裝成TCP 或UDP 數(shù)據(jù)包,最后調(diào)用以太網(wǎng)通信程序?qū)?shù)據(jù)發(fā)送到以太網(wǎng);要將數(shù)據(jù)通過以太網(wǎng)發(fā)送給一個CAN節(jié)點設(shè)備時,首先通過調(diào)用以太網(wǎng)通信程序?qū)⒁蕴W(wǎng)傳輸層上的TCP 或UDP 數(shù)據(jù)包存儲到以太網(wǎng)接口的發(fā)送緩沖區(qū),然后調(diào)用以太網(wǎng)-CAN 協(xié)議轉(zhuǎn)換程序?qū)CP 或UDP 數(shù)據(jù)包解析并封裝成CAN 協(xié)議數(shù)據(jù)包,之后再調(diào)用CAN 通信程序?qū)AN 接口發(fā)送緩沖區(qū)中的數(shù)據(jù)發(fā)送到CAN 總線上的指定節(jié)點.

            2. 1 CAN 通信程序

            CAN 通信程序主要包括以下幾部分:SJA1000 初始化程序.讀寫SJA1000 內(nèi)部寄存器程序.CAN 數(shù)據(jù)發(fā)送程序.CAN 數(shù)據(jù)接收程序.CAN 總線冗余控制程序.

            SJA1000 的初始化程序主要作用是設(shè)定總線上所有節(jié)點的地址.所有總線上節(jié)點設(shè)備的波特率.設(shè)置控制器的工作模式.設(shè)置中斷寄存器.命令寄存器等相關(guān)的芯片寄存器 .CAN 數(shù)據(jù)發(fā)送程序的功能是當發(fā)送CAN 協(xié)議數(shù)據(jù)包給節(jié)點設(shè)備時,調(diào)用CAN 數(shù)據(jù)發(fā)送程序,通過將數(shù)據(jù)寫入SJA1000 的數(shù)據(jù)發(fā)送寄存器中來實現(xiàn)數(shù)據(jù)發(fā)送.CAN 數(shù)據(jù)接收程序的功能是當SJA1000 接收到數(shù)據(jù)時,向單片機發(fā)出中斷請求,單片機響應中斷后調(diào)用CAN 數(shù)據(jù)接收程序讀取SJA1000的內(nèi)部寄存器程序,將其數(shù)據(jù)接收緩沖區(qū)中接收到的數(shù)據(jù)讀取到單片機的相應存儲空間內(nèi).

            CAN 總線冗余控制程序的基本設(shè)計思路為:在上電初始化時同時激活兩個總線控制器的中斷,在節(jié)點設(shè)備向上位機發(fā)送數(shù)據(jù)的情況下,單片機通過兩路CAN 總線向上位機發(fā)送相同內(nèi)容的數(shù)據(jù)來實現(xiàn)冗余效果.在節(jié)點設(shè)備接收通信數(shù)據(jù)的情況下,當兩個總線控制器同時接收到來自上位機的報文時,將分別通過不同的中斷端口向單片機發(fā)出中斷請求,單片機在響應先到達的中斷請求信號后進入中斷服務(wù)程序關(guān)閉中斷,并在對數(shù)據(jù)進行處理完成后,清除中斷并在一段延時后再打開所有中斷,這樣就可以屏蔽后到的另一個CAN 控制器中斷信號.如果一路CAN 總線接口電路出現(xiàn)故障,那么它就不會產(chǎn)生中斷信號,單片機只能接收到另一路正常CAN 總線控制器的中斷信號,從而通過正常的CAN 總線接收數(shù)據(jù),這樣就可以實現(xiàn)雙通道冗余的目的;在節(jié)點設(shè)備與上位機之間完成數(shù)據(jù)發(fā)送和接收后,節(jié)點設(shè)備會通過兩路CAN 總線以每秒1次的頻率交替向上位機發(fā)送“心跳”信號,并接收上位機回傳的響應信息,如果一路CAN 總線狀態(tài)異常,不能正常發(fā)送“心跳”信號,則節(jié)點設(shè)備的單片機就不會收到響應信息,從而無法對錯誤計數(shù)器進行清零,當錯誤計數(shù)器的值累加到設(shè)定值時,單片機就會對異常的CAN 總線接口電路復位,重行初始化使其恢復正常,保證雙通道CAN 總線冗余電路的正常.

            2. 2 CAN / 以太網(wǎng)協(xié)議轉(zhuǎn)換程序

            CAN/ 以太網(wǎng)協(xié)議轉(zhuǎn)換程序的大致流程如下:在系統(tǒng)接收到數(shù)據(jù)后會先對數(shù)據(jù)的數(shù)據(jù)類型進行判斷,如果接收到的數(shù)據(jù)是以太網(wǎng)數(shù)據(jù),就會依次去掉IP 頭.TCP 或UDP 頭和應用層頭 ,然后將解析后的數(shù)據(jù)封裝為CAN 報文格式,并存人CAN 接口電路發(fā)送緩沖區(qū),由CAN 接口電路發(fā)往CAN 總線中相應的節(jié)點設(shè)備.如果接收到的數(shù)據(jù)是CAN 協(xié)議報文,便解析出數(shù)據(jù)部分,然后將報文數(shù)據(jù)部分封裝成規(guī)定的應用層格式并存入以太網(wǎng)接口發(fā)送緩沖區(qū),最后將數(shù)據(jù)封裝成以太網(wǎng)幀格式后通過以太網(wǎng)接口電路發(fā)往至以太網(wǎng).

            協(xié)議轉(zhuǎn)換流程圖見圖5.

            2. 3 以太網(wǎng)通信程序

            以太網(wǎng)通信程序主要包括CP2200 初始化程序.以太網(wǎng)數(shù)據(jù)發(fā)送程序和接收程序.CP2200 芯片的初始化程序的作用主要是對芯片寄存器進行常規(guī)配置 ,這里就不進行詳細說明.

            以太網(wǎng)數(shù)據(jù)的發(fā)送和接收程序:由于主控芯片C8051F340 的處理速度以及內(nèi)部集成的資源有限,不可能集成所有的TCP/ IP 協(xié)議,因此需要對TCP/ IP 協(xié)議進行適當?shù)募舨煤蟛拍苁褂?.在本設(shè)計中的協(xié)議棧主要包括IP 協(xié)議.ICMP 協(xié)議.TCP 協(xié)議.ARP 協(xié)議 .

            本設(shè)計的嵌入式TCP/ IP 協(xié)議棧的流程見圖6.

            基本流程為在CP2200 芯片從以太網(wǎng)接收到有效數(shù)據(jù)后,單片機會調(diào)用相關(guān)程序?qū)⒃摂?shù)據(jù)包從CP2200 的接收緩沖區(qū)讀取,然后判斷該數(shù)據(jù)幀是IP 數(shù)據(jù)包還是ARP 數(shù)據(jù) ,如果判斷為接收到的是IP 數(shù)據(jù)包時,那么就繼續(xù)判斷是UDP 數(shù)據(jù)包還是ICMP 數(shù)據(jù)包,如果是UDP 數(shù)據(jù)包,就根據(jù)UDP 數(shù)據(jù)包首部的讀取結(jié)果來處理相應數(shù)據(jù),完成CAN 協(xié)議數(shù)據(jù)的提取并將其存儲到相應的數(shù)據(jù)緩沖區(qū),從而實現(xiàn)以太網(wǎng)數(shù)據(jù)的解碼;如果判斷結(jié)果是ICMP 數(shù)據(jù)包那么就處理該數(shù)據(jù)包并進一步處理IP 數(shù)據(jù)包;如果接收到的是ARP 數(shù)據(jù),就判斷其是ARP 請求還是ARP 應答并根據(jù)結(jié)果進行相應的處理,如果該數(shù)據(jù)幀既不是IP 數(shù)據(jù)包又不是ARP數(shù)據(jù),那么就將該數(shù)據(jù)視為無效數(shù)據(jù)而拋棄,并初始化數(shù)據(jù)接收緩沖區(qū).

            3 結(jié)束語

            通過在航天器地面仿真測試設(shè)備上的實際應用,表明該以太網(wǎng)與雙通道CAN 總線協(xié)議可以滿足使用要求,性能穩(wěn)定,可實現(xiàn)CAN 總線數(shù)據(jù)的監(jiān)測.總線參數(shù)的設(shè)計.總線數(shù)據(jù)的收發(fā),并且其具有的低成本.高可靠性等特點還可以擴展應用于工廠.變電站等工業(yè)場合,實現(xiàn)分布式控制系統(tǒng)中管理監(jiān)控層與生產(chǎn)測控層之間的遠程互聯(lián).

          塵埃粒子計數(shù)器相關(guān)文章:塵埃粒子計數(shù)器原理
          晶振相關(guān)文章:晶振原理


          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();