熊梦飞,秦正运,徐继雄,沈轶烨
中国直升机设计研究所,江西景德镇,333001
从20世纪70、80年代开始,计算机技术和数据总线技术开始在飞机上使用,随之出现了多功能显示器。多功能显示器使得飞行员得以更加直观地获取当前飞行状态相关的各项信息,是一种更加便利的人机交互方式。SCADE作为一种嵌入式软件的开发环境,它能够适用于航空系统中座舱显示软件所要求的高安全性。在航空航天、交通等安全关键领域的软件开发中,SCADE通常被用于实现实时嵌入式自动控制系统[1]。其中SCADE Display是SCADE产品系列中的一套灵活的面向高安全性图形显示的设计与开发环境,基于该图形软件开发平台可以完成原型生成、设计仿真、验证和代码生成等工作。本文探讨了一种基于SCADE Display的座舱显示软件的人机交互方式的设计方法,结合座舱显示软件中的一个典型画面模块——燃油画面显示模块,从需求分析、模型建立、仿真验证、代码生成等方面探索了整个基本开发流程和技术要点。
机载座舱显示软件主要实现以下功能:导航、通信、飞行控制、雷达等子系统相关参数信息的显示;与飞行员交互并根据飞行员操作进行画面切换、数据收发、设备控制等行为;与其他航空电子系统进行数据交换等。软件的应用场景一般为多功能显示器,通过周边按键与飞行员进行人机交互,或者通过触摸屏进行交互。
随着机载航空电子技术的不断发展,当前机载系统的功能越来越复杂,同时越来越多的功能需要通过机载软件实现,需要在座舱显示软件中显示的参数信息也更加纷繁复杂,这使得机载座舱显示软件的复杂度和软件规模都急剧增加。而根据不同型号的飞机的需求,座舱显示软件有着相似的功能。使用传统的基于代码的软件开发方法使得工作重复度高、效率低下。因此对于座舱显示软件来说,基于模型的软件开发方法十分适用,相似的功能和结构能够极大地节约成本、缩短开发周期。
本文的座舱显示软件的人机交互方式设计方法用到的是SCADE Display。它是一套灵活的面向高安全性图形显示的设计与开发环境,包含针对多种安全标准的原型构建、显示设计、仿真、确认和验证以及认证代码生成等功能。SCADE为高安全性应用软件和设备提供了从需求管理、模型设计、模拟仿真、认证、有效代码生成到与其他工具、平台协作开发独一无二的集成设计环境[2]。
本文将座舱显示系统中的燃油画面显示功能模块作为实践,使用SCADE Display进行基于模型的软件开发工作,探索基于SCADE Display的座舱显示软件的人机交互方式设计方法。
对于座舱显示软件的燃油画面显示部分,经过需求分析主要有以下功能需求。
(1)数据采集功能:接收各个子系统数据,根据各子系统相应需求将相关参数显示在多功能显示器上。
(2)数据处理和数据监控功能:处理接收的各子系统的数据,将不同子系统来源的数据区分开,并监控收到的数据,记录数据异常情况并显示相关故障。本文所使用的燃油画面数据异常显示方法为:当未收到相关数据时,原先显示数据位置显示为“--”;当子系统不在线时,画面上对应子系统显示位置绘制红色交叉线。
(3)数据发送功能:发送数据给各个子系统,对收到的数据包进行回复,并根据飞行员的操作发送相关按键事件信息和控制信息给各子系统,使各子系统能够得知数据发送成功以及根据飞行员交互对子系统相关设备进行操作。
SCADE Display是一种基于模型的图形界面设计工具,可自动适配对应版本的OpenGL标准,能够将工程师从烦琐易错的手写编码方式中解脱出来,将软件开发过程的工作重点从程序源码提高到了模型[3]。使用SCADE Display建立模型能够以“所见即所得”的方式精准地设计人机交互界面,便于工程师之间的交流和改进。本文以座舱显示软件的燃油画面中某图符为例,探讨模型建立的图符绘制、图符逻辑设计、数据传递等具体过程和细节。
2.2.1 图符绘制
以图1中的油量图符为例,该图形对象与同一画面其他图符位于同一个图形设计文件的同一层上。使用环形图元和线段图元并填充颜色来绘制刻度带和刻度线;使用扇形图元绘制图符背景;使用文本图元显示油量的文字标识和实时数值;使用自定义多边形图元来控制指针的旋转角度和位置。此外,可以通过修改或导入资源表来管理工程中可用的颜色、线宽、线型、字体和纹理。
图1 油量图符
2.2.2 图符逻辑
图形对象在每个画面描画周期都会被擦除和重新绘制。在每个周期中,图形对象中需要被移动或变化的部分与变量相关联,在SCADE Display里这些变量被称作plugs。这些变量被关联到一个或多个属性参数上,当变量的值发生变化,属性参数也会相应更新。用plugs给图符的控制参数赋值时,可使用四则运算、逻辑运算、类型转换等简单的表达式。复杂的逻辑运算可以在与SCADE Display对接的外部工程代码中实现。可以将plugs作为外部工程的变量接口,传输经过运算的值到plugs中来实现对图符逻辑的控制。如图2,在油量图符中,使用变量Fuel经过一定的逻辑运算得出的终点角度End Angle,能够控制刻度带的边界角度;使用变量Filled Color来控制填充颜色的变化。
图2 油量图符plugs 窗口
2.2.3 数据传递
如图3,在数据字典的Scope一列中可设置变量的作用范围:Input、Output、Local、Constant、Local Constant。通过设置变量的作用域来确定常量、局部变量、局部常量等。Representations表示变量关联的图形属性,Memory属性为true时表示记住上一次的值,当前周期未收到数值时则使用上一个周期收到的数据值。
图3 油量图符数据字典
图符绘制完成并设计逻辑后,可进行动画仿真来模拟plugs变量。动画模拟中共有两种场景:连续场景和离散场景。如int、float、double等类型的变量的值可在一定区间内连续变化,即连续场景;例如char、line width、color等类型的变量就是离散场景。连续场景中可通过设置仿真步长、最小值、最大值和输入值变化规则来直观地观察因变量变化而产生的图符变化。离散场景中可设置不同的离散值、持续步长以及增加模式来进行动画模拟。两种场景都能进行动画的激活和暂停操作来获取当前值和当前图符状态。以油量图符为例,动画模拟时油量数值设置为63.1时,图符状态和当前动画仿真的Animation窗口如图4、图5所示。
图4 动画仿真中的油量图符
图5 油量图符Animation 窗口
生成代码之前,可用SCADE Display设计检查器检查模型设计错误,检查模型无误后生成C代码。SCADE Display仿真器和检查器提供交互式仿真和自动设计检查功能,可以对建立的模型进行仿真和检查,规避一些语法和语义错误。使用SCADE Display能够对设计完毕的模型进行简单的验证工作,包括定制规则的模型检查、模拟仿真和桥接其他工具的联合仿真。之后使用SCADE的代码生成工具KCG,从工具级别保证自动生成的工程代码与模型设计的一致性要求,可以满足系统设计与代码实现的高度同步要求,能够省略代码的单元测试工作[4]。并且用KCG生成的代码具有良好的可读性和外部接口,在后期开发时能够与其他工程代码更好地适配,例如使用VS2013开发工具与SCADE联合开发。
部分图符之间有着相似的功能和显示,使用SCADE Display能够开发可复用的控件。在绘制图符时引用这些控件可减少软件开发重复性工作量,提升开发效率。并且可视化的模型相比于传统的代码开发,对于人机交互界面的控件有着更好的可复用性。
图6中的燃油压力图符与图1的油量图符显示和功能相似:两个图符都有刻度带和刻度线,需要显示符号的英文标识和实时数值,并且都需要在某个特定区间内指针所指示范围变色。此时可开发一个指针仪表控件,此控件可在数据字典留出变量接口用于引用控件的图符,控制符号文字、刻度带颜色区域、指针指示范围、数值显示逻辑等,如图7所示。引用控件时,将控制变量赋值后传递给控件即可实现不同的图符显示功能。
图6 燃油压力图符
图7 复用控件的数据字典
本文在座舱显示软件的燃油画面显示模块中使用SCADE Display探索了人机交互方式的设计和软件开发流程。对燃油画面显示功能模块进行需求分析,使用SCADE Display建立模型、动画仿真、代码生成。其中模型建立包括绘制图符、设计逻辑、传递数据。通过以上工作实现了对燃油画面显示功能模块的模型化设计,完成了该模块的人机交互界面开发。并且开发了可复用的控件,通过复用控件来快速开发具有相似结构和功能的图符和实现显示控制逻辑,增强了模型的可复用性。相比于传统的基于代码的开发方式,本文所探讨的基于SCADE Display的座舱显示软件的人机交互方式设计方法开发效率更高,时间和人力成本更低,并且模型可复用性强。使用该图形化模型开发方法能够更直观地设计人机交互界面,便于界面的简化和维护。在未来的座舱显示软件的人机交互界面开发中有广阔的应用前景。