新聞中心

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

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

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

  0 引 言

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

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

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

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

1. 1 單片機(jī)電路

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

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

  1. 2 CAN 總線接口電路

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

  在電路中將SJA1000 的AD0 ~ AD7 直接與主控芯片的低8 位地址/ 數(shù)據(jù)復(fù)用總線相連,MODE 引腳與+5V 相連使得SJA1000 工作于Intel 模式[4] , 兩路SJA1000 的中斷輸出信號(hào)分別連接至C8051F340 的端口P0. 2 和P0. 7,使得CAN 通信可以采用中斷或查詢兩種方式工作,其中雙冗余CAN 總線電路的晶振均為16MHz,復(fù)位信號(hào)采用軟件復(fù)位,詳細(xì)電路原理圖見圖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ū)動(dòng)芯片,其外圍電路非常簡(jiǎn)單,集成了IEEE 802. 3 以太網(wǎng)媒體訪問控制器( MAC ).10 BASE – T 物理層(PHY) ,完全兼容100/1000 BASE-T 網(wǎng)絡(luò),具有自動(dòng)極性檢測(cè)和糾正功能,可以自適應(yīng)地工作在全雙工或半雙工模式,具有接收數(shù)據(jù)包中斷和網(wǎng)絡(luò)喚醒中斷功能.CP2200 內(nèi)部帶有2K 字節(jié)的專用發(fā)送緩沖RAM和4KB 接收FIFO 緩沖RAM ,同時(shí)還具有8K 字節(jié)的內(nèi)部非易失性Flash 存儲(chǔ)器,用于存儲(chǔ)用戶常數(shù).Web服務(wù)器內(nèi)容,它的最后6 個(gè)存儲(chǔ)單元是工廠預(yù)編程的唯一48 位MAC 地址 ,不需外部EEPROM .此芯片8 位并行總線接口支持Intel 和Motorola 總線方式,可以為具有11 個(gè)以上端口I/ O 引腳的主處理器或微處理器增加以太網(wǎng)通信功能,可以使用復(fù)用或非復(fù)用方式尋址,在非復(fù)用模式下數(shù)據(jù)傳輸率超過30Mbps,可以直接連接LED 表示網(wǎng)絡(luò)“連接”.“活動(dòng)”狀態(tài).

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

  1. 4 EEPROM 接口電路

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

  1. 5 POE 電路

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

  2 軟件設(shè)計(jì)

  本設(shè)計(jì)的軟件主要分為三部分: CAN-以太網(wǎng)協(xié)議轉(zhuǎn)換程序.CAN 通信程序和以太網(wǎng)通信程序.軟件整體的設(shè)計(jì)思路為:當(dāng)CAN 總線節(jié)點(diǎn)設(shè)備需要向以太網(wǎng)發(fā)送數(shù)據(jù)時(shí),首先通過CAN 通信程序讀取CAN 總線節(jié)點(diǎn)設(shè)備產(chǎn)生的CAN 協(xié)議數(shù)據(jù)包,并將其存儲(chǔ)在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ā)送給一個(gè)CAN節(jié)點(diǎn)設(shè)備時(shí),首先通過調(diào)用以太網(wǎng)通信程序?qū)⒁蕴W(wǎng)傳輸層上的TCP 或UDP 數(shù)據(jù)包存儲(chǔ)到以太網(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é)點(diǎn).

  2. 1 CAN 通信程序

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

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

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

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

  CAN/ 以太網(wǎng)協(xié)議轉(zhuǎn)換程序的大致流程如下:在系統(tǒng)接收到數(shù)據(jù)后會(huì)先對(duì)數(shù)據(jù)的數(shù)據(jù)類型進(jìn)行判斷,如果接收到的數(shù)據(jù)是以太網(wǎng)數(shù)據(jù),就會(huì)依次去掉IP 頭.TCP 或UDP 頭和應(yīng)用層頭 ,然后將解析后的數(shù)據(jù)封裝為CAN 報(bào)文格式,并存人CAN 接口電路發(fā)送緩沖區(qū),由CAN 接口電路發(fā)往CAN 總線中相應(yīng)的節(jié)點(diǎn)設(shè)備.如果接收到的數(shù)據(jù)是CAN 協(xié)議報(bào)文,便解析出數(shù)據(jù)部分,然后將報(bào)文數(shù)據(jù)部分封裝成規(guī)定的應(yīng)用層格式并存入以太網(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 芯片的初始化程序的作用主要是對(duì)芯片寄存器進(jìn)行常規(guī)配置 ,這里就不進(jìn)行詳細(xì)說明.

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

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

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

  3 結(jié)束語

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

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


評(píng)論


相關(guān)推薦

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

關(guān)閉