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