图形是虚拟仪器的重要组成部分,Labview为用户提供了丰富的图形显示功能,在图形子模版中提供了许多可供使用的显示控件,如图:
我们将在下面的章节通过一些例子向大家介绍前三种图形显示控件的使用。
波形图及波形图表
首先放置一个波形图表到前面板上,然后在上面单击右键,如图:
或者右击后选择属性,便可以看到所有能对该控件操作的选项,如图:
例一:用波形图表显示两组随机数。
- 新建一个VI,在前面板上放置一个波形图表,取消X轴和Y轴的刻度标签,如图:
- 定位工具上下拖动边框,让它显示两条曲线图注,如图:
- 然后把他们拖动到合适的位置。如图:
- 切换到程序框图,放置一个For循环,计数端子取值为100,这样每次运行产生100个数据。在循环体内放置两个随机数产生函数,分别乘上一个因子5和-5。如图:
运行结果如图:
例二:温度临界预警器
- 新建一个VI,在前面板上放置一个波形图表,将Y轴的刻度标签改为“温度”,然后选择隐藏图例,然后将Y轴坐标的自动调整取消,如图:
- 添加一个布尔圆形指示灯,并调整为合适大小,把标签内容改为“报警”当温度超出临界值时点亮报警灯,同时在前面板放置一个停止开关。
- 在程序框图上放置如图所示的程序,其中添加一个定时工具,把时间间隔设为200ms。如图:
运行结果如图:
波形图
波形图和波形图表得大部分组建及其功能都是类似的,特别的是波形图具有光标指示器,利用它可以准确地读出波形曲线上的任何一点数据,便于分析某一时刻的特性值。如图:
波形图举例:
例一:该例的目的是用随机数函数产生100个随机数据,分别用波形图和波形图表来显示,并比较他们的区别。
- 新建一个VI,在前面板上分别放置一个波形图和一个波形图表,调整为合适大小,取消显示图例,取消Y标尺自动调整,最大值设为1,最小值设为0。
- 切换到程序框图,放置一个For循环结构,内部添加一个随机数产生函数,For循环结构计数端口设为100,同时添加定时工具,每次循环间隔时间为100ms.
- 连线,如图所示:
运行,程序结果如图:
我们可以清楚地看到这两种显示工具的区别,它们地实现方法和过程不同,在程序框图也可以看出,波形图表产生在循环体内,这样每得到一个数据点,就立刻显示一个;而波形图产生在循环体外,100个数据都产生之后,跳出循环,然后一次显示出整个数据曲线。程序运行第二次时,波形图表的X轴刻度就会随之增加,由0~99变为100~199,表示数据点的增加;而波形图的X轴刻度并没有发生变化,还是0~99,表示只显示当前的数据。
例二:该例的目的是学习使用“捆绑”打包函数来设置波形图的X轴刻度起始点和间隔。
- 新建一个VI,在前面板上放置一个波形图,取消X轴的自动调整,使产生的波形可以充满整个X轴刻度。同时放置两个数值输入控件,Xo控制X轴刻度的起始点,数据类型为I32,Delta X控制X轴刻度的水平间隔,数据类型为DBL。
- 切换到程序框图,放置一个高斯白噪声函数,它位于函数→信号处理→信号生成→高斯白噪声。如图:
- 添加“捆绑”函数,用定位工具拖动它的边框为3个输入端口,然后如图所示联系。
运行,结果如图:
例三:该例的目的是学习使用簇数组来显示不同长度的数据,并比较它与直接用二维数组显示的区别。
- 新建一个VI,在前面板上放置两个波形图,将它们标签内容分别改为“二维数组显示”和“簇数组显示”,标签字体大小设为18号。
- 打开程序框图,添加正弦波函数和方波函数,它们位于函数→信号处理→信号生成→正弦波,方波。分别给它们的采样端口赋值为150和200。
- 在数组函数中,选择创建数组函数,将正弦波和方波的输出合并为一个二维数组。在介绍数组时,已经得知当将两个不同长度的一维数组组成二维数组时,会自动在长度较短的一维数组后面添加0,使得它们的长度相同。所以在图形显示时会在正弦波形后面添加一些没有意义的0。
- 为了解决显示不同长度的一维数组,需要建立一个簇数组。方法是用“捆绑”函数将一维数组打包为一个簇,然后用创建数组函数建立一个簇数组,由于每组数据是一个簇,这样就可以解决显示不同长度的一维数组。
程序框图如图所示:
运行结果如图:
XY图
以上介绍的两种波形显示器:波形图表和波形图只能描绘样点均匀分布的单值函数变化曲线,因为它们的X轴只是表示时间先后,而且是单调均匀的。要想描绘Y与X的函数关系,就需要用XY图。XY图形就是通常意义上的笛卡尔图形,描绘XY图首先需要两个数组X和Y,分别对应于图形的X轴和Y轴,并且需要两个数组打包构成一个簇,X轴在上,Y轴在下。下面通过两个例子来说明XY图的一般用法。
XY图位于控件→新式→图形→XY图,如图:
例一:应用XY图显示里萨如图形。
首先简单介绍一下构成里萨如图形的原理,如果知道X和Y方向的两个数组分别按正弦规律变化(假设其数据点数,幅值和频率都相同),如果它们的相位相同,则应用XY图描绘出的里萨如图形是一条45°的斜线;当它们之间的相位差等于90°时为圆;大部分情况都是椭圆。
- 新建一个VI,在前面板上放置一个XY图,调整它的边框为合适大小,同时放置一个数值输入控件“相位差”。
- 切换到程序框图,添加两个正弦波函数放置到程序框图上。将“相位差”输入控件与第二个正弦波函数的“相位输入”端口相连,默认的相位是0。
- 在簇函数子模板上选择“捆绑”函数,将两个正弦信号打包为一个簇,第一个数组作为X轴的数据,第二个数组作为Y轴的数据,簇的输出与XY图相连。如图:
例二:用XY图描绘同心圆
- 新建一个VI,在前面板上放置一个XY图,使曲线图例显示两条曲线标识。
- 在程序框图上放置一个For循环,给计数端子赋值为360,添加正弦函数和余弦函数,它们位于函数→数学→基本与特殊函数→三角函数→正弦,余弦。
- 选择“捆绑”打包函数,将每次循环产生的一对正弦值和余弦值攒成一个簇,循环结束后将这360个簇组成一个簇函数。
- 因为XY图的显示机制决定了它的输入必须是簇,所以要再用一次“捆绑”打包函数将两个簇数组转换为簇,最后再用“创建数组”函数组成一个簇数组。程序框图如图:
运行结果如图:
Labview同时还为我们提供了另外一种XY图,就是Express XY图切换到程序框图时,我们会看到在程序框图上,它的使用比单纯的XY图简便,从图中我们也可以看到,它的输入端口是两个,输入既可以是单个的数值,也可以是数组,这里我们不再作详细的介绍。