LabVIEW编程入门.docx
《LabVIEW编程入门.docx》由会员分享,可在线阅读,更多相关《LabVIEW编程入门.docx(24页珍藏版)》请在冰点文库上搜索。
LabVIEW编程入门
实验1LabVIEW编程入门
1实验目的
(1)了解LabVIEW的基本概念和术语;
(2)创建和编辑VI,创建和调用SubVI,以及运行和调试VI的基本方法。
2实验任务
(1)使用LabVIEW各个菜单及其相应功能;
(2)任意创建SubVI,进行调用和调试。
3实验步骤
3.1练习1-1打开LabVIEW,熟悉菜单
前面板操作过程
1在New对话框的CreateNew:
控件里选中BlankVI,单击OK后建立一个空的LabVIEW程序,如图1-1所示。
图1-1新建的空白LabVIEW程序
2打开前面板分别熟悉控制(Control)、指示(Indicator)和装饰(Decoration)各类不同控件。
图1-2LabVIEW中控制控件
控制控件是以图形化的图标形式出现,例如图1-2中的数字控制、按钮、开关、旋钮、滑动条等等,用户可以通过鼠标或键盘更改控制中的数值。
图1-3LabVIEW中指示控件
指示控件也是以图形化的图标形式出现,例如图1-3中的速度表、温度计、水箱、LED指示灯、进程条、波形图等等。
(注:
在VI处于运行状态时,用户不能通过鼠标或键盘更改指示中的数值)
图1-4LabVIEW中装饰控件
装饰控件作用仅是美观前面板,在Controls模板中专门有个Decoration子模板,其中含有各种装饰图形,例如图1-4的线条、箭头、矩形、圆形、三角形等。
(注:
在VI处于编辑状态时,只可以对装饰进行改变颜色和大小两项操作,不能对其进行编程;在VI处于运行状态时不能对装饰进行任何操作。
)
框图操作过程
框图程序由节点(Node)、端口(Terminal)和数据连线(Wire)组成。
1节点:
是VI程序中的执行元素,类似于文本编程语言程序中的语句、函数或者子程序。
正弦波发生器的框图程序就是一个典型例子,如图1-5所示。
图1-5正弦波发生器框图程序
在LabVIEW中共有4种类型的节点,包括功能函数(Function)、结构(Structures)、外部代码接口节点和子VI(SubVI)。
必须掌握每个相应节点的功能。
2端口:
包括前面板对象的端口和节点的端口。
主要用于节点与节点之间、节点与前面板对象之间传递数据的。
(1)前面板对象端口
前面板对象的端口又分为控制端口和指示端口两种类型。
在框图程序中,每个前面板对象都有一个惟一的端口,端口名称与其相对应的前面板对象的名称相同,如图1-6所示。
图1-6前面板控制对象和端口
(2)节点的端口:
为了与外界交换数据,框图程序中的每个节点都有一个或数个数据端口用以输入或输出数据。
例如,正弦函数sin节点共有2个端口,其中端口x为输入端口,端口sin(x)为输出端口。
图1-7节点的端口
(3)数据连线:
是端口与端口之间的数据传输通道,它将数据从一个端口中传送到另一个与之相连的端口中。
熟悉几种常用的数据类型所使用的线型和颜色。
3.2练习1-2创建和调用SubVI,并调试VI。
创建一个VI:
计算两数的平均数,并把此VI作为一个SubVI,进行调用和调试。
操作过程如下:
1旋转创建一个新的VI。
在LabVIEW主窗口中选择New...按钮中的BlankVI,或在一个已打开的VI的主选单中选择FileNewVI,出现图1-8所示的VI窗口。
图1-8NewVI窗口
2创建VI前面板。
创建控制量a和b,在VI前面板窗口的空白处单击鼠标,或者在窗口主选单Windows中选择ShowControlsPalette,弹出Controls模板,如图1-9所示。
在Controls模板AllControls子模板Numeric子模板中选择数字量控制(NumericControl),如图1-9所示。
图1-9NumericControl子模板中选择数字量控制
3将数字量控制放在前面板窗口中适当的位置上,用文本编辑工具
单击数字量控制的标签,把名称修改为a和b
4在Controls模板AllControls子模板Numeric子模板中选择数字量控制(NumericIndicator),将其放在前面板窗口中适当的位置上。
如图1-10所示。
5在框图程序中有3个名称分别为a,b,c的端口,创建算术运算节点,如图1-11所示。
把该程序保存为Average.vi,该程序在后面还会用到。
6启动图标编辑器,用鼠标右键单击前面板窗口或框图窗口右上角的默认图标,在弹出的快捷菜单中选择EditIcon…,或者直接双击图标窗格,或者选择FileVIProperties菜单项,打开VIProperties对话框,在Category下拉列表中选择General项,然后单击EditIcon按钮。
图1-10VI前面板
1-11完整的VI框图程序
7打开Average.v,再打开如图1-12所示图标编辑器,选中垂直排列的3个图标中的最下面1个,此时编辑区域中出现256色图标,双击FilledRectangle工具,使用默认的黑色前景色
图1-12图标编辑器
给图标编辑区域加框,同时使用白色背景色作为填充色。
单击前景色矩形,在弹出的颜色拾取器里把前景色设置为蓝色,选中文本工具在图标中间位置写下“(a+b)/2”。
在单击鼠标之前,可以使用方向键调整文本的位置。
一旦单击了其他工具或按钮,就不能再移动文本位置。
至此,256色的图标编辑完毕。
选中16色的图标,单击Copyfrom:
区域中文本为“256Colors”的按钮,LabVIEW自动从已经建立的256色图标复制生成一个新的16色图标。
选中黑白图标,采用同样的办法由256色或16色图标复制生成黑白图标。
如图1-13所示。
单击OK按钮,确认所作的修改。
图1-13求平均数子VI的图标编辑窗口
8建立连接器:
在前面板图标窗格上弹出快捷菜单,选择ShowConnector打开连接器窗格。
LabVIEW根据前面板上的Control和Indicator的数目(分别是2和1)自动选择了左2右1的三端子连接器模式,使用这个默认的连接器模式即可满足要求。
把鼠标指针移动到连接器窗格的左上端子上,指针自动变为连线工具的指针形状,单击鼠标端子使其变黑,表明该端子已被选中,重复这一步骤,把三个端子全部连接中。
至此连接器建立完毕,保存。
等其他程序调用。
9在Functions模板上选择FunctionsAllFuncionsSelectaVI…,在对话框中选中建立好的子VI,将其像函数和子VI一样放置在框图中。
如图1-14所示子VI调用实例。
图1-14子VI调用实例
3.3使用三种图表模式
目的:
查看VI分别在三种模式下执行时图表的显示。
1.建立前面板及流程图如下
该程序中利用一个循环产生连续的sin(i)函数值,并及时地在chart图表上显示出来,
现在前面板上的chart是一个strip,这是一个坐标式显示器,与纸带式图表记录器相似。
每接受一个新数据,新数据就将显示在右侧,而原有数据移动到左侧,如图1-15sin(i)函数生产实例。
图1-15sin(i)函数生产实例
2.用鼠标选中chart,点击右键,可在快速菜单中选择Advanced-»UpdateMode子菜单。
可以选择更换其他两种更新模式。
示波器模式是一个返回式的显示器,与纸带式类似。
每接受一个新数据时,它就把新数据绘制在原有数据的右侧。
当数据曲线到达显示区的右边缘时,VI会删除全部图形,从左边缘重新开始绘制曲线。
示波器模式显然要快于条状图模式,因为它不会因为滚动产生溢出。
扫描模式更接近于示波器模式,但是当数据曲线到达显示区的右边时,不会变成空白,而是会出现一个移动的垂线,标记新数据的开始,并当VI添加新数据时穿过整个显示区。
详细操作过程:
1,开始/程序/NationalInstrumentsLabVIEW7.1/Continue/New,选择BlankVI,点击OK,打开一个新VI。
2,前面板设置,在Controls选板上依次选择Graphsinds/Chart;
3,点击菜单Windows/showblockDiagram,进入程序窗口并设置。
A选择函数:
(1)依次选择Functions/Allfunctions/stuctures/whileloop,添加While循环并拖大,右击停止按钮,选择createcontrol,建立STOP控制按钮;
(2)在Functions上依次选择Arth/Compare/numeric,选择其中的和Trigonomertic/sine,放到whileloop内;(3)Allfunctions/Time&Dialog/Waituntilnextmsmultiple,放到whileloop内;并将waveformchart放到whileloop内;B设置和连线:
(1)将i连接到乘法器一个输入端子,右击另外一个输入端子,选择createconstant,输入10;
(2)将乘法器输出端子连接到sine函数输入端,sine函数输出端连接到waveformchart输入端;(3)右击Waituntilnextmsmultiple输入端子,选择createconstant,输入100;
4点击菜单Windows/showfrontpanel,进入前面板,将STOP按钮拖放到适当位置,并在waveformchart上方空白处双击,输入标签sine(x);保存该VI;
5,调试运行;
4课后复习与实验报告
1、新建一个VI,进行如下练习:
(1)任意放置几个控件在前面板,改变它们的位置、名称、大小、颜色等等。
(2)在VI前面板和后面板之间进行切换
(3)并排排列前面板和后面板窗口
2、编写一个VI求三个数的平均值。
(1)要求对三个输入控件等间隔并右对齐,对应的程序框图控件对象也要求如此对齐。
(2)添加注释
(3)分别用普通方式和高亮方式运行程序,体会数据流向。
(4)单步执行一遍
实验2程序结构
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时都要打开开关。
操作步骤如下:
前面板
图2-1 练习2-1的前面板
详细操作过程:
1开始/程序/NationalInstrumentsLabVIEW7.1/Continue/New,选择BlankVI,点击OK,打开一个新VI。
2前面板设置:
(1)选择Controls/Boolean,放置一个开关,双击空白处,设置开关的标签为“控制开关”;
(2)双击开关旁空白处,设置ON和OFF标签;(3)选中Controls/GraphsInds/Chart,放置一个波形图,设置标签为“随机信号”,单击标签工具把把图表的纵坐标最大、小值从10.0到-10改为1.0到0;(4)选择Controls/NumCtrls/Dial,在前面板中放置一个旋钮,设置标签为“循环延时”。
3点击菜单Windows/showblockDiagram,进入程序窗口并创建流程图。
A选择函数:
(1)从从Functions/allFunctions/Structures/WhileLoop,把它放置在流程图中。
将其拖至适当大小,将相关对象移到循环圈内;
(2)选Functions/allFunctions/Numeric/Randonnumber(随机数)(0-1)功能函数放到循环内;(3)Functions/allFunctions/Time&Dialog/WaitUntilNextmsMultiple函数,放置WaitUntilNextmsMultiple函数到循环圈内;(4)右击WhileLoop条件端子,选择createacontrol,建立STOP控制按钮;B设置和连线:
(1)将Randonnumber输出端接到waveform输入端;
(2)将旋钮输出端接到WaitUntilNextmsMultiple函数输入端;
4点击菜单Windows/showfrontpanel,进入前面板,将STOP按钮拖放到适当位置;把该VI保存为LabVIEW\Activity目录中的RandomSignal.vi。
5运行和调试
(1)开关打开(TRUE),框图程序就会一直产生随机数,并将其在图表中显示;
(2)单击垂直开关,中止该VI。
关闭开关这个动作会给循环条件端子发送一个FALSE值,从而中止循环;(3)用鼠标右键单击图表,选择DataOperations/ClearChart,清除显示缓存,重新设置图表,可以开始新的运行。
如图2-1和2-2所示。
图2-2 练习2-1的流程图
练习2-2使用移位寄存器
目的:
创建一个可以在图表中显示运行平均数的VI。
详细操作过程:
1选择File/NewVI,打开一个新VI,然后关掉前一个VI。
2前面板设置步骤:
(1)选择Controls/Graphsinds/Chart,把波形图表的坐标范围改为0.0到2.0;
(2)选择Controls/Boolean,放置一个开关,双击空白处,设置开关的标签为“控制开关”;(3)双击开关旁空白处,设置ON和OFF标签;用鼠标右键单击它,在快捷菜单中选择MechanicalAction/LatchWhenPressed,把ON状态设置为默认状态;
3点击菜单Windows/showblockDiagram,进入程序窗口并创建流程图。
A选择函数:
(1)选Functions/allFunctions/Structures/WhileLoop;
(2)用鼠标右键单击While循环的左边或者右边,在快捷菜单中选择AddShiftRegister,用鼠标右键单击寄存器的左端子,在快捷菜单中选择AddElement,添加一个寄存器。
用同样的方法创建第三个元素;(3)将Boolean开关和waveformcharts,拖到循环圈内(4)Functions/AllFunctions/Numeric/RandomNumber(0–1)函数;(5)Functions/AllFunctions//Numeric/CompoundArithmetic函数,适当拖动,使有四个输入端;(6)Functions/AllFunctions/Numeric/divide,选择除法函数;(7)Functions/AllFunctions/Time&Dialog/WaitUntilNextmsMultiple函数,放置WaitUntilNextmsMultiple函数到循环圈内;B设置和连线:
(1)将Boolean开关和WhileLoop的条件端子连接;
(2)右击寄存器的左端子,选择create/constant,输入50,将余下两个左端子连接到一起,将此三个端子输出端分别接到CompoundArithmetic函数,下面三个输入端;(3)将Randonnumber分别接到CompoundArithmetic和divide的输入端;(4)将CompoundArithmetic输出端接到divide函数上面输入端;(5)右击divide函数下面输入端,选择create/constant,输入4,将其输出端接到waveformcharts输入端;(6)右击WaitUntilNextmsMultiple函数输入端,选择create/constant,输入500;
4点击菜单Windows/showfrontpanel,进入前面板,保存该VI;
5调试和运行。
如图2-3和2-4所示。
图2-3 练习2-2的前面板
图2-4 练习2-2的流程图
附注:
移位寄存器的初值:
上面的练习中对移位寄存器设置了初值0.5。
如果不设这个初值,默认的初值是0。
在这个例子中,一开始的计算结果是不对的,只有到循环完3次后移位寄存器中的过去值才填满,即第4次循环执行后可以得到正确的结果。
练习2-3使用For循环
目的:
用For循环和移位寄存器计算一组随机数的最大值。
详细操作过程:
1.选择File/NewVI,打开一个新VI,然后关掉前一个VI。
2.前面板设置:
(1)选择CONTROLS/GraphsInds/Chart,把波形图表的坐标范围改为0到1,设置它的标签为“随机数”;
(2)在波形图表上右击,选择visableitems/Scrollbar,visableitems/DigitalDisplay和visableitems/PlotLegend;(3)Controls/numeric/numindicator,数字显示对象放在前面板,设置它的标签为“最大值”;(4)Windows/showtoolspalette,选择移位工具修改滚动栏的大小。
3点击菜单Windows/showblockDiagram,进入程序窗口并创建流程图。
A选择函数:
(1)从Functions/allFunctions/Structures中选择For循环,把它放置在流程图中,拖到适当大小,并在For循环的边框处单击鼠标右键,在快捷菜单中选择AddShiftRegister;
(2)将waveformcharts,拖到循环圈内;(3)Functions/AllFunctions/Numeric/RandomNumber(0–1)函数,放到循环圈内;(4)Functions/allFunctions/Comparison/Max&Min函数(也可以用search)放到循环圈内;B设置和连线:
(1)右击FOR循环的计数端子N,选择选择createconstant,输入100;
(2)将RandomNumber函数输出端接到Waveformchart输入端和Max&Min函数的一个输入端;(3)右击最大值输入端,输入0,去掉连线,将0拖到FOR循环的移位寄存器输入端并连接;(4)将左移位寄存器输出端接到Max&Min函数的一个输入端;(5)将Max&Min函数的输出端接到右移位寄存器输入端;(6)将右移位寄存器输出端接到最大值输入端。
4点击菜单Windows/showfrontpanel,进入前面板,保存该VI(保存为LabVIEW\Activity目录下的CalculateMax.vi);
5调试和运行。
如图2-5所示。
图2-5 练习2-3的面板和流程图
练习2-4使用Case结构
目的:
创建一个VI以检查一个数值是否为正数。
如果它是正的,VI就计算它的平方根,反之则显示出错。
详细操作过程:
1选择File/NewVI,打开一个新VI,然后关掉前一个VI。
2前面板设置:
选择Functions/numeric/numericcontrol和Functions/numeric/numericindicator,并将后者标签设置为“SQRT”。
3点击菜单Windows/showblockDiagram,进入程序窗口并创建流程图。
(1)Functions/AllFunctions/Structures/CaseStructure将Case结构,并放置在在流程图中;
(2)先来做Ture的情况:
Functions/(Arith/compare)/numric/comparision/GreaterOrEqualTo0?
函数;Functions/(Arith/compare)/numric/SquareRoot函数,放到Case结构内;将numric输入端分别连到SquareRoot函数和GreaterOrEqualTo0?
函数输入端;将SquareRoot函数输出端连到SQRT输入端;(3)点击Case框的选择按钮,转入False情况编程:
右击SQRT输入端渝,选择createconstant,输入-999.00,并连接;Functions/allFunctions/Time&Dialog/OneButtonDialog函数,放到Case结构内,右击其输入端,选择createconstant,输入”error…”。
4点击菜单Windows/showfrontpanel,进入前面板,保存该VI到LabVIEW\Activity目录中的SquareRoot.vi;
5调试和运行。
如图2-6所示。
图2-6 练习2-4的面板和流程图
练习2-5使用顺序结构
目的:
创建一个VI,计算生成等于某个给定值的随机数所需要的时间。
详细操作过程:
1.选择File/NewVI,打开一个新VI,然后关掉前一个VI。
2.前面板设置:
选择)Controls/numctrls/numctrl和Functions/numinds/numind(3个),并依次将标签设置为“给定数据”、“当前值“、“执行次数”、“匹配时间”。
3点击菜单Windows/showblockDiagram,进入程序窗口并创建流程图。
(1)Functions/AllFunctions/Structures/stackedStructure将顺序结构,并放置在在流程图中;
(2)右键单击帧的边框,在快捷菜单中选择AddFrameAfter,创建一个新帧。
重复这个步骤,再创建一个帧。
共3桢;(3)选中第0桢,进行编程(设置读取初始时间(子)程序):
右击第0帧的底部边框,选择AddSequenceLocal,创建顺序局部变量;Functions/AllFunctions/Time&Dialog/TickCount(ms)函数,放置在该帧内,接到顺序局部变量;(4)选择第一帧,进行编程:
Functions/allFunctions/Structures/whileloop,选择while循环,放置在该帧内Functions/AllFunctions/Numeric/RandomNumber(0–1)函数,Functions/AllFunctions/Numeric/multiply,选择乘法函数,Functions/(Arith/compare)/numric/comparision/notEqual?
函数,Fu