虚拟仪器课程实验指导书

更新时间:2023-12-27 07:41:02 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

实验一 LabVIEW入门

一、实验目的

(1)初步学会使用LabVIEW;

(2)掌握创建自己的VI。

二、实验任务

使用LabvIEW图表模式。

三、实验步骤

练习 1-1 使用三种图表模式

目的:查看 VI 分别在三种模式下执行时图表的显示。

1.建立前面板及流程图如下

该程序中利用一个循环产生连续的sin(i)函数值,并及时地在chart图表上显示出来,现在前面板上的chart是一个strip,这是一个坐标式显示器,与纸带式图表记录器相似。每接受一个新数据,新数据就将显示在右侧,而原有数据移动到左侧

图1-4 图表的例子

2.用鼠标选中chart,点击右键,可在快速菜单中选择Advanced?Update Mode子菜单。可以选择更换其他两种更新模式。

示波器模式是一个返回式的显示器,与示波器类似。每接受一个新数据时,它就把新数据绘制在原有数据的右侧。当数据曲线到达显示区的右边缘时,VI 会删除全部图形,从左边缘重新开始绘制曲线。示波器模式显然要快于条状图模式,因为它不会因为滚动产生溢出。

扫描模式更接近于示波器模式,但是当数据曲线到达显示区的右边时,不会变成空白,而是会出现一个移动的垂线,标记新数据的开始,并当VI添加新数据时穿过整个显示区。 练习 1-1 结束。

四、实验报告

写出练习 1-1的中的步骤要点,附上运行时的前后面版图形。

- 1 -

实验二 程序结构

一、实验目的

(1)学会使用LabVIEW中的While循环;

(2)学会使用LabVIEW中的移位寄存器; (3)学会使用LabVIEW中的For循环; (4)学会使用LabVIEW中的CASE结构; (5)学会使用LabVIEW中的顺序结构; (6)学会使用LabVIEW中的公式节点。

二、实验任务

(1)建立一个While循环的VI;

(2)建立一个移位寄存器的VI; (3)建立一个For循环的VI; (4)建立一个CASE结构的VI; (5)建立一个顺序结构的VI; (6)建立一个有公式节点的VI。

三、实验步骤

练习 2-1 使用While循环和图表

目的:用 While 循环和图表获得数据,并实时显示。

创建一个可以产生并在图表中显示随机数的VI。 前面板有一个控制旋钮可在0到10秒之间调节循环时间,还有一个开关可以中止VI的运行。学习怎样改变开关的动作属性,以便不用每次运行VI时都要打开开关。操作步骤如下:

前面板

?o?úD?1?1.00.80.60.40.20.0010230.010.02.0-o?2ó?ê±4.06.08.0?????a??ONOFF

图2-1 练习2-1的前面板

1. 选择FileoNew,打开一个新的前面板。 2. 选择ControlsoBoolean,在前面板中放臵一个开关。设臵开关的标签

为控制开关。 3. 使用标签工具创建 ON 和 OFF 的标签,放臵于开关旁。 4. 选中ControlsoGraph,在前面板中放臵一个波形图(是chart,而不

是graph)。设臵它的标签为随机信号。这个图表用于实时显示随机

- 2 -

数。 5. 把图表的纵坐标改为0.0 到 1.0。方法是用标签工具把最大值从10.0

改为1.0。 6. 选择ControlsoNumeric,在前面板中放臵一个旋钮。设臵旋钮的标签

为循环延时。这个旋钮用于控制While 循环的循环时间。 流程图

7. 开流程图,按照下图创建流程图。

图2-2 练习2-1的流程图

a) 从 FunctionsoStructures 中选择 While 循环,把它放臵在流程图中。将其拖至适当大小,将相关对象移到循环圈内。 b) 从 Functionso Numeric中选择随机数(0-1)功能函数放到循环

内。

c) 在循环中设臵Wait Until Next ms Multiple函数

(FunctionsoTime & Dialog),该函数的时间单位是毫秒,按目前面板旋钮的标度,可将每次执行时间延迟0到10毫秒。 d) 照上面所示的流程图连线,把随机数功能函数和随机信号图表输

入端子连接起来,并把启动开关和While 循环的条件端子连接。

8. 返回前面板,调用操作工具后单击垂直开关将它打开。 9. 把该 VI 保存为 LabVIEW\\Activity目录中的Random Signal.vi。 10. 执行该 VI。While循环的执行次数是不确定的,只要设臵的条

件为真,循环程序就会持续运行。在这个例子中,只要开关打开(TRUE),框图程序就会一直产生随机数,并将其在图表中显示。 11. 单击垂直开关,中止该VI。关闭开关这个动作会给循环条件端

子发送一个FALSE值,从而中止循环。

12. 用鼠标右键单击图表,选择Data OperationsoClear Chart,清

除显示缓存,重新设臵图表。

练习 2-1结束 附注与说明

布尔开关的机械动作:

布尔开关有6种机械动作属性可供选择。在前面板上用鼠标右键单击开关,在快捷菜单中选择Mechanical Action就可以看到这些可选的动作。LabVIEW还提供了一个范例示范这些动作,它是位于Examples\\General\\Controls\\booleans.llb的Mechanical Action of Booleans.vi。

- 3 -

练习 2-2 使用移位寄存器

目的:创建一个可以在图表中显示运行平均数的VI。 前面板

1. 打开一个新的前面板,按照下图所示创建对象。 2. 把波形图表的坐标范围改为0.0到2.0。

3. 在添加竖直坐标之后,用鼠标右键单击它,在快捷菜单中选择Mechanical Action?Latch When Pressed,再选择Operate?Make Current Values Default,把ON状态设臵为默认状态。

BooleanONOFFè?±ê?μ£1ONúDoμ?ˉ3÷Latch When Pressed?o?úêy2.01.51.00.50.0050 图2-3 练习2-2的前面板

1. 按下图创建流程图。

图2-4 练习2-2的流程图

2. 在流程图中添加 While 循环(Functions?Structures),创建移位寄存器。

a. 用鼠标右键单击While循环的左边或者右边,在快捷菜单中选择Add Shift Register。

b. 用鼠标右键单击寄存器的左端子,在快捷菜单中选择Add Element,添加一个寄存器。用同样的方法创建第三个元素。 3. Random Number (0–1)函数(Functions?Numeric)——产生0到1之间的某个随机数。 4. Compound Arithmetic 函数(Functions?Numeric)——在本练习中,它将返回两个周期产生的随机数的和。如果要加入其他的输入,只需用右键单击某个输入,从快捷菜单中选择Add Input。

- 4 -

5. 除法函数(Functions?Numeric)——在本练习中,它用于返回最近四个随机数的平均值。 6. 数值常数(Functions?Numeric)——在While循环的每个周期,Random Number (0–1)函数将产生一个随机数。VI就将把这个数加入到存储在寄存器中的最近三个数值中。Random Number (0–1)再将结果除以4,就能得到这些数的平均值(当前数加上以前的三个数)。然后再将这个平均值显示在波形图中。 7. Wait Until Next ms Multiple函数 (Functions?Time & Dialog)——它将确保循环的每个周期不会比毫秒输入快。在本练习中,毫秒输入的值是500毫秒。如果用鼠标右键单击图标,从快捷菜单中选择Visible?Label,就可以看到Wait Until Next ms Multiple的标签。

8. 用鼠标右键单击Wait Until Next ms Multiple 功能函数的输入端子,在快捷菜单中选择Create Constant。出现一个数值常数,并自动与功能函数连接。 9. 将Constant设臵为500。这样连接到函数的数值常数设臵了500毫秒的等待时间。因此循环每半秒执行一次。注意,VI用一个随机数作为移位寄存器的初始值。如果没有设臵移位寄存器端子的初始值,它就含有一个默认的数值,或者上次运行结束时的数值,因此开始得到的平均数没有任何意义。 10. 执行该 VI,观察过程。

11. 把该 VI 保存为LabVIEW\\Activity目录下的Random Average.vi。 练习 2-2 结束。

附注:移位寄存器的初值:

上面的练习中对移位寄存器设臵了初值0.5。如果不设这个初值,默认的初值是0。在这个例子中,一开始的计算结果是不对的,只有到循环完3次后移位寄存器中的过去值才填满,即第4次循环执行后可以得到正确的结果。 练习 2-3 使用For循环

目的:用For循环和移位寄存器计算一组随机数的最大值。 1.打开一个新的前面板,按照下图创建对象。

a. 将一个数字显示对象放在前面板,设臵它的标签为“最大值”。

b.将一个波形图表放在前面板,设臵它的标签为“随机数”。将图表的纵坐标范围改为0.0到1.0。

c.在图表的快捷菜单中选择Visible ItemsoScrollbar和Digital Display,并隐藏Plot Legend。

d.用移位工具修改滚动栏的大小。

图2-5 练习2-3的面板和流程图

- 5 -

图3-8 练习3-3的面板和框图

1.按照图3-8创建一个前面板。

2.从ControlsoNumeric模板中选择一个数字控制对象放臵在前面板中,设臵它的标签为scalar 1。

3.复制并粘贴该数字显示对象,创建两个新的对象,并分别设臵它们的标签为scalar 2和scalar 3。

4.创建一个数字控制对象的数组,设臵它的标签为array 1。复制并粘贴它,创建一个新的数组,设臵它的标签为array 2。

5.在array 1、scalar 1、 scalar 2、scalar 3、array 2中输入数值1到9。

6.创建流程图。选择FunctionsoArray,在流程图中放臵一个Build Array功能函数。用定位工具增大函数额面积,以容纳5个输入。

7.把数组和标量与Build Array连接起来。创建输出的一维数组,它由 array 1、scalar 1、 scalar 2、array 2、scalar 3中的元素所组成,如图所示。

8.执行该VI。可以看到array 1、scalar 1、 scalar 2、scalar 3、array 2中的数值出现在同一个一维数组中。

9.保存该VI为LabVIEW\\Activity目录下的Build Array.vi。

练习 3-3 结束。

练习 3-4 簇

目的:学习创建簇、分解簇,再捆绑簇并且在另一个簇中显示其内容。

Input ClusterNumeric6.00Boolean1Boolean 2Output ClusterNumeric6.00Boolean1Boolean 2stopSTOPStringTsinghuaStringTsinghua

- 16 -

图3-10 练习3-4的面板和框图

1.打开前面板,创建一个簇壳(Array & Cluster palette),标签改为Input

Cluster,拖曳至适当大小。

2.在这个簇壳中放臵一个数字Control,两个布尔开关,和一个串Control。 3.仿照以上步骤,创建Output Cluster如上。注意将各Control改为相应的

indicator。

4.用快速菜单查看两个簇的序是否一致,若有差别,改之。

5.在前面板上设臵一个[STOP]按钮。注意其缺省值为FALSE,不要改变它的状

态。 6.建立如上面所示的流程图。注意在[STOP]按钮与循环条件端子之间接入了一

个NOT函数,因为按钮缺省值为FALSE,经NOT函数后变为TRUE,这就意味着当按钮状态不变时,循环继续执行,相反一旦按钮动作,则循环终止。 7.返回前面板并运行VI。在输入簇中输入不同的值观察输出。 8.关闭并保存程序。Cluster Exercise.vi 练习 3-4 结束

4 实验报告

写出以上4个练习的中的步骤要点,附上运行时的前后面版图形。

- 17 -

实验四 图形显示

一、实验目的

(1)掌握Chart和Graph的特征;

(2)学会利用XY Graph构成利萨育图形。

二、实验任务

建立一个利萨育图形的VI。

三、实验步骤

练习 4-1 Chart和Graph的比较

目的:创建一个VI,用Chart和Graph分别显示40个随机数产生的曲线,比较程序的差别。

前面板及流程图如下

图4-1 Chart和Graph的比较

显示的运行结果是一样的。但实现方法和过程不同。在流程图中可以看出,Chart产生在循环内,每得到一个数据点,就立刻显示一个。而Graph在循环之外,40个数都产生之后,跳出循环,然后一次显示出整个数据曲线。从运行过程可以清楚地看到这一点。

值得注意的还有For循环执行40次,产生的40个数据存储在一个数组中,这个数组创建于For循环的边界上(使用自动索引功能)。在For循环结束之后,该数组就将被传送到外面的Graph。仔细看流程图,穿过循环边界的连线在内、外两侧粗细不同,内侧表示浮点数,外侧表示数组。 练习 4-1 结束

- 18 -

XY图形控件(XY Graph)

波形图(Waveform Graph)有一个特征,其X是测量点序号、时间间隔等,Y是测量数据值。但是它并不适合描述一般的Y值随X值变化曲线。适合于这种情况的控件是XY Graph。我们通过一个构成利萨育图形的例子来看一下它的使用。我们知道如果控制XY方向的两个数组分别按正弦规律变化(假设其幅值、频率都相同),如果它们的相位相同,则利萨育图形是一条45度的斜线,当它们之间相位差90度时为圆,其他相位差是椭圆。

练习4-2 利用XY Graph构成利萨育图形。

图4-2 利用XY Graph构成利萨育图形

面板和框图如图4-3所示。面板上除了一个XY Graph外,还有一个相位差输入控件。在框图中使用了两个Sine Waveform.vi,第一个所有输入参数(包括频率、幅值、相位等)都使用缺省值,所以其初始相位为0。第二个将其初始相位作为一个控件引到面板上。它们的输出是包括t0、dt和Y值的簇,但是对于XY Graph只需要其中的Y数组,因此使用波形函数中的Get Waveform Components函数分别提取出各自的Y数组,然后再将他们捆绑在一起,连接到XY Graph就可以了。当相位臵为45度时,运行程序,得到如图所示的椭圆。 练习 4-2 结束

四、实验报告

写出以上2个练习的中的步骤要点,附上运行时的前后面版图形。

- 19 -

实验五 字符串和文件I/O

一、实验目的

(1)学会使用LabVIEW中的字符串;

(2)学会使用LabVIEW中的文件存储、读取。

二、实验任务

(1)建立一个使用字符串的VI;

(2)建立一个使用的文件存储、读取VI;

三、实验步骤

练习 5-1 组合字符串 目的:使用一些字符串功能函数将一个数值转换成字符串,并把该字符串和其他一些字符串连接起来组成一个新的输出字符串。 前面板

打开一个新的前面板,按照下图向其中添加对象。

HeaderSETNumber5.50TrailerVOLTS?3ê?′?3¤è?16?3ê?3?2?′?SET 5.5000 VOLTS

其中的两个字符串控制对象和数值控制对象可以合并成一个输出字符串并显示在字符串显示器中。数值显示器显示出字符串的长度。

本练习中输出字符串是一个GPIB(IEEE 488)命令字符串,它可用来与和串口仪器(RS-232 或者 RS-422)进行通信。

流程图

? Format Into String函数(Functions?String)——在本练习

中,它用于对数值和字符串进行格式化,使它们成为一个输出字符串。用变形工具可以添加三个加和输入。 ? String Length函数(Functions?String)——在本练习中,它

- 20 -

实验六 信号处理与分析

一、实验目的

(1)学会使用LabVIEW中的频谱分析(FFT);

(2)学会使用LabVIEW中的数字滤波器。

二、实验任务

(1)建立一个使用LabVIEW中的频谱分析的VI; (2)建立一个使用LabVIEW中的数字滤波器的VI。

三、实验步骤

练习 6-1 FFT的例子

1.程序面板及框图如下所示

- 26 -

2.流程图中的Array Size 函数用来根据样本数转换FFT的输出,得到频率分量的正确幅值。

3.把该VI保存为LabVIEW\\Activity目录中的FFT_2sided.vi。 4.选择频率(Hz)=10,采样率= 100,样本数= 100。执行该VI。注意这时的时域图和频谱图。因为采样率=样本数= 100 ,所以时域图中的正弦波的周期数与选择的频率相等,即可以显示10个周期。(如果把频率改成5,那么就会显示5个周期) 双边 FFT

5.检查频谱图可以看到有两个波峰,一个位于10Hz,另一个位于90Hz,90Hz处的波峰实际上是10Hz处的波峰的负值。因为图形同时显示了正负频率,所以被称为双边FFT。

6.先后令频率=10、20(Hz),执行该VI。注意每种情况下频谱图中波峰位臵的移动。

观察频率等于10和20时的时域波形。注意哪种情况下的波形显示更好,并解释原因。

- 27 -

7.因为fs = 100 Hz,所有只能采样频率低于50Hz的信号(奈奎斯特频率=fs/2)。把频率修改为48Hz,可以看到频谱图的波峰位于± 48 Hz。

8.把频率改为52HZ,观察这时产生的图形与第5步产生的图形的区别。因为52大于奈奎斯特频率,所以混频偏差等于|100 – 52| = 48 Hz。

9.把频率改成30和70Hz,执行该VI。观察这两种情况下图形是否相同,并解释原因。 单边 FFT

10.按照下图修改流程图。上面已经知道因为FFT含有正负频率的信息,所以可以FFT具有重复信息。现在这样修改之后只显示一半的FFT采样点(正频率部分)。这样的方法叫做单边FFT。单边FFT只显示正频部分。注意要把正频分量的幅值乘以2才能得到正确的幅值。但是,直流分量保持不变。(若程序中考虑含直流分量的情况,应当增加一个分支或case结构。

11.设臵频率(Hz) = 30,采样率= 100,样本数= 100, 运行该VI。 12.保存该VI为LabVIEW\\Activity目录下的FFT_1sided.vi。

13.把频率改为70Hz,执行该VI,观察这时产生的图形与第9步产生的图形的区别。

练习 6-1 结束。

练习6-2 使用数字滤波器

目的:使用一个低通数字滤波器对实际采集的方波信号滤波。

1.创建前面板和流程图如下所示。

- 28 -

2.注意流程图。其中使用了一个数字滤波器模块(Functions模板:Analyze)Signal Processing) Filters下的Butterworth Filter.vi)。先介绍一下这个VI。

Butterworth 滤波器

filter type :按下列值指定滤波器类型 0: Lowpass 低通 1: Highpass 高通 2: Bandpass 带通 3: Bandstop 带阻

X :需要滤波的信号序列 sampling freq fs :产生X序列时的采样频率,必须大于0。缺省值是1.0。如果它小于等于0则输出序列Filtered X 为空并返回一个错误。

high cutoff freq fh :高端截止频率。当滤波器类型为0 (lowpass) 或 1 (highpass)时忽略该参数。

low cutoff freq fl:低端截止频率。它必须满足Nyquist 准则,即 0≦fi<0.5fs

- 29 -

如果该条件不满足则输出序列Filtered X 为空并返回一个错误。fi 的缺省值是 0.125。

order :大于0,缺省值是2。

init/cont :内部状态的初始化控制。当其为FALSE (default), 初态为0,当init/cont 为 TRUE, 滤波器初态为上一次调用该VI的最后状态。为了对一个大数据量的序列进行滤波,可以将其分割为较小的块,设臵这个状态为FALSE处理第一块数据,然后改设臵为TRUE继续对对其余的数据块滤波。

Filtered X :滤波样本的输出数组。

3.在了解了这个滤波器的功能之后再来看上面的流程图。

这里DAQ部分将一个外部的1KHz的方波采集进来,采样频率是100KHz,采到的方波一方面显示其波形,同时又送到滤波器的入口。滤波器类型设臵为Lowpass,其采样频率端直接连接到前面的采样频率控制端,因而也是100KHz。另外,将采样频率除以90后作为低端截止频率,应该也是合理的,滤波器的阶数选为6。这样的一个VI运行结果如前面板所示。

还需要指出的是原方波不以X轴对称,有直流分量,经这个低通滤波器后,直流分量还应当存在,曲线显示的确如此。

练习 6-2 结束。

四、实验报告

写出以上2个练习的中的步骤要点,附上运行时的前后面版图形。

- 30 -

本文来源:https://www.bwwdw.com/article/zysx.html

Top