基于FlexRay总线飞行控制计算机串行接口单元设计与研究

2016-03-17 01:55李春涛
计算机测量与控制 2016年2期
关键词:通信协议

李 妍,陈 欣,李春涛

(南京航空航天大学 自动化学院,南京 211106)



基于FlexRay总线飞行控制计算机串行接口单元设计与研究

李妍,陈欣,李春涛

(南京航空航天大学 自动化学院,南京211106)

摘要:根据样例无人机飞行控制计算机对串行接口单元的接口资源和内部通信能力的需求,研究并完成了基于FlexRay总线串行接口单元的硬件设计和软件开发,同时从时间调度、总线余度和非冗余数据传输三方面设计了FlexRay总线的通信协议和余度管理机制;串行接口单元采用FPGA为处理器,通过串行接口实现了外部设备与飞行控制计算机的实时通信,并按照FlexRay总线的通信协议,实现了串行接口单元和CPU单元间信息的可靠传输,总线负载小于20%;测试结果验证了设计的正确性和实用性,符合设计指标,可满足样例无人飞行控制计算机串行数据通信需求。

关键词:飞行控制计算机;串行接口单元;FlexRay总线;通信协议;余度管理

0引言

飞行控制系统是无人机的重要组成部分,其核心飞行控制计算机的性能直接影响无人机任务完成的优劣,可靠性决定了无人机的生存能力[1]。

目前,国内基于CAN总线的分布式飞行控制计算机[2]已经成功应用于型号无人机的飞行控制系统中。该飞行控制计算机由中央处理单元(central process unit,CPU单元)、模拟量接口单元(analog input and output unit,AIO单元)、开关量接口单元(digital input and output unit,DIO单元)和串行接口单元(serial input and output unit,SIO单元)四部分组成,如图1所示。CPU单元是飞行控制计算机的核心单元,通过CAN总线接收各接口单元的上行数据,经控制律解算后,将控制指令再下传至各接口单元。各个单元可以互不干扰的完成任务,提高飞行控制系统的工作效率。

图1 基于CAN总线的飞行控制计算机结构图

串行接口单元作为主要接口单元之一,直接影响飞行控制计算机的性能。目前,随着现代无人机飞行任务复杂程度与功能的增加,串行接口单元的不足逐渐显现,主要包括以下3点:

1)串行接口单元的主处理器(单片机)逐渐出现性能饱和;

2)内部数据交换载荷加重,CAN总线负载率已经超过70%,无法满足更高通信负荷的要求[3];

3)连接新型传感器的串行接口资源与通信能力不足。

针对以上问题,对串行接口单元进行升级,采用FPGA代替单片机作为CPU,FlexRay总线替换CAN[4]总线作为计算机内部通信总线,扩展串行接口资源,在此基础上展开了基于FlexRay总线[5]的飞行控制计算机串行接口单元的设计与研究。

1串行接口单元构成

基于FlexRay总线的串行接口单元主要包括串行接口模块、FlexRay通信模块、FPGA最小系统模块等。FPGA最小系统模块完成对串行接口模块和FlexRay通信模块控制与管理、数据处理;经FlexRay总线实现与飞行控制计算机CPU单元的信息交互;串行接口模块则完成与外围设备的串行数据通信。串行接口单元系统结构如图2所示。

图2 串行接口单元系统结构图

飞行控制计算机需多路串行接口同时工作,且串口数据量大,对串行接口单元的CPU要求较高,采用单片机作为CPU已经不能满足性能要求。Xilinx公司Virtex 4系列[6]的FPGA芯片内嵌PowerPC 405微处理器硬核,运算速度可达400 MHz,且接口资源丰富,可实现逻辑模块的定制和简单数据处理,串行接口单元设计使用的FPGA接口资源不到10%,留有很大的余量方便日后接口单元的功能扩展。

串行通信单元的16路标准串行接口资源分配情况如表1所示。

表1 串口资源分配表

FlexRay总线模块是飞行控制计算机内部各功能单元信息交互的关键模块,FlexRay总线代替CAN总线具有以下技术优势[7]:高传输速率,可达10 Mbps,远高于CAN的1 Mbps;数据帧负载长度最大为254字节,远大于CAN的8个字节;高容错能力,支持多级别的容错能力;高灵活性,支持静态段时间触发和动态段事件触发,消息可以冗余或非冗余传输,提供大量用户接口进行协议配置;时间确定性,静态段采用时分多址机制;时钟同步精度高,可达1 μs。

四路FlexRay总线通道划分为不同优先级,优先级最高的主通道进行正常通信,其余三路备份。当主通道发故障时,可按照优先级切换至其他通道。每个通道电路分为两部分,一是通信控制器电路,包含FlexRay协议栈和状态机,并为微控制器提供接口;二是总线收发电路,主要负责实现控制器和总线通道之间的物理层接口,为总线提供差分信号。因此,采用微处理器(FPGA)+通信控制器(MFR4310)[8]+总线驱动器(TJA1080)[9]的硬件架构来实现FlexRay总线模块。

串行接口单元的主要设计指标,如表2所示。

表2 串行接口单元的主要设计指标

串行接口单元设计的关键是接口通信可靠性和降低总线负载率,采用总线余度和非冗余数据传输技术,保证总线的可靠性,并使总线负载率小于20%。

2串行接口单元软件

2.1软件结构

串行接口单元软件实时准确接收传感器和测试设备的串行数据并解码,由FlexRay总线上传至飞行控制计算机CPU单元;FlexRay总线接收CPU单元下传的指令和数据,经串行接口发送至各个外部设备。串行接口单元集数据采集、通信控制于一体,软件设计划分为以下4个部分:

1) 串口驱动模块,主要完成各类检测设备及传感器的指令和数据的收发。

2) FlexRay驱动模块,完成FlexRay通信控制器和总线协议状态的配置、FlexRay各类型中断分配与中断处理,实现FlexRay总线的基本通信功能;

3) 调度管理模块,是系统软件的核心,完成系统各模块的初始化,启动并统一调度其他模块,维持系统正常工作。

2.2串口驱动模块

串口驱动模块软件主要包括初始化程序、数据收/发子程序和中断处理程序。

串口初始化程序设置波特率、数据帧格式、缓冲区大小等,完成中断开关、中断优先级分配以及挂接中断服务子程序等中断的初始化工作。

串行接口共16路,采用422/232方式通信,最大数据量为64字节(如表2所示),容易出现数据堵塞和碰撞,因此设计了20 ms、40 ms、50 ms等多种串口数据更新周期,减轻数据拥堵,保证链路通畅。为防止各类型数据在同一存储区的混乱,分别为每个串口设计了独立缓冲区,采用“先入先出”机制对数据进行缓冲。串口收发数据时,为减少收发延时和数据截断,设计了独立缓冲区为256字节,缓冲串行接口数据,完成数据断帧的拼接,可以有效降低64字节数据收发的误码率。各串口数据帧设计不同的帧头来区分数据类型,根据数据类型存放到相应缓冲区中,同时数据头尾添加帧头和校验位来检查数据的完整性和正确性,保证了串口数据的准确性。

图4 FlexRay驱动模块软件流程图

串口驱动模块采用中断方式收发数据:发送数据时,先调用发送子程序,将数据写入缓冲区,同时打开串口发送中断,然后中断服务子程序将缓冲区数据发出,发送完毕则禁止发送中断,退出中断服务子程序。当接收数据时,触发接收中断,中断服务子程序将接收的数据存入软件缓冲区,然后接收子程序将数据从软件缓冲区取出供应用程序使用。串口模块软件流程如图3所示。

图3 串口收发数据软件流程图

2.3FlexRay驱动模块

FlexRay驱动模块主要完成通信前的FlexRay通信模块的初始化,软件主要分为FlexRay的初始化和中断处理两部分。FlexRay的初始化,完成通信控制器的硬件初始化和通信控制协议的初始化;FlexRay通信以中断方式运行,中断机制是基于通信周期的时间触发,中断处理函数则完成所有数据的收发任务。

FlexRay驱动模块初始化依次完成以下操作:系统上电,初始化通信控制器,节点进入默认配置状态;配置消息缓冲区和FlexRay部分协议参数,如冷启动次数等,使节点进入配置状态;初始化FlexRay中断和定时器,并利用唤醒标志符完成节点唤醒,使节点处于就绪状态;当收到启动节点发送的启动帧时,节点则被激活,激活状态的结束标志着FlexRay初始化完成,节点加入FlexRay通信簇;使能FlexRay通信中断,启动FlexRay通信模块。FlexRay驱动模块软件流程如图4所示。

2.4调度管理模块

调度管理程序是提供给用户的应用层接口,协调、调度系统各个模块正常工作和相互配合。系统上电后完成硬件和FlexRay协议状态的初始化,开放中断,启动系统,循环检测串口数据是否更新,一旦更新则进行对应通道串口数据的收发,并交由后台完成FlexRay总线数据上/下传。调度管理程序维持系统正常运行,一旦系统故障则复位并终止运行。

3FlexRay通信协议及余度管理设计

3.1FlexRay时间调度

统计总线内部数据流,有效数据最大达64字节/帧,各功能板信号的更新周期共有20 ms,40 ms和50 ms三种。CAN数据帧的负载段长度为8个字节,若总线传输64字节的串口数据需要8个数据帧拼接,总线数据传输可靠性较低。而FlexRay负载段长度最大可软件配置为254字节,为提高传输效率,配置FlexRay负载段长度为64字节,以10 Mbps的传输速率计算,发送一个完整数据帧需57.6 μs,为了兼容日后飞行数据的增加,数据传输时间留有一定的余量,配置静态时隙为200 μs。统计各接口单元的交互数据,数据类型共24种,因此软件配置30个静态时隙,静态段长度为200 μs×30=6 ms,动态段采用标准配置,占用22个微时隙,每个微时隙长度为80 μs。设置符号窗口长度为14 μs。网络空闲时间用来进行相位校正和频率校正[10]。因此,由静态段、动态段、符号窗口和网络空闲时间四部分组成的FlexRay通信周期设置为10 ms,以确保单个通信周期内完成所有类型数据的一次传输,极大地提高了总线传输效率和实时性能,时间调度与时隙分配如图5所示。

图5 FlexRay时间调度与时隙分配图

3.2FlexRay总线余度

时隙1~5用检测FlexRay总线工作状态,实现四通道FlexRay总线余度管理。FlexRay总线故障检测基于“请求/应答”机制,如图6所示,即CPU单元节点在静态时隙1发送状态检测帧,并开始周期计数,其余节点在该时隙接收,若接收成功则返回状态应答帧,CPU单元在收到状态应答帧后,清除对应节点的周期计数,一旦计数超限,则判定该节点与CPU单元节点连接故障。判定4个节点均故障时,则认为总线通道故障。由于硬件设计了四路FlexRay总线通道,利用一条主通道完成所有通信任务,其余三条为备份通道。备份通道的协议配置与主通道一致,且备份优先级固定。当总线故障时按照总线优先级进行切换,若判断为主通道故障,则记录故障并切换至备份通道工作,一旦主通道故障恢复则作为备份通道工作。若备份通道故障则切换至优先级较低的总线工作并记录故障状态,备份通道故障恢复后不再使用。

图6 FlexRay总线故障检测图

3.3FlexRay非冗余传输

为满足通信的实时性要求,配置的通信周期为10 ms,则静态时隙存在各功能单元信息冗余传输。以总线数据发送为例,若当前通信周期该时隙数据没有更新,则会重复发送上一拍的数据帧,CPU单元会对该数据帧重复解算多次,增加了CPU的占用率。串行接口单元是所有功能单元中数据量最大的,占总线数据流的80%,信息的冗余传输也直接增加了FlexRay总线负担。因此,在通信协议中设计了FlexRay总线数据非冗余传输这一关键技术,来解决数据重复发送的问题。

两种FlexRay总线数据非冗余传输方案如下:方案一是在数据传输结束后立即清空和释放缓冲区;方案二则是屏蔽相关时隙的数据收发中断。根据FlexRay通信机制,即便清除缓冲区的数据,总线上仍会传输数据空帧,无法有效的隔绝总线数据的冗余发送,也无法降低总线负载率和CPU占用率,而上述问题均可在方案二中得到解决,故采用方案二。FlexRay数据收发中断是以通信周期为基准,按照静态时隙时间触发,因此设计在每个通信周期最开始完成时隙有效性判断,即判定哪些时隙的数据没有更新,当前通信周期内不需传输该时隙数据,然后关闭对应时隙的收发中断,实现总线数据非冗余传输。

FlexRay模块自带绝对时钟T1,将其配置为循环计数模式,T1以FlexRay通信周期和宏节拍(Microtick)为时基,定时器产生溢出中断并执行相应的处理函数。在每个通信周期的开始产生定时器溢出中断,在定时器中断中对更新的时隙进行有效性判断,通过寄存器MBCCSRn的MBIE位使能或禁能分配给对应时隙的发送类型消息缓冲区,以此实现方案二。

定时器T1中断在每个通信周期的开始产生,而静态时隙1用作状态检测帧的发送,其周期与通信周期相同,也在每个通信周期开始产生,为避免定时器中断和时隙中断发送冲突,将定时器中断偏移至静态时隙1中,如图7所示,确保定时器中断服务函数有效执行,实现FlexRay总线数据非冗余传输。

图7 静态时隙1结构

4通信测试与结果分析

4.1串行接口测试

为满足总体设计指标,模拟实际串口数据收发,以10 ms为周期,波特率为115 200 bps,测试数据量为64字节,分别采用232和422两种串口标准,进行串口收发测试。通过串口助手向串行接口单元发送数据,接收后再转发至串口助手显示,测试4小时,16路串口均无数据帧的丢失和错误,符合设计需求,满足飞行控制计算机实时和准确的通信要求。其中串口1的测试结果如表3所示。

表3 串口收发测试结果

4.2FlexRay总线测试

依据FlexRay通信协议,连接CPU单元和串行接口单元进行通信测试,通信周期为10 ms,静态时隙为200 μs,时隙数为30,负载段长度为64字节,从总线上监测输出波形。

图8 FlexRay总线波形

FlexRay总线波形如图8(a)所示,可见通信周期为10 ms,图8(b)所示为一个周期时隙输出波形,时隙2、7、10上传SIO单元数据至CPU单元,时隙13下传CPU单元数据至SIO单元。由图8(b)可知,时隙2与时隙7相差1 ms,时隙7与时隙10相差600 μs,时隙10与时隙13相差600 us,与预设值一致,可知FlexRay模块设计正确。

FlexRay总线连续通信4小时进行测试,测试结果如表4所示,丢帧、错帧计数均为0,表明了FlexRay总线通信的可靠性,符合飞行控制计算机总线通信的要求。

表4 SIO单元与CPU单元通信测试结果

FlexRay总线传输一帧数据需62.5 μs,传输效率为(单个静态时隙内数据传输时间÷静态时隙长度)×100%,即(62.5÷200)×100%=31.25%,按照设计的通信协议计算总线负载率为(每个静态时隙的数据传输时间×时隙数量)÷通信周期×100%,即(62.5×24)÷10000×100%=15.00%,满足总线负载率的设计要求。

4.3FlexRay非冗余传输方案测试

FlexRay总线时隙2、10的数据更新频率为100 Hz,时隙7、13数据的更新频率为50 Hz,为避免冗余传输,每20 ms的周期屏蔽时隙7和时隙13的收发中断,总线波形如图9所示。

图9 FlexRay非冗余通信总线波形图

如图9(b)所示为相邻两个通信周期中断信号波形,对比可知,时隙2与时隙10间隔1.6 ms,时隙7、13在对应通信周期内中断屏蔽,在该时隙无数据收发,与理论预期一致,可实现总线非冗余传输,进一步降低总线负载。

4.4测试结论

串行接口单元的测试结果与设计指标对比,如表5所示。

以上实验结果表明,串行接口单元的各个模块通信正常,通信误码率和总线负载率符合设计要求,且FlexRay总线通信协议设计正确,可以满足飞行控制计算机的通信需求。

5结束语

表5 串行接口单元测试结果

针对基于CAN总线的样例飞行控制计算机串行接口单元处理器性能饱和、外部接口不足、内部总线负载过重的问题,设计了基于FlexRay总线的串行接口单元,并从时间调度、总线余度和非冗余数据传输三方面设计了FlexRay通信协议和余度管理机制,以提高通信可靠性和降低总线负载率。测试结果正确,符合设计要求,能够满足飞行控制计算机数据传输需求,为以后先进飞行控制计算机的升级以及新型总线FlexRay的广泛应用奠定了基础。

参考文献:

[1] Ochi Y, Kanai K. Automatic Approach and Landing for Propulsion Controlled Aircraft[A]. Proceedings of the IEEE Internatial Conference on Control Applications[C]. Hawaii, 1999:22-27

[2]张增安,陈欣.一种用于无人机的分布式飞行控制系统设计[J].计算机系统应用,2010,19(8):16-20.

[3]章勇,陈欣,吕迅竑. 基于FlexRay网络的飞行控制计算机总线通信系统[J].中国制造自动化. 2013, 28(3): 28-32.

[4]王锴,王宏,徐皑冬.下一代车载网络FlexRay及其应用研究[J].计算机工程应用,2008,44(20):77-79.

[5]Sri Kanajan, Jeffrey Abell. Sensitivity Analysis on FlexRay Dynamic Segment Design Parameters[A].2009 Fourth International Conference on Systems and Networks Communications[C].2009.

[6]徐文波,田耘.Xilinx FPGA开发实用教程[M].北京:清华大学出版社,2012.

[7]吴宝新,郭永红,曹毅,等. 汽车FlexRay总线系统开发实战[M]. 北京:电子工业出版社,2012.

[8]Freescale Semiconductor.MFR4310 FlexRay communication controllers reference manual Rev.2 [EB/OL].2008.

[9]NXP Semiconductors. TJA 1080A FlexRay transceiver liminary data sheet Rev.02[EB/OL].2008.

[10]纪光霁,万茂松.汽车ECU通讯新平台——FlexRay(V2.1) 协议规范[M].汽车电器,2006(10).

Design and Research on Serial Input and Output Unit of Flight Control Computer Based on FlexRay Bus

Li Yan, Chen Xin, Li Chuntao

(College of Automation Engineering, Nanjing University of Aeronautics and Astronautics, Nanjing211106, China)

Abstract:According to the requirements of serial communication interface and internal communication capability of the serial input and output unit in the flight control computer of the sample unmanned aerial vehicle (UAV), the schematic and driver software of the serial communication unit based on FlexRay bus are designed, and FlexRay protocols and redundant management are realized in three aspects: slot allocation, bus redundancy and non-redundant data transmission. Using FPGA as the processor, in accordance with the communication protocols of FlexRay bus, the unit completes data transmission between serial communication unit and central processing unit, which realizes real-time communication between external devices and the flight control computer, and ensure the busload less than 20%. The test verifies the correctness and practicability of the design, which can reach the design targets and meet the serial communication demands of the sample UAV flight control computer.

Keywords:flight control computer; serial input and output unit; FlexRay bus; communication protocols; redundant management

文章编号:1671-4598(2016)02-0094-05

DOI:10.16526/j.cnki.11-4762/tp.2016.02.026

中图分类号:TP273.5

文献标识码:A

作者简介:李妍(1991-),女,江苏人,硕士研究生,主要从事飞行控制计算机设计方向的研究。李春涛(1975-),男,山东人,副研究员,主要从事先进飞行控制技术方向的研究。

收稿日期:2015-08-20;修回日期:2015-09-19。

陈欣(1958-),男,北京人,研究员,主要从事先进飞行控制技术方向的研究。

猜你喜欢
通信协议
改进贝叶斯统计的配电物联网通信协议评价
基于Wireshark的列控中心以太网通信协议解析器的研究与实现
基于Z-Stack通信协议栈的红外地温采集电路设计
车载网络通信协议标准化问题研究
基于DMX512通信协议的多路转发器设计与研究
基于NS-3的PLC多频通信协议仿真平台设计与实现
基于面向对象互操作技术的用电信息采集系统通信协议设计
关于电力物联网信息模型及通信协议的设计要点分析
铁路信号安全通信协议中消息验证码算法的安全性分析和改进
基于风险分析的安全通信协议简化研究