版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
一、循环结构1、While循环2、For循环二、分支结构三、顺序结构四、公式节点五、事件结构六、变量七、定时循环章程序结构2021/6/271一、循环结构1、While循环2、For循环2021/6/272
While循环示意图2021/6/273While循环创建创建方法:选中→单击左键→拖动→释放左键While循环结构2021/6/274While循环结构说明1、重复端子:用于记录和输出已执行的循环的次数,2、条件端子:循环是否终止的条件端子。i的初始值为零。输入的是一个布尔变量:真或假,While循环将一直执行到连接条件端子上的布尔值变成真或假为止,取决于条件端子设置为“真(T)时停止”还是“真(T)时继续”。2021/6/275
3、在条件端子上单击右键即可进行更改。如图:4、While循环是一种框图上的容器对象,即其内部可循环嵌套。2021/6/276
While循环框图内添加代码,有两种方法:1、结构创建好后添加代码;2、在已有程序代码的基础上添加结构。2021/6/277While循环运行流程While循环可以反复执行循环体的程序,直至到达某个边界条件。它类似于普通编程语言中的Do循环。While循环的框图是一个大小可变的方框,用于执行框中的程序,直到条件端子接收到的布尔值为FALSE。该循环有如下特点:(1)计数从0开始(i=0)。(2)先执行循环体代码,而后i+1,如果循环只执行一次,那么循环输出值i=0。(3)根据条件端子进行判断是否继续循环。(4)While循环中的代码至少要运行一次。
2021/6/278While循环运行流程While循环运行流程类似于如下的文本语言的伪代码:DO
执行子框图While条件判断的结果为继续循环2021/6/279例:利用While循环产生随机数,当产生的随机数大于0.8时,循环停止。步骤如下:
1.打开前面板,新建两个数值显示控件,一个为循环次数,一个显示最后产生的那个大于0.8的随机数。如图:2021/6/27102.切换到程序框图,放置一个While循环,如左图:3.放置随机数函数到While循环内,并连线,如右图:
2021/6/27114.放置比较函数,将循环次数与重复端子连线,如左图:5.运行,即可在前面板上看到结果,如右图:2021/6/2712在程序框图中,在数值显示控件上单击右键,可更改数值的类型,如图:2021/6/2713注意:While循环的条件端子一定要有连线,否则程序无法运行!如图:
2021/6/2714作业:练习3-12021/6/27152、For循环For循环用于将某段程序执行指定次数。和While循环一样,它不会立刻出现在流程图中,而是出现一个小的图标,而后您可以修改它的大小和位置。具体的方法是,先单击所有端子的左上方,然后按下鼠标,拖曳出一个包含所有端子的矩形。释放鼠标时就创建了一个指定大小和位置的For循环。2021/6/27162、For循环
For循环位于函数→编程→结构→For循环,如前图:从图中可以看到,For循环将把它的框图中的程序执行指定的次数,For循环具有下面这两个端子:N:计数端子(输入端子)——用于指定循环执行的次数。I:重复端子(输出端子)——含有循环已经执行的次数。上图显示了一可以产生100个随机数并将数据显示在一个图表上的For循环。在该例中,i的初值是0,终值是99。
2021/6/2717For循环举例:产生10个随机数,并把最后一个显示出来。步骤如下:
1.放置一个数值显示控件到前面板,并改名为随机数。
2.放置For循环到程序框图,如图:2021/6/27183.放置随机数函数到程序框图,并连线。4.计数端子上单击右键,选择创建常量,并输入10,如图:
2021/6/27195.运行程序,便可在前面板上看到结果。6.因为程序的运行的速度非常快,我们无法一个一个地看清所产生的10个随机数,我们可以在程序框图中添加时间延迟控件。它位于函数→编程→定时→时间延迟,如图:2021/6/27207.放置它到程序框图上,选择延迟的时间,即两次循环之间的时间间隔。如图:
8.将时间设置为1.000,点击确定即可,再运行程序就可从前面板上看到所产生的随机数了。
2021/6/2721练习3-2使用For循环2021/6/2722循环结构内外数据交换采用:隧道建立隧道方法。自动索引,针对数组而言。2021/6/27233、移位寄存器移位寄存器用于For循环或While循环中从一个迭代传输数据到下一个迭代,它由循环垂直边框上一对反向相反的端子组成。添加方法:在边框上单击右键,选择添加移位寄存器,就可进行添加。如图:右端子(带向上箭头的矩形)在每完成一次迭代后存储数据,移位寄存器将上次迭代的存储数据在下一次迭代开始时移动到左端子(具有向下箭头的矩形)上。2021/6/2724移位寄存器可存储任何数据类型,包括数字,布尔,字符串和数组,但连接到同一个寄存器端子上的数据必须是同一类型。移位寄存器的类型与第一个连接到其端子之一的对象数据类型相同。2021/6/2725下面是1+2+3+4+…+100的程序,如图:说明:进行第一次运算的是0+0,For循环中的重复端子是从0开始计数,移位即寄存器在没有初始化的情况下,默认的数值是0,所以第一次运算的是0+0,第二次运算的是寄存器的0与重复端子的1相加,所以循环要进行101次。而计数端子输出的数据始终是101。2021/6/2726移位寄存器的初始化移位寄存器的初始化是非常必要的,因为只要用户不退出VI,移位寄存器便可记录上次运算完时的结果,所以上面的程序在第二次执行时输出的结果不是5050,而是10100!添加初始化即可,如图:2021/6/2727例:计算1+2!+3!+4!+……+n!在前面板上放置一个数值输入控件“阶次n”和一个数值显示控件“求和结果”在程序框图上放置两个For循环嵌套结构,外层循环的计数端口与“阶次n”连接,输出是各个数的阶乘所组成的一个数组。它的重复端子加1作为内层循环的循环次数,内层循环利用一个移位寄存器实现阶乘运算,移位寄存器的初始值设为1。同样在程序框图的右边在放置一个For循环结构,它的计数端子没有任何连接数据,使用的是自动索引功能。这个循环的作用是对由阶乘所组成的一个数组进行索引,对索引出的各个元素进行求和计算,最后将计算结果输出给“求和结果”。2021/6/2728完成连线,如右图:运行结果,如右图:
2021/6/27294、反馈节点反馈节点和只有一个左端子的移位寄存器的功能相同,同样用于在两次循环之间传递数据。它是一种更简洁的表达方法。(P66)2021/6/2730二、分支结构:CaseCase结构含有两个或者更多的子程序(Case),执行哪一个取决于与选择端子或者选择对象的外部接口相连接的某个整数、布尔数、字符串或者标识的值。必须选择一个默认的Case以处理超出范围的数值,或者直接列出所有可能的输入数值。Case结构见下图,各个子程序占有各自的流程框,在其上沿有相应的子程序标识:Ture、False或1、2、3…。按钮用来改变当前显示的子程序(各子程序是重叠放在屏幕同一位置上的)。2021/6/27311、分支结构的组成子框图区域按钮条件端子(选择器端子)
条件端子相当于C语言的switch后面的变量,每个分支按钮标签相当于case后的常量表达式。2021/6/2732Case结构举例目的:创建一个VI以检查一个数值是否为正数。如果它是正的,VI就计算它的平方根,反之则显示出错。1.打开一个新的前面板,并按照下图所示创建对象。控制对象用于输入数值,显示对象用于显示该数值的平方根。2.照下图创建流程图。
2021/6/27332021/6/27343.从Functions»Structures中选择一个Case结构,并放置在在流程图中。Case结构是一个可以改变大小的方框。先来做Ture的情况,照流程图上半部分构造。(1)GreaterOrEqualTo0?函数(Functions»Comparison)——如果输入数值大于或者等于0就会返回一个TRUE值。(2)SquareRoot函数(Functions»Numeric)——返回输入数值的平方根。(3)连好线(4)点击Case框的选择按钮,转入False情况编程(5)数值常数(Functions»Numeric)——这里用于显示错误的代数值-999.00。(6)OneButtonDialog函数(Functions»Time&Dialog)——在这里它用于显示一个对话框,内容是Error...。(7)字符串常数(Functions»String)——用EditTextTools在对话框中输入字符串。2021/6/2735(8)该VI在TRUE或者FALSE情况下都会执行。如果输入的数值大于等于0,VI会执行TRUECase,返回该数的平方根,否则将会输出-999.00,并显示一个对话框,内容为Error...。4.返回前面板,运行该VI。修改标签为Number的数字式控制对象的数值,分别尝试一个正数和负数。注意,当把数字式控制对象的值改为负数时,LabVIEW会显示Case结构的FALSECase中设置的出错信息。5.保存该VI到LabVIEW\Activity目录中的SquareRoot.vi。2021/6/2736本练习中的流程图功能相当于代码式编程语言中的下列伪代码:if(Number>=0)thenSquareRootValue=QRT(Number)elseSquareRootValue=-999.00DisplayMessage"Error.."endif2021/6/2737三、顺序结构顺序结构类似C语言的goto语句,它是一种图形化的数据流式编程语言。在下面的左图中,假设有A、B、C、D4个节点,其数据流向如下图所示。按照数据流式语言的约定,任何一个节点只有在所有的输入数据有效时才会执行,所以图中,当且仅当A、B、C3个节点执行完,使得D节点的3个输入数据都到达D节点后,D节点才执行。
2021/6/2738顺序结构但是你要注意,这里并没有规定A、B、C3个节点的执行顺序。在LabVIEW中这种情况下,A、B、C的执行顺序是不确定的,如果你需要对它们规定一个确定的顺序,那就需要使用本节介绍的“顺序结构”。右图是顺序结构的图标,它看上去像是电影胶片。它可以按一定顺序执行多个子程序。首先执行0帧中的程序,然后执行1帧中的程序,逐个执行下去。与Case结构类似,这多帧程序在流程图中占有同一个位置。2021/6/2739顺序结构
1、堆叠顺序结构:与case结构相似,都是在框图窗口的同一位置堆叠多个子框图。每个子框图都有自己的序号,执行时,按照序号从小到大逐个执行,最小序号是0,每个子框图称为一个帧。
优点:节省框图窗口空间。
2、平铺顺序结构:可实现堆叠顺序结构同样的功能,其区别在于表现形式不同。
优点:当帧数不多时,把每个帧平铺,比较直观,方便代码阅读。
3、添加局部变量:在堆叠顺序结构中,用添加局部变量的方法,使接入该变量的数据在当前帧后面的各个帧中可以作为输入数据使用。平铺顺序结构可以不添加局部变量,因为每个帧都是可见的,不需要借局部变量机制在帧之间传送数据。2021/6/2740例题:创建一个VI,计算生成等于某个给定值的随机数所需要的时间。1、打开一个新的前面板,并按照下图所示创建对象。假设约定数据是0到100范围的整数。当前值用于显示当前产生的随机数。“执行次数”用于显示达到指定值循环执行的次数。匹配时间用来显示达到指定值所用的时间。2021/6/2741流程图2021/6/27421、在流程图中放置顺序结构(Functions»Structures)。
用鼠标右键单击帧的边框,在快捷菜单中选择AddFrameAfter,创建一个新帧。重复这个步骤,再创建一个帧。共3桢。
2、选中第0桢,设置读取初始时间(子)程序。第0帧的下边框上含有一个小方框,其中有一个箭头。这个方框叫做顺序局部变量,可以在同一个顺序结构中的各个帧之间传递数据。
用鼠标右键单击第0帧的底部边框,选择AddSequenceLocal,创建顺序局部变量。
顺序局部变量显示为一个空的方块。当您将某个功能函数与顺序局部变量相连时,方块中的箭头就会自动显示。
TickCount(ms)函数(Functions»Time&Dialog)——返回启动到现在的时间(以毫秒为单位)。在这里例子里需要使用两个这个函数。另一个在第2帧中。2021/6/27433、按图连好线。转入第1帧。该帧是匹配计算,内含一个循环结构。该图中使用的新函数有:
RoundtoNearest函数(Functions»Numeric)——在该例中,它用于取0到100之间的随机数到距离最近的整数。
NotEqual?函数(Functions»Comparison)——在该例中,它将随机数和前面板中设置的数相比较,如果两者不相等会返回TRUE值,否则返回FALSE。
Increment函数(Functions»Numeric)——在该例中,它将While循环的计数器加1。
4、按图连好线。转入第2帧
在第0帧中,TickCount(ms)功能函数将以毫秒为单位表示当前时间。这个数值被连到顺序局部变量,这样它就可以被后续的帧使用。
在第1帧中,只要函数返回的值与指定值不等,VI就会持续执行While循环。在第2帧中,TickCount(ms)功能函数以毫秒为单位返回新的时间。VI从中减去原来的时间(由第0帧通过顺序局部变量提供)就可以计算出花费的时间。
5、返回前面板,在NumbertoMatch控制对象中输入一个数值,执行该VI。2021/6/2744四、公式节点(FormulaNode)公式节点是一个大小可变的方框,可以利用它直接在流程图中输入公式。从Functions»Structures中选择公式节点就可以把它放到流程图中。当某个等式有很多变量或者非常复杂时,这个功能就非常有用。例如等式:y=x2+x+1使用公式节点可以表示为:利用公式节点可以直接输入一个或者多个复杂的公式,而不用创建流程图的很多子程序。使用文本编辑工具来输入公式。创建公式节点的输入和输出端子的方法是,用鼠标右键单击第0帧的底部边框,选择AddInput(AddOutput)。再在节点框中输入变量名称。变量名对大小写敏感。然后就可以在框中输入公式。每个公式语句都必须以分号(;)结尾。2021/6/2745下面这个例子显示了如何在一个公式节点中执行不同条件时的数据发送。请阅读下面这段程序代码,如果X为正数,它将算出X的平方根并把该值赋给Y,如果X为负数,程序就给Y赋值-99。if(x>=0)theny=sqrt(x)elsey=-99endif可以用公式节点取代上面这段代码,如右图所示:注意:公式节点中变量字母X,Y大、小写是有区别的,开方的函数sqrt(X)中函数名称是小写。公式节点中的函数和操作符与C语言中的基本相符,遇到特殊函数时查表即可。2021/6/2746例题:创建一个VI,它用公式节点计算下列等式:y1=x3–x2+5y2=m*x+bx的范围是从0到10。可以对这两个公式使用同一个公式节点,并在同一个图表中显示结果。前面板:打开一个新的前面板,按照上图(该图中包含运行结果)创建前面板中的对象。波形图显示对象用于显示等式的图形。该VI使用两个数字式控制对象来输入m和b的值。2021/6/2747按照下图创建流程图。
在创建某个输入或者输出端子时,必须给它指定一个变量名。这个变量名必须与公式节点中使用的变量名完全相符。公式节点中,在边框上单击鼠标右键,在快捷菜单中选择AddInput,可以创建三个输入端子。在快捷菜单中选择AddOutput,创建输出端子。x的范围是从0到10(包括10),就必须连接11到计数端子。BuildArray(Functions»Array)——在这个例子中,它用于将两个数据构成数组形式提供给一个多曲线的图形中。通过用变形工具拖拉边角就可以创建两个输入端子。返回前面板,尝试给m和b赋以不同的值再执行该VI。2021/6/2748全局变量和局部变量1、全局变量和局部变量是LabVIEW用来传递数据的工具。2、用户也许会经常碰到这样一种情况,既能够对程序中一个控件对象写入数据,又要能够读出它的数据,这在数据流编程中是无法实现的,这也需要用到局部变量或者全局变量3、局部变量:用于一个程序太复杂的话,有时连线会很困难甚至无法连接;一个VI的多个位置实现对前面板控件的访问。4、全局变量:主要是针对不同VI程序之间的通信。2021/6/2749局部变量建立局部变量的方法有两种:1、一种是在程序框图中直接添加,如左图;2、另一种方法是右击控件对象,在弹出的快捷菜单中执行“创建/局部变量”如右图。2021/6/2750全局变量全局变量与局部变量不同,它是在不同的程序之间
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 办公大楼幕墙施工安装合同
- 电子元器件瑕疵管理方案
- 物业管理集团福利费管理手册
- 家具行业项目招投标信息表
- 高空农业喷洒合同
- 2025个人信用贷款借款合同
- 临沂生态农场租赁合同
- 门店市场调研渠道分析
- 医用高值耗材管理指南
- 智能家居大清包施工合同
- 新《安全生产法》解读PPT课件
- E车E拍行车记录仪说明书 - 图文-
- 人才梯队-继任计划-建设方案(珍贵)
- WLANAP日常操作维护规范
- 《健身气功》(选修)教学大纲
- 王家岩隧道工程地质勘察报告(总结)
- GE公司燃气轮机组支持轴承结构及性能分析
- 《昆明的雨》优质课一等奖(课堂PPT)
- 油气田地面建设工程ppt课件
- 电动蝶阀安装步骤说明
- 全自动电镀流水线操作说明书(共12页)
评论
0/150
提交评论