您好,欢迎访问三七文档
第4章程序结构程序结构是一种由软件内部定义的程序执行方式。它们就像领导指挥工作一样,把握程序执行的大局,同时也控制着一些微小有环节。程序结构主要有循环、事件、条件、顺序结构等。本章将对它们进行详细的讲解和说明。4.1程序结构概念程序结构是一个对程序执行的总称。它包含有多种程序结构相关的函数。LabVIEW有一个函数选板,专门用于程序的结构控制和节点的属性设置等。通过“函数”|“编程”|“结构”下拉列表打开,如图4.1所示。4.2While循环While循环是一种先执行后检查条件的循环程序。它不管条件满足与否,最少要执行一次。它的最大好处是能在条件为真是循环一下,省去了许多的麻烦。下面对它的概念及使用进行详细的说明。4.2.1While循环创建While循环重复执行内部的子程序框图,直到条件接线端(输入端)接收到特定的布尔值。将布尔值连接至While循环的条件接线端。在条件接线端上右击,弹出快捷菜单,选择“真(T)时停止”或“真(T)时继续”,可以进行运行条件状态的选择。也可将一个错误簇连线至条件接线端,具体做法如下:右击条件接线端,从快捷菜单中选择“真时停止”或“真时继续”,然后把错误源接到此条件端口上即可。4.2.2While的自动索引如果为一个进入While循环的数组启用自动索引,则While循环将对该数组建立索引。但是,While循环只有在满足特定条件时才会停止执行,因此While循环的执行次数不受该数组大小的限制。当While循环索引超过输入数组的大小时,LabVIEW会将该数组元素类型的默认值输入循环。循环次数过多可能会引起系统内存溢出。4.3For循环For循环是一种先检查条件后执行的方式。若条件不满足,它就不执行。若条件满足,则For循环在内部会重复执行N次,当N达到设定值后就停止工作。4.3.1For循环概念For循环是一个常用的判断结构,它的其他语言的For一样,起到一个判断条件,再执行的作用。它在结构如图4.14所示。4.3.2循环次数的设置For循环中要设置循环的次数,这是循环设置的第一步。它的设置关系到程序运行正确性和稳定性。不然有时可能会造成死的循环。将循环外部的数值连接到总数接线端的左边或顶部,可手动设定循环次数,或者使用自动索引自动设定循环总数。循环10次时,对次数端口设置如图4.15所示。4.3.3用For循环产生数组For循环可以把一个单独数据变为一个数组,第一个For循环都能产生一个一维的数组。也就是说,每经过一个For循环,数组就增加一个维。用这种操作,方便的创建一个数组。每循环一次,就增加一个元素。下面以产生一个二维的数组为例进行说明。4.4事件结构事件结构就是当某一指定的事件发生时,就会执行相应框图中的程序。它包括一个或多个子程序框图,或事件分支。当结构执行时,仅有一个子程序框图或分支在执行。事件结构将等待直至某一事件发生,并执行相应条件分支从而处理该事件。4.4.1事件结构的概念事件结构是一种在程序运行时通过前面板可以改变程序执行方式的结构。也就是说它可以改变数据流。比如当程序执行在中间时,有一个事件的发生,引发一个事件结构,就可以调到程序前面去执行。这就很好地干涉了程序的执行。有点类似于C语言中的goto语句。4.4.2事件结构的组成及建立事件结构的创建是通过在程序框图中托动生成。这个和上面的两循环类似。它创建后如图4.19所示。4.4.3事件结构的设置事件结构中,要对事件的属性进行定义并做出响应。不同的事件,它的数据属性端口不一样。常用的有“源”、“类型”、“时间”3种。它的子程序框图可以创建多个,且每一个子框图都可以代表不同的事件操作。下面将对它们的操作详细说明。4.4.4事件编程事件的编程是非常有用的一种方法。这里以一个对前面板控件的识别做出响应为例说明编程过程。本程序是用一个开关控制一个事件分支,来显示灯的亮和灭。用一个旋钮控件一个分支进行数据显示。用一个灯来字符串的显示。4.5条件结构条件结构是一种由输入的条件进行选择执行分支的结构。它可以包含多个分支,第一个分支都有一个不同的程序进行条件。它类似于C语言中的case选择结构。当输入的条件符合某一条件的入口值时,程序就执行此条件结构内的程序。但它的执行是唯一的,不同同时执行两个或两个以上的分支。它的条件选择端可以是布尔量、数值、字符串等多种形式。本节将从几个方面讲解它的应用。4.5.1条件结构概念条件结构是在程序多种情况下进行选择的最佳结构。它能最快最安全的选择要进入的分支,独立的执行。以创建它时,和前面向种软件一样,先在要创建的地方单击,再托动鼠标,有一个虚线框在从起点开始,一直在增大。到目的点后再次单击鼠标。就给出了条件结构的框图,如图4.29所示。4.5.2分支设置条件结构分支的设置和事件结构的设置一样,右击结构边框,从弹出的快捷菜单中选择添加方式。这里有“在后面添加分支”、“在前面添加分支”、“复制分支”“删除分支”等。这里选择“在后面添加分支”命令,如图4.30所示。4.5.3条件输入当对条件结构进行编程时,必须先对条件输入进行编辑。这样才能在连接到条件结构时能设置相关的分支。若输入的条件多于结构中的分支,则输入的条件量中,后面的一些量被忽略。当把条件输入编辑好后,连接到结构的输入端口上,就会自动扫描出输入分支量入口。下面以一个转盘作为条件的输入,进行整个结构的条件设置讲解。4.5.4条件结构的应用实际应用中要用到大量的条件结构使用。这里先以一个“组合框”为输入条件,再把它产生的字符串作为条件入口的判断。这样就练习了以字符串为条件的选择。4.6定时结构定时结构是一个用时间来控制程序执行的结构。它包含有许多子时间函数。主要用来对循环的定时执行,做出响应。它本节将对它的操作进行详细说明。4.6.1定时结构概念定时结构是用于控制定时结构在执行其子程序框图、同步各定时结构的起始时间、创建定时源,以及创建定时源层次结构时的速率和优先级。通过“函数”|“编程”|“结构”|“定时结构”下拉列表打开,如图4.39所示。4.6.2定时循环定时循环是一种能在一定的时间内按指定的时间执行程序相关动作的结构。它的程序框图中含有许多的条件端口,如图4.40所示。1.循环定时源2.循环定时属性3.处理器分配4.延迟周期4.6.3定时顺序定时顺序是一种在设定时间下按顺序执行程序框图内容的结构。它最大的好处是能不用手动设置,自动的按一定顺序进行。创建后它的程序框图如图4.42所示。4.6.4定时操作定时操作有创建定时源、清除定时源等。它们主要是对一些时间的设置和创建。下面分别讲解它们的操作方法。1.创建定时源2.定时结构停止4.6.5定时结构的编程下面以一个定时循环为例进行编程。编程的目标是通过定时循环,在一定的时间内进行循环。当循环到第30次时,产生一个定时。当时间延时达到后,定时循环的“延迟完成?”输出端口会产生一个脉冲,让延迟完成这一灯亮。同时还用到一个进度显示框。当进度达到100%时定时循环停止。下面将分步讲解具体操作过程。4.7公式节点公式节点是对一些复杂的算法和公式进行编辑,能方便地为一些程序处理提供依据。在LabVIEW中,编程时只需要要在公式节点中按一定的要求输入对应公式即可,简化了编程过程。本节对公式节点的操作进行详细说明。4.7.1公式节点的概念在公式节点中,创建一个公式节点,类似于循环结构。在程序框图界面画出公式节点区域,就可以进行公式编程,如图4.50所示。4.7.2公式节点的语法公式节点的语法类似于C语言中的编程语法。编程中每一句程序结束时,都必须加上一个分号作为结束。且任何一个命令都和C语言中的优先级一样。编程时要遵守这些语法。大体上涵盖了下列非终结符号:复合语句、标识符、条件表达式、数字、数组大小、浮点型、整型、左式、赋值运算符和函数。编程中规则有如下几条。对在框图上添加的变量不需要在程序中定义,其他要用到的变量都要定义。字符不能在公式节点中定义。数值的定义要有长度。所有公式中用的符号都可以在编程中直接使用。编程中可以用到C语言中的一些命令,比如case、while、switch等。4.8顺序结构顺序结构是一种按照事先编程,只要进入此顺序结构,就会按顺序进行执行。它主要是引导了程序的执行顺序。本节将对两种顺序结构进行详细讲解。4.8.1顺序结构的建立顺序结构有两类,它们分别是层叠式顺序结构和平铺式顺序结构。它们几乎没有什么大的差别,只是前都是一个层叠的结构,程序编程过程简短,可以添加顺序帧。后者是一个排开的形状,它把所有的顺序帧都显示出来,占用了大量程序界面。但是它的数据流执行明了,维护更加方便。1.层叠式顺序2.平铺式顺序结构4.8.2顺序结构的执行下面以3个灯按顺序依次亮起为事例,编写一个程序,反应顺序结构的执行过程。4.9移位寄存器移位寄存器是LabVIEW中对程序运行中数据进行临时保存的一种方式。它用于在循环中保存前面几次的执行的数据。本节将对移位寄存器的使用进行编程讲解。4.9.1移位寄存器的建立移位寄存器是一种用于数据保存的方式。在For循环和While循环中,都可以创建移位寄存器。在循环结构的程序边框上,右击弹出快捷菜单,选择“添加移位寄存器”命令,则会自动在循环结构的输入和输入边框上分别添加一个端口。这样就可以在两个端口上接线,如图4.57所示。4.9.2移位寄存器的初始化移位寄存器相当于数组,可以在其中保存大量的数据。所在使用之前和数组一样,要对它进行初始化。这样可以保证在使用时输出的值才时正确的值。它的初始化是也就是程序刚开始执行时,送一个选定的数值到移位寄存器。这样做保证了数据的安全性,不再混乱。比如对布尔量中,初始化给定一个真常量或者假常量。对数值性变量,初始化时送一个0或者其他的数值即可。对字符串的初始化可以送一个空字符串,如图4.59所示。4.9.3移位寄存器的使用移位寄存器的使用很广泛,它和其他编程语言中的移位寄存器一样,用于对数据的保存。下面以保存循环中当前计数值和相加的前后三次的值。4.10其他结构LabVIEW中还包括许多结构,这一节里将对它们进行一些简要的讲解。以便在以后的编程中用到时能灵活应用。4.10.1程序框图禁用结构程序框图禁用结构包括一个或多个子程序框图(分支),仅有启用的子程序框图可执行。它是对一些不想执行的程序进行屏蔽的手段。程序框图禁用结构用于禁用一部分程序框图。它的程序框图类似于条件结构,框图如图4.64所示。4.10.2反馈节点反馈节点是把一次VI或循环运行所得的数据值保存到下一次。反馈节点类似于反馈控制理论和数字信号处理中的z-1块。它的关键是返回以前的值。反馈节点将连接到初始化接线端的值作为第一次循环或运行的初始值。然后将上一次循环的结果保存以用于此后的每次循环。如初始化接线端未连接任何值,反馈节点将使用数据类型的默认值,并在此后的运行中不断在之前所得结果的基础上产生值。4.10.3共享变量共享变量表示程序框图上的一个共享变量。要将程序框图中的共享变量节点和处于活动状态的项目中的共享变量进行绑定,可在程序框图中放置一个共享变量节点。双击或右击该共享变量节点,从快捷菜单中选择选择变量以显示选择变量对话框。也可将项目浏览器窗口中的共享变量拖放至相同项目中VI的程序框图,从而创建一个共享变量节点。4.10.4局部变量创建局部变量时,该对象的局部变量的图标将出现在程序框图上。写入一个局部变量相当于将数据传递给其他接线端。但是,局部变量还可向输入控件写入数据和从显示控件读取数据。事实上,通过局部变量,前面板对象既可作为输入访问也可作为输出访问。4.10.5全局变量全局变量用于在多个VI之间访问和传递数据。如此看来它非常方便不同程序间的数据传输。但实际它在编程中不是经常用到。因为全局变量在运行中,要占用大量的系统内存,传输速度也不高。4.11小结本章对LabVIEW中编程结构进行了详细的说明。这也是对所有编程中要用的控制函数和编程用法进行了
本文标题:第4章程序结构
链接地址:https://www.777doc.com/doc-599426 .html