labview第五章结构_第1页
labview第五章结构_第2页
labview第五章结构_第3页
labview第五章结构_第4页
labview第五章结构_第5页
已阅读5页,还剩52页未读 继续免费阅读

下载本文档

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

文档简介

1、主要的程序结构有:循环结构(While和For)条件结构顺序结构事件结构5.1.1For循环的创建基本的For循环结构由循环框、循环次数端口和计数端口组成。 循环框循环框(用于放置用于放置循环代码循环代码)循环计数端口循环计数端口循环次数端口循环次数端口5.1.2For循环的工作流程For循环用于循环次数确定的循环。For循环运行顺序是先判断,后执行。循环计数端口初始值为0,当循环次数为N时,最后一次循环中循环计数端口值为N1.5.1.3For循环中的数据通道与自动索引数据通道:数据连线在循环框自动形成的方形 通道图标 。空心具有自动索引功能,实心不能索引 。对于输入:自动索引是指将循环框外面

2、的数组成员逐个依次进入循环体内。 对于输出:自动索引是指将循环框内的数据累加成 一个数组输出到循环框外面。 例如:下图中通道自动索引功能有效时,每一次循环产生一个新的数据,存储在循环的边框通道上,待循环结束以后,产生的6个数据将传送到一个数组指示器中。自动索引功能无效时,只有最后一次For循环产生的1个随机数传到循环外。空心实心(1)For循环输入隧道打开自动索引,而输出关闭自动索引(2)For循环输入隧道关闭自动索引,而输出打开自动索引5.1.4移位寄存器创建:右击边框用途:用于While循环和For循环,将上一次循环值传给下一次循环。数据类型: 数字型、布尔型、字符串等 。初始化:在循环外

3、将初始值连到移位寄存器的左端口,有默认初值。还可以存储前几次循环的值:在移位寄存器的左端口或右端口上右击鼠标弹出菜单,选择“增加元素”选项,可创建附加的左端口来存储前几次循环的值。均为整数)且例:求NMXNMXSNMX,(35反馈节点功能:在循环中,将数据从一次循环传递到下一次循环。反馈节点箭头的方向表示数据流的方向。 反馈节点和移位寄存器可以互换,在反馈节点或移位寄存器图标上弹出快捷菜单选“替换为移位寄存器”或“替换为反馈节点”即可。移位寄存器左端口多于1个时不能转换为反馈节点。 下面是用移位寄存器(左图)和反馈节点(右图)实现a+的框图程序。 For循环和While循环的区别:1)For循

4、环要执行预先指定的循环次数。 While循环不必知道循环次数,只有在条件端 口接收到的值满足条件时才停止循环。2) For循环当N1时1次都不执行。 While循环不满足条件也要执行1次。5.2.1.While循环的创建While循环由循环框、条件端口和计数端口组成。循环循环框框条件端口条件端口计数端口计数端口5.2.2.While循环的工作流程条件端口:控制循环的停止与否。有两种状态 : 时,当输入值为真(T),则停止循环 ; 时,若输入值为假(F),则停止循环。计数端口:用于统计循环执行的次数,从零开始计数。While循环的运行顺序是先执行,后判断。循环结束后,才去检测条件端口的值,因此不

5、管条件是否成立,循环至少要执行一次。 While循环也具有数据通道索引和移位寄存器、反馈节点的功能,它们的用法与For循环相同,只是While循环的边框数据通道默认为不能索引。 Case结构由选择框架、输入端口、选择器标签,以及递增/递减按钮组成。选择器标签选择器标签递增按钮递增按钮递减按钮递减按钮选择框架选择框架条件输入端口条件输入端口2输入端口的设置条件结构有一个条件输入端口 ,根据连到该端口 的值来判断执行哪一个子分支。条件输入端口的数据类型有布尔型、整型、字符串型和枚举型。 3增减分支及默认分支的设置应设置一个默认项来处理超出条件选项范围的情况。 鼠标右键,选择“本分支设置为默认分支”

6、。4数据通道的设置 输入数据时,每个子分支框可连可不连数据通道。输出数据时,每个子分支框必须为通道连接数据。否则程序不能运行。“未连线时使用默认”可使程序中没有连线的子分支框输出默认值。分支0 (Add),VI就进行加法运算,分支1,则VI将进行减法运算。使用了一个数字型文本下拉列表控件注意:当在一个子分支中建立了一个输出数据通道后,必须给每一个子分支定义输出数据通道。 设定默认的子分支,当设定默认的子分支,当所有条件都不满足时,所有条件都不满足时,执行默认子分支执行默认子分支例子例子LabVIEW是一种数据流程序设计语言,没有明确的先后顺序,当节点所有输入端的数据全部有效时,节点才执行。顺序

7、结构,它是一种按先后顺序执行的结构,看上去象电影胶片的帧,每一帧为一段框图程序,按照帧的顺序来执行框图程序。两种形式顺序结构:平铺式顺序结构和层叠式顺序结构。功能相同,区别仅在于表现形式不同。1. 顺序结构的创建在结构边框上面单击鼠标右键,从弹出的快捷菜单中选择“在后面添加帧”或“在前面添加帧”可以增加子图形代码框。 在结构边框上右击弹出的快捷菜单,选择”替换为平铺式顺序”,可以将层叠式顺序结构变换为平铺式顺序结构 2.顺序结构的数据传递平铺式可从一帧直接连线到另一帧来传递数据。层叠式则需要通过顺序局部变量来传送数据。 在层叠式顺序结构的边框上面右击,选择“添加顺序局部变量”即可在当前帧创建一

8、个顺序局部变量端口。将本帧中的数据连接到该局部变量端口,该数据就可传到后面的帧,该数据不会作用到它前面的帧。如下图示意了层叠式顺序结构通过局部变量传递数据的情况。在标识是1号帧的一个数据传递到标识是2号的帧进行“或”运算,0号帧不能使用该数据。 读取定时器的当前值 VI程序每隔10ms执行循环四舍五入取整面向对象的程序设计技术引入“事件驱动”机制:系统会等待并响应用户或其他触发事件发出的消息,并对这种消息作出响应。事件驱动就是等待事件发生,然后按照对应指定事件的程序代码进行响应,处理完后再回到等待事件状态。先创建1个新的事件结构,在结构中添加事件源和该事件源发生的事件,在各个事件对应的框内编写

9、该事件发生时要执行的程序。步骤:1.事件结构的创建 事件结构包括:结构框、事件标签、超时端口和事件数据端口。事件标签事件标签 :当前框图程序响应的事件名称当前框图程序响应的事件名称 。超时端口,超时端口,默认默认值为值为-1,表示无,表示无限等待限等待 。 事件数事件数据端口据端口可读可读 结构框结构框放入事件发生放入事件发生后需执行的程后需执行的程序序 2.设置超时参数(可不设置,采用缺省值)3.放置事件触发源控件(没有可不放置)4.添加事件分支并编辑可以选择可以选择的事件源的事件源 相应的事件源相应的事件源可产生的事件可产生的事件 显示当前建立的事件,显示当前建立的事件,默认为默认为“超时

10、超时事件。事件。事件 反映整个应用程序状态的变化,如程序是否关闭,是否超时等。 反映当前VI状态的变化,如前面板大小是否调整、是否选择菜单中的 某一项。 用于处理用户自己的或在程序中临时注册的事件。 包括与某一窗格有关的事件,如鼠标进入离开窗格。 与分隔栏有关的事件,例如鼠标拖动分隔栏 包括与界面上控件相关的所有事件,例如值改变。5. 编辑该事件触发后需执行的相应代码,并将其和事件源控件一起放入该分支事件框中。6. 添加下一个分支的事件源控件、分支及程序。7.创建一个While循环,将事件结构放入循环中。例:用事件结构实现密码登陆:当用户输入密码为123456时弹出“密码正确登陆成功”对话框,

11、单击“确定”按钮程序停止,如果密码错误显示“密码错误请重新输入”对话框,程序继续运行。在框图程序中,如果需要设计较复杂的数学运算,框图将会十分复杂,工作量大,而且不直观,调试、改错也不方便。使用步骤:(1)创建新的公式节点(2)在框中输入文本行表示的数学公式和文本语句(3)添加输入/输出数据端口,并命名(与公式中变量同名)(4)连接程序中的数据端口与公式节点的输入/输出端口xexxycos5示例:1. 用常规的LabVIEW算数函数实现此函数计算2. 用公式节点来实现同一函数 在框内输入公式,每个公式语句必须以分号结束公式节点中常用的运算符其中,条件运算符的其中,条件运算符的“?”前的部分是判

12、定条件,前的部分是判定条件,“?”和和“:”间的部分为当条件为真时的表达式,间的部分为当条件为真时的表达式,“:”后的后的部分为当条件为假时的表达式。部分为当条件为假时的表达式。公式节点语句中还可以使用数学函数:abs、acos、acosh、asin、asinh、atan、atan2、atanh、ceil、cos、cosh、cot、csc、exp、expml、floor、getexp、getman、int、intrz、ln、lnp1、log、log2、max、min、mod、pow、rand、rem、sec、sign、sin、sinc、sinh、sizeOfDim、sqrt、tan、tanh。

13、公式节点中可声明变量,也支持一些常用的C语言的语句(包括赋值语句、 IF条件语句、 for和do 、while循环语句、Switch分支语句),每条语句以分号结尾。 公式节点的语法与C语言相同5.7.1局部变量程序太复杂,连线困难,需用局部变量。局部变量的作用范围:同一个程序之间(1)创建 法一:为前面板对象创建局部变量。 在对象上面单击鼠标右键,选择“创建局部变量”。法二:在框图程序中新建局部变量,然后再指向某个对象。 可以为一个对象创建多个局部变量。局部变量具有读、写两种属性。并可互换。 (2) 使用示例功能:读取当前“停止”控件的状态至“指示灯”,当点击“停止”按钮时退出循环,并送给“指

14、示灯”显示。循环外的局部变量 处于“写”状态,它在每次程序运行前赋给“停止”控件,赋值为“F”,以保证程序运行时进入循环状态。5.7.2全局变量不同程序之间交换数据,需用全局变量。全局变量VI只有前面板而无框图程序。(1)创建选择全局变量图标,右击,选择“打开前面板”或双击图标,打开全局变量声明VI的前面板。按照需要的数据类型加入控件 。切换到框图程序窗口,单击全局变量图标,选择需要它指向的控件。返回到全局变量声明VI的前面板,将该VI文件存盘,完成全局变量的建立。 (2)调用 由函数模板中的“选择VI”模板打开选择用户程序对话框,选择已经保存的全局变量声明VI程序,此时将在框图程序中显示全局

15、变量数据端口。如果在全局变量声明VI中建立多个控件,可以用操作工具在全局变量的图标上单击,在列出的所有变量对象中选择所需的对象。 (3)使用示例利用全局变量在不同VI中传递数据。 创建一个全局变量声明,其中包含一个数值型控件并命名为“数值”和布尔型控件并命名为“状态”,保存为“GVvi”。新建一个VI命名为“采集信息.vi”,前面板中有一个旋钮开关和按键开关,将它们的值送到全局变量中。由函数模板中的“选择VI”模板打开选择用户程序对话框,选择“GVvi”,调用两次全局变量声明,选择全局变量的不同数据类型,对端口连线并保存VI。如图 “采集信息采集信息”框图程序框图程序 新建VI “显示信息.v

16、i”,前面板中有一个表盘指针控件和LED控件。采用同样的方法在框图程序窗口选择创建的全局变量,并在全局变量图标上单击鼠标右键,选择“转换为读取”。“显示信息显示信息”框图程序框图程序 分别运行两个分别运行两个VI程序,可以发现由程序程序,可以发现由程序“采集采集信息信息”得到的数据,通过全局变量传递到程序得到的数据,通过全局变量传递到程序“显显示信息示信息”中,实现了两个程序之间的数据传递。中,实现了两个程序之间的数据传递。使用局部变量和全局变量时要避免竞争现象。例如在程序不同的两个地方同时写同一个的对象的局部变量或全局变量,就会产生竞争现象,这时变量的值是无法预期的。因此我们必须要注意程序的

17、执行顺序,避免竞争现象5.8.1 程序框图禁用结构 用于控制程序段被禁止执行。相当于C语言中的/*/”。5.8.2 条件禁用结构 用于一个项目中,根据外部环境变量来控制代码是否执行。在前面板设计编程时,我们可以修改和设定对象控件的属性,但是在程序运行时能否由用户修改或程序自身改变呢?方法是:创建对象的属性节点(Property Node) ,通过对属性节点的“写”操作,完成对对象属性的修改。同样通过对属性节点的“读”操作,在程序中读取对象的属性。提示:建立CHART的属性节点 ,改为可写,并指定为曲线Plot的颜色Color属性,用Knob的值控制CASE,分别送5种颜色值给属性节点在对象控件

18、上右击,菜单中选择“创建属性节点” ,弹出菜单中再选择需要控制的属性,则在框图程序中建立了一个属性节点。在属性节点上右击,在弹出菜单中选择“转换为写入”,则改为可写。1:调用上次实验创建的Tmeter.vi,要求每0.5秒测量一次温度,使用移位寄存器对连续三次测量温度值求平均,显示实时温度测量曲线,如果测量温度高出或低于设定值,点亮报警LED指示。2:设计VI程序,用一个滑动条控件来选择对两个数分别进行加、减、乘、除运算,并显示出运算结果。3:设计一个VI,每间隔10ms产生一个随机数,将随机数发生器产生的数值与指定值比较,计算产生与指定值相等的随机数所需花费的时间。4: 用公式法求解一元二次方程,先使用CASE判别有解和无解。程序放入WHILE循环,修改系数A、B、C,反复执行。1. 用While循环,创建一个程序使之当输入0到100之间的随机数,大于等于循环次数时继续运行。2.学习使用双重For循环。创建一个程序,画出X从1到N的立方和曲线

温馨提示

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

评论

0/150

提交评论