通用试飞参数显示仪的设计与实现
2014-03-16穆永河
房 瑾,覃 燕 ,穆永河
(中国飞行试验研究院 陕西 西安 710089)
在飞行试验中,试飞员通过观察飞机仪表提供的测试参数操纵飞机,从而完成试验任务要求的飞行动作达到试验的目的。随着新型号的不断出现,试验内容也更加复杂,经常有一些特殊的测试参数飞行员需要随时观察,而飞机仪表又不提供或不能按要求提供的情况。另外有一些测试参数飞机仪表提供显示但却分散在不同的表盘中,而某个试验课题往往要求将几个不同的参数集中显示在一个表盘上,以便飞行员能在短时间内及时观察到课题所关心的参数。还有一些风险课题的测试参数需要提供超限报警或状态报警功能,而这些功能飞机仪表是不提供的。
针对以上问题,本文提出了通用试飞参数显示仪的设计和实现方法。该设备能对飞机上的测试参数按照试验要求进行实时处理并实时显示。满足各类试飞课题的特殊需要,为试飞员提供需要的测试参数。
1 通用试飞参数显示仪的硬件选型及设计
通用试飞参数显示仪的硬件主要由显示屏,信号转接板,CPU板,电源板4部分组成。
在硬件选型及设计上严格按照机载产品的要求指标,显示屏选用军用宽温、加固型彩色液晶显示屏,亮度800 cd/m[2],在强烈阳光下可读。该显示屏水平视角55°/55°,上下视角35°/40°,保证了试飞员在空中强光线及大角度下都可以清晰的观察到显示屏上的参数值。为满足电磁兼容性要求,定制一款对频率为1 GHz以内的电磁辐射屏蔽效能达50 dB的2 mm防暴强化屏蔽玻璃,经过电磁兼容性的试验,试验数据显示该设备达到了国军标中关于电磁兼容性相关项的要求。
该显示仪主板为一块PC-104主板,选用一款高性能CPU模块,在主板上集成了10/100Base-T以太网接口及高性能图形处理器,最高运行速度可达500 MHz,图形处理器可支持各种LCD及TFT显示屏,1M显存。满足该显示仪实时性要求。
信号转接板的功能是将CPU板上的网口、串口信号引出,转接到机箱插头上。使用该板的好处是可以不用在CPU板上直接焊接信号线,避免焊接时发生烧坏CPU板的危险,并且可使CPU板拆卸容易,维护方便。
电源板直接给PC/104总线供电,也可通过板卡上的电源接口供电,输出具有连续短路保护功能。为了保证电源电路能在特殊情况下不受损坏,以及考虑电磁兼容性,外部28 V在进入该电源板前,加装保险、反向保护、EMI滤波等电路,其电路图如图1所示。
2 软件设计
图1 28V电源保护及滤波电路图Fig.1 power protection and filtration circuit
基于模块化设计的标准,按照系统功能,本软件主要由网络通讯、参数处理、仪表显示3个功能模块组成。该显示仪的软件的开发采用VC++与GL Studio相结合的方式,流程图如2所示。
图2 软件总体流程Fig.2 Flow chart the software design
2.1 网络通讯模块设计与实现
网络通讯模块主要完成网络端口检测,根据配置文件进行数据包的接收。
机载测试网络中,负责采集数据的是数台机载采集器,采集的数据经打包通过不同的网络端口以UDP广播形式发送到机载测试网络上,测试网络中的各测试设备根据自己的需要取得自己的测试参数,因此测试网络上有各种各样的数据包,数据包中包含很多的测试参数。我们就要根据配置文件去接收所要的数据包以及该数据包中所需要的参数。
通用参数显示仪作为机载测试网络上的一部分,需要与该网络建立连接,实现测试数据的接收,并保正数据的实时性和稳定性。该模块基于Windows Socket开发了面向无连接的数据包通讯程序,为了提高程序的效率,采用了windows底层的API函数进行开发,将API函数进行封装[1-2],方便程序的调用。
由于采集器是采用UDP广播方式发送数据,因此如读取网络数据的设备在读数据包时读取操作不连续,就有可能造成丢包现象。为了保证数据的实时性,我们采用多线程技术。
以下是多线程设置代码:
extern DWORDWINAPI readnet(LPVOID lpParameter);
void Maininit()
{/*初始化代码*/
HANDLE hThreadRec;
hThreadRec=CreateThread(NULL,0,readnet,NULL,0,NULL);
CloseHandle(hThreadRec);}
2.2 参数处理模块
参数处理模块主要进行参数工程量的转化。按照配置文件,根据各个参数不同的校准类型进行数据转化,将得到的工程量直接显示或者进行二次处理再显示。
机载测试网路上的数据是由一个个IENA网络数据包组成,网络上的设备可通过事先约定好的配置文件,读取并解算出需要的测试参数。每个网络数据包的格式根据采集器的不同可以是不同的,但是必须遵循如表1所示的IENA数据定义。
KEY:每种类型数据包的识别字;SIZE:数据包的字数,从”KEY”到最后一个传输字;TIME:本年度 1月 1日 0时 0分开始计算的微秒时间;STATUS:状态字 (同步/异步);SEQ_NUM:数据包计数器 (记录每种KEY值的数据包的次数);DATA:最多65527个数据字(每种 KEY值的数据包所含数据字的数目固定);END:数据包结束特征字(典型值为0xDEAD)[3]。
表1 IENA数据包定义Tab.1 definition of IENA packet
根据数据包的结构以及配置文件中参数的位置定义,解算出测试参数的码值,再根据配置文件中测试参数的校准类型进行码值到工程量的转化。目前在飞行试验的测试参数中,主要采用的校准类型有直线校准,双曲线,分段,多项式等校准类型,针对每一种校准类型设计相应的转化算法。下面以比较常见的分段校准为例介绍一下参数工程量转化的实现。首先将所有的点进行按照冒泡法进行排序[4],然后计算每个分段的斜率及y轴的截距,主要代码如下:
Initline(const double*p_add,shortnum)
{ /*根据点对数得出斜率m_aa。y轴的截距m_bb*/
for(i=1,j=0;i<num;i++,j++)
{
kk=i*2;
m_aa[j]=(p_a[kk+1]-(p_a[kk-1]))/(p_a[kk]-(p_a[kk-2]));
m_bb[j]=(p_a[kk-1])-(m_aa[j]*p_a[kk-2]);
}
}
根据码值所在的分段,以及已经计算的所有分段的斜率和截距,计算码值对应的工程量。
2.3 仪表显示模块
通用试飞参数显示仪显示的信息量大,并且纹理要求比较高,因此使用了GL Studio仿真软件,画面开发工具选用GL Studio 3.2。该软件提供一个可视化的环境用于开发仪表画面,并且开发出的画面可添加纹理,增强了真实感。画面中每个图像单元都是一个对象,对对象进行操作就可实现对画面的操作,开发完成后可生成C++语言代码。该软件工具使用方便、开发效率高,仪表画面显示效果好。该软件也是基于OpenGL类库的二次开发,其优点是该语言为基于“照片级”的仿真语言,通过将仪表或字符图片调入程序,然后对纹理编程控制,使得基于纹理的开发变的简单,并且图片拖放容易、易于修改[5-6]。因此选用该语言开发通用参数显示仪的显示界面,具有开发周期短、纹理精美、显示效果良好等优点,能够满足试飞参数的显示要求。
在GL Studio中设计图形界面,使用GL Studio代码生成器把之前设计好的图形界面生成C++源代码,再将生成的源代码添加到自己的应用程序中,并在Methed里面添加函数代码进行驱动,例如飞机法向过载的驱动代码如下:
void InstrumentClass::NzMethod(floatalpha)
{
NzIndicator->DynamicRotate (nz * NzIndicatorRatio,
Z_AXIS);
}
某警示类的显示如下:
void InstrumentClass::WarnMethod(float fsecu)
{
nzzcWarnDynamic_1->Visibility(true);
nzzcWarnDynamic_2->Visibility(false);
}
按照某试飞课题要求开发完成的画面如图3所示。
3 结束语
本软件采用了技术成熟的嵌入式操作系统和先进的开发工具,以较高的效率完成了试飞科目对飞行参数的显示要求,编写完成的显示仪软件画面美观、数据可靠、修改方便。根据特定的试飞课题,通过修改配置文件等简单设置,就可以显示本课题关心的测试参数。目前,本显示仪已在多架军机、民机上安装使用,为大迎角、失速、发动机等风险试飞科目的完成起到了重要作用。
[1]郝蕴.Visual C++6.0开发与实例[M].北京:电子工业出版社,2011.
[2]Kate Gregory.Visual C++5开发使用手册[M].北京:机械工业出版社,1999.
[3]霍朝晖.飞行试验振动参数遥测实时处理系统设计与实现[D].西安:西安电子科技大学,2012.
[4]严蔚敏,吴伟民.数据结构[M].北京:清华大学出版社,1997.
[5]于辉,赵经成,付战平,等.GL Studio虚拟仪表技术应用与系统开发[M].北京:国防工业出版社出版,2009.
[6]杨志菊,李洋.GLStudio在武器系统仿真模拟中的应用[J].电子测试,2010,8(12):80-86.YANG Zhi-ju,LIYang.GL Studio’s used in weapon system simulation[J].Electronic Test,2010,8(12):80-86.