- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
LABVIEW中如何正确理解EXPRESS XY GRAPH
XY图 可以说 Labview 数据图形显示控件最为灵活的控件,可以替代波形图和波形图表的绝大部分功能,其输入参数形式有许多变化,在下面的两篇文章中,具体讨论了XYGRAPH的多种用法。
快速VI(EXPRESSVI)是 LABVIEW 提供的一套可以采用对话框快速配置的VI,非常有利于初学者使用。在快速VI中,提供了快速XYGRAPH,该VI可以实现连续的数据显示,但是与我提及的数据缓冲区有很大区别。
上面所提及的数据缓冲区连续显示数据类似于 LABVIEW 的波形图表,本身保持一个设置为固定长度的数据缓冲区,当超过所设长度时,新的数据进入缓冲区时,原有的数据被丢弃。这样 XY图 始终显示的最新数据,而且长度不变,控件显示的是示波器的效果。
快速 XY图 则不同,它有两种不同的运行方式。
每次调用时是否清除数据决定了EXPRESSXYGRAPH的工作方式。
1、每次调用时清除数据,则EXPRESSXYGRAPH与一般的XYGRAPH没有明显的区别,输入参数采用了两个一维数组,这是XYGRAPH常见的工作方式。
2、每次调用不清除数据,则EXPRESSGRAPH内部记录不断累积的数据,也就是说它内部保持两个不固定长度的一维数组,用来保存X数据和Y数据。
在每次调用不清除数据时要特别注意,与数据缓冲方式不同,EXPRESSXYGRAPH不是以移动的方式显示数据,而是不断增加数据,所用内存是不断增加的。
为了正确理解快速XYGRAPH,我们分析一下,首先把快速XYVI转换成一般的VI,分析一下它的工作原理,通过快捷菜单,选择打开前面板。
下面跟踪它的程序框图。
从程序框图可以看到,在连续显示增加数据的情况下,它利用了 XY图 的局部变量,取出原来的数据,利用BUILDARRAY函数不断增加 XY图 中的数据,这样在长时间运行后,很容易导致内存滥用,而不释放的情况,同时由于使用了局部变量,内存的使用是加倍的。这与我们所说的数据缓冲区是完全不同的。
另外,由于快速VI采用了动态数据,因此不断地在进行数据类型转换,这也是快速VI效率不高的原因之一。
从程序框图上也可以看出,如果使用连续显示的方式,我们必须监测累积数据的大小,在达到一定程度时,通过RESET,清除数据,释放所用内存。
需要强调的是快速VI是在 LABVIEW 7.0后推出的,主要是简化编程难度,但是运行效率显然是不高的,同时也牺牲了灵活性,这也是熟悉LV的编程者一般不愿意使用快速VI的重要原因。