《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 模擬設(shè)計 > 設(shè)計應(yīng)用 > 基于ARM7的MVB_CAN網(wǎng)關(guān)設(shè)計
基于ARM7的MVB_CAN網(wǎng)關(guān)設(shè)計
憨光明,王玉松 西南交通大學(xué)
摘要: 介紹了用于機車內(nèi)部數(shù)據(jù)通訊的MVB網(wǎng)絡(luò)和CAN總線網(wǎng)絡(luò)的報文結(jié)構(gòu),給出了MVB-CAN總線網(wǎng)關(guān)的硬件和軟件實現(xiàn)方法。
Abstract:
Key words :

0 引言
    隨著網(wǎng)絡(luò)技術(shù)和控制技術(shù)的發(fā)展,機車信息化控制技術(shù)向著更高的方向發(fā)展。為此,IEC制定出新的列車通信網(wǎng)路國際標準TCN(機車通信
網(wǎng)絡(luò)),以滿足列車微機控制系統(tǒng)中對車載數(shù)據(jù)通信網(wǎng)提出的新要求。
    按照TCN標準,列車通信網(wǎng)可分為兩級:第一級是WTB絞線式列車總線(Wired Train Bus),可實現(xiàn)車輛間的數(shù)據(jù)通信;第二級是MVB(Mul-
tifunction Vehicle bus)多功能車輛總線,主要實現(xiàn)同一個車輛內(nèi)各個功能控制單元之間的數(shù)據(jù)通信。
    多功能車輛總線(MVB)是主要用于有互操作性和互換性要求的互連設(shè)備之間進行串行數(shù)據(jù)通信的一種總線,MVB以其高實時性、高可靠性及可管理性等多方面的優(yōu)勢而廣泛的應(yīng)用在列車總線控制當中。
    控制器局部網(wǎng)(CAN-CONTROLLER AREANETWORK)是BOSCH公司為現(xiàn)代汽車應(yīng)用推出的一種多主機局部網(wǎng)。由于該網(wǎng)的卓越性能,現(xiàn)已廣泛應(yīng)用于工業(yè)自動化、多種控制設(shè)備、交通工具、醫(yī)療儀器以及建筑、環(huán)境控制等眾多領(lǐng)域。
    對于現(xiàn)在的機車總線通信,MVB總線主要應(yīng)用在單臺機車內(nèi)的車載設(shè)備間的通訊,而CAN總線則用于車載設(shè)備內(nèi)部模塊間的數(shù)據(jù)通訊。因
此,實現(xiàn)CAN總線與MVB總線之間的通信就成為工程實踐中一個必須解決的問題。

1 報文
1.1 CAN報文
    CAN報文主要包括數(shù)據(jù)幀、遠程幀、出錯幀、超載幀等四種幀。
    在總線中傳送的報文,每幀一般由7部分組成。CAN協(xié)議支持兩種報文格式,它們之間唯一的不同是標識符(ID)長度不同。它們的標準格
式為11位,擴展格式為29位。
    在標準格式中,報文的起始位通常也稱為幀起始(SOF),之后,一般是由11位標識符和遠程發(fā)送請求位(RTR)組成的仲裁場。RTR位用于標明是數(shù)據(jù)幀還是請求幀,請求幀中沒有數(shù)據(jù)字節(jié)??刂茍龅陌ǖ臉俗R符擴展位(IDE)用于指出是標準格式還是擴展格式。此外,它還包括一個保留位,以便為將來擴展使用。它的最后四個字節(jié)用來指明數(shù)據(jù)場中數(shù)據(jù)的長度(DLC)。數(shù)據(jù)場范圍為0~8個字節(jié),其后有一個檢測數(shù)據(jù)錯誤的循環(huán)冗余檢查(CRC)。CAN的標準幀格式如圖1所示。

a.JPG


    應(yīng)答場通常(ACK)包括應(yīng)答位和應(yīng)答分隔符。發(fā)送站發(fā)送的這兩位均為隱性電平(邏輯1),這時,正確接收報文的接收站會發(fā)送主控電平(邏輯0)覆蓋它。用這種方法,發(fā)送站可以保證網(wǎng)絡(luò)中至少有一個站能正確接收到報文。報文的尾部應(yīng)由幀結(jié)束標出。在相鄰的兩條報文間有一很短的間隔位,如果這時沒有站進行總線存取,則總線將處于空閑狀態(tài)。
1.2 MVB報文
    MVB報文主要包括兩種幀:主幀和從幀。其中主幀只能由總線主設(shè)備發(fā)送,而從幀則為響應(yīng)主幀而由從設(shè)備發(fā)送。
    主幀應(yīng)傳送16位數(shù)據(jù)字,發(fā)送的數(shù)據(jù)字的第一位應(yīng)為它的最高有效位,用bit0來表示,其內(nèi)容為16位字中的最高前四位,應(yīng)為FCODE。次有效的后12位用于表示Focde所指定的地址或參數(shù)。因此,主幀有固定的格式,為34 bit(9 bit主幀分界符+16 bit數(shù)據(jù)位+8 bit校驗位+1bit終止分界符)。一個主幀應(yīng)以主起始分界符開始,其后為16位幀數(shù)據(jù),接著為8位校驗序列。MVB的主幀格式如圖2所示。

2.jpg


    一個從幀應(yīng)以從幀起始分界符開始,接著為16、32、64、128或256位幀數(shù)據(jù),在每64個數(shù)據(jù)位后還包含一個8位的校驗序列或當幀數(shù)據(jù)只有16或32位時將一個8位的校驗序列附在其后,其MVB的從幀格式如圖3所示。



2 CAN總線與MVB總線協(xié)議轉(zhuǎn)換
    CAN總線和MVB總線都屬于現(xiàn)場總線范疇,因此,它們都有自己的網(wǎng)絡(luò)分層結(jié)構(gòu)。對于大多數(shù)現(xiàn)場總線,它們都包括物理層,數(shù)據(jù)鏈路層和應(yīng)用層。
    MVB有過程數(shù)據(jù)和消息數(shù)據(jù)之分?;谶^程數(shù)據(jù)的網(wǎng)絡(luò)分層是三層(物理層、數(shù)據(jù)鏈路層、應(yīng)用層),而基于消息數(shù)據(jù)的網(wǎng)絡(luò)分層則有7層。由于消息數(shù)據(jù)比較復(fù)雜且應(yīng)用場合較少,因此,本文只討論過程數(shù)據(jù)。但實際上,有時也可以將MVB視為一個三層協(xié)議的網(wǎng)絡(luò)。
    CAN網(wǎng)絡(luò)分層結(jié)構(gòu)按照CAN總線協(xié)議來說,就只有兩層即物理層和數(shù)據(jù)鏈路層。但是涉及到具體的應(yīng)用,它實際上也包括應(yīng)用層。
    為了實現(xiàn)兩種總線問的協(xié)議轉(zhuǎn)換,通常需要首先對他們的幀格式進行轉(zhuǎn)換,其主要原因是幀字節(jié)數(shù)大小不同,而幀的編碼解碼部分是由網(wǎng)卡硬件完成的;其次是對應(yīng)用層的轉(zhuǎn)換,即通過一定的形式將CAN總線中表示過11位標志符的數(shù)據(jù)含義和MVB總線中過程變量的數(shù)據(jù)集對應(yīng)起來,以實現(xiàn)數(shù)據(jù)之間的傳輸。

3 MVB-CAN網(wǎng)關(guān)的硬件實現(xiàn)
    為了設(shè)計方便,本設(shè)計的CAN側(cè)采用三星公司生產(chǎn)的S3C4480微控制器,MVB側(cè)則采用MVBC01 ASIC專用芯片。
    MVB通信控制器選用的MVBC01 ASIC專用芯片采用的是16 bit數(shù)據(jù)總線,該芯片同時可提供豐富的接口控制信號(如RDY、TMRDY等待信號),因此,可用于簡化與各種宿主CPU以及通信存儲器的接口設(shè)計。此外,MVBC01還內(nèi)嵌有完整的MVB1類設(shè)備協(xié)議,其中,MVB物理層接口采用電氣短距離介質(zhì)ESD+接口,系統(tǒng)信號通道則使用光耦來實現(xiàn)主系統(tǒng)與外界的電隔離,從而提高了系統(tǒng)的可靠性。另外,系統(tǒng)還使用RS 485芯片作為收發(fā)器,并使用過壓保護模塊來防止瞬間過壓對器件造成的損壞。MVB側(cè)的接口單元如圖4所示。

c.JPG


    MVBC01端口ICA (MVB Input Data ChannelA)和ICB(MVB Input Data Channel B)分別為MVB輸入數(shù)據(jù)通道A和輸入數(shù)據(jù)通道B,來自物理層收發(fā)器的MVB信號可由此端口送入MVBC01中。MVBC01的端口OC (MVB Output Data Channel)是MVB的數(shù)據(jù)輸出端口,數(shù)據(jù)經(jīng)此端口可發(fā)送至物理層收發(fā)器。MVBC端口SF(Send Frame)的輸出信號可作為物理層的使能信號,該信號有效時,表示一個報文正在通過MVBC端口OC(MVB Output Data Channel)輸出。
    本系統(tǒng)CAN側(cè)采用的是三星公司生產(chǎn)的S3C44BOX微控制器,S3C44BOX是韓國三星公司推出的一款基于ARM7TDMI核的16/32位RISC高性價比、低功耗的嵌入式微處理器。該芯片的片上資源非常豐富,因為它本身帶有可滿足CAN2.0B協(xié)議的CAN控制器,故可省去CAN控制器和單片機之間的硬件連接。
    CAN收發(fā)器采用PHILIPS公司的PCA82C250。主要提供對總線的差動發(fā)送能力和對CAN控制器的差動接收能力。當微處理器對CAN控制器進行
相應(yīng)配置后,收發(fā)器即可自動完成相應(yīng)的CAN總線動作。
    MVBC01的引腳f.jpg除在MVBC01復(fù)位時作為復(fù)位完成信號外,還可作為MVBC01接收到網(wǎng)絡(luò)數(shù)據(jù)時的通知信號。它的狀態(tài)通過s3c44b0x的g.jpg傳送給S3C44BOX。S3C44BOX輪詢檢測g.jpg,若檢測到跳變發(fā)生且MVBC01判斷此信號為網(wǎng)絡(luò)控制數(shù)據(jù)接收事件,則通過I2C接口讀取MVBC01的數(shù)據(jù)。MVBC01的復(fù)位可通過微控制器的PA0端口觸發(fā)。當MVBC01復(fù)位完成后,再通過/INT通知微控制器。MVBC01的控制口配置成串行方式的I2C接口,S3C44BOX通過該接口對MVBC01的寄存器進行初始化和其它控制操作。其網(wǎng)關(guān)硬件連接圖如圖5所示。

d.JPG



4 軟件實現(xiàn)
    由于MVB-CAN網(wǎng)關(guān)兩側(cè)連接的是兩個現(xiàn)場總線,因此,它們實際的工作就是通過對信息的重新封裝以使MVB總線和CAN總線能夠讀取和傳
輸。
     由于CAN數(shù)據(jù)幀包含8個字節(jié)的數(shù)據(jù),而MVB從幀最多包含256個字節(jié)的數(shù)據(jù),因此,從CAN側(cè)接收到的數(shù)據(jù)要通過MVB傳輸,就需要按照一定的格式把CAN幀中的數(shù)據(jù)組合成MVB幀的數(shù)據(jù)格式;同樣,從MVB側(cè)接收到的數(shù)據(jù)要通過CAN傳輸,也需要按照一定的格式對MVB幀中的數(shù)據(jù)進行分幀處理。另外,為了實現(xiàn)透明傳輸,還需要把MVB側(cè)的過程數(shù)據(jù)的數(shù)據(jù)集與CAN側(cè)11位標志符對應(yīng)起來。
    本文采用的方案是建立一種規(guī)范的方式來定義MVB端的MVB各種變量的含義,如所在端的端口地址、長度、以及變量在數(shù)據(jù)集中的偏移量
等。而后再將這些信息按照一定的規(guī)則和CAN總線側(cè)的幀的標識符等信息對應(yīng)成一個表格,這樣,在CAN側(cè)的數(shù)據(jù)接收就可以借助這個表格來
完成。這樣做的優(yōu)點在于把一些必要的信息(位偏移、長度等)按照約定的形式來實現(xiàn)共享,因而不再需要在數(shù)據(jù)集中分出空間來傳輸一些(包
括長度和偏移等)信息。本文把表格定義為應(yīng)用層轉(zhuǎn)換表(inbus-to-outbus或者out-to-inhus)。這里的端口指的是一種既可以被總線訪問,又可以被應(yīng)用處理器訪問的存儲器,它在MVB中是用來尋址的,數(shù)據(jù)的發(fā)送是通過應(yīng)用將數(shù)據(jù)放入端口,數(shù)據(jù)的接收則是從端口中取數(shù)據(jù)放到應(yīng)用中去。至于端口與端口間的數(shù)據(jù)拷貝,則是通過主輪詢方式來實現(xiàn)的。當主節(jié)點輪詢到需要發(fā)送數(shù)據(jù)的端口(源端口)時,便會產(chǎn)生從源端口到宿端口(數(shù)據(jù)接收端口)的數(shù)據(jù)拷貝。數(shù)據(jù)集在MVB中其實就是一般的純數(shù)據(jù),之所以稱它為集,主要是因為MVB中一幀的數(shù)據(jù)較長,通常我們把多個變量的信息放在一個集中(一個幀中1來傳輸,這樣做較為經(jīng)濟。
    本系統(tǒng)的軟件模塊主要有CAN模塊、MVB控制模塊、總?cè)蝿?wù)處理模塊、以及數(shù)據(jù)緩沖模塊。其中CAN控制模塊主要負責從CAN數(shù)據(jù)包中解析
出完整的CAN協(xié)議報文,并存入數(shù)據(jù)緩沖區(qū)2,同時將數(shù)據(jù)緩沖區(qū)A中的CAN數(shù)據(jù)封裝成完整的CAN協(xié)議報文后發(fā)送到CAN總線上;MVB控制模塊主要負責從MVB數(shù)據(jù)包中解析出完整的MVB協(xié)議報文,并將其存人數(shù)據(jù)緩沖區(qū)1,同時再將數(shù)據(jù)緩沖NB中的MVB數(shù)據(jù)封裝成完整的MVB協(xié)議報文后發(fā)送到MVB上;總?cè)蝿?wù)處理模塊主要起綜合調(diào)度和監(jiān)控作用,同時,它還用于整個傳輸過程中的中斷響應(yīng);緩沖區(qū)模塊主要負責將CAN側(cè)和MVB側(cè)接收的數(shù)據(jù)存儲到緩沖區(qū)中。
    網(wǎng)關(guān)程序的整體設(shè)計思路是當CAN側(cè)數(shù)據(jù)發(fā)往MVB側(cè)時,首先使CAN側(cè)檢測到有數(shù)據(jù)傳過來,總處理模塊通過調(diào)用CAN模塊處理函數(shù)來接收數(shù)據(jù),并通過對CAN幀的解碼來獲取CAN標志符,然后調(diào)用應(yīng)用層轉(zhuǎn)換表(inbus-to-outbus)以查詢出相應(yīng)的MVB端口的相關(guān)變量,接著再把相
應(yīng)的數(shù)據(jù)發(fā)送到數(shù)據(jù)緩沖區(qū)2中,最后由總?cè)蝿?wù)處理模塊通知MVB控制模塊將緩沖區(qū)2中數(shù)據(jù)取走,并對數(shù)據(jù)進行MVB幀格式的編碼,再發(fā)送到
MVB總線上后釋放緩沖區(qū)。
    同樣,當MVB側(cè)數(shù)據(jù)發(fā)往CAN側(cè)時,首先將數(shù)據(jù)發(fā)送到MVB上,然后由總?cè)蝿?wù)處理模塊檢測MVB上是否有數(shù)據(jù)傳輸,并通知MVB控制模塊接收數(shù)據(jù),同時對信息進行解碼分析,從中獲取端口相關(guān)變量,依據(jù)端口相關(guān)變量查詢應(yīng)用層轉(zhuǎn)換表(out-to-inbus),找出對應(yīng)CAN標識符,同時將數(shù)據(jù)發(fā)送到數(shù)據(jù)緩沖區(qū)1。此時,總?cè)蝿?wù)處理模塊可通過CAN控制模塊從緩沖區(qū)1中提取數(shù)據(jù)并進行完整的CAN報文封裝,再發(fā)送到CAN總線上并釋放緩沖區(qū)A。其中,MVB側(cè)發(fā)往CAN側(cè)的主程序流程如圖6所示。

e.JPG



5 結(jié)束語
    本文主要介紹了MVB-CAN網(wǎng)關(guān)的硬件和軟件實現(xiàn)方法。其中,應(yīng)用層協(xié)議的轉(zhuǎn)換是整個網(wǎng)關(guān)的主要工作所在,所以,設(shè)計時必須建立盡量完善的關(guān)系對應(yīng)列表,同時應(yīng)提供友好的用戶接口函數(shù)。
    通過MVB-CAN網(wǎng)關(guān)的設(shè)計可以實現(xiàn)機車內(nèi)車載設(shè)備間不同接口單元之間的通訊,從而為列車通信網(wǎng)絡(luò)的多元化發(fā)展提供有力的支持。

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。