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

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

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

a.JPG


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

2.jpg


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



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

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

c.JPG


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

d.JPG



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

e.JPG



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

此內容為AET網站原創(chuàng),未經授權禁止轉載,。