文獻標識碼: B
文章編號: 0258-7998(2011)11-0040-04
目前在一類無人機分布結(jié)構(gòu)的飛行控制計算機中廣泛使用CAN作為內(nèi)部通信總線,其總線采用基于事件觸發(fā)的通信機制,速率為1 Mb/s[1]。隨著無人機的不斷發(fā)展,作為飛行控制系統(tǒng)核心的飛行控制計算機對內(nèi)部總線的數(shù)據(jù)傳輸速率和可靠性的要求也越來越高,CAN總線在帶寬和實時性等方面已經(jīng)不能滿足要求。為了解決這個問題,本文分析研究了多種串行通信總線如ARINC429、1553B等,但其通信速率均不能滿足要求[2-3]。而 FlexRay作為一種新興的通信總線,除具有10 Mb/s的通信速率外,其確定性和可靠性能更好地滿足新型分布式結(jié)構(gòu)飛行控制計算機內(nèi)部總線數(shù)據(jù)通信需求。
1 FlexRay通信協(xié)議概述
1.1 FlexRay協(xié)議特性
FlexRay總線作為一種新型的總線通信協(xié)議,與傳統(tǒng)的CAN相比,在通信速率、確定性、可靠性等方面有著明顯的優(yōu)勢[4-5]:
(1)更高的傳輸速率。FlexRay提供A/B兩個通信信道,每個信道傳輸速率最高可達到10 Mb/s,與CAN總線相比,它能將可用帶寬提高10~40倍,而且總線利用率可超過90%。
(2)確定性。FlexRay采用了基于同步時基的媒質(zhì)訪問機制,時基的精確度介于0.5 μs~10 μs之間(通常為1~2 μs)。
(3)可靠性。FlexRay提供的雙通道通信,可進行冗余消息傳輸,極大地提高了數(shù)據(jù)傳輸可靠性。此外,F(xiàn)lexRay還包含總線監(jiān)控功能,可實時對總線活動進行監(jiān)測控制。
(4)靈活性。FlexRay提供了大量參數(shù)配置,如通信周期的大小、負載段長度等,可以根據(jù)需要靈活調(diào)整,支持星型、總線型、混合型等多種拓撲結(jié)構(gòu),而CAN僅支持總線型拓撲結(jié)構(gòu)。
1.2 FlexRay總線通信機制
FlexRay采用基于循環(huán)往復(fù)通信周期的媒質(zhì)訪問機制,每個通信周期包括了靜態(tài)段、動態(tài)段、符號窗口以及網(wǎng)絡(luò)空閑時間四個部分。在周期的靜態(tài)段,F(xiàn)lexRay采用靜態(tài)的時分多路訪問(TDMA)機制;而在周期的動態(tài)段,F(xiàn)lexRay則采用柔性時分多路訪問(FTDMA)機制。
每個通信周期的靜態(tài)段和動態(tài)段均是由數(shù)個時隙(slot)組成的。在周期的靜態(tài)段,由若干個時間寬度相同的靜態(tài)時隙(Static Slot)組成,每個時隙單獨分配給某一個節(jié)點,在該時隙內(nèi)總線控制權(quán)由此節(jié)點唯一占有,節(jié)點在總線上進行數(shù)據(jù)發(fā)送,即使該節(jié)點在該時隙內(nèi)沒有數(shù)據(jù)需要向總線發(fā)送,其所分配的時隙也不會被其他節(jié)點所占用。在周期的動態(tài)段,引入了一個稱為微時隙(minislot)的概念。如果在某個時隙有消息在總線上發(fā)送,則該動態(tài)時隙的長度等于整個消息所需的若干個微時隙的總長度;如果沒有消息發(fā)送,則該動態(tài)時隙長度等于一個微時隙的長度。在周期的某個時隙內(nèi)部,僅有一個節(jié)點被允許在總線上進行數(shù)據(jù)發(fā)送,且該節(jié)點所要發(fā)送消息的幀標識符與當前的時隙計數(shù)器值必須相等。幀標識符是在系統(tǒng)設(shè)計階段靜態(tài)地分配給各節(jié)點的。由于同一幀標識符不允許被分配給不同的節(jié)點,因此,可以確??偩€上不會發(fā)生媒質(zhì)訪問沖突現(xiàn)象[5]。
2 飛行控制計算機內(nèi)部FlexRay網(wǎng)絡(luò)結(jié)構(gòu)
樣例飛行控制計算機采用分布式總線網(wǎng)絡(luò)結(jié)構(gòu),主要由CPU單元、模擬量接口單元、開關(guān)量接口單元和串口量接口單元四部分組成。其中,CPU單元主要功能是為實現(xiàn)整個飛行控制系統(tǒng)的控制進行律解算、實現(xiàn)外圍設(shè)備的管理及余度管理,是分布式余度飛行控制計算機的核心主控單元。模擬量接口單元、開關(guān)量接口單元、串行量接口單元為分布式余度飛行控制計算機的數(shù)據(jù)采集及輸出部分,三個功能單元主要負責接收傳感器數(shù)據(jù)及采集外圍設(shè)備的狀態(tài),同時也輸出由中央處理單元解算及處理后的數(shù)據(jù)[6]。系統(tǒng)中每個單元作為一個FlexRay節(jié)點,節(jié)點之間通過FlexRay總線進行數(shù)據(jù)通信交互,如圖1所示。
3 FlexRay通信節(jié)點方案
FlexRay節(jié)點有三種架構(gòu)方式,目前已經(jīng)實現(xiàn)的有MCU+CC+BD和MCU+BD兩種方式。MCU+CC+BD是最早的FlexRay節(jié)點架構(gòu)方式,在這種方式下MCU是主機處理器,通過配置通信控制器(CC)中的寄存器設(shè)置其工作方式,然后控制它的工作狀態(tài)實現(xiàn)數(shù)據(jù)收發(fā);通信控制器在鏈路層和物理層上實現(xiàn)FlexRay網(wǎng)絡(luò)協(xié)議的可編程組合電路,完成主機控制器和總線驅(qū)動器之間的數(shù)據(jù)交互和流程控制;總線收發(fā)器(BD)將通信控制器與總線相連,通過編碼處理將FlexRay通信控制器要發(fā)送的數(shù)據(jù)發(fā)送到總線上,通過譯碼處理將來自總線的數(shù)據(jù)傳送到FlexRay通信控制器中[7]。而在MCU+BD的方式下,MCU集成了FlexRay通信控制器的主機處理器,整個節(jié)點的集成度有了提高。
根據(jù)樣例飛行控制計算機系統(tǒng)資源,本設(shè)計采用第一種架構(gòu)方式,MCU采用C8051F120單片機。C8051F120有16 bit地址總線,8 bit數(shù)據(jù)總線,處理器可以采用外部有源晶振或內(nèi)部晶振,內(nèi)部集成有8 448(8 K+256)B的RAM、128 KB外部數(shù)據(jù)區(qū)、64 KB外部程序區(qū);采用流水線指令結(jié)構(gòu):70%指令的執(zhí)行時間為1個或2個系統(tǒng)時鐘周期。通信控制器采用飛思卡爾公司2008年推出的、支持FlexRay協(xié)議2.1A的MFR4310。MFR4310提供兩個獨立的FlexRay通道A/B,可多達254 B數(shù)據(jù)配置的128個消息緩沖器,以及兩個可配置接收先進先出(FIFO)消息緩沖器??偩€收發(fā)器采用恩智浦公司的TJA1080A,其通信速率高達10 Mb/s,并且可工作于總線型和星型兩種拓撲結(jié)構(gòu)。FlexRay通信節(jié)點結(jié)構(gòu)如圖2所示。
4 FlexRay節(jié)點設(shè)計
4.1 節(jié)點總體設(shè)計
FlexRay總線節(jié)點設(shè)計如圖3所示。C8051F120復(fù)位時從片內(nèi)Flash存儲器執(zhí)行程序,進入正常工作模式。先進行C8051F120系統(tǒng)模塊內(nèi)其他器件的初始化以及系統(tǒng)需要的其他初始化,然后開始FlexRay通信:單片機產(chǎn)生需要發(fā)送的數(shù)據(jù),通過位擴展模塊將數(shù)據(jù)信號送到通信控制器MFR4310中對數(shù)據(jù)信號進行編碼等處理后送到收發(fā)器TJA1080A,收發(fā)器對其進行電平變換,然后再送到總線上與其他節(jié)點進行數(shù)據(jù)交換。
C8051F120單片機引入了數(shù)字交叉開關(guān),可通過設(shè)置交叉開關(guān)將片內(nèi)的計數(shù)器/定時器、串行總線、硬件中斷、ADC轉(zhuǎn)換啟動輸入、比較器輸出以及微控制器內(nèi)部的其他數(shù)字信號根據(jù)需要配置到端口P0~P3的I/O引腳;C8051F120共有8個數(shù)字I/O端口,可以將外部存儲器接口按需要配置到低端口或高端口,并可配置地址總線和數(shù)據(jù)總線是否復(fù)用。
4.2 C8051F120與MFR4310接口連接
C8051F120與MFR4310連接時,將外部存儲器接口配置到高端口P4~P7,地址數(shù)據(jù)總線采用非復(fù)用方式。MFR4310必須選擇AMI(Asynchronous Memory Interface)模式。由于C8051F120為8 bit單片機,而MFR4310數(shù)據(jù)總線為16 bit,所以需要進行位擴展。如圖4所示,MFR4310低8 bit(D0~D7)接單片機P7口,高8 bit D8~D15分別接鎖存器(74HC573)的D0~D7和單片機的P3口。單片機讀寫數(shù)據(jù)的時序為:C8051F120寫數(shù)據(jù)時,P3口的輸出驅(qū)動器使能,寫高8 bit數(shù)據(jù)D8~D15到P3口上,寫低8 bit數(shù)據(jù)D0~D7到P7口,使能A12選通MFR4310,將P7口和P3口的16 bit數(shù)據(jù)D0~D15寫到總線控制器中,寫完數(shù)據(jù)后禁止P3口的輸出驅(qū)動器;C8051F120讀數(shù)據(jù)時,RD#、A12都有效,選通MFR4310,單片機讀低8 bit數(shù)據(jù)D0~D7,然后使A12無效、A13有效,此時74HC573的LE#電平由高變低,鎖存器將對應(yīng)的高8 bit數(shù)據(jù)D8~D15鎖存,然后單片機將讀入高8 bit數(shù)據(jù)。
4.3 TJA1080A與物理層接口連接
根據(jù)FlexRay電氣物理層協(xié)議要求[8],總線驅(qū)動器TJA1080A與物理層接口的電路如圖5所示。其中T1為共模扼流電感,應(yīng)滿足頻率在20 MHz~50 MHz時,其共模扼流電感的共模衰率最大。為了保證更好的電磁兼容性,在收發(fā)器與物理層之間引入了一個隔離終端,即將終端電阻分成兩個阻值相同的電阻R7和R8。電阻R7與R8的精度控制在1%以內(nèi),使其應(yīng)滿足2|R7-R8|/(R7+R8)≤2%,以保證二者良好匹配,否則匹配性過差會導(dǎo)致信號收發(fā)時產(chǎn)生很高的電磁輻射。
4.4 系統(tǒng)參數(shù)配置
通過配置C8051F120中的EMI0CF寄存器,將外部存儲器接口配置到單片機高端口P4~P7,地址數(shù)據(jù)總線工作在非復(fù)用模式。而MFR4310必須工作在異步存儲器接口(AMI)模式下,此時MFR4310有12根地址線和16根數(shù)據(jù)線。因此選用C8051F120單片機的A0~A11作為地址線,A12作為MFR4310的片選信號。從而MFR4310在C8051F120中的存儲地址空間為0xE000~EFFF。地址映射部分代碼如下:
#define CC_base_address 0xE000
#define CC_FRM_base_address 0x0400
#define FrMVR 0x0000
#define FrMCR 0x0001
……
#define FrMBCCSR0 0x0080
#define FrMBCCFR0 0x0081
#define FrMBFIDR0 0x0082
#define FrMBIDXR0 0x0083
FlexRay總線協(xié)議提供了大量參數(shù)配置,可以靈活地根據(jù)系統(tǒng)需求進行相應(yīng)的調(diào)整,如通信周期大小、宏節(jié)拍MT(Macrotick)的長度、靜態(tài)段、動態(tài)段、標識窗的時間寬度、負載段的長度、同步節(jié)點的選擇、單雙通道選擇、通信速率、靜態(tài)段時隙的分配、動態(tài)段的訪問優(yōu)先級等。
4.5 FlexRay初始化流程
在FlexRay節(jié)點可以參與到總線上進行通信前,需要對其進行一系列的初始化操作,包括FlexRay模塊配置、通信集群協(xié)議參數(shù)配置和信息緩沖器配置等,接著通過對相應(yīng)的寄存器進行配置完成各緩沖器和FIFO的初始化,并設(shè)置回調(diào)函數(shù)和初始化計時器,然后啟動節(jié)點開始通信。具體的FlexRay初始化流程圖如圖6所示。
5 測試驗證
對設(shè)計的FlexRay節(jié)點進行了測試驗證,實驗中,將設(shè)計的兩個MFR4310節(jié)點相連進行數(shù)據(jù)通信:MFR4310節(jié)點I在時隙1發(fā)送數(shù)據(jù),在時隙4接收數(shù)據(jù);MFR4310節(jié)點II在時隙4發(fā)送數(shù)據(jù),在時隙1接收數(shù)據(jù)。每個節(jié)點都對接收到的數(shù)據(jù)幀數(shù)、丟幀數(shù)和發(fā)生錯誤幀數(shù)進行計數(shù),兩個MFR4310節(jié)點通過串口將通信結(jié)果輸出到PC機上以供觀測,同時也可以通過示波器直接觀測總線波形進行監(jiān)控。測試方案如圖7所示。
設(shè)置通信速率為10 Mb/s,每幀消息的負載長度為127字,通信周期為50 Hz,經(jīng)過12 h連續(xù)的通信測試(6 h常溫和6 h-45 ℃的低溫),其中6 h的低溫通信結(jié)果如表1所示。從表中可以看出丟幀數(shù)和錯誤計數(shù)都為0,表明節(jié)點設(shè)計正確,滿足內(nèi)部總線對誤碼率的指標要求,同時也驗證了FlexRay總線在不同溫度環(huán)境下的高速率通信可靠性和安全性。
FlexRay作為一種新型的高速串行總線標準,已經(jīng)在寶馬X5、X6和7系列轎車上都獲得了成功的應(yīng)用。相比于CAN總線,F(xiàn)lexRay傳輸速率更高,也更安全靈活。本文根據(jù)樣例飛行控制計算機系統(tǒng)資源,設(shè)計了以C8051F120單片機為中央處理單元的FlexRay通信節(jié)點,并對其進行了測試驗證,結(jié)果正確,能滿足系統(tǒng)要求,為以后在新型飛行控制計算機上用FlexRay總線替代CAN打下了堅實基礎(chǔ)。相信將來必定會像CAN總線一樣在工業(yè)控制、航空航天等其他領(lǐng)域得到廣泛的應(yīng)用。
參考文獻
[1] 任立平,周軍.CAN總線高層協(xié)議CANaerospace及其設(shè)計應(yīng)用[J].測控技術(shù),2008,27(2):59-61.
[2] 劉迎歡,羅志強.ARINC429協(xié)議和與之對應(yīng)的俄羅斯標準的比較[J].航空電子技術(shù),2002,33(1):11-16.
[3] 趙睿,秦貴和,范鐵虎.FlexRay通信協(xié)議的總線周期優(yōu)化[J].計算機應(yīng)用研究,2010,27(10):3847-3850.
[4] 劉祥志,毛成勇,張瑞鋒,等.基于FlexRay的線控制動系統(tǒng)的研究[J].山東科學(xué),2010,23(3):35-37.
[5] FlexRay consortium.FlexRay communications systemprotocol specification.Version 2.1,Revision A[EB/OL].www.flexray.com.2005.
[6] 張增安,陳欣,呂迅竑.一種用于無人機的分布式飛行控制系統(tǒng)設(shè)計[J].計算機系統(tǒng)應(yīng)用,2010,19(8):16-20.
[7] 萬苓,孔峰.基于DSP FlexRay節(jié)點的應(yīng)用研究[J].廣西工學(xué)院學(xué)報,2010,21(2):32-35.
[8] FlexRay consortium. FlexRay communications system electrical physical layer specification Version 2.1,Revision.B[EB/OL].www.FlexRay.com.2005.