李笑瑜,孙永荣,赵科东
(1.江苏航空职业技术学院,a.航空工程学院; b.镇江市无人机应用创新重点实验室,江苏 镇江 212134;2.南京航空航天大学,南京 210000)
ARINC661规范通过对座舱显示的图形接口进行标准化的规定,实现了显示画面“视感”与显示控制功能的隔离,运行阶段的逻辑配置交由用户应用(UA)管理,座舱显示系统(CDS)内核负责画面渲染,从而降低了控制与显示的耦合程度[1]。
作为ARINC661座舱显示系统中的重要部分,UA承担逻辑处理功能,通过对CDS之间的事件消息进行响应,来实现对CDS画面的动态控制。
随着航空电子系统设备逐渐增加,显示系统中显示器的种类和数量也在日益增长,例如,可分为头盔显示器、平视显示器以及多功能显示器等[2],一个UA可能要与多台显示器进行交互。本文基于ARINC661规范,研究了多显示器座舱系统中画面的处理技术,设计了一种UA正确处理不同显示器画面的方法,保证了事件响应的正确性。
ARINC661协议中包含了CDS,UA以及它们之间的通信协议3部分[3]。整个ARINC661座舱显示系统的工作流程如图1所示。
图1 基于ARINC661的CDS系统工作流程图Fig.1 Diagram of CDS based on ARINC661
UA主要在座舱显示系统运行阶段发挥作用,其主要功能为:1) 通过发送指令驱动CDS内核,从而控制画面动态显示;2) 接收CDS内核的指令完成相应设置,实现显示器周边按键以及屏幕操作的事件响应,完成相应参数的设置。
基于ARINC661规范的座舱显示系统采用“视窗”的概念,显示器中的各种显示元素组成了一个窗口集,一个显示单元唯一定义一个窗口,而分屏显示利用图层实现,如此看来,图层是座舱显示系统中UA所知的最高级别的实体,显示画面就是多个UA中多个图层的信息集合。每一个UA拥有对若干个图层的管理权限,每个图层定义块包含了该UA所管理的其中一个图层的完整定义,而每一个图层中又包含着图层所拥有的窗体部件的参数和属性等[1]。
图层拥有活动性及可见性两个重要属性,只有激活的图层才具有意义[4],激活图层包含的交互式窗体部件才能进行人机交互,进而产生事件发送给CDS[5]。
ARINC661规范中,一个UA的图层可能在CDS的多个显示器中显示,如图2所示,UA1拥有3个图层,分别是Layer1,Layer2和Layer3(简称L1,L2和L3)。L1,L2在1号显示器中激活并显示,L1,L3在2号显示器中激活并显示,那么,当请求UA1发送数据给1号显示器时,UA1需要交出L1和L2的参数设置指令,同样,当请求UA1发送数据给2号显示器时,UA1需要交出L1和L3的参数设置指令,此时,1号显示器有事件消息通报给UA1的L1,那么L1将事件响应消息发送给1号显示器,如图2中实线箭头所示,此时L1的属性发生变化,那是否需要将该事件通报消息(图2中虚线箭头所示)发送给2号显示器则是一个值得考虑的问题,换言之,UA1必须清楚自己的图层在不同显示器中的激活情况,才能确定需要发送消息的显示器。
实际上,上述情况可以通过一个二维表实现,如表1所示,UA1通过查询表就知道给不同显示器需要发送哪个图层的指令。
图2 UA1与两个显示器的交互示意图Fig.2 Interaction between UA1 and two displays
表1 UA1图层在1号,2号显示器中激活情况Table 1 UA1 layer’s activation in Display 1 and 2
依然以上述为例,设定L1中有一个交互式窗体部件ComboBox组合框,某一个时刻,飞行员在1号显示器中选中它,产生事件发送给UA1的L1,如图2所示,1号显示器将ComboBox产生的事件消息通报给UA1,L1要根据逻辑做出响应,并生成事件处理指令,该事件处理指令会在下一次UA1给1号显示器发送参数更新指令时一起发送出去。同时,L1也在2号显示器中显示,1号显示器的显示画面不能影响2号显示器,所以,仅靠表1记录图层激活情况是不够的,UA1还需要记录与各个显示器的通信状态。
随着图层数的增加,表1查询本身就是低效的,再添加额外的信息记录通信状态将会更加复杂,因此,引入一个全新的概念——会话(session)。会话是指,某个UA与CDS中某个显示器建立起的虚拟对话,当UA的某几个图层在显示器中激活时,就产生会话,一旦这些图层都为非激活状态时,会话就断开,即UA的一个会话保存了在某个显示器中它被激活的图层[6]。
下面建立会话对象重新分析和研究上面的问题。如图3所示,UA1与1号、2号显示器分别建立会话S1和S2,这样,当1号显示器中L1上的窗体部件产生事件时,事件会被UA1与1号显示器的会话S1所捕获,S1要求L1做出处理,并得到事件处理指令,而由于2号显示器并没有事件产生,所以UA1与2号显示器的会话S2没有事件捕捉行为,不会响应L1的事件,显示画面并不会发生改变[7]。
图3 会话对象作用示意图Fig.3 Sketch map of session
会话对象负责管理与CDS中对应显示器的通信状态,如果一个UA与4个显示器进行通信,就可能产生4个会话对象。
本文创建的会话对象关键类成员如下。
1) 显示器标号:用以标识UA是与哪个显示器建立会话关系。
2) 事件处理缓冲区:会话对象的作用就是将事件单独处理,在缓冲区存储要下发给显示器的事件,而不是改变该图层的显示画面。
3) 已经激活的图层列表:只有激活的图层才会有事件处理的情况,会话对象只需要知道激活图层的信息即可[8]。
仿真CDS是对座舱系统中各显示器进行模拟运行和仿真显示,包括1台多功能显示器、1台平视显示器和1台头盔显示器,座舱显示控制终端与用户接口显示控制软件辅助开发调试组件可在运行Windows系统的PC机环境下运行,完成一系列符合ARINC661规范的信息处理。座舱显示控制终端与用户接口显示控制软件辅助开发调试组件具体可实现如下两个阶段的功能。
1) 定义阶段功能[9]:按照ARINC661标准解析DF文件,创建窗体部件实例,并对所有参数进行初始化设置。
2) 运行阶段功能:接收UA端发送的ARINC661标准消息指令,解析指令并发送响应信息;接收外部输入设备对CDS的操作,产生事件通报,发送给UA端,UA端做出响应。
通过采用OpenGL渲染机制,实现对多功能显示器、平视显示器和头盔显示器画面的多窗口仿真显示和实时更新。
本文利用仿真CDS的多功能显示器与平视显示器作为两台仿真显示器,以飞机加油画面为例,初始时,加油UA与两台仿真显示器连接通讯,显示画面都如图4a所示,两台显示器的显示画面均来自于加油UA的同一个图层,然后飞机开始进行加油,一段时间之后,在多功能显示器上按下“停止加油”按钮后,多功能显示器切换为图4b所示画面,此时油箱呈现出半油和满油状态,并未在平视显示器进行操作,操作画面不发生改变。
图4 飞机加油画面Fig.4 Picture of aircraft refuelling
基于ARINC661规范的座舱显示系统在当今得到了越来越多的应用,航空机载显示器的种类和数量会与日俱增,一个UA可能需要参与多台显示器的画面控制,当多台显示器画面关联到同一个图层时,UA就要对发生了画面操作行为的图层进行管理。
本文基于ARINC661规范,分析了基于ARINC661架构的座舱显控系统,对图层进行了研究,针对多显示器触屏操作[10],研究了UA对画面的处理技术,保证了事件响应的正确性。实践证明,该设计合理,运行可靠。
参考文献
[1] ARINC.ARINC 661 specification:cockpit display system interfaces to user systems[S].[S.1.]:Aeronautical Radio,INC,2002.
[2] 牛强军.航空电子系统的发展趋势[J].西安航空技术高等专科学校学报,2011,29(1):13-17.
[3] 刘建,刘勤,孙永荣,等.ARINC661规范及其应用开发研究[J].计算机与现代化,2010(4):188-192.
[4] 钱雪佳,孙永荣,袁磊,等.基于ARINC661的座舱显示系统通信机制研究[J].测控技术,2013,32(10):105-108.
[5] 袁磊,孙永荣,周晓达,等.基于ARINC661的DF文件设计平台研究与实现[J].现代电子技术,2012,35(5):156-159.
[6] 邢飞燕,施佺,胡祖辉,等.基于MVC的高校研究生会管理系统的开发与实现[J].科技资讯,2015,13(18):34-35.
[7] 牛文生.机载计算机技术[M].北京:航空工业出版社,2013:19-25.
[8] 赵文献,孙永荣,王勇,等.ARINC661设计文件自动生成平台的研究与实现[J].航空计算技术,2014(2):114-117.
[9] 赵文献.ARINC661定义文件开发软件的设计与实现[D].南京:南京航空航天大学,2016.
[10] 郑澄,孙永荣,王晖,等.基于ARINC661的触摸屏显控系统研究与设计[J].电光与控制,2015,22(4):62-65.