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