《电子技术应用》
您所在的位置:首页 > 通信与网络 > 设计应用 > 基于LabVIEW 7.0的某实时监控软件设计与实时性分析
基于LabVIEW 7.0的某实时监控软件设计与实时性分析
Icbuy
Icbuy
摘要:   LabVIEW软件是一种可视化程度较高的图形化编程工具,以其直观清晰、简明易学的优点被作为初级编程者的首选。迄今为止,LabVIEW软件已在石油、煤炭、工业自动测量与控制、航空及医学仪器等领域相继得到了成功应用。飞行试验实时监控软件是针对具体试飞科目而开发的专用型软件,它要求数据传输安全、稳定可靠及实时性好。
Abstract:
Key words :
  0 引言

  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趋势图。

a.JPG

  保持客户端与服务器的网络通信状态不变,将数据源以4倍速率从服务器向客户端发送网络数据,客户端监控画面中两个参数曲线出现台阶式的跳点,对此现象不做任何处理,该现象一直持续。实时监控中两参数的曲线效果如图2所示。产生图2现象后,断开服务器,停止向客户端发送数据,同时将客户端VI重新打包生成.exe可执行文件,然后服务器重新开始以4倍速率向客户端发送网络数据。VI执行时,图2所示现象消失,客户端实时监控画面恢复良好。

b.JPG

  或者利用Chart的属性节点函数编程将Chart历史数据清空,同样地,客户端实时监控Chart图表曲线正常,参数Par1,Par2实时曲线如图3所示。

  对上述现象反复试验多次,结论仍然成立。研究、对比分析后,得出如下结论:

  (1)实时监控软件是网络应用程序,它本身对VI的内存开销较大,影响VI的执行速度。当服务器向客户端发送数据的速率较高时,即单位时间内VI前面板需要更新,显示数据的频率较快。

  (2)Chart图表数据更新的原理是将新的数据添加在旧数据之后,该VI中Chart的y轴使用了自动刻度。当参数Par1,Par2的y值随时间瞬时变化时,Chart绘图的基准点在不断变化,使得绘图曲线呈台阶式的现象。

  (3)Chart图表的数据缓存区能够记忆显示的数据点数。所以,当服务器数据发送中断再重新开始发送时,原VI的Chart数据缓存区累计记忆着历史数据,当历史数据累积到一定程度,数据缓存区又没有完全释放。此时,虽然数据缓存区还在不断更新数据,但新到的数据在Chart图上未及时刷新绘制,同样使得曲线呈台阶式跳点的现象。

  (4)当断开服务器,将VI重新打包时,打包后的VI所有数据缓存区都是置零的原始状态,重新接收数据,Chart图表曲线恢复良好。

  (5)或者利用Chart控件的属性节点,通过编程方法定时将Chart图表的历史数据清空,实际飞行试验实时监控中,Chart图表曲线实时显示正常。

  (6)该实时监控软件,根据其设计要求,VI前面板使用了18个Chart图表和大量字符串显示控件,Chart图表分别对称置于前面板中,9个Chart图表的垂直总高度尺寸大于显示器屏幕的高度,这降低了VI的性能,很大程度上也影响了Chart图表的刷新和实时显示。

  此外,Chart图表的y轴使用了自动刻度(Auto Scale y),图表启用了图例标记(Plot Legend),这些都对Chart图表的刷新速度有一定程度的影响,但不是主要影响因素。

  4 结语

  NI LabVIEW作为一种图形化的编程工具,以虚拟仪器、图形化的编程语言等优点降低了软件的入门门槛。同时作为一种快速的软件开发工具,缩短了软件开发时间,节省了开发成本。本文从影响LabVIEW程序的性能因素出发,结合手动编程巧妙地解决了Chart图表数据实时刷新的问题。此外,在开发大型复杂的基于网络应用的飞行试验实时监控系统方面,应将NI LabVIEW软件平台与Microsoft Visual studio和Borland C++等开发工具有机结合起来,灵活地进行应用程序的开发。



 

此内容为AET网站原创,未经授权禁止转载。