版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第4章结构控制4.1循环结构4.2条件结构4.3事件结构4.4顺序结构4.5公式节点综合实训小结习题
LabVIEW中所有的结构都包含在“结构”子选板中,如图4-1所示。图4-1“结构”子选板
4.1循环结构
4.1.1For循环1.For循环建立“For循环”(ForLoop)是LabVIEW最基本结构之一。在程序框图中创建For循环方法:在函数选板中的“编程”(Program)下的“结构”(Structures)子选板中,用鼠标点击“For循环”图标,然后在程序框图窗口中需要创建的空白区域再单击鼠标,同时按住鼠标向右下角拖曳到合适大小即可,如图4-2所示。图4-2For循环的建立
图4-3所示为使用For循环索引随机数(RandomNumber)的程序,程序按照设定的总数执行了50次,即由波形图表显示出50个随机数图形,程序执行完毕,计数接线端输出显示为49。
图4-3使用For循环索引随机数的程序
2.For循环的数据通道及自动索引
For循环的数据通道(DataCommunication)是循环体内的数据与循环体外的数据(输入/输出)进行交换的通道,所有结构要通过数据通道才能和外部节点进行数据交换。数据通道位于边框上,其显示形式为小方格,小方格的颜色和数据类型的系统颜色一致,若为浮点数,则数据通道的颜色为橙色。
通道有输入数据通道和输出数据通道,以图4-4为例说明数据通道的创建方法:选择“连线工具”,将程序框图界面中数组常量连接至For循环左侧循环体边框后,系统会自动生成数据通道。该例中,连接到For循环的数组默认为能自动索引,即循环体边框外面的数组元素依次进入到循环边框内;若不需要索引,可以右击循环体边框上的数据通道,选择“禁用索引”(DisableIndexing)命令,则连接到循环体的数组默认为不能自动索引,如果需要自动索引;可以在数据通道上单击右键,选择“开启自动索引”(EnableIndexing)。“开启自动索引”时,数据通道的外观为空的矩阵符号[];“禁用索引”时,数据通道的外观为实心的方框。
图4-4所示为索引二维数组(2DArray)程序,程序中使用了两个嵌套的For循环;外层的For循环每执行一次则从输入的二维数组中索引出一行数组,里层的For循环则是每执行一次再从刚生成的一维数组(1DArray)中索引出一个数据元素。图中嵌套的两个For循环均未连接计数接线端,此时For循环执行的次数等于数组的长度,即循环一直执行至所有元素索引完毕为止。
图4-4使用For循环索引二维数组程序
图4-5所示为使用For循环生成二维数组程序,程序中也使用了两个嵌套的For循环:里层的For循环通过4次执行得到的循环数累积输出一个一维数组0~3;外层的For循环依次为这个数组中的各个元素加上当前循环计数,再将6次循环产生的6个一维数组累积成二维数组输出,输出结果同图4-4中的二维数组相同。
图4-5使用For循环生成二维数组程序
3.移位寄存器与反馈节点
1)移位寄存器
利用移位寄存器(ShiftRegister)可以把上一次循环中产生的数据传递到下一次循环。移位寄存器是成对出现的,分别出现在循环体边框的两个垂直边上。
移位寄存器创建方法:在循环边框上单击右键,从弹出快捷菜单中选择“添加移位寄存器”(AddRegister)可创建一对移位寄存器,如图4-6所示。也可以创建多个左侧移位寄存器,但是只能有一个右端口。添加左侧端口的方法有两个:一是在移位寄存器上单击右键,从快捷菜单选择“添加元素”(AddElement)来增加数据终端;二是直接对寄存器上的左侧端口进行拖曳。
图4-6添加移位寄存器
新创建移位寄存器出现在两个垂直边框上,是颜色为黑色的相对的端口,当将其连接到相应的数据上时,才会显示相应数据的颜色,如图4-7所示。图4-7用移位寄存器求随机数的最大值
2)反馈节点
前、后两次数据的交换,除使用移位寄存器实现外,还可以使用反馈节点来实现。当一次循环完成后,反馈节点会保存相应数据,并传递到下一次循环;即移位寄存器和反馈节点的功能是相似的,当For循环的边框太大时,使用移位寄存器会造成过长的连线,而反馈节点的优点在于可以节省掉过长的连线,使程序看上去更加简洁。
反馈节点位于函数选板中的“编程”下的“结构”子选板中,如图4-8所示。
图4-8自动创建反馈节点
4. For循环应用实例
例4-1使用For循环创建程序,完成从1~100这100个数相加求和,如图4-9所示。图4-91~100求和程序框图
解创建步骤如下:
(1)前面板窗口创建一个数值显示控件,在该控件上单击右键弹出快捷菜单,从“表示法”(Representation)中选择“I32”。
(2)创建一个For循环,为其设定的循环总数为100。
(3)添加一对移位寄存器,为左侧的端子赋初始值为0。
(4)添加“加法”(Add)函数,将该函数的一个输入端与移位寄存器的左侧输出端相连。
(5)将循环次数i接入“加1”(Increment)函数的输入端,并将“加1”函数的输出端连接至“加法”函数的另一个输入端。
(6)将“加法”函数的输出端与移位寄存器的右侧端子的输入端相连。
(7)将移位寄存器右侧端子的输出端与数值显示控件的接线端连接。
4.1.2While循环的组成
“While循环”(WhileLoop)是一种条件循环,循环会控制程序反复执行一段代码,直到某个条件成立发生为止。
1.While循环建立
建立While循环的方法与For循环是一样的,在函数选板的“编程”下的“结构”子选板中,单击鼠标选中“While循环”图标,然后在程序框图窗口中需要创建的空白区域再单击鼠标,同时按住鼠标向右下角拖曳到合适的大小即可,如图4-10所示。由图可见,循环框不是闭合的,并有代表重复执行的箭头。
图4-10While循环结构图
While循环有两个固定的接线端:计数接线端是一个输出接线端,它输出循环当前执行的次数,循环数是从0开始计数的;条件接线端是一个布尔量输入接线端,程序在每次循环结束时检查条件接线端,因此,布尔量的值将控制循环是否继续执行。“条件接线端”的条件有两种,这两种条件可以在端口上单击右键所弹出的快捷菜单中进行转换,如图4-11所示。条件接线端默认的状态为“真(T)时停止”(StopifTrue),即条件接线端的布尔量为“真”时退出循环,如图4-11(a)所示;如果将条件接线端的状态改为“真(T)时继续”(ContinueifTrue),则条件接线端的布尔量为“假”时退出循环,如图4-11(b)所示。如果条件接线端连接的是一个按钮,则按钮按下时循环停止。
图4-11While循环条件接线端
2. While循环应用实例
例4-2使用While循环创建程序,实现0~100这100个数相加求和。
解程序框图如图4-12所示。
创建步骤参考例4-1,这里稍有不同:
(1)创建一个While循环,其循环次数用一个“大于等于?”函数来确定,i≥100时退出循环。
(2)使用反馈节点代替移位寄存器。
运行该程序,前面板中显示控件的显示结果应为5050。
图4-121~100求和程序框图
4.2条件结构
“条件结构”(CaseStructure)类似于文本编程语言中的switch语句、ifelse语句或者case语句。条件结构包含两个或两个以上子程序框图,每个子程序框图中的一段程序代码对应一个条件分支,条件结构每次只能看到一个子程序框图,即每次程序运行时只选择其中的一个框图执行,执行其中的哪一个子程序框图是由输入值决定的。
4.2.1条件结构创建
条件结构的创建同循环结构相同,在函数选板的“编程”下的“结构”子选板中选择“条件结构”图标即可。条件结构由选择器标签(CaseSelectorLabel)、分支选择器(SelectorTerminal)和分支子程序框图组成,如图4-13(a)所示。
子框图的数量根据实际需要确定,下面举例说明如何将选择器与选择器标签相匹配。当枚举型控件连接到选择器接线端时,选择器标签会自动转换为两个字符串。当为该枚举型控件设定几个枚举型值后,在条件结构边框上单击右键,弹出的快捷菜单上选择“为每个值添加分支”(AddCaseForEveryValue)命令,就会增加到几个子程序框图,如图4-13(b)所示。图4-13条件结构选择器标签
需要注意的是,选择器接线端的数据类型必须与选择器标签中的数据类型一致,如果不一致,LabVIEW则会自动报错,同时选择器值中的字体颜色变为红色,提示必须修改,否则程序将无法执行。不同数据类型的条件结构如图4-14所示,其中布尔型条件结构如图4-14(a)所示,整型数条件结构如图4-14(b)所示,字符串型条件结构如图4-14(c)所示,枚举型条件结构如图4-14(d)所示。
图4-14不同数据类型的条件结构
4.2.2条件结构的数据输入和输出通道
当向“条件结构”内引入连线或从“条件结构”向外引出连线时,会在边框上生成隧道;当向“条件结构”隧道输入数据时,所有分支都可以使用该数据,所有的分支各个子程序框图连接或不连接这个数据的隧道都可以。但是从“条件结构”边框向外输出数据时,各个子程序框图都必须为这个隧道连接数据,否则会出现代码错误,程序无法运行。此时,输出隧道的图标是空心,表示部分分支中没有接入输入值。当每个分支的输出隧道都连接好数据时,输出隧道才会变为实心,程序才能正常运行。
4.2.3条件结构应用实例
例4-3求一个数的平方根,若该数大于等于0,则计算该数的平方根并输出计算结果;若该数小于0,则输出错误的数值为-9999。
解创建步骤如下:
(1)前面板窗口创建一个数值输入控件和数值显示控件。
(2)程序框图中创建一个条件结构,其子框图为“真”和“假”两个。
(3)将数值型输入控件的接线端与条件结构连接,生成隧道。
(4)使用“大于等于?”函数,将数值与0进行比较,该函数的输出端接入分支选择器。
(5)在“真”子框图中添加“平方根”函数,其输入端连接左侧隧道,输出端连接到“条件结构”右侧边框产生隧道。
(6)在“假”子框图中添加“数值常量”,并为其赋值 -9999。
运行该程序,前面板中显示控件的显示结果如图4-15所示。
图4-15例4-2前面板及程序框图
4.3事件结构
所谓事件,是指发生了某种事情的通知。事件可以来自于用户界面、外部I/O或者其他方式。LabVIEW支持两种来源的事件:(1)用户界面事件。(2)编程生成事件。
图4-16为事件结构,图中各部分含义为:
(1)事件超时接线端(TimeoutTerminal):用来设定超时时间,其接入数据是以毫秒为单位的整数值。
(2)选择器标签(SelectorLabel):标识当前显示的子框图所处理事件的事件源。
(3)事件数据节点(DataNode):为子框图提供所处理事件的相关数据,事件数据节点由若干个事件数据端子构成。
编辑事件结构的方法:在“事件结构”边框上单击右键弹出快捷菜单,如图4-17所示,选择“添加事件分支”(AddEventCase)选项,可以弹出“编辑事件”对话框,如图4-18所示。“编辑事件”对话框内包括事件说明符、事件源和事件三部分。
图4-17事件结构添加分支
图4-18“编辑事件”对话框
4.4顺序结构
4.4.1平铺式顺序结构1.平铺式顺序结构建立“平铺式顺序结构”(FlatSequenceStructure)位于函数选板“编程”下的“结构”子选板中,选择其下拉菜单中的“平铺式顺序结构”对象,拖至程序框图中,按住鼠标左键,向右下方拖动到所需大小后松开按键,即可创建一个平铺式顺序结构,如图4-19(a)所示。
新建好的平铺式顺序结构只有一帧,可以通过单击鼠标右键,在出现的快捷菜单中选择“在后面添加帧”(AddFrameAfter)选项或者“在前面添加帧”(AddFrameBefore)选项进行子框图的添加,通过拖动框图四周的箭头可以改变框图大小。添加好的顺序结构如图4-19(b)所示。
图4-19平铺式顺序结构
2.平铺式顺序结构数据传递
平铺式顺序结构中,两个帧之间的数据传递可以通过直接连线的方式来实现,连线经过两帧连接处时将产生一个小方块,称为隧道,数据通过隧道进行传输。如图4-20(a)所示,在第0帧创建了一个“字符串常量”(Stringconstant),连线经过第1帧直接传输到第2帧,运行之后输出显示为“LabVIEW”(如图4-20(b)所示)。
图4-20平铺式顺序结构数据传递
4.4.2层叠式顺序结构
1.层叠式顺序结构建立
在LabVIEW2015集成开发环境中,不能直接创建“层叠式顺序结构”(StackedSequenceStructure),但“层叠式顺序结构”可以通过“平铺式顺序结构”转换而来。在“平铺式顺序结构”对象中,单击鼠标右键,在出现的快捷菜单中选择“替换为层叠式顺序”(ReplacewithStackedSequence),即可创建“层叠式顺序结构”,如图4-21(a)所示。层叠式顺序结构添加帧的方法同平铺式顺序结构相同,但每次只能看到一个子框图,按照子框图0、1、2的顺序执行;单击顶部的顺序选择标识符左右两侧的箭头,可以增加或减少子框图的序号。图4-21(b)为添加好的层叠式顺序结构的每一个子框图。
图4-21层叠式顺序结构
2.层叠式顺序结构数据传递
在层叠式顺序结构中,两个帧之间的数据传递不能通过直接连线的方式来实现,必须要借助“局部变量”(LocalVariable)来实现。建立“局部变量”的方法是:在“顺序结构”的边框上单击鼠标右键,在弹出的快捷菜单中选择“添加顺序局部变量”(AddSequentialLocalVariables)选项,此时在弹出快捷菜单的位置会出现一个小方框,小方框的颜色会随传输数据类型的系统颜色发生变化。为这个小方框连接数据后,它的中间会出现一个指向顺序结构框的箭头,此时数据已经存储到顺序局部变量中。
图4-22(a)中,第0帧输入字符串创建了一个“字符串常量”,该常量存储于该子框图的顺序局部变量中,数据经过第1帧向第2帧传输时,此时第2帧必须也要创建顺序局部变量才能进行数据接收;创建后小方框中的箭头方向指向外,表明数据传输方向指向字符串显示控件,运行之后输出显示为“LabVIEW”,如图4-22(b)。
图4-22层叠式顺序结构数据传递
例4-4使用顺序结构实现由“随机数”函数产生0~1的随机数,计算出这些随机数的平均值达到0.5所用的时间,同时显示出随机数累加值、循环次数。
解该程序使用顺序结构来实现,这里选用“层叠式顺序结构”,该顺序结构共有3帧,每一帧具体编辑如下:
(1)第0帧中放置一个时间计数器。时间计数器返回计算机开机到当前的时间,时间单位为毫秒。
(2)第1帧中使用移位寄存器将连续产生的随机数进行累加,用累加值除以循环次数,则可得到这些随机数的平均值。将该平均值直接送入“判定范围并强制转换”(InRangeandCoerce)函数,比较它是否在0.5000~0.5001范围内,如果在此范围内,则退出循环。
(3)第2帧中放置一个时间计数器。用当前时间值减去程序开始运行的时间,即可得到程序运行所消耗的时间。
运行程序,观察前面板的显示结果,如图4-23所示。
图4-23例4-4的程序框图
4.5公式节点
在程序设计中,如果复杂的运算完全依赖于图形代码来实现,工作量会比较大,而且程序框图也会显得十分复杂、不直观,调试也不方便。LabVIEW提供了一种专门用于编辑、处理数学公式的结构形式,称为公式节点。在公式节点内,可以直接输入数学公式或者方程式,并连接相应的输入、输出端口。
公式节点适合于含有多个变量和较为复杂的方程,以及对已有代码的利用。可通过复制、粘贴的方式将已有的文本代码移植到公式节点中,无需通过图形化的编程语言再次创建相同的代码。
4.5.1公式节点的建立
在函数选板的“编程”下的“结构”子选板中,选择“公式节点”(FormulaNode)拖至程序框图空白处,按住鼠标左键,向右下方拖动到所需大小后松开按键,即可创建一个公式节点,如图4-24所示。
图4-24公式节点
4.5.2公式节点的编辑
公式节点中的代码看上去就像一小段C语言的程序。公式节点中也可以声明变量,可以使用C语言的语法,可以加语句注释,每个公式语句也是以分号结束。公式节点的变量可以与输入/输出接线端连线无关,但是变量不能有单位。
需要输入变量时,使用鼠标右键单击“公式节点”边框,在弹出的快捷菜单中,选择“添加输入”即可添加一个输入变量,选择“添加输出”即可添加一个输出变量。输入和输出变量位于节点框上,可以沿节点框四周移动,在变量中添加变量名,即可完成变量的定义。图4-25所示的公式节点中定义了“x”“m”“n”三个输入变量和一个输出变量“y”。使用鼠标右键单击变量,在弹出的快捷菜单中选择“删除”即可删除该变量。
例4-5如图4-25所示,使用公式节点完成数学运算,x>0,y = 2mx2 - 3nx + 1和x≤0,y = -mx2 + 2x - 3。图4-25使用公式节点完成数学运算
综合实训
1.前面板创建函数发生器程序的前面板如图4-26所示。
图4-26函数发生器程序的前面板
(1)打开一个新的前面板窗口。
(2)按题目要求添加控件到前面板。
①依次添加信号频率、采样频率、采样点数、幅度、相位、占空比等数值型输入控件对象。
②按图4-26所示添加两个布尔型控件。
③添加波形图表。
④添加信号源控件。
首先在枚举型控件中键入“正弦波”,然后在控件上单击右键,从弹出的下拉菜单中选择“在后面添加项”,如图4-27所示。重复此操作,直至三角波、方波和锯齿波全部键入。
图4-27信号源控件的项目添加
2.程序框图创建
函数发生器的程序框图如图4-28所示。图4-28函数发生器的程序框图
(1)条件结构包含有不同的程序,它仅仅执行所选定情况下的子程序。
(2)将信号源与条件结构相连,在缺省条件下,条件结构只有两种情况。在此例中信号源枚举控制包含四种元素,则必须添加两种以上情况到条件结构。即用鼠标右键点击条件结构并从弹出菜单中选择“在后面添加”重复执行上述操作,以得到所需的情况。
(3)关于采样频率的创建。首先在采样频率上单击右键,从弹出的下拉菜单中选择“创建”→“局部变量”,即可创建,但注意此时得到的函数是显示量,需要右键转化为输入量。
(4)添加波形发生器到条件结构的各个情况。单击子程序显示条两侧的增加或减少箭头,以在不同情况直接转换。
①添加正弦波VI到正弦波情况结构,从“信号处理”(SignalDispose)的“信号生成”(SignalGeneration)中选择“正弦波”(Sine)得到,如图4-29(a)所示。使用连线工具将“正弦波”的连线端点分别与采样
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年心理学基础测试题及答案
- 2022物流专员笔试专业知识考题带全版本答案
- 2024年食品厂IQC入职笔试题及答案
- 2025防止返贫动态监测信息员专项认证 历年真题+高频考点刷题包
- 2026年广州中考生物测试题及答案
- 2021年12月四级写作押题范文就是考试答案直接抄
- 2026年微生物细菌测试题及答案
- 普华永道寒假实习内推通道及笔面试真题合集
- 女方签了抚养费协议书
- 几个股东合作协议书
- 【普法教育】初高中主题班会:知法懂法做明理少年【课件】
- 索尼摄像机DCR-HC21E说明书
- 豪宅防水策划方案(3篇)
- 小红书电商学习中心 -新手小白也能上手的0-1起号策略
- 《义务教育数学课程标准(2022年版)》解读课件
- 脑血管介入科进修汇报
- 卡迪滚筒洗衣机 GO4 DF86说明书
- 部编版八下历史期末复习常考观点速记(新考向)
- 扶梯施工安装管理制度
- 铝锭居间合同协议
- 重症医学教材
评论
0/150
提交评论