摘要:针对某试飞课题,在NI LabVIEW 7.0平台下进行了某试飞科目实时监控软件系统开发。飞行试验中,实验分析了影响该系统试飞参数时间历程图实时刷新的原因,提出了在飞行试验实时监控中,采用优化VI及对Chart控件二次编程的方法解决Chart曲线图实时刷新的问题。在此充分挖掘LabVIEW中Chart控件的属性进行二次编程,解决试飞参数时间历程图实时刷新、显示问题,具有很高的实用价值。
关键词:VI的性能;VI执行速度;数据更新;实时显示
引言
LabVIEW软件是一种可视化程度较高的图形化编程工具,以其直观清晰、简明易学的优点被作为初级编程者的首选。迄今为止,LabVIEW软件已在石油、煤炭、工业自动测量与控制、航空及医学仪器等领域相继得到了成功应用。飞行试验实时监控软件是针对具体试飞科目而开发的专用型软件,它要求数据传输安全、稳定可靠及实时性好。目前,我院飞行试验遥测实时监控数据处理系统的客户端实时监控软件,绝大多数情况下是采用NI LabVIEW的软件开发平台进行开发。该类型客户端软件,一般满足了试飞课题的需求,保障了科研试飞。但是,针对一些实时性要求较高,试飞风险较大的特定试飞科目,如何开发高性能的试飞科目时间历程实时监控软件是本文研究的重点。
1 影响VI性能的因素
VI性能的好坏主要由VI的执行时间、数据的刷新速度和VI内存的使用三方面决定。
文件读和写、使用GPIB、数据采集及网络应用都影响VI的执行时间。数据在屏幕上的刷新速度与程序中控制控件、显示控件及与控制控件相关联的控件数目有关。此外,合理使用和高效管理VI的内存可以提高VI的性能。
2 提高VI执行效率的方法
针对以上影响VI性能的因素,为提高VI的执行效率,在进行某客户端实时监控软件系统设计时,采用了以下编程技术来增强程序的可读性。
(1)程序避免在循环体里计算。能在循环体外计算时,尽量将公式计算安排在循环体外。
(2)在满足软件设计要求的前提下,将前面板显示控件较多,画面布局大于屏幕尺寸的VI分割成几个VI进行设计;或者将大的VI分割成子VI。
(3)当VI程序框图中使用较多矩阵(Array)或字符串(string)函数时,程序框图中尽量少用全局变量或局部变量;且输入矩阵和输出矩阵尽量使用相同的数据类型。
(4)设计程序框图时,尽量使输出函数能复用输入函数的内存空间,尤其是使用矩阵、矩阵子集或字符串函数时。
(5)如果子VI的前面板不需要显示,去掉子VI中不用的属性节点。
(6)设计VI时,避免使用复杂的数据类型,开发高效的程序结构。
(7)在VI属性的“执行”选项里面,将子VI的优先级设置成“子程序”(subroutine),将主VI的优先级设置为“优先执行”(time criti-cal Priority)的最高优先级。
3 实时监控中的应用
在NI LabVIEW 7.0平台下基于以上编程思想,进行了某课题实时监控软件的系统开发。以下是其中的部分监控画面。监控画面中用Waveform Chart控件来实时显示参数的时间历程曲线。根据软件的设计要求,将Chart图表的y轴设置成自动,x轴利用控件本身的可见属性x Scrollbar来及时刷新图表显示。
图1描述了数据源以1倍速率从服务器向客户端VI发送网络数据,正常条件下,两参数Par1和Par2的典型Chart趋势图。
保持客户端与服务器的网络通信状态不变,将数据源以4倍速率从服务器向客户端发送网络数据,客户端监控画面中两个参数曲线出现台阶式的跳点,对此现象不做任何处理,该现象一直持续。实时监控中两参数的曲线效果如图2所示。产生图2现象后,断开服务器,停止向客户端发送数据,同时将客户端VI重新打包生成.exe可执行文件,然后服务器重新开始以4倍速率向客户端发送网络数据。VI执行时,图2所示现象消失,客户端实时监控画面恢复良好。