第三章 程序结构_第1页
第三章 程序结构_第2页
第三章 程序结构_第3页
第三章 程序结构_第4页
第三章 程序结构_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

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

文档简介

1、2022/4/10虚拟仪器虚拟仪器内蒙古科技大学信息学院测控技术教研室2022/4/103 LabVIEW的程序结构 主要的程序结构有: 循环(While循环和For循环) 选择(Case结构) 顺序(Sequence结构) 事件(Event结构) 2022/4/103.1 For循环 1For循环的创建循环的创建 基本的基本的For循环结构由循环框、循环次数端口和计数端循环结构由循环框、循环次数端口和计数端口组成。口组成。 循环框循环框计数端口计数端口循环次数端口循环次数端口2022/4/10 2For循环的工作流程循环的工作流程 For循环用于将结构中的程序循循环用于将结构中的程序循环执行

2、指定的次数。环执行指定的次数。 在开始在开始For循环之前,从循环次循环之前,从循环次数端口读入循环次数,计数端口数端口读入循环次数,计数端口输出输出0值。值。 接下来执行接下来执行For循环框内框图代循环框内框图代码程序,每执行一次计数端口值码程序,每执行一次计数端口值自动加自动加1。 循环次数达到设定值后,退出循循环次数达到设定值后,退出循环。环。2022/4/10 3For循环的时间控制与数据传递循环的时间控制与数据传递 控制循环速度控制循环速度等待下一个整数倍毫秒等待下一个整数倍毫秒 。 数据传递数据传递 隧道上的数据在循环第一次执行时进入循环边框内。以后不再隧道上的数据在循环第一次执

3、行时进入循环边框内。以后不再理会这个数的变化理会这个数的变化。 例子:循环的数据输入输出2022/4/10 4For循环的数据通道与数组的自动索引循环的数据通道与数组的自动索引 数据通道是用连线工具连接循环框内外的数据端口时,数据通道是用连线工具连接循环框内外的数据端口时,在框架上自动形成的方形通道图标在框架上自动形成的方形通道图标 。 图标空心表明此时数据通道具有自动索引功能,实心图标不能图标空心表明此时数据通道具有自动索引功能,实心图标不能索引索引 。 自动索引是指将循环框外面的数组成员逐个依次进入循环体内,自动索引是指将循环框外面的数组成员逐个依次进入循环体内,或将循环框内的数据累加成一

4、个数组输出到循环框外面。或将循环框内的数据累加成一个数组输出到循环框外面。 2022/4/10例如:下图中通道自动索引功能有效时,每一次循环产生一个新的数例如:下图中通道自动索引功能有效时,每一次循环产生一个新的数据,存储在循环的边框通道上,待循环结束以后,产生的据,存储在循环的边框通道上,待循环结束以后,产生的6个数据将个数据将传送到一个数组指示器中。自动索引功能无效时,只有最后一次传送到一个数组指示器中。自动索引功能无效时,只有最后一次For循环产生的循环产生的1个随机数传到循环外。个随机数传到循环外。空心实心2022/4/10 4移位寄存器移位寄存器 创建:创建:右击边框,弹出一个菜单,

5、选择右击边框,弹出一个菜单,选择Add Shift Register选项,选项,可添加一个移位寄存器。可添加一个移位寄存器。 用途:用途:主要用于主要用于While循环和循环和For循环,将上一次循环的值传给下循环,将上一次循环的值传给下一次循环。一次循环。 数据类型:数据类型: 数字型、布尔型、字符串等数字型、布尔型、字符串等 。 初始化:初始化:在循环外将初始值连到移位寄存器的左端口,有默认初在循环外将初始值连到移位寄存器的左端口,有默认初值。值。 还可以存储前几次循环的值还可以存储前几次循环的值,在移位寄存器的左端口或右端口上,在移位寄存器的左端口或右端口上右击鼠标弹出菜单,选择右击鼠标

6、弹出菜单,选择Add Element选项,可创建附加的左端选项,可创建附加的左端口来存储前几次循环的值。口来存储前几次循环的值。2022/4/10均为整数)且例:求NMXNMXSNMX,(32022/4/10 5反馈节点反馈节点 功能:在循环中,将数据从一次循环传递到下一次循环。功能:在循环中,将数据从一次循环传递到下一次循环。 反馈节点箭头的方向表示数据流的方向。反馈节点箭头的方向表示数据流的方向。 反馈节点和移位寄存器可以互换,在反馈节点或移位寄存反馈节点和移位寄存器可以互换,在反馈节点或移位寄存器图标上弹出快捷菜单选器图标上弹出快捷菜单选Replace with shift Regist

7、er或或Replace with Feedback Node即可。即可。 移位寄存器左端口多于移位寄存器左端口多于1个时不能转换为反馈节点。个时不能转换为反馈节点。 2022/4/10 下面是用移位寄存器(左图)和反馈节点(右图)实现a+的框图程序。 2022/4/103.2 While循环 For循环和While循环的区别: For循环要执行预先指定的循环次数。 而While循环只有在条件端口接收到的值为False时才停止循环。While循环不必知道循环次数。 While循环不满足条件也要执行1次。 For循环当N1时1次都不执行。2022/4/10 1.While循环的创建循环的创建 Wh

8、ile循环由循环框、条件端口和计数端口组成。循环由循环框、条件端口和计数端口组成。循环循环框框条件端口条件端口计数端口计数端口2022/4/10 2.While循环的工作流程循环的工作流程 条件端口控制循环的停止与否。条件端口控制循环的停止与否。 条件端口有两种状态条件端口有两种状态 : 当使用状态为当使用状态为Stop if True 时,若输入值为时,若输入值为Ture,则停止循,则停止循环环 。若输入值为。若输入值为False,则继续执行下一次循环。,则继续执行下一次循环。 当使用状态为当使用状态为Continue if True 时,若输入值为时,若输入值为Ture,则,则继续执行下一

9、次循环。若输入值为继续执行下一次循环。若输入值为False,则停止循环。,则停止循环。 循环结束后,才去检测条件端口的值,因此不管条件是循环结束后,才去检测条件端口的值,因此不管条件是否成立,循环至少要执行一次。否成立,循环至少要执行一次。 2022/4/10 计数端口用于统计循环执行的次数,计数端口用于统计循环执行的次数,While循环每执行循环每执行一次,计数端口的值就加一次,计数端口的值就加1。 计数端口从零开始计数,也就是说,在第一次循环结束计数端口从零开始计数,也就是说,在第一次循环结束时,计数端口的值为时,计数端口的值为0,如果循环执行了,如果循环执行了10次,则计数次,则计数端口

10、的值为端口的值为9。 While循环也具有数据通道索引和移位寄存器、反馈接循环也具有数据通道索引和移位寄存器、反馈接点的功能,它们的用法与点的功能,它们的用法与For循环相同,只是循环相同,只是While循循环的边框数据通道默认为不能索引。环的边框数据通道默认为不能索引。 2022/4/10用While 循环实现求X的立方和 2022/4/103.3 Case结构 1.Case结构的创建结构的创建 Case结构由选择框架、选择端口、选择器标签,以及结构由选择框架、选择端口、选择器标签,以及递增递增/递减按钮组成。递减按钮组成。选择标签选择标签递增按钮递增按钮递减按钮递减按钮选择框架选择框架选择

11、端口选择端口2022/4/10 2Case结构的工作流程结构的工作流程 Case结构有一个条件选择端口 (Selector),根据连到该端口 的值来判断执行哪一个子Case。 Selector端口的数据类型有布尔型、数字型和字符串型。 3设置选择结构的默认项设置选择结构的默认项 应设置一个默认项来处理超出条件选项范围的情况。应设置一个默认项来处理超出条件选项范围的情况。 设置选择结构默认项的方法是在选择结构边框上单击鼠设置选择结构默认项的方法是在选择结构边框上单击鼠标右键,选择标右键,选择Make This The Default Case。2022/4/10 4选择结构数据通道的设置选择结构

12、数据通道的设置 输入数据时,每个子输入数据时,每个子Case框可连可不连数据通道。框可连可不连数据通道。 输出数据时,每个子输出数据时,每个子Case框必须为通道连接数据。否框必须为通道连接数据。否则程序不能运行,这时通道的图标是空心的,只有为每则程序不能运行,这时通道的图标是空心的,只有为每个子个子Case框的数据端口都连接数据后,图标才变成实框的数据端口都连接数据后,图标才变成实心。心。 Use Default if Unwired可使程序中没有连线的子可使程序中没有连线的子Case框输出默认值。框输出默认值。2022/4/10CASE0 (Add),VI就进行加法运算,CASE1,则VI

13、将进行减法运算。使用了一个数字型Text Ring控制器(在控制模板中的Ring&Enum子模板中)注意:注意:当在一个子Case中建立了一个输出数据通道后,必须给每一个子Case定义输出数据通道。 设定默认的子设定默认的子CASE,当所有条件都不满足时,当所有条件都不满足时,执行默认子执行默认子CASE例子例子2022/4/103.4 顺序结构LabVIEW是一种数据流程序设计语言,没有明确的先后顺序,当节点所有输入端的数据全部有效时,节点才执行。Sequence结构,它是一种先后顺序执行的结构,看上去象电影胶片的帧(Frame),每一帧为一段框图程序,按照帧(Frame)的顺序来执行框图程

14、序。两种形式顺序结构,Flat Sequence Structure平铺式顺序结构和Stacked Sequence Structure层叠式顺序结构。功能相同,区别仅在于表现形式不同。2022/4/10 1. 顺序结构的创建顺序结构的创建 在函数模板的在函数模板的Structures子模板中选择创建顺序结构。选取子模板中选择创建顺序结构。选取Stacked Sequence Structure层叠式顺序结构层叠式顺序结构 。 在结构边框上面单击鼠标右键,从弹出的快捷菜单中选择在结构边框上面单击鼠标右键,从弹出的快捷菜单中选择“Add Frame After”或或“Add Frame Befo

15、re”可以增加子图形代码框。可以增加子图形代码框。 在结构边框上右击弹出的快捷菜单,选择在结构边框上右击弹出的快捷菜单,选择ReplaceReplace with Flat Sequence,可以将层叠式顺序结构变换为平铺式顺序,可以将层叠式顺序结构变换为平铺式顺序结构结构 2022/4/10 2.顺序结构的工作方式顺序结构的工作方式 数据传递至顺序结构时,层叠式从标识数据传递至顺序结构时,层叠式从标识0开始执行,依次顺序执行;开始执行,依次顺序执行;平铺式从左至右执行所有子图形代码框。平铺式从左至右执行所有子图形代码框。 从结构外面向顺序结构写数据时,可连接可不连接这个数据通道;从结构外面向

16、顺序结构写数据时,可连接可不连接这个数据通道;但是当顺序结构向外输出数据时,各个图形代码框中只能有一个但是当顺序结构向外输出数据时,各个图形代码框中只能有一个连接这个数据通道。连接这个数据通道。 代码框之间的数据传递,平铺式可从一帧直接连线到另一帧来传代码框之间的数据传递,平铺式可从一帧直接连线到另一帧来传递数据,层叠式则需要通过局部变量递数据,层叠式则需要通过局部变量Sequence Local来传来传送数据。送数据。 2022/4/10 在层叠式顺序结构的边框上面右击,选择在层叠式顺序结构的边框上面右击,选择Add Sequence Local即可在当前帧创建一个顺序局部变量端口。即可在当

17、前帧创建一个顺序局部变量端口。 将本帧中的数据连接到该局部变量端口,该数据就可传到后面的将本帧中的数据连接到该局部变量端口,该数据就可传到后面的帧,该数据不会作用到它前面的帧。帧,该数据不会作用到它前面的帧。 如下图示意了层叠式顺序结构通过局部变量传递数据的情如下图示意了层叠式顺序结构通过局部变量传递数据的情况。在标识是况。在标识是1号帧的一个数据传递到标识是号帧的一个数据传递到标识是2号的帧进行号的帧进行“或或”运算,运算,0号帧不能使用该数据。号帧不能使用该数据。 2022/4/10例:使用Sequence结构,设计一个VI,计算产生一个与指定的数字相等的随机数所需花费的时间。 读取定时器

18、的当前值 VI程序每隔10ms执行循环四舍五入取整2022/4/103.5 事件结构 1.事件结构的创建事件结构的创建 事件结构包括:结构框、事件标签、超时端口和事件数据端口。事件结构包括:结构框、事件标签、超时端口和事件数据端口。事件标签事件标签 :说明当前框图程序是响应说明当前框图程序是响应的什么事件的什么事件 。超时端口,超时端口,默认默认值为值为-1,表示无,表示无限等待限等待 。 事件数事件数据端口据端口 结构框结构框 2022/4/10 2事件结构的使用事件结构的使用 可有一个或多个子图形代码框,该图形代码框可以设置为响应多可有一个或多个子图形代码框,该图形代码框可以设置为响应多个

19、事件。个事件。 右击事件结构边框,从弹出的快捷菜单中选择右击事件结构边框,从弹出的快捷菜单中选择Edit Events Handled by ThisCase,这时将弹出编辑事件对话框。,这时将弹出编辑事件对话框。 显示当前建立的事件,显示当前建立的事件,默认默认“Timeout事件。事件。增加事件增加事件删除事件删除事件 可以选择可以选择的事件源的事件源 相应的事件源可相应的事件源可产生的事件消息产生的事件消息 2022/4/10例如:建立一个5秒的超时事件和一个“OK Button” 开关值发生变化的事件 要求:要求: 方法方法1:任一事件发生都执行同一个子图形代码框:任一事件发生都执行同

20、一个子图形代码框程序,显示出对话框程序,显示出对话框“超时或单击了超时或单击了OK按钮按钮”。 方法方法2:由不同的框图程序响应不同的事件,显示:由不同的框图程序响应不同的事件,显示出对话框出对话框“超时事件超时事件”或或“单击了单击了OK按钮事件按钮事件”。 2022/4/10 法法1: 在前面板添加放置一个在前面板添加放置一个“OK Button” 控件控件 。 在编辑事件对话框中单击按钮在编辑事件对话框中单击按钮 新建一个事件,选取新建一个事件,选取“EventSources”事件源窗口中的事件源窗口中的“OK Button”,并在,并在“Event”事件窗口中选择事件窗口中选择“Val

21、ue Change” 。 选取选取OneButtonDialog函数,放置在函数,放置在Event Structure中。中。 在在message数据端口新建一个常量,输入数据端口新建一个常量,输入“超时或单击超时或单击了了OK按钮按钮”。 在超时端口连接值为在超时端口连接值为5000的一个数字常量。的一个数字常量。 2022/4/10 运行程序,如果单击了运行程序,如果单击了“OK Button”按钮或等待按钮或等待5秒都秒都会显示出对话框会显示出对话框“超时或单击了超时或单击了OK按钮按钮”。 2022/4/10 法法2: 在事件结构边框的快捷菜单中选择在事件结构边框的快捷菜单中选择Add

22、 Event Case来创建事件结构的一个分支来创建事件结构的一个分支 。 在弹出的对话框中,选取在弹出的对话框中,选取“EventSources”事件源窗口事件源窗口中的中的“OK Button” 。并在。并在“Event”事件窗口中选择事件窗口中选择“Value Change” 。 后面的设置与法后面的设置与法1类似。类似。2022/4/102.3.6 公式节点 在框图程序中,如果需要设计较复杂的数学运算,框图将在框图程序中,如果需要设计较复杂的数学运算,框图将会十分复杂,工作量大,而且不直观,调试、改错也不方会十分复杂,工作量大,而且不直观,调试、改错也不方便。便。 利用公式节点,只需将

23、数学公式的文本表达式输入在公式利用公式节点,只需将数学公式的文本表达式输入在公式节点的框图内,并连接相应的输入、输出端口,则节点的框图内,并连接相应的输入、输出端口,则LabVIEW会自动地根据公式计算出正确的结果,并从输会自动地根据公式计算出正确的结果,并从输出端输出。出端输出。2022/4/10 (1)公式节点的创建)公式节点的创建 从函数模板的从函数模板的Structures子模板上选择公式节点子模板上选择公式节点Formula Node,在框图中设置公式节点。,在框图中设置公式节点。 公式节点的边框大小可以改变,用户可以使用标签工公式节点的边框大小可以改变,用户可以使用标签工具,将数学

24、公式直接输入到公式节点的框内。具,将数学公式直接输入到公式节点的框内。2022/4/10 (2)公式节点的使用)公式节点的使用 可以声明变量,也支持一些常用的可以声明变量,也支持一些常用的C语言的语句(包括语言的语句(包括赋值语句、条件语句、循环语句、赋值语句、条件语句、循环语句、Switch语句),每语句),每条语句以分号结尾。条语句以分号结尾。 输入公式后,需要添加输入、输出端口。输入公式后,需要添加输入、输出端口。 在添加端口后出现的方框内填入变量名称。在添加端口后出现的方框内填入变量名称。 将输入端口和程序中的数据端口相连接。将输入端口和程序中的数据端口相连接。 将输出端口和程序中的指

25、示端口连接将输出端口和程序中的指示端口连接 2022/4/10 公式节点中常用的运算符其中,条件运算符的其中,条件运算符的“?”前的部分是判定条件,前的部分是判定条件,“?”和和“:”间的部分为当条件为间的部分为当条件为True时的表达式,时的表达式,“:”后后的部分为当条件为的部分为当条件为False时的表达式。时的表达式。2022/4/10 公式节点语句中还可以使用数学函数:abs、acos、acosh、asin、asinh、atan、atan2、atanh、ceil、cos、cosh、cot、csc、exp、expml、floor、getexp、getman、int、intrz、ln、l

26、np1、log、log2、max、min、mod、pow、rand、rem、sec、sign、sin、sinc、sinh、sizeOfDim、sqrt、tan、tanh。 公式节点中可使用 IF条件语句, for和do 、while循环 Swtich ( ) case分支语句 公式节点的语法与C语言相同2022/4/10例:用公式节点计算y1=x3+x2+5和y2=m*x+b 分析: 公式的输入端口共有3个输入量,分别是m、b和x。3个输入量经过公式节点中的两条语句完成指定的运算,通过输出端口输出y1和y2。2022/4/10补充:前面板对象属性的动态控制 在前面板设计编程时,我们可以修改和设

27、定对象控件在前面板设计编程时,我们可以修改和设定对象控件的属性,但是在程序运行时能否由用户修改或程序自的属性,但是在程序运行时能否由用户修改或程序自身改变呢?身改变呢? 方法是:创建对象的属性节点,通过对属性节点的方法是:创建对象的属性节点,通过对属性节点的“写写”操作,完成对对象属性的修改。操作,完成对对象属性的修改。 同样通过对属性节点的同样通过对属性节点的“读读”操作,在程序中读取对象操作,在程序中读取对象的属性。的属性。2022/4/10例:程序运行中,用Knob控件改变图形曲线的颜色提示:建立提示:建立CHART的属性节点的属性节点 ,改为可写,并指定为曲线,改为可写,并指定为曲线P

28、lot的颜的颜色色Color属性,用属性,用Knob的值控制的值控制CASE,分别送,分别送5种颜色值给属性节点种颜色值给属性节点2022/4/102.3.7 局部变量和全局变量 1局部变量局部变量 程序太复杂,连线困难,需用局部变量。程序太复杂,连线困难,需用局部变量。 (1)创建)创建 法一:为前面板对象创建局部变量。法一:为前面板对象创建局部变量。 在对象上面单击鼠标右键,在对象上面单击鼠标右键,选择选择CreateLocal Variable。 法二:在框图程序中新建局部变量,然后再指向某个对象。法二:在框图程序中新建局部变量,然后再指向某个对象。 可以为一个对象创建多个局部变量。可以

29、为一个对象创建多个局部变量。 局部变量具有读、写两种属性。并可互换。局部变量具有读、写两种属性。并可互换。 2022/4/10 (2) 使用示例使用示例 程序中,建立了程序中,建立了“停止停止”控件的两个局部变量。控件的两个局部变量。 循环内的局部变量处于循环内的局部变量处于“读读”状态,读出当前状态,读出当前“停止停止”控件的状态,控件的状态,送给送给“指示灯指示灯”控件显示。控件显示。 循环外的局部变量循环外的局部变量 则处于则处于“写写”状态,它在每次程序运行前赋状态,它在每次程序运行前赋给给“停止停止”控件,赋值为控件,赋值为“False”,以保证程序运行时进入循环,以保证程序运行时进

30、入循环状态。状态。2022/4/10 2全局变量全局变量 不同程序之间交换数据,需用全局变量。不同程序之间交换数据,需用全局变量。 全局变量全局变量VI只有前面板而无框图程序。只有前面板而无框图程序。 (1)创建)创建 选择全局变量图标,右击,选择选择全局变量图标,右击,选择Open Front Panel,打开全局变量声明打开全局变量声明VI的前面板。的前面板。 按照需要的数据类型加入控件按照需要的数据类型加入控件 。 切换到框图程序窗口,单击全局变量图标,选择需要切换到框图程序窗口,单击全局变量图标,选择需要它指向的控件。它指向的控件。 返回到全局变量声明返回到全局变量声明VI的前面板,将

31、该的前面板,将该VI文件存盘,文件存盘,完成全局变量的建立。完成全局变量的建立。 2022/4/10 (2)调用)调用 由函数模板中的由函数模板中的Select a VI子模板打开选择用户子模板打开选择用户程序对话框,选择已经保存的全局变量声明程序对话框,选择已经保存的全局变量声明VI程序,程序,此时将在框图程序中显示全局变量数据端口。此时将在框图程序中显示全局变量数据端口。 如果在全局变量声明如果在全局变量声明VI中建立多个控件,可以用操中建立多个控件,可以用操作工具在全局变量的图标上单击,在列出的所有变作工具在全局变量的图标上单击,在列出的所有变量对象中选择所需的对象。量对象中选择所需的对象。 2022/4/10 (3)使用示例)使用示例 利用全局变量在不同利用全局变量在不同VI中传递数据。中传递数据。 创建一个全局变量声明创建一个全局变量声明,其中包含一个数值型,其中包含一个数值型控件并命名为控件并命名为“数值数值”和布尔型控件并命名为和布尔型控件并命名为“状状态态”,保存为,保存为“GVvi”。新建一个新建一个VI命名为命名为“采集信息采集

温馨提示

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

评论

0/150

提交评论