基于SCADE ARINC661 的座舱显示应用软件模型开发研究
2022-07-11魏石峰程新满王柯云
魏石峰 程新满 王柯云
(中国直升机设计研究所 江西省景德镇市 333001)
1 引言
随着综合化航空电子技术的发展,航空电子系统的组成越来越多元化,综合显示系统的系统复杂度显著增加。这使得综合显示软件在添加新的子系统或子系统功能、维护更新时不得不面临高难度高成本的问题,同时,随着软件规模的增加,测试难度也随之增加,软件安全难以保障。针对此问题,ARINC661 规范应运而生,它提出了一种CDS 软件加UA 软件的“客户端-服务器”型的系统架构,能够很好的解决上述问题。
在实际工程中应用该标准,必须考虑实际通讯链路复杂、通讯带宽有限,从而引起的数据拥堵和丢失的问题。聂飞针对该问题提出了失效检测算法,李回宝提出了一种基于检测通讯数据的ARINC661 软件测试方法。但是目前还没有文章对初始化的过程展开过研究,ARINC661 画面在初始化时是通讯带宽需求的高峰,如果不进行合理的初始化管理,容易造成初始化消息丢失的风险。本文基于SCADE 建模对上述问题提出一种模型框架,可对消息发送进行有效管理,在初始化时控制发送消息长度,逐循环完成初始化消息的发送,避免造成拥堵,又能保证正常初始化功能,初始化完成后该机制也能应对显示异常风险。
2 ARINC661软件架构及其模型化开发方法
如图1 所示,ARINC661 标准起源于2001 年ARINC 公司制定的“ARINC661 规范”,即:“座舱显示系统到用户系统的接口”规范。随着该标准在波音、空客等公司的不断使用和修订,逐渐成为了行业规范。ARINC661 标准与传统设计思想之间最明显的区别在于:该标准彻底将画图代码和管理可见元素的逻辑、位置及状态等代码分离,前者定义为座舱显示系统(CDS 软件),后者定义为用户应用软件(UA软件)。CDS 和UA 之间通过ARINC661 定义的通信协议相联系,CDS 软件驻留在显示器中,UA 软件驻留在各个子系统计算机中。如果处理逻辑需要更改,仅需修改对应UA软件。另外对于CDS 软件,当有需求更改时,除增加新的交互效果外的一般情况下仅需要修改DF 配置文件即可,不需要更新CDS 软件。
图1:ARINC661 显示系统软件架构
CDS 软件定义为面向用户的图形显示软件,用于实时显示结构化的用户接口组件(widgets)。而显示什么样的组件、如何显示由定义文件(Definition file,DF 文件)来决定。
UA 软件主要功能包括接收显示器交互事件并进行逻辑处理,以及为CDS 软件提供显示参数指令的功能。UA 软件搭载与各个子系统当中,将传统显控软件复杂的功能拆分成了许多独立的子功能。
SCADE Suite 是一款成熟的UA 软件开发工具,它是一种基于模型的开发与验证工具,与传统软件开发方式相比,开发人员不需要或者仅需要少量的手工编码过程,而通过布置逻辑块来连接逻辑,并自动生成认证级代码。这样做的好处在于可以降低时间成本,降低人为错误,提高软件功能清晰度和可复用性。
3 UA软件模型架构设计
3.1 UA软件在显示系统中的功能
座舱显示系统一般有多个显示器,各显示器差异显示但系统数据相同。对于一个UA 软件来说其系统架构设计如图 2 所示。
图2:UA 软件系统架构
图 2 中(c)表示N 个显示器,(b)表示UA 软件,(a)表示航电子系统。UA 软件驻留在航电子系统中,航电子系统发送系统状态数据给UA 软件(数据流①);UA软件将人机交互产生的控制指令发送给航电子系统(数据流②);UA 软件发送N 份ARINC661 消息给N 个显示器,从而修改显示内容(数据流③);UA 软件接收显示器发来的ARINC661 消息,从而获取人机交互事件(数据流④)。
3.2 UA软件的架构设计
本文所设计的UA 软件的流程图如图 3 所示,完成初始化后进入周期执行过程,循环内先后完成以下过程:
图3:UA 软件流程图
接收来自显示器的ARINC661 输入消息,并按照显示器号将N 份ARINC661 输入消息暂存到内存中。接收系统消息,更新系统数据。按照显示器号提取ARINC661 输入消息。将输入消息作为控制模型的输入,调用控制模型,得到ARINC661 输出消息然后发送。执行控制模型期间,如果有系统控制事件触发,则发送相应的系统数据到子系统。回到步骤3,共执行N 次,处理所有CDS 的ARINC661 输入消息。执行完N 次后,本循环结束,等待下一周期开始。
3.3 Suite中的控制模型设计
前一节介绍了总体架构,本节介绍模型框架设计。图 4所示的模型架构主要由三部分组成。负责处理按键交互事件的模型;各个显示模块的显示控制模型;责将前两个模块的输出转化成ARINC661 类型的输出的消息发送管理模块(Emit 管理)。
图4:Suite 中搭建的模型架构
图5:页面切换模型示例
按键事件模型采用if 或者when 操作符来完成。通过对页面号的判断,调用不同页面的按键处理模块,如图 6 所示。在各个页面的按键事件模型中,可以采用导入类型的操作符调用手写代码发送系统数据,例如向子系统发送控制指令。
图6:按键事件模型示例
画面显示控制模型按照功能进行封装,各个显示控制模型的具体实现逻辑各不相同,但外层的模型框架设计如图 7所示。
图7:画面显示控制模型
显示控制模型的模型输入是系统状态数据,比如获取经纬度状态数据,计算得出某个图幅的屏幕坐标属性值结果。因为Suite 开发工具不擅长处理数据结构,所以从系统控制软件获取系统状态数据的功能采用手写代码的方式实现。获取系统状态数据后,数据存储在手写代码创建的全局变量中,Suite 中的模型再采用导入类型操作符将系统数据输入到控制模型中。
得到模型输出后,即可将输出与图形属性值连接。例如图 8 中的名称为航线的容器的使能属性Enable、可见属性Visible、屏幕坐标属性PosX 和PosY 等。而每个属性值前都对应有一个Emit 变量(发送标志位)。每循环中Suite 会将所有Emit 值为True 的属性值组织成ARINC661 消息进行发送,显然控制Emit 是管理消息发送的关键。本文对此提出了专门的消息发送管理模型,得到Emit 值后,与控制模型输出共同连接到控件属性值上。
图8:航线容器的图形属性值(示例)
3.4 ARINC661消息发送管理模型设计
航电系统具有各系统间通信复杂多样、数据传输量大、传输链路众多等特点。实际工程中应用ARINC661 显示系统后,不得不面对因通讯带宽有限而造成的画面初始化问题和消息意外丢失问题。因此,ARINC661 消息必须要进行合理的管理,尤其在通讯量需求最大的初始化阶段,既要保证正常的初始化功能,又要保证消息长度不超限制。进行发送管理需考虑以下三点:
(1)基本需求:当显示控制模型的计算输出值发生变化时,应及时将该输出值的Emit 值置为True,组织发送该输出,使得画面实时有效。
(2)初始化需求:显示器启动后的初始化阶段,UA软件需要将所有的模型输出进行一次有效发送,也就是需要将所有的Emit 值在初始化阶段全部置为True 一次,否则ARINC661 画面将保持DF 文件里描述的初始状态,而该状态可能不是准确的状态。同时,也不可以在UA 软件的第一循环就将所有的Emit 值全部置为True,因为如果这样做,ARINC661 消息的长度容易超过消息发送长度上限而被丢弃。
(3)防风险需求:由于通讯系统复杂,消息意外丢失也有可能发生,如果只是在输出值发生变化时,将该输出值的Emit 值置为True,那么恰巧发生消息丢失时,画面显示内容将与实际状态不符。
对于消息发送管理模型来说,其输入为显示控制模型的一个控件属性值输出,定义为out,其输出为该属性值的Emit 值,定义为out_e,定义上一循环的out 值为out_last,则:
上式中,emit_manual 为主动发送的标志位,其赋值将在下文详述。上式意思为在out 不等于out_last 或者emit_manual 为Ture 时out_e 的值为Ture。设send_cycle 表示UA主程序循环计数,设其循环计数的上限为send_cycle_up。则有下式:
上式在UA 的主循环内调用一次。设send_times 表示一个循环内调用Emit 管理模型的计数,其上限也为send_cycle_up。则有下式:
上式在每次调用Emit 管理模型时均调用一次,其逻辑如图9 所示。
图9 所示,UA 软件一个循环内执行一次公式(2),假设UA软件中有N个Emit需要赋值,则每一循环内将会有(N/send_cycle_up)个Emit 的值被主动置为True,即便它所对应的控制模型输出值没有变化。那么,经过send_cycle_up个循环后,能够保证将所有的Emit 置为True 一次,且每个循环的ARINC661 数据长度大致均匀。
图9:ARINC661 消息发送管理模型逻辑图
通过该机制,我们可以通过控制send_cycle_up 值的大小来控制ARINC661 消息的长度,在初始化时可以将其赋值为较小的值,使画面快速进行初始化,初始化结束后增大其值,减小ARINC661 消息长度。也可以将send_cycle_up,send_cycle,send_times 设置为多维数组,即可根据输出值的关键程度将其Emit 进行不同级别的管理,这里我们不讨论分级别的情况。
本文将send_cycle_up 的初始值设置为10,即10 个循环内完成初始化过程,初始化完成后将send_cycle_up 的值设置为40。运行UA 软件,记录前100 个循环内的ARINC661消息发送长度,如图10 中的红色实线所示。前10 个周期,ARINC661 消息发送长度较长,10 个周期后,画面初始化完毕,之后的ARINC661 消息发送长度较短。
图10:ARINC661 消息发送长度实验结果
如果将Emit 管理模型屏蔽,仅判断输出值是否发生变换,变化时将Emit 置为True,则得到的ARINC661 消息长度为非主动发送的长度,如图10 的蓝色实线所示。总长度减去非主动发送的长度即为在Emit 管理模型的作用下主动发送的消息长度,如图10 中绿色实线所示。假如某个循环内的ARINC661 消息未能成功发送给显示器,漏掉的模型输出值将最迟在40 个循环后重新发送,从而应对消息丢失的风险。
4 结论
ARINC661 标准可以减小显控软件开发、维护成本,实现软件接口标准化。在机载显控软件领域,本文针对多屏显示、周遍键交互等需求,以及通讯带宽有限而造成的画面初始化问题和消息意外丢失问题,提出了一种UA 软件框架,以及模型框架。模型框架中的ARINC661 消息发送管理模型可以有效解决画面初始化问题和消息意外丢失而造成的显示异常问题,为UA 软件开发提供了解决方案。