labview入门教程(初学者必看)(1)

Labview入门教程亚为电子科技说明:1、 不同labview版本,内容大同小异,不要过于核对图标2、 必须先安装labview,亚为的资料,版本不低于2014,如果是串口通信,还要安装NIVISA5203、 直接打开亚为用户资料的“labview例程/****例程",看到的是前面板,也就是交互界面界面可以自行修改,注意右键—>数据操作—>保存默认参数.4、 波形图上右键,可以导出或者另存数据.高速采集模式下,yav例程不自动保存,需要手动导出高速模式下,不要采集时间过长,否则系统崩溃,会内存溢出甚至蓝屏死机5、 如果需要修改算法逻辑,按下Ctrl+E即可打开程序框图界面里面的数学符号,仔细研究下,就应该能认识.看懂加减乘除即可6、 这个文档认真看十遍,你就是Labview编程高手啦,亚为科技不负责labview编程指导哦高手都是自学的第一讲:认识Labview1.1 Labview 简介在开始菜单里找Labview点击打开,会出现如下界面:从File>>New VI 或者从右半部分中的New〉>Blank VI 都可以打开如下界面:上图中前图是虚拟仪器的前面板,是用户使用的人机界面,后面的是程序框图界面(即后面板)。
在LabVIEW的用户界面上,应特别注意它提供的操作模板,包括工具(Tools)模板、控制(Controls)模板和函数(Functions)模板这些模板集中反映了该软件的功能与特征.下面我们来大致浏览一下工具模板(Tools Palette)该模板提供了各种用于创建、修改和调试VI程序的工具.如果该模板没有出现,则可以在Windows菜单下选择Show Tools Palette命令以显示该模板当从模板内选择了任一种工具后,鼠标箭头就会变成该工具相应的形状当从Windows菜单下选择了Show Help Window功能后,把工具模板内选定的任一种工具光标放在流程图程序的子程序(Sub VI)或图标上,就会显示相应的帮助信息工具图标有如下几种:图标名称功 能1Operate Value(操作值)用于操作前面板的控制和显示.使用它向数字或字符串控制中键入值时,工具会变成标签工具2Position/Size/Select (选择)用于选择、移动或改变对象的大小当它用于改变对象的连框大小时,会变成相应形状3Edit Text(编辑文本)用于输入标签文本或者创建自由标签当创建自由标签时它会变成相应形状。
4Connect Wire(连线)用于在流程图程序上连接对象如果联机帮助的窗口被打开时,把该工具放在任一条连线上,就会显示相应的数据类型.5Object Shortcut Menu(对象菜单)用鼠标左键可以弹出对象的弹出式菜单.6Scroll Windows(窗口漫游)使用该工具就可以不需要使用滚动条而在窗口中漫游.7Set/Clear Breakpoint(断点设置/清除)使用该工具在VI的流程图对象上设置断点8Probe Data(数据探针)可在框图程序内的数据流线上设置探针.通过控针窗口来观察该数据流线上的数据变化状况.9 Get Color(颜色提取)使用该工具来提取颜色用于编辑其他的对象10Set Color(颜色设置)用来给对象定义颜色它也显示出对象的前景色和背景色下面的两个模板是多层的,其中每一个子模板下还包括多个对象控制模板(Control Palette)注意:只有打开前面板时才能调用该模板该模板用来给前面板设置各种所需的输出显示对象和输入控制对象每个图标代表一类子模板.如果控制模板不显示,可以用Windows菜单的Show Controls Palette功能打开它,也可以在前面板的空白处,点击鼠标右键,以弹出控制模板.控制模板如右图所示,它包括如下所示的一些子模板.子模板中包括的对象,我们在功能中用文字简要介绍。
图标子模板名称功 能1Numeric(数值量)数值的控制和显示包含数字式、指针式显示表盘及各种输入框2Boolean(布尔量)逻辑数值的控制和显示包含各种布尔开关、按钮以及指示灯等3String & Path(字符串和路径)字符串和路径的控制和显示4Array & Cluster(数组和簇)数组和簇的控制和显示5List & Table(列表和表格)列表和表格的控制和显示6Graph(图形显示)显示数据结果的趋势图和曲线图7Ring & Enum(环与枚举)环与枚举的控制和显示8I/O(输入/输出功能)输入/输出功能于操作OLE、ActiveX等功能9Refnum参考数10Digilog Controls(数字控制)数字控制11Clussic Controls(经典控制)经典控制,指以前版本软件的面板图标12Activex用于ActiveX等功能13Decorations(装饰)用于给前面板进行装饰的各种图形对象.14Select a Controls(控制选择)调用存储在文件中的控制和显示的接口.15User Controls(用户控制)用户自定义的控制和显示功能模板(Functions Palette) 注:只有打开了流程图程序窗口(即后面板),才能出现功能模板。
功能模板是创建流程图程序的工具该模板上的每一个顶层图标都表示一个子模板若功能模板不出现,则可以用Windows菜单下的Show Functions Palette功能打开它,也可以在流程图程序窗口的空白处点击鼠标右键以弹出功能模板功能模板如右图所示,其子模块如下所示个别不常用的子模块未包含)图标子模板名称功 能1Structure(结构)包括程序控制结构命令,例如循环控制等,以及全局变量和局部变量2Numeric(数值运算)包括各种常用的数值运算,还包括数制转换、三角函数、对数、复数等运算,以及各种数值常数3Boolean(布尔运算)包括各种逻辑运算符以及布尔常数4String(字符串运算)包含各种字符串操作函数、数值与字符串之间的转换函数,以及字符(串)常数等5Array(数组)包括数组运算函数、数组转换函数,以及常数数组等.6Cluster(簇)包括簇的处理函数,以及群常数等这里的群相当于C语言中的结构7Comparison(比较)包括各种比较运算函数,如大于、小于、等于8Time & Dialog(时间和对话框)包括对话框窗口、时间和出错处理函数等.9(文件输入/输出)包括处理文件输入/输出的程序和函数。
10Data Acquisition(数据采集)包括数据采集硬件的驱动,以及信号调理所需的各种功能模块11Waveform(波形)各种波形处理工具12Analyze(分析)信号发生、时域及频域分析功能模块及数学工具 13Instrument I/O(仪器输入/输出)包括GPIB(488、488.2)、串行、VXI仪器控制的程序和函数,以及VISA的操作功能函数14Motion & Vision(运动与景像)15Mathematics(数学)包括统计、曲线拟合、公式框节点等功能模块,以及数值微分、积分等数值计算工具模块16Communication(通讯)包括TCP、DDE、ActiveX和OLE等功能的处理模块.17Application Control(应用控制)包括动态调用VI、标准可执行程序的功能函数18Graphics & Sound(图形与声音)包括3D、OpenGL、声音播放等功能模块包括调用动态连接库和CIN节点等功能的处理模块19Tutorial(示教课程)包括LabVIEW示教程序20Report Generation(文档生成)21Advanced(高级功能)22Select a VI(选择子VI)23User Library(用户子VI库)下面我们通过练习掌握如何应用Labview7.1练习一:建立一个测量温度和容积的VI步骤如下:1. 选择 VI,打开一个新的前面板窗口。
2. 从 Controls〉>All Controls>〉numeric中选择 Tank放到前面板中注:如果前面板中没有Controls模版,可在菜单栏选window〉>show controls palette,即可打开或直接点击鼠标右键)3. 在标签(Tank)文本框中输入“容积” ,然后在前面板中的其他任何位置单击一下4. 同样从Controls>〉All Controls〉>numeric中选择Thermometer放到前面板中5. 在标签文本框中输入“温度计” ,然后在前面板中的其他任何位置单击一下6. 把容器显示对象的显示范围设置为0.0到1000.0双击容器坐标的100 标度,使它高亮显示在坐标中输入 1000,再在前面板中的其他任何地方单击一下 这时0.0到1000.0之间的增量将被自动显示 在容器旁配数据显示 将鼠标移到容器上,点右键,在出现的快速菜单中选Visible Iterms〉〉Digital Display即可前面板如下图所示:图1-1 练习一的前面板图8. Windows>>Show block Diagram 打开流程图窗口,在窗口中建立如下程序:随机数发生器乘法函数数值常数延时函数图1-2 练习一的流程图该流程图中新增的对象有两个乘法器、两个数值常数、两个随机数发生器、一个延时函数,一个while循环,一个布尔常量,温度和容积对象是由前棉板的设置自动带出来的。
a. 乘法器(Multiply)、随机数发生器(Random number (0--1))和数值常数(Numberic constant)由Functions>>All Functions〉〉Numeric中拖出注:如果面板中没有Functions模版,可以从菜单栏中选Window>>Show Functions palette 或点击鼠标右键)b. 延时函数(Time delay)可以从Functions〉〉All Functions〉〉Time&Dialog>>Time delay中拖出,在自动弹出的对话框中输入要延时的时间(比如0.5s)9.连线:把鼠标放到函数端子上,当鼠标自动变为连线模式并出现一闪一闪时,点击一下鼠标左键然后找要连接的函数端子,当鼠标出现一闪一闪时,再次点击鼠标左键,这时就把两个函数连接起来了 最后选Functions〉〉All Functions>〉Structures>〉While Loop,在已编好的程序左上角点击鼠标左键,然后移动鼠标,直到出现的虚线把程序全包含起来再点鼠标左键,就创建了一个While循环.在右下角条件端子上点击鼠标右键,再弹出的菜单里选Creat constant就可,目的是让循环能够维持下去。
11. 在前面板中,单击Run(运行)按钮,运行该 VI12. 在后面板的工具栏中点击类似灯泡状的按钮,就可以看见程序中各个数据流的走向13. 选择 , 把该VI 保存到任意目录下.14. 选择,关闭该 VI .练习一 结束附注与说明:1 显示对象(Indicator)、控制对象(Control)和数值常数对象显示对象和控制对象都是前面板上的控件,前者有输入端子而无输出端子,后者正好相反,它们分别相当于普通编程语言中的输出参数和输入参数.数值常数对象可以看成是控制对象的一个特例.在前面板中创建新的控制对象或显示对象时,LabVIEW 都会在流程图中创建对应的端子端子的符号反映该对象的数据类型.例如,DBL 符号表示对象数据类型是双精度数;TF 符号表示布尔数;I16 符号表示16位整型数;ABC符号表示对象数据类型是字符串.一个对象应当是显示对象还是控制对象必须弄清楚,否则无法正确连线有时他们的图标是相似或相同的,可以根据需要明确规定它是显示对象还是控制对象方法是将鼠标移到图标上,然后点右键,可出现快速菜单(例见右图)如果菜单中的第一项是Chang to Control,说明这是一个显示对象,你可以根据需要,将其变为控制对象.如果菜单中的第一项是Chang to Indicator ,说明这是一个控制对象,你也可以根据需要,将其变为显示对象。
2. 关于连线连线是程序设计中较为复杂的问题流程图上的每一个对象都带有自己的连线端子,连线将构成对象之间的数据通道因为这不是几何意义上的连线,因此并非任意两个端子间都可连线,连线类似于普通程序中的变量数据单向流动,从源端口向一个或多个目的端口流动.不同的线型代表不同的数据类型下面是一些常用数据类型所对应的线型和颜色:类型颜色标量一维数组二维数组整形数兰色浮点数橙色逻辑量绿色字符串粉色文件路径青色当需要连接两个端点时,在第一个端点上点击连线工具(从工具模板栏调用),然后移动到另一个端点,再点击第二个端点端点的先后次序不影响数据流动的方向.当把连线工具放在端点上时,该端点区域将会闪烁,表示连线将会接通该端点当把连线工具从一个端口接到另一个端口时,不需要按住鼠标键当需要连线转弯时,点击一次鼠标键,即可以正交垂直方向地弯曲连线,按空格键可以改变转角的方向接线头是为了帮助正确连接端口的连线当把连线工具放到端口上,接线头就会弹出接线头还有一个黄色小标识框,显示该端口的名字线型为波折号的连线表示坏线出现坏线的原因有很多,例如:连接了两个控制对象;源端子和终点端子的数据类型不匹配(例如一个是数字型,而另一个是布尔型)。
可以通过使用定位工具点击坏线再按下 <Delete> 来删除它选择 Edit»Remove Bad Wires 或者按下〈Ctrl-B〉 可以一次删除流程图中的所有坏线当 VI 无法运行,或者显示 Signal has Loose Ends (信号丢失终端)的错误信息时,这是一个快捷的调试方法 程序调试技术 (以下操作大家可以用练习一尝试)1.找出语法错误如果一个VI程序存在语法错误,则在面板工具条上的运行按钮会变成一个折断的箭头,表示程序不能被执行.这时该按钮被称作错误列表点击它,则LabVIEW弹出错误清单窗口,点击其中任何一个所列出的错误,选用Find功能,则出错的对象或端口就会变成高亮2.设置执行程序高亮在LabVIEW的工具条上有一个画着灯泡的按钮,这个按钮叫做“高亮执行”按钮上.点击这个按钮使它变成高亮形式,再点击运行按钮,VI程序就以较慢的速度运行,没有被执行的代码灰色显示,执行后的代码高亮显示,并显示数据流线上的数据值.这样,你就可以根据数据的流动状态跟踪程序的执行.3.断点与单步执行为了查找程序中的逻辑错误,有时希望流程图程序一个节点一个节点地执行.使用断点工具可以在程序的某一地点中止程序执行,用探针或者单步方式查看数据.使用断点工具时,点击你希望设置或者清除断点的地方.断点的显示对于节点或者图框表示为红框,对于连线表示为红点。
当VI程序运行到断点被设置处,程序被暂停在将要执行的节点,以闪烁表示按下单步执行按钮,闪烁的节点被执行,下一个将要执行的节点变为闪烁,指示它将被执行你也可以点击暂停按钮,这样程序将连续执行直到下一个断点探针可用探针工具来查看当流程图程序流经某一根连接线时的数据值从Tools工具模板选择探针工具,再用鼠标左建点击你希望放置探针的连接线.这时显示器上会出现一个探针显示窗口该窗口总是被显示在前面板窗口或流程图窗口的上面在流程图中使用选择工具或连线工具,在连线上点击鼠标右键,在连线的弹出式菜单中选择“探针”命令,同样可以为该连线加上一个探针.1.2 子VI的建立子VI(SubVI)相当于普通编程语言中的子程序,也就是被其他的 VI调用的VI可以将任何一个定义了图标和联接器的 VI作为另一个 VI的子程序在流程图中打开 Functions»Select a VI… ,就可以选择要调用的子 VI 构造一个子VI主要的工作就是定义它的图标和联接器.每个VI在前面板和流程图窗口的右上角都显示了一个默认的图标启动图标编辑器的方法是,用鼠标右键单击面板窗口的右上角的默认图标,在弹出菜单中选择 Edit Icon.下图显示了图标编辑器的窗口。
可以用窗口左边的各种工具设计像素编辑区中的图标形状.编辑区右侧的一个方框中显示了一个实际大小的图标.图标编辑器的具体使用细节参阅练习二图标编辑器窗口联接器是 VI 数据的输入输出接口如果用面板控制对象或者显示对象从子 VI 中输出或者输入数据,那么这些对象都需要在联接器面板中有一个连线端子您可以通过选择 VI的端子数并为每个端子指定对应的前面板对象以定义联接器定义联接器的方法是,用鼠标右键单击面板窗口中的图标窗口,在快捷菜单中选择 Show Connector联接器图标会取代面板窗口右上角的图标LabVIEW 自动选择的端子连接模式是控制对象的端子位于联接器窗口的左边,显示对象的端子位于联接器窗口右边选择的端子数取决于前面板中控制对象和显示对象的个数联接器中的各个矩形表示各个端子所在的区域,可以用它们从 VI 中输入或者输出数据如果必要,也可以选择另外一种端子连接模式方法是在图标上单击鼠标右键单出快捷菜单,选择 Show Connector,再次弹出快捷菜单,选择Patterns.下面我们通过一个练习说明具体操作.练习二:子VI的建立及调用步骤如下:1. 打开一个NEW VI2. 在前面板中放置一个Number control 控件(数据输入控件)和一个Number Indicator控件(数据显示),都在All controls>〉numberic模板下并把标签分别改为 X 和 X^6,如下图: 3. 后面板程序图如下图连接,这是一个计算X 的6次方程序(类似的方法,可以修正采集的数据哦) 4. 在前面板中,用鼠标右键单击窗口右上角的图标,在快捷菜单中选择 Edit Icon…。
也可以双击图标激活图标编辑器.注意只能在前面板中编辑图标和联接器5. 删除默认图标使用Select Tool(矩形框),单击并拖动想要删除的部分,按下〈Delete〉也可以通过双击工具框中的阴影矩形删除图标6. 用 Text Tool(文本工具) 创建文本(写好后可以用方向键移动文字在图标中的位置)得到图标将如下图所示7. 单击OK,关闭编辑器新创建的图标就显示在屏幕右上角的图标窗口中8. 用鼠标右键单击前面板中的图标窗口,在快捷菜单中选择Show Connector,设置联接器端子连接模式.在默认情况下,LabVIEW 会根据前面板中的控制对象和显示对象的数目确定联接器的端子连接模式因为前面板中有两个对象,所以联接器有两个端子,如右图所示用鼠标右键单击联接器窗口,在快捷菜单中选择Rotate 90 Degrees(旋转90度),注意联接器窗口的变化,如右图所示.9. 端子连接到X和X^6:a. 点击联接器左部端子.光标自动变成连线工具,同时端子变成黑色 单击X控件对象一个移动的虚线框把它包围起来,选中的端子的颜色变为与控制/显示对象的数据类型一致的颜色如果单击前面板中的任何空白区域以后,虚线消失,选中的端子变暗,这表示您已经成功地把显示对象和上部端子连接起来。
如果端子是白色,则表示没有连接成功 重复步骤a 和 b,把右部的端子和X^6连接起来c. 用鼠标右键单击联接器,在快捷菜单中选择Show Icon10. 选择 ,保存该 VI,保存名为X^6这样这个 VI 就完成了,并也可以作为子 VI被其他的VI调用.子VI 的图标在主 VI 的流程图中代表它11. 调用子VI新建一个New VI12. 在前面板中放置一个Number control 控件和一个Number Indicator控件,并把标签分别改为 X 和 X^6,如下图 13. 后面板操作在Functions>>All Functions>〉Select a VI ,选中并打开刚才保存的VI,并连接好线如下图: 14运行该程序练习二 结束1.3 使用三种图表模式目的:查看 VI 分别在三种模式下执行时图表的显示.练习三:建立前面板及流程图如下步骤:1在前面板放置chart(Controls>>All Controls>>Graph〉>Waveform chart)控件2在后面板放置Sine函数(Functions>〉All Functions>>Numberic〉>Trigonometric>>sine)及Wait Until Next ms Multiple 函数(Functions>〉All Functions>>Time&Dialog〉> Wait Until Next ms Multiple)并在左端子建立常数如100.最后放置while循环该程序中利用一个while循环产生连续的sin(i)函数值,并及时地在chart图表上显示出来,现在前面板上的chart是一个strip,这是一个坐标式显示器,与纸带式图表记录器相似。
每接受一个新数据,新数据就将显示在右侧,而原有数据移动到左侧3.用鼠标选中chart,点击右键,可在快速菜单中选择Advanced»Update Mode子菜单可以选择更换其他两种更新模式示波器模式是一个返回式的显示器,与示波器类似每接受一个新数据时,它就把新数据绘制在原有数据的右侧当数据曲线到达显示区的右边缘时,VI 会删除全部图形,从左边缘重新开始绘制曲线示波器模式显然要快于条状图模式,因为它不会因为滚动产生溢出 扫描模式更接近于示波器模式,但是当数据曲线到达显示区的右边时,不会变成空白,而是会出现一个移动的垂线,标记新数据的开始,并当VI添加新数据时穿过整个显示区练习三 结束第二讲 程序结构2.1 循环结构2.1.1 While循环While 循环可以反复执行循环体的程序,直至到达某个边界条件它类似于普通编程语言中的 Do 循环和 Repeat-Until 循环.While 循环的框图是一个大小可变的方框,用于执行框中的程序,直到条件端子接收到的布尔值为 FALSE.该循环有如下特点:计数从0开始(i=0).先执行循环体,而后i+1,如果循环只执行一次,那么循环输出值i=0循环至少要运行一次。
图4-1 While 循环示意图由于在练习一中已讲过While循环的应用,大家可以自己做下面的练习,其前面板和流程图如下图所示:2.11.1 移位寄存器(Shift Register)移位寄存器可以将数据从一个循环周期传递到另外一个周期在程序设计中,经常要用到它.创建一个移位寄存器的方法是,用鼠标右键单击循环的左边或者右边,在快捷菜单中选择 Add Shift Register如右图所示移位寄存器在流程图上用在循环边框上相应的一对端子来表示右边的端子中存储了一个周期完成后的数据,这些数据在这个周期完成之后将被转移到左边的端子,赋给下一个周期移位寄存器可以转移各种类型的数据-—数值、布尔数、数组、字符串等等它会自动适应与它连接的第一个对象的数据类型下图表示了它的工作过程.图2—3 Shift Register的工作过程可以令移位寄存器记忆前面的多个周期的数值这个功能对于计算数据均值非常有用.还可以创建其他的端子访问先前的周期的数据,方法是用鼠标右键单击左边或者右边的端子,在快捷菜单中选择Add Element例如,如果某个移位寄存器左边的端口含有三个元素,那么就可以访问前三个周期的数据.练习四 使用移位寄存器 目的:创建一个可以在图表中显示运行平均数的VI。
前面板1. 打开一个新的前面板,按照下图所示创建对象2. 把波形图表的坐标范围改为0.0到23. 在添加开关之后,用鼠标右键单击它,在快捷菜单中选择Mechanical Action»Latch When Pressed,再选择Operate»Make Current Values Default,把ON状态设置为默认状态.2.00.00.51.01.5500随机数BooleanONOFF 练习四 的前面板流程图1.按下图创建流程图练习四 的流程图2.在流程图中添加 While 循环(Functions»Structures),创建移位寄存器a. 用鼠标右键单击While循环的左边或者右边,在快捷菜单中选择Add Shift Registerb. 用鼠标右键单击寄存器的左端子,在快捷菜单中选择Add Element,添加一个寄存器用同样的方法创建第三个元素Random Number (0–1)函数(Functions»Numeric)——产生0到1之间的某个随机数.4Compound Arithmetic 函数(Functions»Numeric)—-在本练习中,它将返回两个周期产生的随机数的和。
如果要加入其他的输入,只需用右键单击某个输入,从快捷菜单中选择Add Input.5.除法函数(Functions»Numeric)-—在本练习中,它用于返回最近四个随机数的平均值6.数值常数(Functions»Numeric)——在While循环的每个周期,Random Number (0–1)函数将产生一个随机数VI就将把这个数加入到存储在寄存器中的最近三个数值中.Random Number (0–1)再将结果除以4,就能得到这些数的平均值(当前数加上以前的三个数)然后再将这个平均值显示在波形图中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,观察过程把该 VI 保存练习 四 结束附注:移位寄存器的初值: 上面的练习中对移位寄存器设置了初值0如果不设这个初值,默认的初值是0在这个例子中,一开始的计算结果是不对的,只有到循环完3次后移位寄存器中的过去值才填满,即第4次循环执行后可以得到正确的结果2.1.2 For循环For循环用于将某段程序执行指定次数和While 循环一样,它不会立刻出现在流程图中,而是出现一个小的图标,而后您可以修改它的大小和位置具体的方法是,先单击所有端子的左上方,然后按下鼠标,拖曳出一个包含所有端子的矩形.释放鼠标时就创建了一个指定大小和位置的For循环For循环将把它的框图中的程序执行指定的次数,For循环具有下面这两个端子:N: 计数端子(输入端子)——用于指定循环执行的次数.I: 周期端子(输出端子)-—含有循环已经执行的次数。
上图显示了一可以产生100个随机数并将数据显示在一个图表上的For循环.在该例中,i 的初值是0,终值是99练习五 使用For循环目的:用For循环和移位寄存器计算一组随机数的最大值1.打开一个新的前面板,按照下图创建对象.a.将一个数字显示对象放在前面板,设置它的标签为“最大值".b.将一个波形图表放在前面板,设置它的标签为“随机数”将图表的纵坐标范围改为0.0到1.0在图表的快捷菜单中选择Visible Items»Scrollbar和Digital Display,并隐藏Plot Legendd.用移位工具修改滚动栏的大小.(右键可以导出数据)练习五 的前面板和流程图2.按照上图画流程图在流程图中放置一个For循环(Functions»Structures).4在For循环的边框处单击鼠标右键,在快捷菜单中选择Add Shift Register5.将下列对象添加到流程图a.Random Number (0–1)函数(Functions»Numeric)——产生0到1之间的某个随机数b.数值常数(Functions»Numeric)-—在这个练习中需要将移位寄存器的初始值设成0。
c.Max&Min函数(Functions»Comparison)—-输入两个数值,再将它们的最大值输出到右上角,最小值输出到右下角.这里只需要最大值,只用连接最大值输出d.数值常数(Functions»Numeric)——For循环需要知道需要执行的次数.本练习中是100次按照上图连接各个端子7.运行该VI8.将该VI保存练习五 结束2.2 分支结构:CaseCase结构含有两个或者更多的子程序(Case),执行那一个取决于与选择端子或者选择对象的外部接口相连接的某个整数、布尔数、字符串或者标识的值.必须选择一个默认的Case以处理超出范围的数值,或者直接列出所有可能的输入数值Case结构见下图,各个子程序占有各自的流程框,在其上沿中央有相应的子程序标识:Ture、False或1、2、3…按钮用来改变当前显示的子程序(各子程序是重叠放在屏幕同一位置上的)子程序标识按钮条件端子练习六 使用 Case结构 目的:创建一个VI以检查一个数值是否为正数如果它是正的,VI就计算它的平方根,反之则显示出错前面板1 打开一个新的前面板,并按照下图所示创建对象控制对象用于输入数值,显示对象用于显示该数值的平方根.流程图2。
照下图创建流程图练习六的面板和流程图3. 从Functions»Structures中选择一个 Case结构,并放置在在流程图中 Case 结构是一个可以改变大小的方框先来做Ture的情况,照流程图上半部分构造 Greater Or Equal To 0? 函数(Functions»Comparison)——如果输入数值大于或者等于0就会返回一个TRUE值.b Square Root 函数(Functions»Numeric)—-返回输入数值的平方根连好线c 点击Case框的选择按钮,转入False情况编程数值常数(Functions»Numeric)——这里用于显示错误的代数值-999.00 One Button Dialog函数(Functions»Time & Dialog)——在 这里它用于显示一个对话框,内容是Error.... e. 字符串常数 (Functions»String)—-用Edit Text Tools在对话框中输入字符串该VI在TRUE或者FALSE情况下都会执行如果输入的数值大于等于0,VI会执行TRUE Case,返回该数的平方根,否则将会输出-999。
00,并显示一个对话框,内容为Error..返回前面板,运行该VI修改标签为Number的数字式控制对象的数值,分别尝试一个正数和负数注意,当把数字式控制对象的值改为负数时,LabVIEW会显示Case结构的FALSE Case中设置的出错信息 保存该 VI.VI 的算法本练习中的流程图功能相当于代码式编程语言中的下列伪代码:if (Number 〉= 0) thenSquare Root Value = SQRT(Number)elseSquare Root Value = -999.00Display Message "Error.. "end if 练习 六 结束.23 顺序结构和公式节点23.1 顺序结构(Sequence Structure)在代码式的传统编程语言中,默认的情况是,程序语句按照排列顺序执行,但LabVIEW中不同,它是一种图形化的数据流式编程语言在下图左图中,假设有A、B、C、D4个节点,其数据流向如右图所示按照数据流式语言的约定,顺序结构的说明任何一个节点只有在所有的输入数据有效时才会执行,所以图中,当且仅当A、B、C3个节点执行完,使得D节点的3个输入数据都到达D节点后,D节点才执行.但是你要注意,这里并没有规定A、B、C3个节点的执行顺序。
在LabVIEW中这种情况下,A、B、C的执行顺序是不确定的,如果你需要对它们规定一个确定的顺序,那就需要使用本节介绍的“顺序结构” 上图中的右边是顺序结构的图标,它看上去像是电影胶片它可以按一定顺序执行多个子程序.首先执行0帧中的程序,然后执行1帧中的程序,逐个执行下去与Case结构类似,这多帧程序在流程图中占有同一个位置练习 七 使用顺序结构 目的:创建一个 VI,计算生成等于某个给定值的随机数所需要的时间前面板打开一个新的前面板,并按照下图所示创建对象练习七的前面板我们约定数据是0到100范围的整数当前值用于显示当前产生的随机数.“执行次数”用于显示达到指定值循环执行的次数匹配时间用来显示达到指定值所用的时间流程图练习 七 的流程图(共3帧)1. 在流程图中放置顺序结构(Functions»Structures)2. 用鼠标右键单击帧的边框,在快捷菜单中选择Add Frame After,创建一个新帧重复这个步骤,再创建一个帧3. 选中第0桢,设置读取初始时间(子)程序4. 第0帧的下边框上含有一个小方框,其中有一个箭头这个方框叫做顺序局 部变量,可以在同一个顺序结构中的各个帧之间传递数据.用鼠标右键单击第0 帧的底部边框,选择Add Sequence Local,创建顺序局部变量。
顺序局部变量显示为一个空的方块当您将某个功能函数与顺序局部变量相连时,方块中的箭头就会自动显示5. Tick Count (ms) 函数(Functions»Time & Dialog)—-返回启动 到现在的时间(以毫秒为单位).在这里例子里需要使用两个这个函数另一个在第2帧中6. 按图连好线转入第1帧该帧是匹配计算,内含一个循环结构该图中使 用的新函数有:Round to Nearest函数(Functions»Numeric)——在该例中,它用于取0到100之间的随机数到距离最近的整数Not Equal?函数(Functions» Comparison)—-在该例中,它将随机数和前面板中设置的数相比较,如果两者不相等会返回TRUE值,否则返回FALSEIncrement函数(Functions»Numeric)—-在该例中,它将While循环的计数器加17. 按图连好线转入第2帧在第0帧中,Tick Count (ms)功能函数将以毫秒为单位表示当前时间这个数值被连到顺序局部变量,这样它就可以被后续的帧使用.在第1帧中,只要函数返回的值与指定值不等,VI就会持续执行While循环。
在第2帧中,Tick Count (ms)功能函数以毫秒为单位返回新的时间.VI从中减去原来的时间(由第0帧通过顺序局部变量提供)就可以计算出花费的时间.8. 返回前面板,在Number to Match控制对象中输入一个数值,执行该VI9. 把该VI保存练习 七 结束附注与说明:设置数据范围在设定一个数据对象时,可以设置对输入数据的限制,利用快捷键选择Data Range… 选项,将会出现如下对话框: 图 设置数据范围它可以防止用户创建的控制对象或显示对象的值超出某个预设的范围您可以选择忽略这个值,将它强制修改到范围以内,或暂停程序的执行在程序执行时,如果发生溢出错误,溢出错误符号将显示在工具栏中的执行按钮的位置而且,一个立体的黑框将把发生溢出的控制对象包围起来2.3.2 公式节点(Formula Node)公式节点是一个大小可变的方框,可以利用它直接在流程图中输入公式从Functions»Structures中选择公式节点就可以把它放到流程图中当某个等式有很多变量或者非常复杂时,这个功能就非常有用例如等式:y = x2 + x + 1使用公式节点可以表示为:公式节点示意图利用公式节点可以直接输入一个或者多个复杂的公式,而不用创建流程图的很多子程序。
使用文本编辑工具来输入公式.创建公式节点的输入和输出端子的方法是,用鼠标右键单击第0帧的底部边框,选择Add Input (Add Output).再在节点框中输入变量名称变量名对大小写敏感然后就可以在框中输入公式每个公式语句都必须以分号(;)结尾公式节点的帮助窗口中列出了可供公式节点使用的操作符、函数和语法规定一般说来,它与C语言非常相似,大体上一个用C写的独立的程序块都可能用到公式节点中.但是仍然建议不要在一个公式节点中写过于复杂的代码程序下面这个例子显示了如何在一个公式节点中执行不同条件时的数据发送请阅读下面这段程序代码,如果X为正数,它将算出X的平方根并把该值赋给Y,如果X为负数,程序就给Y赋值-99if (x >= 0) theny = sqrt(x)elsey = -99end if可以用公式节点取代上面这段代码,如下图所示:注意:公式节点中变量字母X,Y大、小写是有区别的,开方的函数sqrt(X)中函数名称是小写.练习 八 使用公式节点 目的:创建一个VI,它用公式节点计算下列等式:y1 = x 3 – x 2 + 5y2 = m* x + bx的范围是从0到10.可以对这两个公式使用同一个公式节点,并在同一个图表中显示结果。
前面板练习 八 的面板打开一个新的前面板,按照上图(该图中包含运行结果)创建前面板中的对象波形图显示对象用于显示等式的图形该 VI使用两个数字式控制对象来输入m和b的值.流程图按照下图创建流程图练习 八 的流程图在创建某个输入或者输出端子时,必须给它指定一个变量名这个变量名必须与公式节点中使用的变量名完全相符公式节点中,在边框上单击鼠标右键,在快捷菜单中选择Add Input,可以创建三个输入端子.在快捷菜单中选择Add Output,创建输出端子x的范围是从0到10(包括10),就必须连接11到计数端子Build Array (Functions»Array)—-在这个例子中,它用于将两个数据构成数组形式提供给一个多曲线的图形中通过用变形工具拖拉边角就可以创建两个输入端子.返回前面板,尝试给m和b赋以不同的值再执行该 VI把该VI保存练习 八 结束第三讲 数据类型:数组、簇和波形31 概述数组是同类型元素的集合一个数组可以是一维或者多维,如果必要,每维最多可有231-1个元素可以通过数组索引访问其中的每个元素.索引的范围是0到n – 1,其中n是数组中元素的个数图3-1所显示的是由数值构成的一维数组。
注意第一个元素的索引号为0,第二个是1,依此类推数组的元素可以是数据、字符串等,但所有元素的数据类型必须一致图3-1 数组示意图簇(Cluster)是另一种数据类型,它的元素可以是不同类型的数据它类似于C语言中的stuct使用簇可以把分布在流程图中各个位置的数据元素组合起来,这样可以减少连线的拥挤程度减少子VI的连接端子的数量波形(Waveform)可以理解为一种簇的变形,它不能算是一种有普遍意义的数据类型,但非常实用2 数组的创建及自动索引3.21 创建数组 一般说来,创建一个数组有两件事要做,首先要建一个数组的“壳”(shell),然后在这个壳中置入数组元素(数或字符串等).如果需要用一个数组作为程序的数据源,可以选择Functions»Array»Array Constant,将它放置在流程图中.然后再在数组框中放置数值常量、布尔数还是字符串常量.下图显示了在数组框放入字符串常量数组的例子左边是一个数组壳,中间的图上已经置入了字符串元素,右边的图反映了数组的第0个元素为:”ABC",后两个元素均为空图3-1 数组的创建在前面板中创建数组的方法是,从Controls模板中选择Array & Cluster,把数组放置在前面板中,然后选择一个对象(例如数值常量)插入到数组框中。
这样就创建了一个数值数组也可以直接在前面板中创建数组和相应的控制对象,然后将它们复制或者拖曳到流程图中,创建对应的常数.还有很多在流程图中创建和初始化数组的方法,有些功能函数也可以生成数组3.2.2 数组控制对象、常数对象和显示对象通过把数组与数值、布尔数、字符串或者簇组合在一起,可以在前面板和流程图中创建任何一种控制对象、常数对象和显示对象数组元素不能是数组、图表或者图形2.3 自动索引For循环和While循环可以自动地在数组的上下限范围内编索引和进行累计这些功能称为自动索引.在启动自动索引功能以后,当把某个外部节点的任何一维元素连接到循环边框的某个输入通道时,该数组的各个元素就将按顺序一个一个地输入到循环中.循环会对一维数组中的标量元素,或者二维数组中的一维数组等编制索引.在输出通道也要执行同样的工作――数组元素按顺序进入一维数组,一维数组进入二维数组,依此类推在默认情况下,对于每个连接到For循环的数组都会执行自动索引功能可以禁止这个功能的执行,方法是用鼠标右键单击通道(输入数组进入循环的位置),在快捷菜单中选择Disable Indexing练习 九 创建一个自动索引的数组目的:使用 For 循环的自动索引功能创建数组,并用一个图形(Graph)显示该数组.前面板图3-2 练习 九 的面板1. 打开一个新的前面板。
2. 选择Controls»Array & Cluster,在前面板中放置一个数组设置它的标签为Waveform Array3. 选择Controls»Numeric,在数组框中插入一个数字式显示对象如右图所示它用于显示数组的内容 选择Controls»Graph,在前面板中放置一个波形图.设置它的标签为Waveform Graph5. 隐藏图例和模板6. 用鼠标右键单击图形,并在快捷菜单中取消选中 Y Scale»Autoscale Y,禁止自动坐标功能7. 使用文本工具,把Y轴的范围改为-0.5到18. 按照下图创建流程图图3-2 练习 九 的流程图由Functions»Select a VI…寻找LabVIEW\activity目录下的Generate Waveform VI ,它的作用是返回波形中的某一点.这个VI需要输入一个索引,我们将循环周期连接到这个输入.注意Generate Waveform VI连出来的连线在循环边界变成一个数组时会变粗,正是在这个边界处形成了一维数组 For循环会自动累计边界内的数组这种功能叫做自动索引.在这个例子中,连接到循环计数输入的数值常数令For循环创建了一个由100个元素组成的数组.Bundle函数( Functions» Cluster)-—将图块中的各个组件组合成一个簇,在正确连接以前需要改变该函数的图标的大小。
将移位工具放在图标的左下角变形工具会变成如左图所示,拖曳鼠标直到出现第三个输入端子数值常数( Functions»Numeric)——三个数值常数用于设置For循环执行的周期数N=100,初始X=0和delta X=19. 从前面板执行该VI.该VI将把自动索引后的波形图数组显示在波形图中把 X的delta值改为0.5,X的初始值改为20再次执行该VI注意,波形图现在同样显示100个点,而每个点的初始值为20,X的delta值为0.5(见X轴)11.只需在显示器中输入元素的索引号就可以查看波形数组中的任何元素如果输入的数比数组的元素个数大,那么显示器将变暗,表示您没有为该元素设置索引.如果需要一次查看多个元素,可以通过改变数组显示对象的大小来实现 把定位工具放置在数组框的右下角工具将变成右图所示的变形工具当工具变形时,用鼠标拖曳数组的右边或者下边数组现在就可以按照元素索引的上升顺序显示多个素,以某个与指定索引对应的元素开始,如下图所示图3-3 练习 九 中多个数组元素的同时观察在前面的流程图中,您为波形图指定了初始的X值和delta X值默认的X初始值是0,delta X 值是1这样,也可以把波形数组直接连接到波形图端子, 而无需指定初始的X值和delta X值,如图3-4所示。
图3—4 练习 九使用默认X及Delta X时简化后的流程图12. 按上图删除 Bundle功能函数和它所连接的常数对象方法是用移位工具选择该功能函数和连接的常数对象,按下