版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第2章 程序结构第第2 2章章 程序结构程序结构2.1 循环结构循环结构 2.2 分支结构分支结构 2.3 顺序结构顺序结构 2.4 公式节点公式节点 习题习题2 第2章 程序结构 本章将系统介绍LabVIEW提供的程序结构,包括While Loop(While循环)、For Loop(For循环)、Shift Register(移位寄存器)、Case Structure(分支结构)、Sequence Structure(顺序结构)、Formula Node(公式节点)等。第2章 程序结构2.1 循循 环环 结结 构构在LabVIEW中有While循环 和 For循环 两种循环结构。二者的区别
2、是:While循环只要满足循环退出的条件则退出相应的循环,否则变成死循环;而For循环是预先确定循环次数,当循环体运行完指定的次数后自动退出循环。2.1.1 While循环循环While循环是LabVIEW最基本的结构之一。当不需要指定循环次数时,使用While循环。图2-1(a)所示为FunctionsExecution Control子模板,While循环是第一个模块;图2-1(b)所示为FunctionsStructures子模板,While循环在第二行的第二个模块。二者的不同之处在于,Execution Control子模板中的While循环的Loop Condition数据端子已经事
3、先连接了布尔型变量,用于控制何时退出循环。第2章 程序结构图2-1 While循环的位置第2章 程序结构建立While循环的方法是,在函数模板中的Structures子模板中选择While循环对象,把鼠标移动到框图上,鼠标指针变成缩小的While循环的样子,按下左键拖拽出虚线框,松开鼠标左键后,While循环放置完毕。While循环有两个固定的数据端子,分别是重复端子(Loop Iteration)和条件端子(Loop Condition)。重复端子表示当前循环的次数,初始值是0。条件端子连接一个布尔型变量,指示循环退出或循环继续的条件。具体的循环继续的条件有两种,即Stop if True
4、和Continue if True ,具体采用哪种方式可在条件端子上弹出的快捷菜单里指定,也可以使用操作工具在端子上单击鼠标,以切换两种不同的条件。条件不同,端子的图标也不同,默认是Stop if True。第2章 程序结构While循环可以进行嵌套。【例2.1】 使用While循环每0.5秒显示一个随机数和循环次数,最后波形显示所有随机数序列。VI的前面板和程序框图如图2-2所示,While循环条件端子与布尔开关对象相连,只要开关状态为“关”,程序重复执行,直到条件端子为“开”,停止循环。While循环框内放置一个随机数对象和Time Delay Express VI,每0.5秒循环一次,在
5、前面板显示随机数和循环次数,最后利用While循环的自动索引功能将随机数序列通过波形显示出来,可以看到,波形的横坐标表示循环次数,当循环次数为115时,随机数加1是1.38577。第2章 程序结构图2-2 例2.1的前面板和程序框图第2章 程序结构2.1.2 移位寄存器移位寄存器使用移位寄存器将上一次循环的值传给下一次循环。添加移位寄存器的方法是:在循环结构的左边或右边框上弹出快捷菜单,选择菜单项Add Shift Register,可以添加一个移位寄存器,如图2-3所示。新添加的移位寄存器由左、右两个端子组成,都是黑色边框、黄色底色,而且左、右端子分别有一个向下和向上的黑色黑色箭头。此时,表
6、明移位寄存器中没有接入任何数据没有接入任何数据。当接入某种数据后,移位寄存器的颜色会发生相应的变化,以反映接入第2章 程序结构数据的类型。连接到同一个寄存器端子的数据必须是同一类型连接到同一个寄存器端子的数据必须是同一类型的的。可以创建多个左侧移位寄存器,但只能有一个右端子可以创建多个左侧移位寄存器,但只能有一个右端子。添加左端子的方法是:用鼠标(定位工具状态)在左侧移位寄存器的最下边沿拖动,或在右键弹出快捷菜单中选择Add Element,如图2-4所示,这样在多个左端子中保留前面多次循环的数据值。在左端子上,最近一次循环保留在右端子的数据进入最上面的端子,原来的数据依次向下存放,最下面端子
7、中的数据被抛弃。建议为移位寄存器的左端子指定初始化值为移位寄存器的左端子指定初始化值。第2章 程序结构图2-3 为While循环添加移位寄存器第2章 程序结构图2-4 添加多个左侧移位寄存器第2章 程序结构图2-5 移位寄存器中数据的操作流程第2章 程序结构删除该寄存器端子:在移位寄存器的端子弹出快捷菜单,选择Remove Element命令可以删除该寄存器端子,这种方法无论所要删除的左端子是否连有数据都可以。另外一种方法是使用定位工具拖拽整个左端子队列的最上沿(向下拖)或者最下沿(向上拖)。在拖的过程中,若遇到连接数据线的端子,则只能拖到此处。左侧移位寄存器除了初始化时可以输入数据外,其他情
8、况只能输出数据,而右侧移位寄存器除了在循环结束时输出数据外,其他情况只能输入数据。 第2章 程序结构【例2.2】 利用移位寄存器显示多个数据,理解数据在移位寄存器中的工作流程。VI的前面板和程序框图如图2-6所示,在While循环中使用移位寄存器访问前三次的循环值。Ni表示循环次数,此值在下一次循环开始传给左端子。Ni-1表示前一次循环的值,Ni-2表示前两次循环的值,Ni-3表示前三次循环的值。由于While循环重复端子的初始值为0,步长为1,因此前面板数字指示器按照逐渐递增的顺序依次显示。第2章 程序结构图2-6 例2.2的前面板和程序框图第2章 程序结构2.1.3 For循环循环For循
9、环位于FunctionsStructures子模板上。For循环有两个固定的数据端子,分别是计数端子(Loop Count)和重复端子(Loop Iteration),如图2-8所示。其中计数端子连接整型数值,指定循环次数;重复端子输出已经执行循环的次数,循环次数默认从“0”开始计数,依次增加“1”。【例2.3】 利用For循环计算100个随机数的最大值。VI的前面板和程序框图如图2-9所示。随机发生的数和前面循环得到的最大值依次比较,循环100次,比较得到01之间的最大值。在前面板显示100个随机数形成的曲线图和最大值。第2章 程序结构图2-7 For循环的位置 第2章 程序结构图2-8 F
10、or循环的计数端子和重复端子 第2章 程序结构图2-9 例2.3的前面板和程序框图第2章 程序结构2.1.4 反馈节点反馈节点反馈节点(Feedback Node)用于将子VI、函数或一组子VI和函数的输出连接到同一个子VI、函数或组的输入上,即创建反馈路径。反馈节点只能用在While循环或For循环中,它和只有一个左端子的移位寄存器的功能完全相同,是一种更简洁的表达方式。移位寄存器和反馈节点之间的转换很容易。在移位寄存器的左或右端子上弹出快捷菜单,选择Replace with Feedback Node,即可转变为同样功能的反馈节点;在反馈节点本身或者其初始化端子上弹出快捷菜单,选择Repl
11、ace with Shift Register,即可转变为同样功能的移位寄存器。如图2-10所示,先建立图(a),然后把移位寄存器转换为反馈节点就得到图(b)。第2章 程序结构图2-10 移位寄存器和反馈节点转换 (a)(b)第2章 程序结构2.2 分分 支支 结结 构构分支结构(Case Structure)是一种多分支程序控制结构,类似于文本编程语言中的IfThenElse语句。分支结构包含多个子框图代码,这些子框图就像一叠卡片,一次只能看见一张。分支结构位于FunctionsExecution Control子模板和FunctionsStructures子模板上,如图2-11所示。与Fo
12、r循环和While循环结构的使用一样,通过拖拽Case结构图标将其放置在框图上,并使其边框包围所希望的对象;也可以先将Case结构放置在框图上,然后根据需要调整大小并将对象放到结构内部。第2章 程序结构第2章 程序结构图2-11 分支结构的位置第2章 程序结构分支结构左边框图上有一个输入端子,中心显示问号,称做选择器端子(Selector Terminal);上边框是分支选择器标签(Case Selector Label)。选择器端子的数据类型可以是布尔型、字符串型、整型或枚举型。默认的选择器端子为布尔类型默认的选择器端子为布尔类型,即LabVIEW自动生成两个子框图,标签分别为True和Fa
13、lse,如图2-12所示。当选择端子为数字整型时,分支选择器标签的值为整数0,1,2,;当选择端子为字符串型或枚举类型时,分支选择器标签的值为由双引号括起来的字符串。选择框架的个数根据实际需要确定,如图2-13所示。第2章 程序结构图2-12 分支结构的组成及默认状态第2章 程序结构图2-13 不同类型的分支结构第2章 程序结构注意,在使用选择结构时,控制端子的数据类型必须与分支选择器标签中的数据类型一致。二者如果不匹配,LabVIEW会报错,同时,分支选择器标签中的字体颜色变为红色。分支结构子框图是层叠在一起的,用鼠标(对象操作工具状态)单击分支选择器标签递增或递减按钮可以将当前的选择框架切
14、换到前一个或后一个选择框架;单击标签右端的向下黑色箭头,弹出所有已经定义的标签列表,可以在多个子框图之间快速跳转。如图2-14所示,当前显示的框图分支对应的标签前有“”标记。 第2章 程序结构图2-14 多个子框图之间切换 第2章 程序结构2.2.1 添加、删除和排序分支添加、删除和排序分支在分支结构边框上弹出的快捷菜单为用户提供很多选项,如图2-15所示。选择Add Case After(在后面添加分支)或Add Case Before(在前面添加分支)可以在当前显示的分支的后面或前面添加分支;选择Duplicate Case(副本分支)可以复制当前显示的分支;选择Delete Case可以
15、删除当前显示的分支;选择Remove Empty Cases可删除所有不包含代码的空分支。当添加或删除Case结构中的分支时,框图标识符自动更新以反映出插入或删除的子框图。我们习惯看到分支的顺序是从小到大依次排列,但有时会出现2、5、3、4、1的排序,这样,我们可以重新排序。重新排序后,框图结构的分支显示不会影响Case结构的运行结构,第2章 程序结构仅仅是编程上的习惯。在弹出的快捷菜单中选择Rearrange Cases(重排分支),弹出图2-15所示的对话框。为了改变选择器的位置,单击要移动的选择器值(当选中时该值加亮)并将其拖拽到列表中所希望的位置。Sort按钮将以第一个选择器值为基准对
16、分支选择器值进行排序。在LabVIEW的分支结构中,如果结构不能遍历所有可能的条件或情况,就必须设置一个默认的情况用来处理超出条件选设置一个默认的情况用来处理超出条件选项范围的情况项范围的情况。设置默认Case分支的方法是:当显示默认子Case框图时,在分支结构边框上弹出快捷菜单中选择Make This Default Case项。对于用户定义的默认分支,将在Case结构顶部的选择器标签中显示“Default”字样。 第2章 程序结构图2-15 在Case结构中添加、删除和排序分支第2章 程序结构2.2.2 输入和输出数据输入和输出数据向Case结构内引入连线,或从Case结构向外引出连线时,
17、会在边框上生成隧道。输入隧道的数据对所有分支都可以使用。分支不一定要使用输入数据或提供输出数据,但如果任何一个分支提供了输出数据,则所有的分支也必须提供输出数据,否则会导致代码错误,程序无法运行。此时,输出隧道的图标是空心的,表示部分分支中没有接入输入值。只有每个分支的输出隧道都连接数据后,图标才变成实心,程序才能正常运行。如果不想为每个分支都明确指定输出隧道的输入值,可以让LabVIEW为没有接入隧道输入值的分支接入隧道的默认数据类型,方法是在输出隧道上右键弹出快捷菜单,选择Use Default If Unwired,如图2-16所示。第2章 程序结构图2-16 在输出隧道没有接入数据的分
18、支采用默认值第2章 程序结构【例2.4】 求一个数的平方根,若该数大于或等于0,则计算其平方根,并输出结果;若该数小于0,则让系统产生蜂鸣。本例中使用布尔型Case结构,由前面板数字控制器输入数字,若该数大于或等于0,则由数字显示器显示该数的平方根,否则发出蜂鸣声。VI的前面板和程序框图如图2-17所示。VI执行TRUE分支或FALSE分支,当输入的数据大于或等于0时,VI执行TRUE分支并将计算结果显示到前面板;当输入的数据小于0时,系统发出蜂鸣声。从图上看到输入“-5”,输出的是“0”,这是因为对于FALSE分支的输出端选择了Use Default If Unwire。另外,Beep.vi
19、在vi.libplatformsystem.lib库中。第2章 程序结构图2-17 例2.4的前面板和程序框图第2章 程序结构2.3 顺顺 序序 结结 构构顺序结构(Sequence Structure)顺序地执行每个子框架,包括层叠的顺序结构(Stacked Sequence Structure)和平铺的顺序结构(Flat Sequence Structure)两类。平铺的顺序结构位于FunctionsExecution Control子模板上。两种顺序结构都能从FunctionsStructures子模板上找到,见图2-11。2.3.1 层叠的顺序结构层叠的顺序结构层叠的顺序结构的表现形式
20、与Case结构很相似,都是在框图窗口的同一位置层叠多个子框架。刚创建的顺序结构是单框架顺序结构(见图2-18),只能执行一步操作,起不到控制多个代码段顺序执行的作用。顺序结构执行的过程好像逐帧放第2章 程序结构电影一样,所以LabVIEW中顺序结构的每个子框架都称为一个帧(frame)。在单框架的基础上创建多框架顺序结构。方法是:在顺序结构边框上弹出快捷菜单中选择Add Frame After或Add Frame Before,在当前帧的后面或前面添加一个空白帧,如图2-19所示。另外,Add Sequence Local选项为顺序结构添加局部变量(关于局部变量见第8章);Remove Seq
21、uence移除顺序结构,同时保留当前帧代码;Duplicate Frame是对当前帧进行复制,并把复制的结果作为新的一帧放到当前帧的后面;Delete This Frame是删除当前帧,只有一帧的时候此项不能用,如图2-19(a)所示,只有一帧时,Delete This Frame为不可选项。第2章 程序结构图2-18 刚创建时的层叠的顺序结构第2章 程序结构(a) (b)图2-19 添加多个帧第2章 程序结构最基本的顺序结构由顺序框架和选择器标签组成,如图2-19(b)所示,选择器标签的内容是10.2,表示该顺序结构含有第0到第2帧共3帧,并且第1帧是当前帧。选择器标签左右的两个箭头分别为减
22、量按钮和增量按钮,用于浏览全部帧。单击向下黑色箭头打开帧列表,可以实现多个帧之间的切换。程序运行时,顺序结构是按照选择器标签中0、1、2、的顺序依次执行框架中的代码。2.3.2 平铺的顺序结构平铺的顺序结构平铺的顺序结构的功能和用法与层叠的顺序结构基本相同,区别是表现形式不同。最初建立的平铺顺序结构也只有一帧,通过添加帧后的形式如图2-20所示。新添加的帧宽度比较小,拖拽边框可以改变其大小。第2章 程序结构图2-20 为平铺的顺序结构添加帧第2章 程序结构平铺的顺序结构把按照顺序执行的帧从左到右依次铺开,占用的空间比较大,而层叠的顺序结构节省框图窗口空间。而平铺的顺序结构优点是,在帧数不多时,
23、将各个帧平铺开来比较直观,方便阅读代码。平铺的顺序结构和层叠的顺序结构的另一个区别是不能添加局部变量,可以从前一帧直接连线到后一帧来传递数据,不需要借助局部变量这种机制传递数据。在图2-20给出的层叠的顺序结构边框上弹出快捷菜单,选择Replace-Replace with Flat Sequence可以转换为图2-21的平铺顺序结构,反之亦可。我们可以看到帧1的输出数据直接穿过帧壁传送到帧2,帧2的计算结果通过帧壁传送给帧3,不需要引入局部变量传送数据。 第2章 程序结构图2-21 平铺顺序结构 第2章 程序结构【例2.5】 将随机产生的数值与给定数值比较,计算当两数相等时所需的时间。该例是
24、顺序结构的典型应用。第一帧确定程序运行前的系统时间;第二帧运行程序;第三帧确定程序运行结束后的系统时间;最后两时间相减得到程序运行的时间。采用层叠的顺序结构,VI的前面板和程序框图如图2-22所示。帧0和帧2中采用Tick Count(ms)函数,该函数位于Time & Dialog子模版上,用于返回当前系统时间,以毫秒为单位。采用局部变量将程序运行前的时间传递给帧2与当前时间相减的差值就是随机数与给定数据相等时所花费的时间,结果除以1000,将时间单位转换为秒,在前面板显示。第2章 程序结构图2-22 例2.5的前面板和程序框图第2章 程序结构【例2.6】 利用平铺的顺序结构实现例2
25、.5的功能。框图程序如图2-23所示,平铺的顺序结构没有局部变量,需要向后续的帧传递数据时,只需要将数据直接连接到后续帧中即可。第2章 程序结构图2-23 例2.6的框图程序第2章 程序结构2.4 公公 式式 节节 点点一些复杂的算法如果完全依赖于图形代码实现,框图程序会十分复杂,工作量大,而且不直观,调试和改错也不方便。LabVIEW提供了一种专门用于处理数学公式编辑的特殊结构形式,称为公式节点(Formula Node)。在框架内,可以直接输入数学公式或者方程式,并连接相应的输入、输出端口。公式节点位于FunctionsStructures子模板上,见图2-11。从节点边框上弹出快捷菜单中选择Add Input或Add Output创建输入变量和输出变量端口,并使用标签工具为每个变量命名,如图2-24所示。第2章 程序结构变量名有大小写之分,必须与公式中的变量匹配。输出变量的边框比输入变量宽一些,通过从快捷菜单中选择Change to Output或Change to Input可选择输出或输入,同时也可在公式节点的边框上添加多个变量。输入公式时,每个公式一定要用分号结束;若有很多公式,可以从公式节点(不是边框)弹出快捷菜单中选择Visible It
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 垂体危象与垂体卒中讲课课件
- 21、《槐乡五月》第二课时
- 初二年级期中考试家长会教学案例
- 二零二五年网络零售商合作协议样本2篇
- 新教材高考地理一轮复习课时作业二十四城镇化课件新人教版
- 水利工程合同管理制度
- 黄金投资入门教学教案
- 九年级物理全册192家庭电路中电流过大的原因课件新版新人教版
- 《科幻小说赏析与写作》 课件 -第四章 “生命奇迹”的重述与复魅-《弗兰肯斯坦》
- 二零二五年矿产品资源整合开发合作协议书3篇
- 工程管理中心管理制度
- 下套管危害识别和风险评估
- 翼状胬肉病人的护理
- GB/T 12914-2008纸和纸板抗张强度的测定
- GB/T 1185-2006光学零件表面疵病
- ps6000自动化系统用户操作及问题处理培训
- 家庭教养方式问卷(含评分标准)
- 城市轨道交通安全管理课件(完整版)
- 线缆包覆挤塑模设计和原理
- TSG ZF001-2006 安全阀安全技术监察规程
- 部编版二年级语文下册《蜘蛛开店》
评论
0/150
提交评论