LaBVIEW第三章程序结构教学文案.ppt_第1页
LaBVIEW第三章程序结构教学文案.ppt_第2页
LaBVIEW第三章程序结构教学文案.ppt_第3页
LaBVIEW第三章程序结构教学文案.ppt_第4页
LaBVIEW第三章程序结构教学文案.ppt_第5页
免费预览已结束,剩余49页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

一 循环结构1 While循环2 For循环二 分支结构三 顺序结构四 公式节点五 事件结构六 变量七 定时循环八 菜单 第三章程序结构 一 循环结构 1 While循环2 For循环 While循环示意图 While循环创建 创建方法 选中 单击左键 拖动 释放左键 While循环结构 While循环结构说明 1 重复端子 用于记录和输出已执行的循环的次数 2 条件端子 循环是否终止的条件端子 i的初始值为零 输入的是一个布尔变量 真或假 While循环将一直执行到连接条件端子上的布尔值变成真或假为止 取决于条件端子设置为 真 T 时停止 还是 真 T 时继续 3 在条件端子上单击右键即可进行更改 如图 4 While循环是一种框图上的容器对象 即其内部可循环嵌套 While循环框图内添加代码 有两种方法 1 结构创建好后添加代码 2 在已有程序代码的基础上添加结构 While循环运行流程 While循环可以反复执行循环体的程序 直至到达某个边界条件 它类似于普通编程语言中的Do循环 While循环的框图是一个大小可变的方框 用于执行框中的程序 直到条件端子接收到的布尔值为FALSE 该循环有如下特点 1 计数从0开始 i 0 2 先执行循环体代码 而后i 1 如果循环只执行一次 那么循环输出值i 0 3 根据条件端子进行判断是否继续循环 4 While循环中的代码至少要运行一次 While循环运行流程 While循环运行流程类似于如下的文本语言的伪代码 DO执行子框图While条件判断的结果为继续循环 例 利用While循环产生随机数 当产生的随机数大于0 8时 循环停止 步骤如下 1 打开前面板 新建两个数值显示控件 一个为循环次数 一个显示最后产生的那个大于0 8的随机数 如图 2 切换到程序框图 放置一个While循环 如左图 3 放置随机数函数到While循环内 并连线 如右图 4 放置比较函数 将循环次数与重复端子连线 如左图 5 运行 即可在前面板上看到结果 如右图 在程序框图中 在数值显示控件上单击右键 可更改数值的类型 如图 注意 While循环的条件端子一定要有连线 否则程序无法运行 如图 作业 练习3 1 2 For循环 For循环用于将某段程序执行指定次数 和While循环一样 它不会立刻出现在流程图中 而是出现一个小的图标 而后您可以修改它的大小和位置 具体的方法是 先单击所有端子的左上方 然后按下鼠标 拖曳出一个包含所有端子的矩形 释放鼠标时就创建了一个指定大小和位置的For循环 2 For循环 For循环位于函数 编程 结构 For循环 如前图 从图中可以看到 For循环将把它的框图中的程序执行指定的次数 For循环具有下面这两个端子 N 计数端子 输入端子 用于指定循环执行的次数 I 重复端子 输出端子 含有循环已经执行的次数 上图显示了一可以产生100个随机数并将数据显示在一个图表上的For循环 在该例中 i的初值是0 终值是99 For循环举例 产生10个随机数 并把最后一个显示出来 步骤如下 1 放置一个数值显示控件到前面板 并改名为随机数 2 放置For循环到程序框图 如图 3 放置随机数函数到程序框图 并连线 4 计数端子上单击右键 选择创建常量 并输入10 如图 5 运行程序 便可在前面板上看到结果 6 因为程序的运行的速度非常快 我们无法一个一个地看清所产生的10个随机数 我们可以在程序框图中添加时间延迟控件 它位于函数 编程 定时 时间延迟 如图 7 放置它到程序框图上 选择延迟的时间 即两次循环之间的时间间隔 如图 8 将时间设置为1 000 点击确定即可 再运行程序就可从前面板上看到所产生的随机数了 练习3 2使用For循环 循环结构内外数据交换采用 隧道建立隧道方法 自动索引 针对数组而言 3 移位寄存器 移位寄存器用于For循环或While循环中从一个迭代传输数据到下一个迭代 它由循环垂直边框上一对反向相反的端子组成 添加方法 在边框上单击右键 选择添加移位寄存器 就可进行添加 如图 右端子 带向上箭头的矩形 在每完成一次迭代后存储数据 移位寄存器将上次迭代的存储数据在下一次迭代开始时移动到左端子 具有向下箭头的矩形 上 移位寄存器可存储任何数据类型 包括数字 布尔 字符串和数组 但连接到同一个寄存器端子上的数据必须是同一类型 移位寄存器的类型与第一个连接到其端子之一的对象数据类型相同 下面是1 2 3 4 100的程序 如图 说明 进行第一次运算的是0 0 For循环中的重复端子是从0开始计数 移位即寄存器在没有初始化的情况下 默认的数值是0 所以第一次运算的是0 0 第二次运算的是寄存器的0与重复端子的1相加 所以循环要进行101次 而计数端子输出的数据始终是101 移位寄存器的初始化 移位寄存器的初始化是非常必要的 因为只要用户不退出VI 移位寄存器便可记录上次运算完时的结果 所以上面的程序在第二次执行时输出的结果不是5050 而是10100 添加初始化即可 如图 例 计算1 2 3 4 n 在前面板上放置一个数值输入控件 阶次n 和一个数值显示控件 求和结果 在程序框图上放置两个For循环嵌套结构 外层循环的计数端口与 阶次n 连接 输出是各个数的阶乘所组成的一个数组 它的重复端子加1作为内层循环的循环次数 内层循环利用一个移位寄存器实现阶乘运算 移位寄存器的初始值设为1 同样在程序框图的右边在放置一个For循环结构 它的计数端子没有任何连接数据 使用的是自动索引功能 这个循环的作用是对由阶乘所组成的一个数组进行索引 对索引出的各个元素进行求和计算 最后将计算结果输出给 求和结果 完成连线 如右图 运行结果 如右图 4 反馈节点 反馈节点和只有一个左端子的移位寄存器的功能相同 同样用于在两次循环之间传递数据 它是一种更简洁的表达方法 P66 二 分支结构 Case Case结构含有两个或者更多的子程序 Case 执行哪一个取决于与选择端子或者选择对象的外部接口相连接的某个整数 布尔数 字符串或者标识的值 必须选择一个默认的Case以处理超出范围的数值 或者直接列出所有可能的输入数值 Case结构见下图 各个子程序占有各自的流程框 在其上沿有相应的子程序标识 Ture False或 按钮用来改变当前显示的子程序 各子程序是重叠放在屏幕同一位置上的 1 分支结构的组成 条件端子相当于C语言的switch后面的变量 每个分支按钮标签相当于case后的常量表达式 Case结构举例 目的 创建一个VI以检查一个数值是否为正数 如果它是正的 VI就计算它的平方根 反之则显示出错 1 打开一个新的前面板 并按照下图所示创建对象 控制对象用于输入数值 显示对象用于显示该数值的平方根 照下图创建流程图 3 从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在对话框中输入字符串 8 该VI在TRUE或者FALSE情况下都会执行 如果输入的数值大于等于0 VI会执行TRUECase 返回该数的平方根 否则将会输出 999 00 并显示一个对话框 内容为Error 4 返回前面板 运行该VI 修改标签为Number的数字式控制对象的数值 分别尝试一个正数和负数 注意 当把数字式控制对象的值改为负数时 LabVIEW会显示Case结构的FALSECase中设置的出错信息 5 保存该VI到LabVIEW Activity目录中的SquareRoot vi 本练习中的流程图功能相当于代码式编程语言中的下列伪代码 if Number 0 thenSquareRootValue QRT Number elseSquareRootValue 999 00DisplayMessage Error endif 三 顺序结构 顺序结构类似C语言的goto语句 它是一种图形化的数据流式编程语言 在下面的左图中 假设有A B C D 个节点 其数据流向如下图所示 按照数据流式语言的约定 任何一个节点只有在所有的输入数据有效时才会执行 所以图中 当且仅当A B C 个节点执行完 使得D节点的 个输入数据都到达D节点后 D节点才执行 顺序结构 但是你要注意 这里并没有规定A B C 个节点的执行顺序 在LabVIEW中这种情况下 A B C的执行顺序是不确定的 如果你需要对它们规定一个确定的顺序 那就需要使用本节介绍的 顺序结构 右图是顺序结构的图标 它看上去像是电影胶片 它可以按一定顺序执行多个子程序 首先执行0帧中的程序 然后执行1帧中的程序 逐个执行下去 与Case结构类似 这多帧程序在流程图中占有同一个位置 顺序结构 1 堆叠顺序结构 与case结构相似 都是在框图窗口的同一位置堆叠多个子框图 每个子框图都有自己的序号 执行时 按照序号从小到大逐个执行 最小序号是0 每个子框图称为一个帧 优点 节省框图窗口空间 2 平铺顺序结构 可实现堆叠顺序结构同样的功能 其区别在于表现形式不同 优点 当帧数不多时 把每个帧平铺 比较直观 方便代码阅读 3 添加局部变量 在堆叠顺序结构中 用添加局部变量的方法 使接入该变量的数据在当前帧后面的各个帧中可以作为输入数据使用 平铺顺序结构可以不添加局部变量 因为每个帧都是可见的 不需要借局部变量机制在帧之间传送数据 例题 创建一个VI 计算生成等于某个给定值的随机数所需要的时间 1 打开一个新的前面板 并按照下图所示创建对象 假设约定数据是 到100范围的整数 当前值用于显示当前产生的随机数 执行次数 用于显示达到指定值循环执行的次数 匹配时间用来显示达到指定值所用的时间 流程图 1 在流程图中放置顺序结构 Functions Structures 用鼠标右键单击帧的边框 在快捷菜单中选择AddFrameAfter 创建一个新帧 重复这个步骤 再创建一个帧 共 桢 2 选中第 桢 设置读取初始时间 子 程序 第0帧的下边框上含有一个小方框 其中有一个箭头 这个方框叫做顺序局部变量 可以在同一个顺序结构中的各个帧之间传递数据 用鼠标右键单击第0帧的底部边框 选择AddSequenceLocal 创建顺序局部变量 顺序局部变量显示为一个空的方块 当您将某个功能函数与顺序局部变量相连时 方块中的箭头就会自动显示 TickCount ms 函数 Functions Time Dialog 返回启动到现在的时间 以毫秒为单位 在这里例子里需要使用两个这个函数 另一个在第 帧中 3 按图连好线 转入第 帧 该帧是匹配计算 内含一个循环结构 该图中使用的新函数有 RoundtoNearest函数 Functions Numeric 在该例中 它用于取0到100之间的随机数到距离最近的整数 NotEqual 函数 Functions Comparison 在该例中 它将随机数和前面板中设置的数相比较 如果两者不相等会返回TRUE值 否则返回FALSE Increment函数 Functions Numeric 在该例中 它将While循环的计数器加1 4 按图连好线 转入第 帧在第0帧中 TickCount ms 功能函数将以毫秒为单位表示当前时间 这个数值被连到顺序局部变量 这样它就可以被后续的帧使用 在第1帧中 只要函数返回的值与指定值不等 VI就会持续执行While循环 在第2帧中 TickCount ms 功能函数以毫秒为单位返回新的时间 VI从中减去原来的时间 由第0帧通过顺序局部变量提供 就可以计算出花费的时间 5 返回前面板 在NumbertoMatch控制对象中输入一个数值 执行该VI 四 公式节点 FormulaNode 公式节点是一个大小可变的方框 可以利用它直接在流程图中输入公式 从Functions Structures中选择公式节点就可以把它放到流程图中 当某个等式有很多变量或者非常复杂时 这个功能就非常有用 例如等式 y x2 x 1使用公式节点可以表示为 利用公式节点可以直接输入一个或者多个复杂的公式 而不用创建流程图的很多子程序 使用文本编辑工具来输入公式 创建公式节点的输入和输出端子的方法是 用鼠标右键单击第0帧的底部边框 选择AddInput AddOutput 再在节点框中输入变量名称 变量名对大小写敏感 然后就可以在框中输入公式 每个公式语句都必须以分号 结尾 下面这个例子显示了如何在一个公式节点中执行不同条件时的数据发送 请阅读下面这段程序代码 如果X为正数 它将算出X的平方根并把该值赋给Y 如果X为负数 程序就给Y赋值 99 if x 0 theny sqrt x elsey 99endif可以用公式节点取代上面这段代码 如右图所示 注意 公式节点中变量字母X Y大 小写是有区别的 开方的函数sqrt X 中函数名称是小写 公式节点中的函数和操作符与C语言中的基本相符 遇到特殊函数时查表即可 例题 创建一个VI 它用公式节点计算下列等式 y1 x3 x2 5y2 m x bx的范围是从0到10 可以对这两个公式使用同一个公式节点 并在同一个图表中显示结果 前面板 打开一个新的前面板 按照上图 该图中包含运行结果 创建前面板中的对象 波形图显示对象用于显示等式的图形 该VI使用两个数字式控制对象来输入m和b的值 按照下图创建流程图 在创建某个输入或者输出端子时 必须给它指定一个变量名 这个变量名必须与公式节点中使用的变量名完全相符 公式节点中 在边框上单击鼠标右键 在快捷菜单中选择AddInput 可以创建三个输入端子 在快捷菜单中选择AddOutput 创建输出端子 x的范围是从0到10 包括10 就必须连接11到计数端子 BuildArray Functions Array 在这个例子中 它用于将两个数据构成数组形式提供给一个多曲线的图形中 通过用变形工具拖拉边角就可以创建两个输入端子 返回前面板 尝试给m和b赋以不同的值再执行该VI 全局变量和局部变量 1 全局变量和局部变量是LabVIEW用来传递数据的工具 2 用户也许会经常碰到这样一种情况 既能够对程序中一个控件对象写入数据 又要能够读出它的数据 这在数据流编程中是无法实现的 这也需要用到局部变量或者全局变量3 局部变量 用于一个程序太复杂的话 有时连线会很困难甚至无法连接 一个VI的多个位置实现对前面板控件的访问 4 全局变量 主要是针对不同VI程序之间的通信 局部变量 建立局部变量的方法有两种 1 一种是在程序框图中直接添加 如左图 2 另一种方法是右击控件对象 在弹出的快捷菜单中执行 创建 局部变量 如右图 全局变量 全局变量与局部变量不同 它是在不同的程序之间进行通信 LabVIEW的全局变量是一个独立的VI 它是一种特殊的程序 没有程序框图只有前面板 功能是保存一个或多个全局变量 所以也把全局变量程序称为 容器 建立全局变量 它的建立和局部变量类似 将全局变量拖拽到程序框图中 在它的快捷菜单中执行 打开前面板 或双击全局

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论