APP下载

航电显示控制软件测试信号激励系统研究

2022-06-18李曦付强谌钺汪嗣尧

新型工业化 2022年3期
关键词:服务端控系统进程

李曦,付强,谌钺,汪嗣尧

(中国航空工业集团公司西安飞机设计研究所,陕西 西安 710089)

0 引言

航电显示控制系统是飞行员获取飞机状态、控制飞行的核心系统,显控系统显示是否正确会直接影响飞行安全[1],所以需要对航电显控系统进行全面测试。但是受飞行安全与测试成本的限制,显控软件的测试验证基本都通过仿真模拟技术进行[2]。模拟仿真过程中,控制显控软件画面显示的传感器参数无法直接通过传感器获取,要利用信号仿真系统进行信号模拟。

目前航电显控系统的测试验证主要有模型测试、软硬件结合仿真等方式[3-4]。其中模型测试一般依赖模型设计工具[5],工具不同模型测试方法差异较大,会导致实验人员调试测试工作量成倍增加。

而软硬件仿真需要利用物理设备模拟信号,通过总线传输[6],设备复杂、数量少、成本高。且软硬件仿真测试平台往往不同于软件开发平台,需要在开发基本完成后才能在测试平台上进行完整测试,开发测试效率不够高。

1 信号激励系统技术分析

航电显控软件调用底层OpenGL SC/ES命令的高层级图形库完成显控界面的绘制。因为OpenGL支持跨平台使用,开发的航电显示控制系统可运行在Windows系统下,实现显控界面跨平台显示,但是无法实现信号激励。

本文介绍的信号激励系统可在Windows系统开发和运行,实现显控系统的开发和验证同平台。仿真系统显示画面通过建模生成,调用OGLX库绘制画面,可以对各种传感器信号值进行模拟修改。此外,仿真系统通过管道传输,将激励数据发送给显控系统,显控系统刷新信号值,根据最新数据更新画面。利用信号激励系统即可对显控系统界面进行快速验证,如图1。

2 信号激励系统实现

2.1 显示与控制

信号激励系统中不同控件均通过SCADE Display进行建模,包含开关控制、旋钮控制、拖动条控制、加减控制等多种控件。根据不同的需求给控件添加控制变量,即通过点击、拖动等操作实现对控制变量数值的修改。软件可根据建模生成代码调用OGLX库函数,实现图形的渲染绘制。

信号激励系统拥有一个信号控制面板,通过鼠标、键盘控制修改控件数值,涉及大量的鼠标、键盘事件处理。本系统使用freeglut(OpenGL跨平台使用工具库)对鼠标、键盘事件进行处理[7]。

利用鼠标移动回调和鼠标点击回调函数可以获取到鼠标位置和鼠标长按状态。识别到鼠标位置在旋钮内部且长按时,会触发鼠标位置在旋钮中角度计算,更新旋钮对应控制变量数值。

2.2 与显控软件交互

2.2.1 windows进程间通信

信号激励系统与显控系统为两个进程,涉及到进程间通信。Microsoft Win32 API提供多种进程间通信的方法,如文件映射、匿名管道、命名管道等[8]。文件映射可以实现多个进程间共享数据,但需要控制进程间同步。匿名管道可以实现父进程与子进程之间的数据传输,但不能让两个不相关的进程进行通信。

而命名管道可以实现服务器进程和多个客户进程之间通信,服务器进程创建命名通道后,其他客户进程可以通过管道名称打开管道进行通信。仿真系统为了将信号激励发送给显控系统,涉及到两个不相关进程,因此选择使用命名管道[9]进行数据传输。

2.2.2 连接与数据传输

(1)服务端创建命名管道

显示控制软件是管道服务端,图2为显示控制界面初始化流程。在初始化过程中除了要初始化显示控制所需的资源,还需要创建命名管道。服务端通过CreateNamedPipe()创建一个命名管道的实例并返回管道的句柄。调用ConnectNamedPipe()函数,服务端会一直等待,侦听来自客户端的连接请求。当有客户端进程连接到命名管道,显示控制系统开始从命名管道中接收激励信号。

(2)客户端连接命名管道

信号激励系统式管道客户端,图3为仿真系统初始化流程。客户端调用WaitNamedPipe()函数,服务端等待来自客户端的实例连接,如果有可用管道则进行连接。调用CreateFile()实现客户端与服务端的连接,如果此时服务端接受与客户端的连接,客户端会获得指向命名管道实例的句柄。客户端获得句柄后可以通过句柄向命名管道中发送数据。

(3)仿真系统与显控界面间数据传输

仿真系统与显控界面建立连接后,服务端与客户端利用管道文件句柄读写文件,进行信息交互。具体传输缓存内的信号包含哪些,根据信号激励需求来定义,缓存中是一个结构体变量。

该管道传输消息结构体中定义了信号激励所涉及的所有信号,显控系统涉及飞行指示、导航、水平状态、飞控等大量显示画面,管道传输消息结构体可根据需求定义不同的信号。在显示控制系统模型不变的前提下,根据测试需要更新结构体成员变量。仿真系统将用于激励的缓存数据发送给显控系统,更新显控画面。

信号激励系统作为客户端,通过界面上各种旋钮操作修改显控信号数值,将修改数据赋值给消息传输结构体变量,以字符流形式将大量数据送入管道。显控界面作为服务端,从管道中接收数据,在每次绘制显控界面前,更新显控信号数值,再进行画面渲染绘制。从而实现了仿真系统对显控界面的信号激励,实现显控系统快速验证,控制流程如图4。

3 信号激励系统应用

显控软件与信号激励系统连接顺序为启动显示控制软件,服务端创建命名管道等待连接;客户端(信号激励系统)向服务端请求连接;服务端收到客户端连接请求,客户端获取管道实例句柄,连接成功。两个进程完成初始化,开始绘制渲染图像。

在信号激励系统与显控软件连接成功后,信号激励系统开始向显控发送激励数据。根据验证画面的不同,需要激励的信号不同。如在显控飞行指示画面验证中,需要气压高度、预置气压高度、速度、预置速度、俯仰、横滚、告警等信号变量,管道传输所用的缓存结构体如图5。

通过仿真系统的控制面板可对图5中定义的结构体变量就行修改,这些信号会实时发送给显控系统,显控界面画面会马上更新数据进行显示。数据传递过程如图6。

图7中为飞行指示画面信号激励过程演示。图中左侧为飞行指示画面,画面从左到右依次为速度带、姿态区、高度带、垂直速度带。右侧为信号激励控制面板,面板上可以控制空速、垂直速度、侧滑角、气压高度、横滚角、俯仰角、自动飞行指引的横滚与俯仰、告警等信号,这些信号会驱动画面每帧绘制前更新飞行参数。从图中可以看到,右侧激励信号值与左侧飞行参数画面显示一致。比如,为验证飞行指示画面中左侧速度带空速值显示正确,调整右侧控制面板中空速旋钮,将空速值调整到355.5,此时控制面板画面绘制完成后会将最新的激励信号值通过命名管道发送给显控系统。显控系统更新画面参数进行绘制,从速度窗口中可见速度值为355.5,且速度窗口箭头指向的刻度值也为355.5,验证得到飞行指示画面中显示的空速与要求 一致。

该信号激励系统保证了信号传输的正确性与画面更新的实时性,实现对显控软件的快速验证。且该信号激励系统可以通过控制面板修改信号,实现对激励信号修改的可视化,支持模拟飞行过程中参数各种变化情况,操作简单直观。

4 结语

本文中介绍的信号激励系统可以完成显控系统软件验证工作,开发与测试环境统一,不需要庞大的硬件设备与复杂的总线传输,从开发源头进行显控软件测试。并且该系统有独立的控制面板,信号数据激励直观且操作简单。仿真系统与显控界面通过命名管道进行数据流传输,数据流可根据验证画面信号的不同灵活修改,使得仿真系统不会限制于某一模型设计工具或某一种型号飞机,仿真系统可移植性好、复用性强。

但是,当前为实现仿真系统与显控系统的连接,需要修改显控软件代码,后续可以将通信部分改为动态链接库,避免测试验证对显控软件的直接影响。并且该仿真系统受操作界面操作限制,多个信号数据不能同时修改,后续为更充分测试,计划增加多场景测试,模拟真实飞行环境多信号变化,进一步提高显控系统模型验证准确性。

猜你喜欢

服务端控系统进程
关于DALI灯控系统的问答精选
多型号车控系统统型设计实践
基于单片机的智能门控系统
数字电视播控系统关键技术探究
债券市场对外开放的进程与展望
快速杀掉顽固进程
多人联机对战游戏的设计与实现
基于三层结构下机房管理系统的实现分析
基于三层结构下机房管理系统的实现分析
中外民主法制进程专题复习