引言
飞行控制计算机是飞行器的“大脑”,随着飞行任务不断复杂化、多样化,对飞行控制计算机的要求也不断提高。传统集成式的飞行控制计算机将CPU、传感器、外围接口等集成在一块或多块电路板上,这种设计使得飞行控制计算机的结构更加紧凑,但同时也降低了扩展性,使得日后更新升级变得困难。本文将FlexRay总线引入到传统飞行控制计算机结构之中,各模块之间只需通过两根内部总线相连,在保证系统结构紧凑的同时,增大了系统应用的灵活度,使得维护性、拓展性大大增强。
1 总体设计方案
典型的飞行控制计算机按功能可划分为CPU模块和传感器模块。为了提高系统集成度,本文将无线测控模块也集成在飞行控制计算机之中。CPU模块是主控单元,主要负责控制律解算、导航以及任务调度等工作。传感器模块负责向CPU模块提供载机的姿态、位置等信息。测控模块是飞行控制计算机与地面站通信的桥梁,地面控制人员通过遥测传回的信息了解无人机的飞行状态,同时通过发送遥控指令实现对无人机的控制。
通过对国内外小型无人机飞行控制计算机研制现状的调查并结合现阶段的工程需求,本文对飞行控制计算机提出了以下设计指标:主频不低于100 MHz,尺寸小于100 mm×60 mm×50 mm,重量小于400 g,功耗低于15 W,集成惯性传感器、高度传感器、空速传感器以及GPS,集成串口、开关量I/O、模拟量I/O等。
为了提高飞行控制计算机的扩展性以及可维护性,本系统采用模块化的设计思想。将主控CPU与外围接口设计在一块核心板上,传感器模块与测控模块设计在另一块传感器板上。传感器板上的采样CPU将传感器信息、遥控信息解帧、重新组帧后通过FlexRay总线发送至主控CPU,同时接收主控CPU下传的遥测信息并通过测控模块发送至地面站。系统的整体结构示意图如图1所示。
图1 飞行控制计算机结构示意图
2 系统硬件组成
飞行控制计算机由核心板、传感器板、底板3块电路板组成:核心板上主要有主控CPU、外部存储器、PWM驱动电路、开关量驱动电路、A/D转换电路、串口驱动电路、总线驱动电路等;传感器板上主要有采样CPU、惯性传感器、高度/空速传感器、GPS、数传电台、串口驱动电路、总线驱动电路等;底板主要有连接核心板与传感器板的插座以及飞行控制计算机的外部接口。
为了保证飞行控制计算机具有高速的运算性能以及丰富的接口,主控CPU选用飞思卡尔公司的MPC5644A微控制器,其主要性能如下:最高150 MHz的工作频率;4 MB内部Flash;192 KB片上SRAM;内置FlexRay、CAN控制器;最高可扩展16路串口、32路PWM I/O[1]。
惯导选用ADI公司十自由度惯性传感器,可输出三轴角速度、三轴加速度、三轴姿态角、磁航向等信息,使用SPI接口与CPU通信。高度/空速传感器使用精量电子的数字式气压传感器,使用SPI接口与CPU通信。GPS选用NOVATEL公司的OEM板进行二次开发。测控模块设计了转接板可供多种型号的数传电台使用。
FlexRay控制器使用MPC5644A内置的FlexRay模块,驱动器选用Philips公司TJA1080芯片。FlexRay模块正常工作需要40 MHz的工作频率,可从系统总线时钟或者外部参考时钟获取。本文由于采用40 MHz外部有源时钟,故选取外部时钟作为参考源。MPC5644A与TJA1080连接示意图如图2所示。
图2 MPC5644A与TJA1080连接示意图
3 FlexRay协议设计
3.1 总线数据流分析
飞行控制计算机内部FlexRay总线上的数据流总体由两部分组成:传感器板发送至核心板的上行数据以及核心板发送至传感器板的下行数据。上行数据又可细分为:GPS数据、惯性传感器数据、高度/空速传感器数据以及遥控数据。下行数据同样可分为以下几部分:控制律输出、航段航点信息、控制律参数、A/D采样数据。本文以数据更新率的最小公倍数200 ms为周期,对飞行控制计算机FlexRay总线数据流进行分析。上行数据中传感器数据以及遥控数据更新率统计如表1所列。
表1 上行数据更新率
可计算出在100 ms内的数据流量为981字节。200 ms内FlexRay总线上,上行数据总流量还包括每帧的帧头(5字节)和帧尾(3字节)。由于FlexRay发送周期为5 ms,静态段分为60个时隙,使用其中4个时隙分别发送GPS数据、高度/空速计数据、惯性传感器数据以及测控数据。故在200 ms中,上行数据的总流量为981+(5+3)×4×40=2 261字节。
下行数据按现有飞行控制计算机遥测协议,将数据分为5个遥测帧,每一帧的数据量及更新率如表2所列。
表2 下行数据更新率
200 ms内的数据流量36×5=180字节,将帧头与帧尾计算在内,下行数据的总流量为180+5×40=380字节。
FlexRay的通信速率为10 Mb/s,即在200 ms内可以提供250 000字节的传输能力,远大于飞行控制计算机的数据流量需求,故FlexRay总线的带宽是满足设计要求的。
3.2 通信实时性分析
飞行控制计算机对实时性的要求较为严格,因此对数据总线通信的实时性提出了更高的要求。FlexRay 在总线访问方式上, 提供了时间触发和事件触发两种传输方式[2]。静态段采用时分多址(TDMA)技术,将发送周期分成若干个相等的时隙,不同时隙发送的数据帧占据其对应的存储地址。在动态段采用柔性时分多址(FTDMA)技术,当没有数据发送时,发送周期为间隔相等的动态段最小时隙,当有数据发送时,发送周期被分成若干个长度不等的时隙。本文对静态段与动态段的发送延迟时间分别进行了分析。
FlexRay消息帧由帧头、有效数据和帧尾3部分组成,FlexRay消息帧格式如图3所示。帧头部分共由5个字节组成,包括保留位、有效数据指示位、空帧指示位、同步帧指示位、启动帧指示位、帧ID、有效数据长度、头部循环校验CRC和周期计数。有效数据部分可由0~254个字节组成。帧尾部分只含有单个的数据域,即一个24位的CRC[3]。
图3 FlexRay消息帧格式
静态段传输方式是基于时间触发的,需要发送的数据帧被安排在每个周期中约定好的时隙定时发送,故静态段数据帧的发送时间是确定的。因此,静态段数据帧从占据数据总线到被指定节点接收的延迟只与数据帧的长度有关,可得其计算公式为[4]:
其中,TSS为传输开始序列,通常取7位;FSS为帧开始序列,通常取1位;FES为帧结尾序列,通常取2位。在数据帧的每个字节前面都添加了2位的字节开始序列BSS,所以每个字节实际上占了10位。在10 Mb/s的传输速率下,每位的传输时间为0.1 μs。当有效数据为满负载发送时,延时时间大约为263 μs。由于控制律的解算周期为10 ms,远大于FlexRay静态段延迟时间,故FlexRay静态段数据帧的发送接收是满足飞行控制计算机实时性要求的。
动态段的传输方式是基于事件触发的,时隙是动态分配的。当动态段空闲时,每个节点都会按照时隙号从小到大的顺序判断当前时隙号和待发的帧ID号是否相同;若相同则发送该帧,发送完毕后时隙号加1;若不相同,则等待一个最小时隙后时隙号加1。由此可见,在动态段时隙的个数与长度跟发送的数据帧数量与长度是密切相关的。
由于在动态段数据帧的发送时间是不确定的,故在计算动态段数据帧发送延迟时,需考虑4个方面的影响:相同ID号且优先级高的帧抢占发送,会使当前帧延迟一个发送周期发送;动态段同周期中帧ID号较小的帧优先发送会产生延迟;当前帧发送前动态段空闲的最小时隙也会产生延迟;当前帧自身传输的时间。
在飞行控制计算机中非定时发送的数据可以在动态段进行发送,在设计通信协议的时候需要注意尽量不要存在ID号相同的帧,以减少同ID号帧之间优先级抢占带来的发送延迟。
3.3 发送时隙安排
在飞行控制计算机中上行、下行数据都是按固定时间定时发送的,故在设计FlexRay通信协议时可暂时只使用静态段进行发送。
由于FlexRay总线上静态段的数据都是安排在固定的时隙发送,故只要设计的时隙满足最长的一帧数据发送,总线上就不会出现数据流过载和拥堵的状况。根据3.1节对上、下行数据流的统计,数据量最大的一帧为GPS数据,共占用56字节,因此,在本系统中静态段的数据负载设计为64字节。当传输速率为10 Mb/s时,考虑到位流信号(如TSS、FSS、BSS、FES段)及闲置时间,传输时间约为72 μs[5]。故取静态时隙大小为100 μs,每个时隙可以传输一帧数据,静态时隙个数为30个,每个通信周期只用到前11个静态时隙,其余19个时隙做备用;动态段占用了22个微时隙;符号窗口设为14 μs;网络闲置时间长度为整个发送周期减去静态段和符号窗口后剩下的长度,用来进行相位校正和频率校正。具体的节点通信时隙安排如表3所列。
表3 通信节点时隙安排
核心板在时隙1向传感器板发送状态检测帧,传感器板在时隙2向核心板发送返回状态帧。当总线上节点增加时,核心板会向每个节点发送状态检测帧,其余每个节点在接收后都会在固定的时隙向核心板发送返回状态帧,以保证该通信周期开始时总线上的所有节点都处于正常工作状态。
4 测试验证
最后对设计的FlexRay总线节点进行通信测试验证。把该网络节点设为冷启动节点,系统上电初始化后,经过FlexRay总线配置、准备、冷启动侦听等相关协议状态,该节点会向总线发出10个启动帧来启动FlexRay集群,至此,单个节点的FlexRay总线准备完毕。把该系统节点与已经实现的基于C8051F120的FlexRay总线节点连接起来进行FlexRay集群通信测试。在该集群系统内,基于C8051F120的FlexRay总线节点和基于MPC5644A的FlexRay总线节点均设为最简单的两个时隙通信模式,即一个时隙收、一个时隙发,系统仅用静态段发送数据。系统参数:通信周期大小设为5 ms,静态段大小设为50 μs,其他系统参数(如动态段、负载段的长度,通信速率等)两个节点均设置为一样,每个节点都对接收到的数据帧数、丢帧数和发生错误帧数进行计数。MPC5644A节点通过串口将通信结果输出到PC机上以供观测,同时也可以通过示波器直接观测总线波形进行监控。FlexRay集群通信总线上的波形如图4所示。
经过12小时连续通信测试(6小时常温和6小时-45℃的低温),低温6小时通信结果如表4所列。从表中可以看出,丢帧数和错误计数都为0,表明节点设计正确,满足内部总线对误码率的指标要求,同时也验证了FlexRay总线在不同温度环境下高速率通信的可靠性和安全性。
表4 测试结果
图4 FlexRay集群通信总线波形图
结语
本文介绍了一种基于FlexRay总线结构的飞行控制计算机的设计,该系统采用了模块化设计的思想,便于调试和维护且具有较强的可扩展性。当选用性能更优的传感器时,只需对传感器模块进行改动。同时,FlexRay总线的高带宽特性为多余度飞行控制计算机的实现提供了便利条件。