陈思悦,徐健龙,黄素娟
(1.上海大学通信与信息工程学院,上海 200444;2.上海飞机设计研究院,上海 201315)
随着航空电子技术的不断发展,现代民用飞机使用ARINC661 标准进行搭载的座舱显示系统(Cockpit Display System,CDS)的设计也越来越复杂[1]。国外对ARINC661 的应用可以追溯到空客A380,实现了其在分布式显控系统中的应用。国内对于ARINC661 标准的研究和应用设计也在不断地深入,如李笑瑜等研究了ARINC661 规范和工作原理,探究和搭建了人机交互系统[2],李回宝设计了ARINC661 仿真和监控试验台,支持开展ARINC661系统自动化测试[3],王敬驰等分析了ARINC661 的适用性[4]。电源系统中也有相关的CDS 应用——断路器显示与控制(Circuit Breaker Indication and Control,CBIC)系统,该系统是一种能在驾驶舱内显示并控制电源系统内部所有配电断路器的系统。在众多CDS应用中,对CBIC 的分析非常少,且针对系统内部UA间的数据同步方法没有相关的研究成果,因此在ARINC661 标准的基础上,对CBIC 系统的通信数据帧及通信流程进行分析,并且对CBIC 系统内部的UA 之间数据同步的通信机制展开研究并进行仿真实验有着重要意义。
ARINC661 标准发表于2001年,其主要目的是规范CDS 和UA 之间的接口,为航空电子器件与不同类型CDS 之间的相互连接提供了一个平台[5]。该标准将图形显示与处理逻辑分离开,CDS 和UA 之间的联系转变为规范自身定义的通信协议[6]。ARINC661简化了显控开发流程,缩短了开发周期并降低了开发成本[7]。ARINC661 成员系统之间的通信信号称为拓展数据包(Extended Block Package,EBP),EBP 信号结构如表1 所示。
表1 EBP信号结构
ARINC661 虽然规定了CDS 和UA 之间的通信格式,但对于使用何种总线进行数据传输并未要求。由于CDS 与航电系统之间通信数据量大,且要求传输带宽大、传输可靠性高,因此民用飞机常使用航空电子全双工交互式以太网进行通信[8]。
CBIC 系统主要由CDS 中的显示器(Display)和UA 组成,Display 集中位于驾驶舱中,显示电源系统中配电断路器的名称、位置信息、状态信息等。电源系统内的断路器主要有热断路器(Thermal Circuit Breaker,TCB)和电子断路器(Electrical Circuit Breaker,ECB)。在CBIC 系统中,显示界面可以显示TCB 与ECB 的全部状态信息。由于TCB 只能进行人工插拔的物理断路器,因此CBIC 只能控制ECB 的状态。
CDS 是系统实现画面显示的功能模块,其主要实现的功能有显示加载文件(Definition File,DF)解析、图形界面绘制、与UA 进行通信以及人机交互[9]。
CDS 与UA 之间的通信都是由事件驱动的,事件包括请求(Request)和通知(Notification)两种类型,所有的消息都以异步的方式进行发送[10]。CDS 的交互功能主要由光标控制系统(Cursor Control Device,CCD)或是键盘来实现,飞行员或维修人员可以通过CCD 操作显示界面向CDS 输入指令。
UA 是驻留电源系统中的用户应用软件,也是CBIC 系统的逻辑处理中心,其主要实现的功能有DF文件管理、与CDS 通信、接收CDS 命令、接收外部数据、逻辑处理[11]。
UA 接收来自电源系统内部各个控制器所有的断路器信息以及CDS 发送给UA 的Notification 事件和反馈信息,通过Layer ID 与相应的图层进行绑定,控制图层部件,对接收到的数据与信息分别进行处理后,发送Request 事件给CDS,请求刷新显示画面或改变显示画面[12]。
为了防止CBIC 中出现单UA 自身故障或通信中断等特殊情况,电源系统分别为负责接收左右两侧断路器数据的UA 设置了备份UA,因此CBIC 系统中的UA 数量为4,该操作增加了显控系统的冗余度,提高了CBIC 系统数据传输的可靠性。
CBIC 系统的通信机制即基于ARINC661 标准的CDS 与UA 间的通信机制。CDS 与UA 之间使用EBP信息进行数据传输,根据一定的通信流程实现驾驶舱断路器信息的集中显示。CDS 与UA 之间的异步通信既能节省带宽,又能减少延时[13]。CDS 与UA 间的通信流程如图1 所示,主要包括通信端口初始化、CDS 与UA 握手建立连接、选择主UA 进行通信、与备份UA 保持连接、切换UA。
图1 CDS与UA的通信流程图
飞机上电后,CDS 的Display加载CBIC系统的DF 文件,将显示功能载入Display,完成CDS 端的初始化。初始化后,UA 和Display 中的服务器(Server)之间开始以200 ms 的频率互相发送握手信号,尝试建立连接。
当Server 和UA 两者的握手信号AH 标志均为0x01时,认定当前连接建立成功。如果CDS 或UA在若干周期内没有接收到对方发送的握手信号,则主动发送AH 标志为0x00 的空包信号,表明握手不成功。
建立连接后,Server 将从握手成功的UA 中选择主UA 进行数据传输。当UA 接收到的信号中SA 标志为0x01时,按照预先设定好的UA 优先级顺序选择主UA,剩下的作为从UA。主UA 向Server 发送同样SA 标志为0x01 的EBP 信号,剩下的从UA 作为备份UA 向Server发送SA 标志为0x00 的EBP信号。
当主UA 选择完毕后,机组人员激活相应显示画面,Server 将该外部输入转换成激活事件A661_Layer_Active 发送至主UA,主UA 接收到激活通知后,发送部件参数更新命令A661_CMD_SET_PARAMETER 和图层可见性请求A661_Layer_Visible_Request 至Server,实现驾驶舱CBIC 画面显示。
在主UA 支持Display 显示画面期间,从UA 和Server 继续以200 ms 频率的EBP 空包信息持续发送心跳信号,确保从UA 处于热备份状态。
在Server和主UA 保持数据传输期间,主UA 检测到自身发生故障、检测到与Server之间的通信出现连接错误,或是UA 之间的同步出现故障时,需要将主UA 切换成从UA,重新执行源选择和保持连接这两个步骤,继续实现CBIC的相关显示和控制功能[14]。
为了在CDS 中显示出完整的断路器相关信息且在UA 切换时保证数据与指令的一致性,必须在CBIC 系统中增加UA 间数据同步机制。该机制的设计主要涉及通信数据、通信线路方案设计及流程的设定。
电源系统内的UA 所接收的数据主要有从左侧一次配电盘箱(Left Distribution Panel,LDP)、RDP、应急配电盘箱(Emergency Distribution Panel,EDP)、集成断路器板(Integrated Circuit Breaker Panel,ICBP)和远程配电装置(Remote Power Distribution Unit,RPDU)发来的TCB 和ECB 的位置、状态信息以及从CDS 发来的断路器控制指令。
当主UA 工作时,必须将外部输入数据、当前画面显示信息和控制指令与从UA 进行同步。外部输入数据主要是飞机各个内部系统传感器所采集的设备状态信息等具体数据,UA 之间的同步需要让每一个UA 都拥有其他UA 所有的数据,防止采集或者传输出现数据错误,导致UA 切换时显示信息不一致;画面显示信息的同步保证主UA 出现故障或通信中断时,从UA 可以提供和主UA 相同的显示信息;控制指令同步可以实现主UA 对非其管辖设备的控制。UA 间数据同步方案如图2 所示。
图2 UA间数据同步方案
CBIC 系统中设定的UA 优先级顺序为UA1-UA2-UA3-UA4,UA 间数据同步流程如图3 所示。
图3 UA间数据同步流程
飞机上电后,CDS 与UA 进行通信,设定UA1 为主UA,在所有UA 健康状况良好的情况下,UA2 向主UA 发送其所有的断路器信息,主UA 同步数据至其备份机UA3中,完成UA 数据同步的初始化操作。当主UA 收到操作断路器状态变更的消息事件时,主UA 对该消息事件进行判断,发出命令信号至相应的UA,由对应的UA 进行断路器状态控制。当收到变更左侧断路器消息时,主UA 发出命令指令至左侧RPDU 控制ECB 状态,更新主UA 接收到的断路器数据,将变更后的断路器状态信息发送给其从机UA3。当收到变更右侧断路器消息时,主UA 发出命令指令至UA2,由UA2 命令右侧RPDU 控制ECB 状态,更新UA2 接收到的断路器数据,将变更后的断路器状态信息发送给其从机UA4 和主UA,再由主UA发送该状态信息至其从机UA3。
为了验证UA 间数据同步的必要性,模拟CBIC系统的显示与控制功能,利用两块单片机模拟主从UA,分别为UA1 和UA2、以太网交换机作为网关设备、PC 模拟CBIC 系统中的CDS端,三者之间由网线连接,以此实现数据传输与同步的功能,其中传输所使用的协议为UDP 协议,使用Python 设计显示界面与控制界面[15]。
实验中的单片机选择STM32F407VET6,该单片机板上带有以太网通道和32 位计时器,RAM 大小为196 kB,时钟频率为168 MHz,满足需要模拟UDP 通信的要求。由于单片机上仅有一处网络接口,因此需要网关设备将两块单片机和PC 端连接起来,该实验中选择的是以太网交换机作为网关设备。该测试环境的完整硬件连接图如图4 所示。
图4 硬件连接图
为了达到更直观的视觉效果,该实验以单片机上装载的三个led 灯来模拟CBIC 中的断路器,led 灯设置有三种状态,即开启、关闭和闪烁。单片机上装载的第四个led 灯表示前三个灯的状态是否被更改,灯亮表示该UA 的某个led 灯状态改变,灯灭表示该UA 的led 灯状态未改变。
该实验软件部分主要使用轻型网际互连协议(Light Weight Internet Protocol,LWIP)进行单片机之间以及单片机与PC 端之间的通信。该协议适合应用于资源有限的小型嵌入式系统中,在保持网络协议的传输功能的前提下减少RAM 的使用。在单片机上实现通信的软件流程如图5 所示。
图5 软件流程图
首先需要定义通信链路上传输的数据格式、模式及需要连接的远端IP 地址,此处PC 端IP 地址为169.254.67.187,由于PC 端与两块单片机需要在同一子网中,因此根据子网掩码设置两块单片机的IP地址分别为169.254.67.122 和169.254.67.56。在完成基本定义后,通过UA_udp_new()创建新的进程控制块(Process Control Block,PCB),在该控制块中设定控制块相关信息及远端设备端口号为6000。创建成功后,执行UA_udp_connect(),该命令需要提供创建好的PCB 名称、远端IP 地址和端口号。执行命令过程中,判断本地设备的IP 地址是否和远端设备处于同一局域网中,若是,则本地设备与远端设备绑定连接;若否,则建立连接失败[16]。在单片机中设置接收定时,每200 ms 询问一次是否接收到数据,若收到则调用UA_udp_recv(),执行接收回调函数,在单片机中该函数设置为最高优先级。当本地设备有发送信息的需求时,执行发送模块命令,首先分配数据包空间UA_pbuf_alloc(),通过UA_pbuf_take()将需要发送的数据复制到数据包中,接着运行UA_udp_send()发送数据,最后释放数据空间UA_pbuf_free()。在流程中没有发送或接收要求时,开启定时器,每200 ms询问一次链路是否保持连接,若否,则断开连接,通信结束。
图6(a)所示为CBIC 系统功能仿真实验的显示与控制界面,当前PC 端仅连接了一台单片机UA1,UA1 与UA2 之间的同步未完成。上电后,PC 端显示当前与UA1 连接,显示界面仅显示出UA1 的三个led灯状态,UA2 的三个led 灯状态为空白。
图6 显示与控制界面示例
图6(b)所示为UA1 与UA2 之间完成同步后的显示界面。上电后,PC 端显示当前与UA1 连接,显示界面显示出UA1 与UA2 上的led 灯状态,可见主从UA 间的数据同步可以使显示界面显示出完整的数据,因此验证了UA 间同步是非常必要。
在控制界面选择需要更改的led 灯、位置、序号、状态等信息,点击更改状态按钮,可见图6(c)所示显示界面中相应的led 灯状态改变。在硬件环境中,UA1 的led 灯亮暗情况无变化,UA2 中的第二个led灯由关闭状态转换为开启状态,第四个led 灯点亮,说明该UA 上有led 灯状态发生变化,验证了CDS 与UA 间传输数据与指令的一致性。
通过设置单片机的按钮来模拟连接中断,当UA1 与PC 端的连接断开后,PC 端与UA2 进行连接并传输数据,此时UA1 与UA2 间依然保持同步。图6(d)所示为PC 端当前连接为UA2,UA1 与UA2 的数据同步已完成,此时显示界面依然能显示出完整的数据,且数据与UA 切换前一致。
由于民用飞机上的用电负载非常多,需要众多断路器去保护,而断路器则需要人来控制其开启或关断。对于机组人员而言,能够在驾驶舱直观清晰地获取断路器位置及状态等信息是必需的,因此提出建立基于ARINC661 标准的CBIC 系统。针对CBIC 系统中的通信方法进行了深入研究,分析了CDS 与UA 间传输的数据格式、通信协议。但在显示与控制时需要实现界面数据与控制指令的一致,因此提出了一种UA 间的数据同步方案。该方案将主从UA 连接起来,保证了显示界面数据的完整性,考虑了UA 的数据备份,提高了CBIC 数据传输的可靠性。最后对完整的CBIC 功能进行仿真实验,验证了基于UA 间数据同步的通信方法研究的可行性。