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