0
labview基础 while循环
2009-04-24 17:28:14 admin 浏览:4462次 【
LabVIEW中的结构是一个关键的节点类型,它和标准编程语言中的结构一样,控制着VI程序中程序流的执行。这些结构包括了:While循环、For循环、Case结构以及序列结构。在实际的VI程序中,我们可以将其中的几种结合到一起来完成复杂的程序流程。
两种循环

  如果使用过其他编程语言的话,对于需要重复执行的代码要怎么处理可能就会想到循环结构。在LabVIEW里面提供了两种循环结构来完成这个工作。在VI 程序里面可以使用For循环或者是While循环来控制重复执行的动作。For循环将按照设定次数循环执行,While循环则是将不停执行直到某种设定条件出现才会停止执行。在LabVIEW的函数工具板上的Programming>>Structure就可以看到这两种循环结构。

For循环

  For循环执行其框内的代码(我们又称其为子框图subdiagram),执行次数为初始设定的执行次数。该执行次数可以通过For循环结构左上方的计数端子(count terminal)进行设定。具体设定方法就是在该结构外面将一个整数值连线到这个端子。如果连接的整数值是0,那么这个循环就不执行。

  For循环结构如下图所示:

  循环结构内部的计数值为当前已执行的循环的次数,第一次运行循环时该值为0,第二次运行循环时该值为1,直到N-1(N为设定的总循环次数)。For循环与下面的伪代码类似:

for i = 0 to N-1
Execute subdiagram

While循环

  While循环将一直执行其框内的子框图直到连接到其条件端子上的布尔量的值为真才会结束执行。LabVIEW在运行While循环的时候,将在每一次循环执行之后检查条件端子的值,如果该值为假就会进行下一个循环,否则就会停止循环。

 

  While循环里面的计数值与For循环结构里面的计数值的用途是一样的。While循环与下面的伪代码类似:

Do
Execute subdiagram
While condition is FALSE
(Until condition is TRUE)

  对于While循环结构里面的条件端子,我们还可以通过在其上右键点击并从弹出的菜单中选择Continue if True,将其设定为当该值为真的时候继续循环、为假的时候停止循环。

  另外,如果需要将VI程序框图中的循环结构更换为其他类型的循环结构时,可以通过在结构外边缘点击右键并在弹出菜单中选择要更换的类型即可(以Replace开头)。只能够在类型结构之间才能完成更换。

自动伸展(Auto Grow)
  
所有LabVIEW结构都有一个自动伸展(Auto Grow)的属性,可以在结构的右键菜单里面选中或是不选中Auto Grow选项来打开或关闭该属性。当打开该属性时,这个特性会有两个用途。第一个就是,当你在结构框图内放置新的对象时,如果该对象已经超出了结构的边界,结构就会自动伸展以将其全部包含在其框图之内。第二个就是,使用这个属性就能防止将结构缩小到比其内部对象还要小。这两个用途是用来防止结构体内部的对象无法看到。

  也可以通过菜单Tools>>Options...来打开LabVIEW选项对话框,在Block Diagram部分通过Place structures with Auto Grow enabled之前的选择框来设定在LabVIEW中添加新的结构是是否默认启用该功能。

移除结构而不是删除它们
  
当不想使用某个结构的时候,我们可以移除它,不过有一点你需要小心。如果你删除了一个While循环,你将会同时删除其内部的全部对象,包括了函数、子VI、连线等等。

  除非你确实不想要这个结构内部的全部代码了,否则不要在选中结构之后按Delete按钮全部删除。我们可以在结构框图上点击右键,在右键菜单中选择Remove While Loop(对于While循环)或Remove For Loop(对于For循环)来移除结构。这样就只会移除结构,但是结构内部的框图将会保留下来。从结构外部到结构内部的各个连线也将会保留下来。

循环内部的端子的问题
  在循环与外部传入、传出数据都是使用循环结构外框上的叫做隧道(tunnel)的小方块。由于LabVIEW是以数据流的方式执行代码的,对于循环结构的输入数据是在循环执行之前输入的。而循环输出的数据则是在全部循环结束运行之后才输出的。

  同样的,由于数据流的关系,如果对于某个变量需要每个循环都要检查或更新的话,就需要把该变量放置到循环内部。以下图为例,While循环在每次循环的时候都检查一下布尔量控件的值,当该值为真的时候结束循环。

 

  如果如下图所示,将布尔量控件放置在While循环结构之外。那么根据布尔量控件的初始值就创建了一个死循环或者是只执行一次的循环。因为根据数据流的流程,LabVIEW在开始执行循环之前读取了布尔量控件的值,而不是在循环内部或循环结束之后读取该值。

 

  对于其他类型的控件也是一样的道理的,如果需要每次循环更新或检查一次就需要把控件放置在循环结构内部。

0 条评论
查看更多评论
  • 键盘快捷键描述按住Shift并单击选择多个对象;将对象添加到当前选择。按住Ctrl单击切换单个对象以加入或保留当前选择。方向键一次将所选对象移动一个像素。Sh..

    浏览:5205次 评论:0
    2021-02-06 09:23:02
  • Modbus是全球第一个真正用于工业现场的总线协议,采用的是主从原则,其物理接口主要有串口和以太网口两种。本文主要介绍LabIEW与PLC的通信实现方式。在进行通..

    浏览:12296次 评论:0
    2019-09-22 12:58:51
  • 对实时数据或者历史存储数据进行滤波及校准处理,可以将采样数据转化为具有实际意义的物理量,为用户后续操作提供方便。滤波校准功能的程序设计如图1所示,本..

    浏览:4578次 评论:0
    2019-09-21 16:32:59
  • 在进行LabVIEW程序设计时,一个VI中可以包含一个或若干个子vi。这些子vi是被直接放置在程序框图中,习惯上称这些子vi为:静态链接子vi。这些子vi在VI载入的同..

    浏览:11236次 评论:0
    2018-12-17 15:28:30
  • 新建一个LabVIEW项目,或者打开一个已经建好的项目,项目中包含主vi,子vi以及自定义控件等,确保vi运行正常。    在项目浏览器的-程序生成规范->..

    浏览:9014次 评论:0
    2018-07-18 10:55:21
作者专栏
  • sltang

    注册时间:2024-12-21 15:45:59

  • samhuang63

    注册时间:2024-12-20 09:42:58

  • csq663347

    注册时间:2024-12-05 16:34:39

  • guohuiming

    注册时间:2024-11-14 08:49:44

  • 机飞弹打

    注册时间:2024-11-11 13:46:27

Copyright@http://nilab.com.cn all rights reserved 备案号:京ICP备12043750号-1
Powered by qibosoft V9.0 Code © 2003-2017 qibosoft
LABVIEW之家 QQ:181237912; email:Labviewzj@qq.com 项目合作 微信及手机:18510627229