张 鹏,吴晓东,崔海青
(中国民航大学,天津 300300)
近年来,飞机驾驶舱电子系统正逐步由模拟控制阶段向全数字控制阶段转变,功能也有了进一步的扩展,航空电子设备间有着更高的数据通信和传输可靠性的要求[1]。为此,航空电子工程委员会 (AEEC)于2007年编制出版了ARINC 825规范。ARINC 825规范基于CAN总线,规定了子系统间的通信行为,包括寻址机制、通信机制、服务结构以及概要描述,定义了使用CAN的机载系统的通信标准,被视为当前和未来飞机的重要数据传输方式[2]。目前空客公司和波音公司生产的新一代民航客机已经将ARINC825总线作为辅助子系统总线,应用于发动机控制、飞行控制和驾驶舱控制面板等子系统网络中[3]。
本文以驾驶舱控制面板为例,分析了ARINC825总线的主要特点,结合驾驶舱控制面板通信要求,使用双电源供电机制,设计了一套具有较高可靠性的双链路冗余的ARINC825通信接口设备。并通过“时间触发总线调度”技术对通信接口可靠性进行分析。
现代飞机驾驶舱控制面板承担着飞行员与飞机系统间的交互功能。控制面板的控制装置种类繁多,既包括传统的开关、电位器、键盘和光标定位器等,又包括现代的触摸液晶屏和语音控制设备等。它们控制EFIS、PFD、ND等显示系统的切换、信息输入和其他的交互操作[4]。ARINC825总线具有可靠性高、抗干扰能力强、实时响应好、体积小、重量轻、通讯速率高及易扩展的优点[5],能够满足驾驶舱内控制面板的通信要求。控制面板产生的交互数据经通信接口设备转换为ARINC825数据,发送到通信总线上;同时要将从ARINC825总线上传输过来的数据解码发给控制面板。驾驶舱控制面板通信接口功能架构如图1所示。
ARINC825协议是基于CAN总线高层协议的进一步改进而成,其电气特性、传输速率等符合ISO-11898标准,通信链路由节点互连的120 Ω屏蔽双绞线电缆组成。
为了在飞行器上使用 CAN总线,ARINC825对CAN2.0B协议做了进一步修改,ARINC825在CAN总线的物理层和数据链路层的基础上,在网络层增加了路由、数据包和流量控制等功能;在传输层增加了逻辑通道,数据重传等功能;在表示层中增加了数据表示和数据标准化等功能。与原来的CAN总线相比,ARINC825网络没有传统网络上的主从节点之分,所有的节点具有相同权限。通过对29位识别符扩展帧进行重新编码实现逻辑通信信道(LCC),函数标识符 (FID),数据对象代码 (DOC)等的划分,用于实现节点寻址和数据流控制等功能。还拥有紧急故障检测机制,受影响的节点能自动检测到故障[6]。
ARINC825协议除了具有CAN总线传统的ATM(Anyone-to-Many) 传输模式,还具有 PTP(Peer-to-Peer)传输模式。ATM通信的优势在于能够与网络中所有的节点建立持续的数据链接,但是ATM需要处理非自身的数据包,增加了接收节点的工作量。PTP通信允许网络中的一个节点向另一个节点发送数据,实现类似服务器/客户端类型的交互。在网络中同时实现ATM和PTP两种通信模式,需要网络层具有标识和隔离数据的能力,ARINC825使用CAN的识别符扩展帧的高3位作为逻辑通信通道标识,ARINC825的PTP传输模式和ATM传输模式的通信数据结构如图 2 所示[7]。
图2 ARINC825的通信数据结构
ARINC825总线使用冗余信道标识 (RCI)标记冗余链路或节点,最多支持四冗余结构。本文设计的通信接口使用并列式双冗余总线架构。主控芯片选择STM32F207单片机,内部包含两个CAN通信模块,实现CAN网络底层的通信功能。应用层的处理控制算法通过软件编程实现。通信接口的硬件原理如图3所示。通信接口通过串口与控制面板进行数据通信,将接收到的数据封装为ARINC825格式的数据包,发送到双冗余的链路上;ARINC825总线上传输过来的数据经过解码发给控制面板。通信接口以10 ms为周期,进行周期性数据发送,通信速率为250 kbit/s,用于驾驶舱内部电子系统间的数据通信,通信距离小于20 m。
图3 通信接口的硬件原理图
CAN通信芯片选择TJA1050,TJA1050是一种标准的高速CAN收发器,可以为总线提供差动发送功能,为CAN控制器提供差动接收功能。TJA1050完全兼容ISO-11898标准,最高通信速度1Mbps,能够满足ARINC825通信标准需要。同时,TJA1050采用SOI技术降低电磁干扰,有电源短路保护功能[8]。
在实际应用中,有可能发生输入端电源不稳定或总线浪涌脉冲,会导致电路中存在高频瞬时干扰,这将会对电路造成很大破坏,如果不加以适当防护就会损坏通信接口,甚至损坏后级电路。对于这种瞬时干扰可以采用隔离的方法加以防护。其次,远程数据通讯通常存在很大的地电位差,该电位差到了发送器的输出上就变成了共模噪声。如果这种噪声过大,就有可能超过接收器的输入共模噪声容限,从而对器件造成损坏。电源隔离模块采用 BS0505,BS0505是常用的电源隔离模块,具有效率高、体积小、可靠性高、隔离特性好的特点。使用ADuM1201双通道数字隔离器,将CAN通信芯片和单片机进行隔离,这样即保证没有回路电流,同时也保证电路的安全性,满足航电系统的可靠性要求。CAN通信接口原理图如图4所示。
图4 CAN通信接口原理图
通信接口的电源为了满足航电系统的可靠性要求,保证电源供电的有效可靠,设计使用双电源供电。航电系统一般采用28 V直流供电,单片机系统使用5 V供电,使用MP1584降压型转换器进行电压转换。MP1584输出5 V时,有效的电压输入是8~28 V。供电电路上串联一个47 Ω的限流电阻R保证时电流不会过载。考虑到在电源切换时要保证单片机的正常运行,需要保证断电时供电时间需要大于200 ms,使用电容储能的方式,保证在电源切换时单片机正常工作,初始时刻,电容两端的电压为28 V,t时刻后,电容两端电压Ut为:
需要保证t>200 ms,Ut>8 V,可以得出电容C应大于339 μF。为保证断电时供电要求,选择1 000 μF电容能够完全满足要求。
电源切换电路使用光耦继电器,光耦继电器能够快速完成电源切换,几乎不产生干扰。光耦继电器最大通过电流为100 mA。通信接口的工作电流最大不会超过150 mA,选用双光耦继电器作为电源切换器件,保证系统的正常工作。电源切换电路原理图如图5所示。
图5 电源切换电路原理图
使用单片机STM32F207内部集成的AD转换接口,对直流电源进行分压采样,用于电源电压监控。系统上电后默认使用电源1,当电源1不能满足电源质量18~30 V的要求时,单片机控制光耦继电器使能引脚,电源切换到备用电源2上。
本文使用模块编程来编写通信接口软件程序,包括了输入输出模块、数模转换模块、故障处理模块、通信数据模块、CAN通信模块。输入输出模块用于控制和显示通信接口的功能状态;数模转换模块主要对电源和主板状态进行监控;故障处理模块完成故障判断和处理功能;通信数据模块功能是对传输的数据进行预处理和对CAN通信协议的高层进行修改,使其满足ARINC825协议。
在系统工作之前的主要进行功能初始化,对使用的端口进行寄存器配置并使能,需要完成的配置有GPIO离散量定义、ADC数模转换定义、UART串口通信初始化、ARINC825通信协议设定、CAN通信初始化、系统时钟初始化和中断配置。完成系统初始化后,对主、副电源进行检测,如果主电源不满足18-30V的电压要求,系统自动切换到备用电源。
2.3.1 ARINC825信息的冗余发送
控制面板的控制器对面板上的操作进行处理,通过串口将数据传输到通信接口,通信接口对这些数据进行处理后,发送到ARINC825总线上。
进行串口数据转为ARINC825总线数据时,需要定义一个状态机用于接收处理字符串数据。如图6所示,状态机默认状态是Finished,当接收到起始标志“*”,状态机状态变为GetHeader,当处在GetHeader状态时,如果接收到结束标志“#”就会进入SAVE_WORKING状态;SAVE_WORKING状态会将缓存内的数据存到数组变量中当,处理完成后,状态机状态变为Finished。数组变量中的数据即是待发送的数据包。通信数据模块为待发送数据包进行SN序列号填充,填充组装完成的数据帧会在两条相互冗余的链路上同时进行发送。数据帧的 SN序列号由0递增到255,之后再从0开始计数。接收端再接收到数据帧时,会检测SN序列号,对相同SN序列号的数据帧会进行去冗余操作,同时也能够检测出传输过程中丢帧错误。
图6 串口数据接收状态机
2.3.2 ARINC825信息的冗余接收
ARINC825总线在接收数据时,需要对并联双冗余通信链路上接收到的数据帧进行SN序列号的检查,对出现错误的数据包进行过滤。主控芯片的任意一个CAN模块在接收完一帧数据后,会触发通信处理中断。通信时,当一路CAN总线通信中断被触发,中断处理程序开始读取数据包,首先会对数据进行完整性校验,如果数据完整,通过SN序列号判断是否在冗余通道上收到过此数据,如果不存在,则说明是有效帧,将SN序列号记录到内存当中。如果存在,说明此数据帧是冗余数据,对有效载荷内的数据做一致性检测,不通过,则丢弃当前帧。数据接收的程序框图如图7所示。
图7 ARINC825数据接收程序框图
为了对总线节点进行传输控制,ARINC825使用“时间触发总线调度”技术。时间触发总线控制基于两个概念,即主时间帧 (Major Time Frame)和次时间帧 (Minor Time Frame)。主时间帧为总线中所有的周期性消息至少传输一次的时间长度,次时间帧 (Minor Time Frame)为总线中传输频率最大的帧的周期。同一时间帧内的数据帧采用多主竞争发送。只要控制总线中各个节点在次时间帧中的数据发送,就可以保证总线节点间通信的确定性[9]。计算总线负载时,需要选取一个时间片段进行分析,使用时间间隔最小的次时间帧作TransmissionInterval进行计算分析,能够得出最大的总线负载。ARINC 825基于CAN2.0B通信协议,使用了29位标识符扩展帧,数据帧长度与有效载荷有关,计算公式如下:
在计算数据帧长度时需要考虑填充位,其计算公式如下:
有效载荷与数据帧长度的计算结果如表1所示。
总线负载计算公式如下:
表1 数据帧长度计算值
NumMessages指此时间段内的消息帧传输次数。TransmissionInterval指所选时间段的时间长度。DataRate指总线传输速率,单位bit/s。总线负载计算公式仅用于周期性消息帧的负载计算,非周期性消息帧的负载计算需要先将其等效转换为周期性消息,再进行计算[10]。
图8 时间触发总线调度机制的时序原理图
如图8所示,本文设计的通信接口需要每10 ms进行一次数据帧的传输,设计的通信速率为250kbit/s。总线上同时会有4个ARINC825节点进行数据通信,采用短帧结构,有效载荷为8 bit。总线负载使用公式 (4)进行计算得:
ARINC825协议的最大带宽利用率在理想的情况下可以达到80%以上,考虑到事件消息和错误帧可能需要额外的总线带宽,设计时应预留一部分总线带宽,建议的总线负载不超过50%[11]。本文设计的总线接口速率完全能够满足通信要求,如果需要扩展节点数量,此设计下最大的节点数量不应该超过8个。如果有更多的节点需求,就需选择更高的总线通信速率或者进行节点分网。
选用4个通信接口设备组成4节点ARINC825通信网络组成验证平台,将测试用控制面板接入通信接口模块上,使用28 V直流电源为系统供电。使用CAN网络分析仪接收ARINC825网络的数据包,通过USB连接到计算机的上位机,监视通信数据。测试用的控制面板为按键键盘,按下相应的按键,会触发控制面板的按键中断,通过串口将按下的键位发送给通信接口模块,通信接口将位置编码到ARINC825数据包的有效载荷内,通过计算机上位机观察是否接收到相应的指令,验证ARINC825通信接口是否正常工作。实验结果如图9所示。
图9 测试接收数据
实验选取其中帧ID为0833045数据帧进行分析,上位机软件能够定时接收到此设备发送过来的数据帧,在按下测试用控制面板的相应按键后,上位机软件立即接收到相应的数据帧。通过比较每个数据帧之前SN序列号,依次为连续递增,表示数据没有发生丢失。
导出捕获的ARINC825网络数据包,统计时间标识,计算每个数据帧的时间间隔,如表2所示。
表2 时间标识与时间间隔
通过统计计算1000个数据帧的时间间隔,得出平均时间间隔为9.6 ms,数据帧的时间间隔波动是由于ARINC825总线存在多个发送节点,节点间存在总线竞争,当总线被其他节点占用时,此设备会自动竞争下一个总线使用权限,通过“时间触发总线调度”机制可以保证10 ms的周期发送要求。
本文基于ARINC825协议设计一套双冗余的通信接口设备,使用冗余供电,数据冗余收发保证设备的可靠性。通过“时间触发总线调度”技术进行传输控制,保证总线负载不超过设计值。通过实验表明设计的通信接口设备能够满足驾驶舱控制面板通信。对于ARINC825总线技术应用于驾驶舱控制面板间的数据通信具有实际意义。