第2章 结构

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

LabVIEW的几种基本结构


循环结构、选择结构(Case)、顺序结构 (Sequence)、事件结构(Event)、公式节点 以及反馈节点(Feedback Node)。其中循环结 构又分为For循环、While循环和定时循环;顺序 结构分为堆栈型顺序结构(Stacked Sequence Structure)和平铺型顺序结构(Flat Sequence Structure)。 这些结构都位于All Functions→Structures子模 板。
数据在移位寄存器中的传递过程如图
[例2.3] 在While循环中使用移位寄存器

[例2.4] 使用For循环与移位寄存器实现n!的运算,学 生自做练习。
初始化移位寄存器


移位寄存器的初始化是在循环外部将常数或控 制件连接到移位寄存器的左端子上来实现的。 移位寄存器初始化和未初始化的情况程序运行 结果是不一样的,下面通过例子对比说明。 求0+1+2+3+4的值,用For Loop循环设为 5次,初始值设为5和不设初始值的情况。
2.1 循环结构



LabVIEW中的循环结构主要有While循环、 For循环和定时循环(Timed Loop)。 For循环必须指定循环的次数,循环一定的次 数后自动退出循环;而While循环不用指定次 数,而是需要指定条件,当达到循环指定条件 时退出循环。定时循环是LabVIEW7.1最新出 现的结构,这种结构有助于控制循环的运行时 间。 重点掌握For Loop和While Loop 循环。
顺序结构数据源帧的使用

与Case结构不同,顺序结构的输出通道仅能有一 个数据源。输出可以由任一个帧发出,且此数据 一直要保持到所有帧全部完成执行后才能脱离结 构。
[例2.9]将一随机数发生器产生的数字与前面板输 入的给定数字进行比较,计算当两个数匹配时所 需要的时间。 要求:在前面板上的“指定的数字”控件中设定 需要匹配的数字,程序运行时由“当前值”指示 器显示当前随机数,当得到匹配数字时,“次数” 指示器显示出匹配时进行重复循环比较的次数, 搜索到匹配数字所需要的时间送“所花时间”指 示器显示。
设定方法
可以是外部信号或外部时钟 标准,默认值为计算机内部 时钟产生的1KHz信号源 当使用1KHz信号源时,循环 周期不小于1ms 偏置值不应大于循环周期
Timing source
Period Offset(phase)
Priority
优先级以1~2147480000之间 的整数来标识,数字越大, 优先级越高,执行时间冲突 时越优先被执行
For循环结构组成
[例2.2] 使用For循环显示随机数序列

其前面板和后面板框图程序如图
移位寄存器和反馈节点
移位寄存器和反馈节点都是循环结构的附加对 象,前者的功能是把当前循环完成时的某个数 据传递给下一次循环的开始;后者相当于只有 一个左端子的移位寄存器,同样用于在两次循 环之间传递数据。 移位寄存器是LabVIEW在循环中引入的独具 特色的新概念。
[例2.6] 建立For循环和使用自动索引的功 能。

本例中使用For循环,选择正弦函数产生数据。 其前面板和框图程序如图。
2.1.3 定时循环


定时循环的建立和前面两种循环结构建立的方法类似。 定时循环结构主要由5部分组成,下面分别介绍。

(1)输入节点 确定定时循环的循环时序、循环优先级和循环名称等参 数(如图所示); (2)左数据节点 提供上一次循环的时间和状态信息,例如上一次循环 是否延迟执行、上一次循环的实际执行时间等; (3)循环体 和While循环类似,定时循环的循环体包括Loop Iteration端口和Loop Condition端口,前者指示当前循环的次数,后 者连接一个布尔型常量,指示循环结束或循环继续的条件; (4)右数据节点 接收左数据节点的信息,以决定下一次循环的时间或 状态; (5)输出节点 输出循环执行过程中可能出现的错误信息。
第2章 结构
主要学习内容





重点掌握循环结构For Loop和While Loop的使 用,以及两者的联系和区别; 重点掌握移位寄存器和反馈节点的使用,注意两 者的初始化问题,这是本章的难点内容; 掌握自动索引的功能,本章要和第三章数组部分 的内容联系起来理解; 掌握选择结构,注意条件选择端的设置; 掌握顺序结构的使用; 掌握公式节点的使用;
Loop name
循环名称,用于程序中有多个定时 循环时标识不同的定时循环 使用端口,即通过外部输入来控制 参数
Use terminal

[例2.7] 此VI程序中包含有两个定时循环Loop A和 Loop B,两者同时进行累加计算,但通过定时循环固 定了两者的不同累加速度。
2.2选择结构(Case Structure)




创建移位寄存器的方法是:在循环框的左边 界或右边界右键弹出菜单,选择Add Shift Register,可以创建一个移位寄存器 。 (演示,并说明添加多个移位寄存器和删除 移位寄存器的方法)。 移位寄存器可存储包括数值、布尔值、字符 串、数组、簇等任何类型的数据,但连接到 同一个寄存器端口的数据必须是同一类型的。 移位寄存器能够自动与连接到它上面的第一 个对象的数据类型匹配。
选择器端子为字符串或者枚举类型时的Case结构
2.2.2 Case结构分支的添加、删除 与排序

在Case选择框上单击鼠标右键弹出快捷菜单,进 行添加、删除和排序的操作。 1. Add Case After或Add Case Before:可在当前分
支之后或分支之前添加分支。 2. Delete This Case: 删除当前Case 分支。 3. Rearrange Case:重排分支,并出现Rearrange对 话框进行设置即可。 4. Make This Default Case :设置默认分支 。
2.2.3 数据的输入和输出通道



当由外部节点向结构框架连线或者框内节点与 边框连线时,在结构边框就创建了输入通道或 输出通道。 对所有Case分支来说对于输入通道的数据可 以使用,也可以不使用。但从选择结构框向外 输出数据时,各个子图形框必须为这个通道连 接数据。 当各个子图形框都为这个通道连接了数据,通 道图标才是实心的,程序才可运行。
循环的自动索引



所谓“自动索引” ,是指使循环框(即循环 体)外面的数据成员逐个进入循环框,或者使 循环框内的数据累积成一个数组后再输出到循 环框外的特性和功能。 For循环和While循环,都具有这种“自动索 引”的功能。其中For循环自动索引功能默认 是打开的,而While循环默认是关闭的。 要打开或关闭自动索引的功能,可以在数据输 入或输出循环体的节点上单击右键弹出快捷菜 单,选择Enable Indexing或Disable Indexing即可。

在这个局部变量被赋了值的子图形框以后的所有 帧中,局部变量图标都有一个向内的箭头,即都 可以访问这个数据。而在这之前的所有帧中都没 有箭头,也不允许连线。
在顺序结构中仅能在一个帧中给顺序结构局部变量赋 值,该帧称为数据源帧,这个数据源能被后续所有帧 所用,但在源帧前的帧中不能使用。
如图,2帧为数据源,这个数据对0,1帧无效, 但对后续的所有局部变量都有效。
[例2.8]求一个数的平方根

要求:若该数≥0,计算该值平方根,并将计算结果输出; 若该数<0时,则用弹出式对话框报告错误,同时输出错误 代码“-99999.0”。
2.4 顺序结构


顺序结构(Sequence Structure)看上去像电影胶 片一样,由一帧或多帧图框组成,在通用编程语 言中,程序语句执行顺序是依据它们在程序中的 前后位置。 顺序结构可从框图程序中的功能模板All Functions →Structures子模板中创建,刚创建的 顺序结构为单框架顺序结构,只能执行一步操作。 但用户根据需要可创建多框架顺序结构。创建方 法是在顺序结构边框上弹出菜单,选择Add Frame After或Add Frame Before即可添加框架。
定时循环结构的框图组成
输入节点的各部分参数
输入节点设定对话框中的主要参数
参数名称 参数含义
定时标准,即定时的时钟标准(包 含时钟类别和时钟名称) 循环周期,即前后两次循环执行的 时间间隔 偏置(相位),循环执行相对一个 周期的开始时间 循环的优先级,两个定时循环占用 CPU时间冲突,优先级高的先执行
初始化移位寄存器两次运行VI的情况
未初始化移位寄存器两次运行VI的情况
反馈节点


反馈节点(Feedback Node)和只有1 个左端子的移位寄存器的功能完全相同, 同样用于在两次循环之间传递数据,它 是一种更简洁的表达方式。 例子:用移位寄存器和反馈节点在数字 指示器中输出一个不断累积的正整数值 。 (见图)
2.1.1 While循环结构


创建方法是:选择结构子模板中的While Loop图标放到框图程序窗口中,拖动鼠标 确定图框大小,或者使用位置工具拖动循 环结构的边框,来改变其框的大小。 最基本的While Loop循环由循环边框、循 环重复端及条件判断端组成(演示)。
后面板程序框图

While循环执行的是包含在循环框架中的流程 图,反复执行的循环次数不定,只有当条件满 足时,才停止循环的执行。循环重复端i的初 始值为0,每执行一次循环自动加1。


Case结构是一种多分支程序控制结构,类似C语 言的Switch多分支选择结构。Case结构位于All Functions→Structures子模板中,其创建方法 和循环结构类似。 Case结构包含有多个子图形代码框,每个子图 形代码框包含一段程序代码,程序选择其中的一 段执行,一个子图形代码框对应一个Case。


条件端口用于判断循环是否执行,条件端口有 两种使用状态:Stop if True和Continue if True。 条件端口的使用状态可以根据情况自己选择, 方法是在条件端口上右键弹出菜单,选择Stop if True或者Continue if True即可(演示)。

注意:在While循环中,不管Hale Waihona Puke Baidu件是否成立,
2.2.1 Case结构的建立和组成


Case结构框架包括选 择器标识框和选择器 控制端口; 可有两个或多个Case 子框图,但任何时候 都只有一个Case被执 行,执行哪一个Case 取决于选择器端子的 输入值。
LabVIEW默认的选择框架类型和组成
Case选择器输入数据类型

选择器输入数据类型有四种,即布尔型、数字 整型、字符串型及枚举类型。选择器端子的图 标颜色会随连接的数值类型而改变。
其前面板和框图程序如图
While循环中的代码至少要执行一次。如果不给 条件端口赋值,则While循环只执行一次。
[例2.1] 使用While循环显示随机数序列

其前面板和框图程序如图
2.1.2 For循环结构



For循环结构将某段程序段重复执行预先设 定的次数 。 For循环的创建方法和While循环类似,从 框图Structures子模板中选取创建即可。 最基本的For循环结构由循环框架、循环计数 端口N和重复端口i组成,如图。
2.4.1 顺序结构的创建与组成

最基本的顺序结构由顺序框架(Sequence Frame)、图框标识符(Diagram Identifier) 和递增/递减按钮组成,如图。
2.4.2

顺序结构局部变量的创建


顺序结构可在帧与帧之间传递信息。为了从一个 帧向其他帧传递数据,使用称为“ Sequence Local” ( 顺 序 结 构 局 部 变 量 ) 的 端 口 。 ( 在 Stacked Sequence) 创建“Sequence Local”端口的方法是,在顺序结 构边框弹出菜单,选择Add Sequence Local。 开始时,局部变量端子表现为一个空的小方块, 一旦将数据连接到端子上,帧端子中出现一个向 外的箭头,而且颜色也变为与所连接的数据类型 相符。箭头向外表示本帧是向外输出数据的数据 源。
相关文档
最新文档