项目3应用结构设计程序虚拟仪器应用2019/9/82虚拟仪器应用2019/9/82项目3应用结构设计程序目录3.1任务1应用For循环编写VI3.2任务2应用While循环设计VI3.3应用条件结构设计VI3.4应用顺序结构设计VI3.5应用事件结构设计VI虚拟仪器应用2019/9/83虚拟仪器应用2019/9/83项目3应用结构设计程序3.1任务1应用For循环编写VILabVIEW中除了拥有C语言中所有的程序结构外,还有一些特殊的程序结构,如事件结构、公式节点等,通过这些可以方便快捷地实现任何复杂的程序结构。虚拟仪器应用2019/9/84虚拟仪器应用2019/9/84项目3应用结构设计程序同其它的文本语言一样,LabVIEW中也有各种结构。LabVIEW中的结构主要有While循环、For循环、顺序结构、条件结构、事件结构等。选择函数选板→编程→结构,打开结构子选板。3.1任务1应用For循环编写VI虚拟仪器应用2019/9/85虚拟仪器应用2019/9/85项目3应用结构设计程序LabVIEW中的结构放置在程序框图中,其外形一般是一个大小可以缩放的边框,当它与其他节点的连线有数据传递时,边框内的一段代码将反复执行或有条件执行或按某一定的顺序执行。结构内的该段代码则被称为子框图。LabVIEW中的循环与结构位于程序框图的“函数”选板下的“结构”子选板中。3.1任务1应用For循环编写VI虚拟仪器应用2019/9/86虚拟仪器应用2019/9/86项目3应用结构设计程序“结构”子选板界面3.1任务1应用For循环编写VI虚拟仪器应用2019/9/87虚拟仪器应用2019/9/87项目3应用结构设计程序1.For循环结构在结构子选板中找到For循环,鼠标左键单击,移动鼠标到程序框图上,找到合适位置,按下鼠标左键,定位框体的左上角,然后移动鼠标。可以看到随鼠标移动而变化的矩形虚线框。释放鼠标左键,就出现一个For循环结构。3.1任务1应用For循环编写VI3.1.1设计循环计数器要求:应用For循环,设计循环计数器。设置“循环总数”为5,观察“循环计数”的输出,并记录循环次数。虚拟仪器应用2019/9/88虚拟仪器应用2019/9/88项目3应用结构设计程序循环总数:输入要循环的次数。循环次数为正整数,因此N为蓝色。在默认的情况下确立了For循环执行的次数,一旦开始执行后,只有达到输入的循环次数才能终止其运行。也可以给N输入0值,此时不会执行该循环中的内容。循环计数:表示它是一个循环计数器i。计数由0开始计数,第一次循环结束,i计数为0,之后依次加1,一直记到i=N-1。3.1任务1应用For循环编写VI虚拟仪器应用2019/9/89虚拟仪器应用2019/9/89项目3应用结构设计程序步骤:1)新建一个VI。2)在“计数接线端”的右侧端点上点击鼠标右键,创建显示控件,并把该控件命名为“循环计数”,用来显示i的数值。3)构造反馈结构,实现每执行一次循环体内部程序,计数的数值加1,用来观察循环次数;并显示“循环次数”。4在循环体内放置一个“等待”节点,使得For循环每运行一次等待1秒。5)保存VI,切换到前面板,然后运行VI,观察两个数值控件数据变化情况:可以看到显示控件的数据每秒加1;“循环计数”从0递增到4、“循环次数”从1增加到5。3.1任务1应用For循环编写VI虚拟仪器应用2019/9/810虚拟仪器应用2019/9/810项目3应用结构设计程序从运行结果可以看出,For循环的循环次数由循环总数N决定;循环计数器从0开始计数,计到N-1For循环停止。3.1任务1应用For循环编写VI虚拟仪器应用2019/9/811虚拟仪器应用2019/9/811项目3应用结构设计程序1.For循环中的自动索引自动索引的功能是使循环框外面的数组成员逐个进入循环框内,或使循环框内的数据累加成一个数组输出到循环框外面。For循环的索引可通过鼠标右键单击循环边框的数据通道来启动和关闭,For循环默认开启自动索引功能。3.1.2利用For循环创建二维数组3.1任务1应用For循环编写VI虚拟仪器应用2019/9/812虚拟仪器应用2019/9/812项目3应用结构设计程序用自动索引后,循环框内的标量数据在循环框外变成一维数组;循环框内一维数组在循环框外就变成二维数组,因此通过自动索引可改变数组维度。虚拟仪器应用2019/9/813虚拟仪器应用2019/9/813项目3应用结构设计程序2.创建二维数组要求:利用两个嵌套的For循环,创建一个4行5列的二维数组,数组如下:123451112131415212223242531323334353.1任务1应用For循环编写VI虚拟仪器应用2019/9/814虚拟仪器应用2019/9/814项目3应用结构设计程序步骤:1)新建一个VI,在程序框图窗口工作区放置放置两个个嵌套的For循环,把循环总数内层设为5,外层设为4。2)生成行元素一维数组。3)生成二维数组。4)保存VI,命名为“创建二维数组”。5)运行该VI,二维数组有4行、5列。可见,外层循环总数为数组行数,内层循环总数为数组列数。3.1任务1应用For循环编写VI虚拟仪器应用2019/9/815虚拟仪器应用2019/9/815项目3应用结构设计程序3.1任务1应用For循环编写VI虚拟仪器应用2019/9/816虚拟仪器应用2019/9/816项目3应用结构设计程序3.1.3移位寄存器使用移位寄存器是LabVIEW循环结构中的一个附加对象,其功能是将当前循环完成的某个数据传递给下一个循环开始。在For循环的左边框或右边框上右击,打开快捷菜单,选择“添加移位寄存器”。此时左右框各出现一个黑色移位寄存器端口。右边端口存储档次循环结束时的数据,下次循环开始时,该数据传递给左边端口。3.1任务1应用For循环编写VI虚拟仪器应用2019/9/817虚拟仪器应用2019/9/817项目3应用结构设计程序3.1.3移位寄存器使用为了存储多次循环的数据,可以在寄存器的左端添加端口。方法是在端口上右击,打开的菜单中选择“添加元素”或“删除元素”来改变移位寄存器的位数。(a)添加寄存器(b)寄存器赋值(c)初始化与添加端口3.1任务1应用For循环编写VI虚拟仪器应用2019/9/818虚拟仪器应用2019/9/818项目3应用结构设计程序一般来说,移位寄存器可以存储任何类型的数据,但是连接在同一个寄存器两个端子上的数据必须是同一类型的。在使用移位寄存器之前,可对寄存器进行初始化,即在左侧寄存器端口连接一个常量作为初始值。如果不进行初始化,首次运行,把“0”作为初始值;非首次运行则把上次运行的数据作为初始值。3.1任务1应用For循环编写VI虚拟仪器应用2019/9/819虚拟仪器应用2019/9/819项目3应用结构设计程序移位寄存器用来将本次循环的数据存储下来,以备下一次循环使用,在下一次循环使用以后,其中的数据被新的数据所覆盖。把初始化数据设为“5”,在每个端口添加一个显示控件,并放置一个探针,如图3-7所示。运行VI时,右端口数据送入左测的第1个端口,左侧数据按照三角箭头的方向传递,1号端口数据送入2号端口,依次下传。第0次运行i=0,“0”被送给右侧端口,左侧3个端口被赋值“5”,运行结果为“0,5,5,5”;第1次运行,数据为“1,0,5,5”;第2次结果“2,1,0,5”,第3次“3,2,1,0”……第9次运行结果。3.1任务1应用For循环编写VI虚拟仪器应用2019/9/820虚拟仪器应用2019/9/820项目3应用结构设计程序3.1任务1应用For循环编写VI虚拟仪器应用2019/9/821虚拟仪器应用2019/9/821项目3应用结构设计程序3.2任务2应用While循环设计VI1.While循环结构While循环也在函数选板的结构子选板中,放置方法与For循环相同,功能结构也与For循环类似。While循环由循环框架、循环计数端子、条件端子三个部分组成。While循环无固定的运行次数,当满足停止条件时,循环停止。循环计数端子i由0开始计数,也就是说第一次循环结束,i计数为0,之后依次累加1。条件端子需要输入一个布尔量,否则程序无法运行。默认状态是指当条件输入为真(True)时,循环停止。点击条件端子,其会变为,此时条件输入为假(False)时,循环停止。•3.2.1设计复数运算VI虚拟仪器应用2019/9/822虚拟仪器应用2019/9/822项目3应用结构设计程序2.设计复数运算VI要求:设计VI实现复数运算代数式和指数式的互相转换。该任务中要用到“复数”和“数学与科学常量”两个子选板。这两个子选板都在数值子选板中。3.2任务2应用While循环设计VI虚拟仪器应用2019/9/823虚拟仪器应用2019/9/823项目3应用结构设计程序3.2任务2应用While循环设计VI虚拟仪器应用2019/9/824虚拟仪器应用2019/9/824项目3应用结构设计程序步骤:1)新建一个VI,在程序框图上放置一个While循环,在条件停止端子上创建一个输入控件,用来停止该循环。2)实现把复数的极坐标式转换成代数式,并在该控件属性里设置“精度位数”为小数点后2位。3)实现把复数的代数式转换成极坐标式,数值显示控件的“精度位数”设置为小数点后2位。4)运行该VI。•在模和幅角输入控件分别输入5和36.87,观察代数式输出为4+3i。•在实部和虚部输入控件分别输入4和3,得到的模是5,幅角是36.87度。3.2任务2应用While循环设计VI虚拟仪器应用2019/9/825虚拟仪器应用2019/9/825项目3应用结构设计程序3.2任务2应用While循环设计VI虚拟仪器应用2019/9/826虚拟仪器应用2019/9/826项目3应用结构设计程序3.2.2设计温度转换与报警VI要求:温度测量输入为摄氏温度,调用在“1.3任务3创建VI”中创建的“ConvertCtoF.vi”,把摄氏温度转换成华氏温度。当温度超过华氏200度时,指示灯点亮,并停止运行VI。3.2任务2应用While循环设计VI虚拟仪器应用2019/9/827虚拟仪器应用2019/9/827项目3应用结构设计程序3.2任务2应用While循环设计VI虚拟仪器应用2019/9/828虚拟仪器应用2019/9/828项目3应用结构设计程序1.While循环与For循环比较1)For循环的数组默认为自动索引开启,While循环中的数组默认为自动索引禁用。可在循环的通道上单击鼠标右键弹出快捷菜单选择“启用\禁用索引”选项。另外,在创建二维数组时一般使用For循环而不使用While循环。2)和For循环一样,While循环也有移位寄存器,使用方法和For循环一样。3.2.3设计循环累加器3.2任务2应用While循环设计VI虚拟仪器应用2019/9/829虚拟仪器应用2019/9/829项目3应用结构设计程序3)For循环是在执行前检查是否符合条件,While循环是在执行后再检查条件端子。因此当While循环的条件端子停止条件为“真”时,也要执行一次,即While循环至少执行一次;而对于For循环,当总数接线端N=0时,不执行For循环内的程序。4)在默认的情况下,在For循环的总数接线端N输入数值,确定For循环执行的次数,一旦开始执行后,只有达到N次才能终止;而While循环事先不设置循环次数,只要满足条件端子的停止条件,就停止循环跳出循环体。如果一定要用For循环实现满足条件,停止循环跳出循环体,只需在其边框上的任意位置右击,在快弹出的捷菜单里选择“条件接线端”,可用来实现满足停止条件,停止循环。3.2任务2应用While循环设计VI虚拟仪器应用2019/9/830虚拟仪器应用2019/9/830项目3应用结构设计程序2.设计循环累加器要求:设计VI实现产生随机数,并进行累加,当累加和大于10或者累加20次时停止运行。分析:从要求上看,应该使用For循环的条件停止。3.2