文献标识码: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.