LabVIEW实验指导.docx
《LabVIEW实验指导.docx》由会员分享,可在线阅读,更多相关《LabVIEW实验指导.docx(41页珍藏版)》请在冰豆网上搜索。
LabVIEW实验指导
虚拟仪器技术与设计实验
名称
实验要求
实验类型
项目学时
创建和编辑VI程序、及建立和调用子VI
必做
验证
2
循环和图表
选做
验证
2
控制结构顺序结构和公式节点
必做
验证
2
数组和图形
选做
验证
2
字符串和文件操作
选做
验证
2
测试信号的产生和分析
必做
验证
2
目录
实验一创建编辑VI程序………………………………………………2
实验二子VI的调用……………………………………………………3
实验三循环和图表………………………………………………………4
实验四控制结构、顺序结构和公式节点………………………………5
实验五数组、簇…………………………………………………………13
实验六图形显示…………………………………………………………19
实验七字符串和文件I/O………………………………………………20
实验八测试信号的产生与分析…………………………………………26
实验一创建编辑VI程序
1.实验目的:
熟悉LabVIEW软件的基本编程环境。
2.实验内容:
创建一个VI程序,并将此程序保存为子VI。
此VI要实现的功能是:
当输入发动转速时,经过一定运算过程,输出发动机温度和汽车速度值。
3.实验步骤
(1)启动LabVIEW,创建一个VI。
(2)在前面板中放置一个温度计控件,并修改控件标签名为发动机温度和设置最大值为100。
该控件从“控件—经典—经典数值”子选项板中获得。
(3)按同样的方法在前面板中放置一个仪表控件,并修改仪表控件的标签名为汽车速度,标尺刻度范围为0~150。
(4)按同样的方法在前面板中放置一个数值输入控件,并修改控件标签名为发动机转速。
(5)从“窗口”下拉菜单中选择“显示程序窗口”切换到程序框图窗口。
(6)在程序窗口中创建乘法函数,该函数中函数选项板中的“函数—编程—数值”子选项板中选择,并和发动机转速输入控件连线,为乘法函数创建一个常量,修改为图中所示值。
(7)按同样的方法创建加法函数、平方根函数和除法函数,并按图中所示修改常量值和连好线。
(8)切换至前面板,在发动机转速控件中输入数值,点击运行按钮,运行VI程序。
(9)修改图标为T/V以表示该子VI输出量为发动机温度和汽车速度,并保存为vi.vi。
前面板:
程序框图:
实验二子VI的调用
1.实验目的:
熟悉子VI的调用。
2.实验内容:
创建一个VI程序,并在编写程序过程中调用实验一中创建的子VI。
此VI要实现的功能是:
通过旋钮控件来控件输入的发动机转速值,中间调用实验一中创建的子VI作为计算过程,从子VI输出的值分别输出至不同的数值显示发动机的温度以及当前汽车速度,同时判断当汽车速度超过100时,系统将产生蜂鸣声,报警提示。
3.实验步骤:
(1)启动LabVIEW,创建一个VI。
(2)在前面板中创建一个旋钮控件,修改标签名为发动机转速,设置数值范围为0~5000,从旋钮控件中调出一个数字显示控件来同步显示旋钮控件当前值。
(3)在前面板创建两个数值显示控件,并修改标签名为汽车速度和发动机温度。
(4)切换至程序框图窗口。
(5)在程序框图中创建一个大于或等于函数。
(6)在程序框图中调用实验一的子函数,从函数选板中的“函数—选择VI”选在实验一创建的子vi.vi。
(7)在程序框图中创建一个蜂鸣器函数,并按图示连线情况连线。
(8)切换至前面板,在发动机转速中输入数值,点击运行按钮运行。
前面板:
程序框图:
实验三循环和图表
1.实验目的:
熟悉LabVIEW中For循环的使用以及图形与图表数据显示。
2.实验内容:
创建一个VI程序,程序中需要使用For循环波形图控件与波形图表控件。
此VI要实现的功能是:
利用For循环生成100个随机数分别在波形图控件和波形图表控件中显示,并比较波形图控件和波形图表控件中数据显示上的区别。
3.实验步骤:
(1)创建一个VI,在前面板中创建一个波形图控件。
(2)在前面板添加一个波形图表控件。
(3)切换到程序窗口图。
(4)在程序框图中创建一个For循环,并给For循环创建一个常量,设置值为50.
(5)在For循环中放置一个随机数函数。
(6)在For循环中放置一个整数倍毫秒函数,并为期创建常量,设置常量值为100.
(7)按照程序框图连好线,切换至前面板,点击运行按钮运行程序。
前面板:
程序框图:
实验四控制结构、顺序结构和公式节点
1实验目的
(1)学会使用LabVIEW中的While循环;
(2)学会使用LabVIEW中的移位寄存器;
(3)学会使用LabVIEW中的For循环;
(4)学会使用LabVIEW中的CASE结构;
(5)学会使用LabVIEW中的顺序结构;
(6)学会使用LabVIEW中的公式节点。
2实验任务
(1)建立一个While循环的VI;
(2)建立一个移位寄存器的VI;
(3)建立一个For循环的VI;
(4)建立一个CASE结构的VI;
(5)建立一个顺序结构的VI;
(6)建立一个有公式节点的VI。
3实验步骤
练习 2-1 使用While循环和图表
目的:
用While循环和图表获得数据,并实时显示。
创建一个可以产生并在图表中显示随机数的VI。
前面板有一个控制旋钮可在0到10秒之间调节循环时间,还有一个开关可以中止VI的运行。
学习怎样改变开关的动作属性,以便不用每次运行VI时都要打开开关。
操作步骤如下:
前面板
图1 练习2-1的前面板
1.选择File»New,打开一个新的前面板。
2.选择Controls»Boolean,在前面板中放置一个开关。
设置开关的标签为控制开关。
3.使用标签工具创建ON和OFF的标签,放置于开关旁。
4.选中Controls»Graph,在前面板中放置一个波形图(是chart,而不是graph)。
设置它的标签为随机信号。
这个图表用于实时显示随机数。
5.把图表的纵坐标改为0.0到1.0。
方法是用标签工具把最大值从10.0改为1.0。
6.选择Controls»Numeric,在前面板中放置一个旋钮。
设置旋钮的标签为循环延时。
这个旋钮用于控制While循环的循环时间。
流程图
7.开流程图,按照下图创建流程图。
图2 练习2-1的流程图
a)从Functions»Structures中选择While循环,把它放置在流程图中。
将其拖至适当大小,将相关对象移到循环圈内。
b)从Functions»Numeric中选择随机数(0-1)功能函数放到循环内。
c)在循环中设置WaitUntilNextmsMultiple函数(Functions»Time&Dialog),该函数的时间单位是毫秒,按目前面板旋钮的标度,可将每次执行时间延迟0到10毫秒。
d)照上面所示的流程图连线,把随机数功能函数和随机信号图表输入端子连接起来,并把启动开关和While循环的条件端子连接。
8.返回前面板,调用操作工具后单击垂直开关将它打开。
9.把该VI保存为LabVIEW\Activity目录中的RandomSignal.vi。
10.执行该VI。
While循环的执行次数是不确定的,只要设置的条件为真,循环程序就会持续运行。
在这个例子中,只要开关打开(TRUE),框图程序就会一直产生随机数,并将其在图表中显示。
11.单击垂直开关,中止该VI。
关闭开关这个动作会给循环条件端子发送一个FALSE值,从而中止循环。
12.用鼠标右键单击图表,选择DataOperations»ClearChart,清除显示缓存,重新设置图表。
附注与说明
布尔开关的机械动作:
布尔开关有6种机械动作属性可供选择。
在前面板上用鼠标右键单击开关,在快捷菜单中选择MechanicalAction就可以看到这些可选的动作。
LabVIEW还提供了一个范例示范这些动作,它是位于Examples\General\Controls\booleans.llb的MechanicalActionofBooleans.vi。
练习2-2使用移位寄存器
目的:
创建一个可以在图表中显示运行平均数的VI。
前面板
1.打开一个新的前面板,按照下图所示创建对象。
2.把波形图表的坐标范围改为0.0到2.0。
3.在添加竖直坐标之后,用鼠标右键单击它,在快捷菜单中选择MechanicalAction»LatchWhenPressed,再选择Operate»MakeCurrentValuesDefault,把ON状态设置为默认状态。
图3 练习2-2的前面板
1.按下图创建流程图。
图4 练习2-2的流程图
2.在流程图中添加While循环(Functions»Structures),创建移位寄存器。
a.用鼠标右键单击While循环的左边或者右边,在快捷菜单中选择AddShiftRegister。
b.用鼠标右键单击寄存器的左端子,在快捷菜单中选择AddElement,添加一个寄存器。
用同样的方法创建第三个元素。
3.RandomNumber(0–1)函数(Functions»Numeric)——产生0到1之间的某个随机数。
4.CompoundArithmetic函数(Functions»Numeric)——在本练习中,它将返回两个周期产生的随机数的和。
如果要加入其他的输入,只需用右键单击某个输入,从快捷菜单中选择AddInput。
5.除法函数(Functions»Numeric)——在本练习中,它用于返回最近四个随机数的平均值。
6.数值常数(Functions»Numeric)——在While循环的每个周期,RandomNumber(0–1)函数将产生一个随机数。
VI就将把这个数加入到存储在寄存器中的最近三个数值中。
RandomNumber(0–1)再将结果除以4,就能得到这些数的平均值(当前数加上以前的三个数)。
然后再将这个平均值显示在波形图中。
7.WaitUntilNextmsMultiple函数(Functions»Time&Dialog)——它将确保循环的每个周期不会比毫秒输入快。
在本练习中,毫秒输入的值是500毫秒。
如果用鼠标右键单击图标,从快捷菜单中选择Visible»Label,就可以看到WaitUntilNextmsMultiple的标签。
8.用鼠标右键单击WaitUntilNextmsMultiple功能函数的输入端子,在快捷菜单中选择CreateConstant。
出现一个数值常数,并自动与功能函数连接。
9.将Constant设置为500。
这样连接到函数的数值常数设置了500毫秒的等待时间。
因此循环每半秒执行一次。
注意,VI用一个随机数作为移位寄存器的初始值。
如果没有设置移位寄存器端子的初始值,它就含有一个默认的数值,或者上次运行结束时的数值,因此开始得到的平均数没有任何意义。
10.执行该VI,观察过程。
11.把该VI保存为LabVIEW\Activity目录下的RandomAverage.vi。
附注:
移位寄存器的初值:
上面的练习中对移位寄存器设置了初值0.5。
如果不设这个初值,默认的初值是0。
在这个例子中,一开始的计算结果是不对的,只有到循环完3次后移位寄存器中的过去值才填满,即第4次循环执行后可以得到正确的结果。
练习2-3使用For循环
目的:
用For循环和移位寄存器计算一组随机数的最大值。
1.打开一个新的前面板,按照下图创建对象。
a.将一个数字显示对象放在前面板,设置它的标签为“最大值”。
b.将一个波形图表放在前面板,设置它的标签为“随机数”。
将图表的纵坐标范围改为0.0到1.0。
c.在图表的快捷菜单中选择VisibleItems»Scrollbar和DigitalDisplay,并隐藏PlotLegend。
d.用移位工具修改滚动栏的大小。
图5 练习2-3的面板和流程图
2.按照上图画流程图。
3.在流程图中放置一个For循环(Functions»Structures)。
4.在For循环的边框处单击鼠标右键,在快捷菜单中选择AddShiftRegister。
5.将下列对象添加到流程图。
1.RandomNumber(0–1)函数(Functions»Numeric)——产生0到1之间的某个随机数。
2.数值常数(Functions»Numeric)——在这个练习中需要将移位寄存器的初始值设成0。
3.Max&Min函数(Functions»Comparison)——输入两个数值,再将它们的最大值输出到右上角,最小值输出到右下角。
这里只需要最大值,只用连接最大值输出。
4.数值常数(Functions»Numeric)——For循环需要知道需要执行的次数。
本练习中是100次。
6.按照上图连接各个端子。
7.运行该VI。
8.将该VI保存为LabVIEW\Activity目录下的CalculateMax.vi。
练习2-4使用Case结构
目的:
创建一个VI以检查一个数值是否为正数。
如果它是正的,VI就计算它的平方根,反之则显示出错。
前面板
1.打开一个新的前面板,并按照下图所示创建对象。
控制对象用于输入数值,显示对象用于显示该数值的平方根。
流程图
2.照下图创建流程图。
图6 练习2-4的面板和流程图
3.从Functions»Structures中选择一个Case结构,并放置在在流程图中。
Case结构是一个可以改变大小的方框。
先来做Ture的情况,照流程图上半部分构造。
aGreaterOrEqualTo0?
函数(Functions»Comparison)——如果输入数值大于或者等于0就会返回一个TRUE值。
bSquareRoot函数(Functions»Numeric)——返回输入数值的平方根。
c
连好线
d点击Case框的选择按钮,转入False情况编程
e数值常数(Functions»Numeric)——这里用于显示错误的代数值-999.00。
fOneButtonDialog函数(Functions»Time&Dialog)——在这里它用于显示一个对话框,内容是Error...。
g字符串常数(Functions»String)——用EditTextTools在对话框中输入字符串。
h该VI在TRUE或者FALSE情况下都会执行。
如果输入的数值大于等于0,VI会执行TRUECase,返回该数的平方根,否则将会输出-999.00,并显示一个对话框,内容为Error...。
4.返回前面板,运行该VI。
修改标签为Number的数字式控制对象的数值,分别尝试一个正数和负数。
注意,当把数字式控制对象的值改为负数时,LabVIEW会显示Case结构的FALSECase中设置的出错信息。
5.保存该VI到LabVIEW\Activity目录中的SquareRoot.vi。
练习2-5使用顺序结构
目的:
创建一个VI,计算生成等于某个给定值的随机数所需要的时间。
前面板
1.打开一个新的前面板,并按照下图所示创建对象。
图2-8 练习2-5的前面板
我们约定数据是0到100范围的整数。
当前值用于显示当前产生的随机数。
“执行次数”用于显示达到指定值循环执行的次数。
匹配时间用来显示达到指定值所用的时间。
流程图
图7 练习2-5的流程图(共3帧)
i.在流程图中放置顺序结构(Functions»Structures)。
ii.用鼠标右键单击帧的边框,在快捷菜单中选择AddFrameAfter,创建一个新帧。
重复这个步骤,再创建一个帧。
共3桢。
iii.选中第0桢,设置读取初始时间(子)程序.
iv.第0帧的下边框上含有一个小方框,其中有一个箭头。
这个方框叫做顺序局部变量,可以在同一个顺序结构中的各个帧之间传递数据。
用鼠标右键单击第0帧的底部边框,选择AddSequenceLocal,创建顺序局部变量。
顺序局部变量显示为一个空的方块。
当您将某个功能函数与顺序局部变量相连时,方块中的箭头就会自动显示。
v.
TickCount(ms)函数(Functions»Time&Dialog)——返回启动到现在的时间(以毫秒为单位)。
在这里例子里需要使用两个这个函数。
另一个在第2帧中。
vi.按图连好线。
转入第1帧。
该帧是匹配计算,内含一个循环结构。
该图中使用的新函数有:
RoundtoNearest函数(Functions»Numeric)——在该例中,它用于取0到100之间的随机数到距离最近的整数。
NotEqual?
函数(Functions»Comparison)——在该例中,它将随机数和前面板中设置的数相比较,如果两者不相等会返回TRUE值,否则返回FALSE。
Increment函数(Functions»Numeric)——在该例中,它将While循环的计数器加1。
vii.按图连好线。
转入第2帧
在第0帧中,TickCount(ms)功能函数将以毫秒为单位表示当前时间。
这个数值被连到顺序局部变量,这样它就可以被后续的帧使用。
在第1帧中,只要函数返回的值与指定值不等,VI就会持续执行While循环。
在第2帧中,TickCount(ms)功能函数以毫秒为单位返回新的时间。
VI从中减去原来的时间(由第0帧通过顺序局部变量提供)就可以计算出花费的时间。
viii.返回前面板,在NumbertoMatch控制对象中输入一个数值,执行该VI。
ix.把该VI保存为LabVIEW\Activity目录下TimetoMatch.vi。
练习2-6使用公式节点
目的:
创建一个VI,它用公式节点计算下列等式:
y1=x3–x2+5
y2=m*x+b
x的范围是从0到10。
可以对这两个公式使用同一个公式节点,并在同一个图表中显示结果。
前面板
图8 练习2-6的面板
1.打开一个新的前面板,按照上图(该图中包含运行结果)创建前面板中的对象。
波形图显示对象用于显示等式的图形。
该VI使用两个数字式控制对象来输入m和b的值。
流程图
2.按照下图创建流程图。
图9 练习2-6的流程图
在创建某个输入或者输出端子时,必须给它指定一个变量名。
这个变量名必须与公式节点中使用的变量名完全相符。
公式节点中,在边框上单击鼠标右键,在快捷菜单中选择AddInput,可以创建三个输入端子。
在快捷菜单中选择AddOutput,创建输出端子。
x的范围是从0到10(包括10),就必须连接11到计数端子。
BuildArray(Functions»Array)——在这个例子中,它用于将两个数据构成数组形式提供给一个多曲线的图形中。
通过用变形工具拖拉边角就可以创建两个输入端子。
3.返回前面板,尝试给m和b赋以不同的值再执行该VI。
4.把该VI保存为LabVIEW/Activity目录下的Equations.vi。
4实验报告
写出以上6个练习的中的步骤要点,附上运行时的前后面版图形。
实验五数组、簇
1实验目的
(1)学会使用LabVIEW中的索引数组;
(2)学会使用LabVIEW中的簇;
2实验任务
(1)建立一个能数组索引的VI;
(2)建立一个使用的VI;
3实验步骤
练习3-1创建一个自动索引的数组
目的:
使用For循环的自动索引功能创建数组,并用一个图形(Graph)显示该数组。
图3-1 练习3-1的面板
前面板:
1.打开一个新的前面板。
2.选择Controls»Array&Cluster,在前面板中放置一个数组。
设置它的标签为WaveformArray。
3.选择Controls»Numeric,在数组框中插入一个数字式显示对象。
如右图所示。
它用于显示数组的内容。
4.选择Controls»Graph,在前面板中放置一个波形图。
设置它的标签为WaveformGraph。
5.隐藏图例和模板。
6.用鼠标右键单击图形,并在快捷菜单中取消选中YScale»AutoscaleY,禁止自动坐标功能。
7.使用文本工具,把Y轴的范围改为-0.5到1.5。
流程图
1.按照下图创建流程图。
图3-2 练习3-1的流程图
2.由Functions»SelectaVI…寻找LabVIEW\activity目录
下的GenerateWaveformVI,它的作用是返回波形中的某一点。
这个VI需要输入一个索引,我们将循环周期连接到这个输入。
3.注意GenerateWaveformVI连出来的连线在循环边界变成一个数组时会变粗,正是在这个边界处形成了一维数组。
4.For循环会自动累计边界内的数组。
这种功能叫做自动索引。
在这个例子中,连接到循环计数输入的数值常数令For循环创建了一个由100个元素组成的数组。
5.
Bundle函数(Functions»Cluster)——将图块中的各个组件组合成一个簇,在正确连接以前需要改变该函数的图标的大小。
将移位工具放在图标的左下角。
变形工具会变成如左图所示,拖曳鼠标直到出现第三个输入端子。
6.数值常数(Functions»Numeric)——三个数值常数用于设置For循环执行的周期数N=100,初始X=0和deltaX=1。
7.从前面板执行该VI。
该VI将把自动索引后的波形图数组显示在波形图中。
8.把X的delta值改为0.5,X的初始值改为20。
再次执行该VI。
注意,波形图现在同样显示100个点,而每个点的初始值为20,X的delta值为0.5(见X轴)。
9.只需在显示器中输入元素的索引号就可以查看波形数组中的任何元素。
如果输入的数比数组的元素个数大,那么显示器将变暗,表示您没有为该元素设置索引。
如果需要一次查看多个元素,可以通过改变数组显示对象的大小来实现。
把定位工具放置在数组框的右下角。
工具将变成右图所示的变形工具。
当工具变形时,用鼠标拖曳数组的右边或者下边。
数组现在就可以按照元素索引的上升顺序显示多个素,以某个与指定索引对应的元素开始,如下图所示。
图3-3 练习3-1中多个数组元素的同时观察
在前面的流程图中,您为波形图指定了初始的X值和deltaX值。
默认的X初始值是0,deltaX值是1。
这样,也可以把波形数组直接连接到波形图端子,而无需指定初始的X值和deltaX值,如图3-4所示。
图3-4 练习3-1使用默认X及DeltaX时简化后的流程图
10.按上图删除Bundle功能函数和它所连接的常数对象。
方法是用移位工具选择该功能函数和连接的常数对象,按下。
再选择Edit»RemoveBadWires。
按照上图完成流程图的连线。
11.执行该VI。
注意初始的X值是0,deltaX值是1。
2多图区图形
可以创建