ImageVerifierCode 换一换
格式:DOCX , 页数:15 ,大小:175.75KB ,
资源ID:5113730      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5113730.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(第2章 程序结构.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

第2章 程序结构.docx

1、第2章 程序结构2.1 循环结构2.1.1 While循环While循环可以反复执行循环体的程序,直至到达某个边界条件。它类似于普通编程语言中的Do循环和Repeat-Until循环。While循环的框图是一个大小可变的方框,用于执行框中的程序,直到条件端子接收到的布尔值为FALSE。 该循环有如下特点: 计数从0开始(i=0)。 先执行循环体,而后i+1,如果循环只执行一次,那么循环输出值i=0。 循环至少要运行一次。图2-1 While循环示意图练习2-1 使用While循环和图表目的:用While循环和图表获得数据,并实时显示。创建一个可以产生并在图表中显示随机数的VI。前面板有一个控制

2、旋钮可在0到10秒之间调节循环时间,还有一个开关可以中止VI的运行。学习怎样改变开关的动作属性,以便不用每次运行VI时都要打开开关。操作步骤如下:前面板图2-2 练习2-1的前面板1.选择FileNew,打开一个新的前面板。2.选择ControlsBoolean,在前面板中放置一个开关。设置开关的标签为控制开关。3.使用标签工具创建ON和OFF的标签,放置于开关旁。4.选中ControlsGraph,在前面板中放置一个波形图(是chart,而不是graph)。设置它的标签为随机信号。这个图表用于实时显示随机数。5.把图表的纵坐标改为0.0到1.0。方法是用标签工具把最大值从10.0改为1.0。

3、6.选择ControlsNumeric,在前面板中放置一个旋钮。设置旋钮的标签为循环延时。这个旋钮用于控制While循环的循环时间。流程图7.开流程图,按照下图创建流程图。图2-2 练习2-1的流程图a. 从FunctionsStructures中选择While循环,把它放置在流程图中。将其拖至适当大小,将相关对象移到循环圈内。b. 从FunctionsNumeric中选择随机数(0-1)功能函数放到循环内。c. 在循环中设置Wait Until Next ms Multiple函数(FunctionsTime&Dialog),该函数的时间单位是毫秒,按目前面板旋钮的标度,可将每次执行时间延迟

4、0到10毫秒。d. 照上面所示的流程图连线,把随机数功能函数和随机信号图表输入端子连接起来,并把启动开关和While循环的条件端子连接。8.返回前面板,调用操作工具后单击垂直开关将它打开。9.把该VI保存为LabVIEWActivity目录中的Random Signal.vi。10.执行该VI。While循环的执行次数是不确定的,只要设置的条件为真,循环程序就会持续运行。在这个例子中,只要开关打开(TRUE),框图程序就会一直产生随机数,并将其在图表中显示。11.单击垂直开关,中止该VI。关闭开关这个动作会给循环条件端子发送一个FALSE值,从而中止循环。12.用鼠标右键单击图表,选择Data

5、 OperationsClear Chart,清除显示缓存,重新设置图表。练习2-1结束附注与说明布尔开关的机械动作:布尔开关有6种机械动作属性可供选择。在前面板上用鼠标右键单击开关,在快捷菜单中选择Mechanical Action就可以看到这些可选的动作。LabVIEW还提供了一个范例示范这些动作,它是位于ExamplesGeneralControlsbooleans.llb的Mechanical Action of Booleans.vi。2.1.2 移位寄存器(Shift Register)移位寄存器可以将数据从一个循环周期传递到另外一个周期。在程序设计中,经常要用到它创建一个移位寄存

6、器的方法是,用鼠标右键单击循环的左边或者右边,在快捷菜单中选择Add Shift Register。如右图所示。移位寄存器在流程图上用在循环边框上相应的一对端子来表示。右边的端子中存储了一个周期完成后的数据,这些数据在这个周期完成之后将被转移到左边的端子,赋给下一个周期。移位寄存器可以转移各种类型的数据数值、布尔数、数组、字符串等等。它会自动适应与它连接的第一个对象的数据类型。下图表示了它的工作过程:图2-3 Shift Register的工作过程可以令移位寄存器记忆前面的多个周期的数值。这个功能对于计算数据均值非常有用。还可以创建其他的端子访问先前的周期的数据,方法是用鼠标右键单击左边或者右

7、边的端子,在快捷菜单中选择Add Element。例如,如果某个移位寄存器左边的端口含有三个元素,那么就可以访问前三个周期的数据。练习2-2 使用移位寄存器目的:创建一个可以在图表中显示运行平均数的VI。前面板1.打开一个新的前面板,按照下图所示创建对象。2.把波形图表的坐标范围改为0.0到2.0。3.在添加竖直坐标之后,用鼠标右键单击它,在快捷菜单中选择Mechanical ActionLatch When Pressed,再选择OperateMake Current Values Default,把ON状态设置为默认状态。图2-4 练习2-2的前面板流程图4.按下图创建流程图。图2-4 练

8、习2-2的流程图5.在流程图中添加While循环(FunctionsStructures),创建移位寄存器。a.用鼠标右键单击While循环的左边或者右边,在快捷菜单中选择Add Shift Register。b.用鼠标右键单击寄存器的左端子,在快捷菜单中选择Add Element,添加一个寄存器。用同样的方法创建第三个元素。6.Random Number(01)函数(FunctionsNumeric)产生0到1之间的某个随机数。7.Compound Arithmetic函数(FunctionsNumeric)在本练习中,它将返回两个周期产生的随机数的和。如果要加入其他的输入,只需用右键单击某

9、个输入,从快捷菜单中选择Add Input。8.除法函数(FunctionsNumeric)在本练习中,它用于返回最近四个随机数的平均值。9.数值常数(FunctionsNumeric)在While循环的每个周期,Random Number(01)函数将产生一个随机数。VI就将把这个数加入到存储在寄存器中的最近三个数值中。Random Number(01)再将结果除以4,就能得到这些数的平均值(当前数加上以前的三个数)。然后再将这个平均值显示在波形图中。10.Wait Until Next ms Multiple函数(FunctionsTime&Dialog)它将确保循环的每个周期不会比毫秒输

10、入快。在本练习中,毫秒输入的值是500毫秒。如果用鼠标右键单击图标,从快捷菜单中选择VisibleLabel,就可以看到Wait Until Next ms Multiple的标签。11.用鼠标右键单击Wait Until Next ms Multiple 功能函数的输入端子,在快捷菜单中选择Create Constant。出现一个数值常数,并自动与功能函数连接。12.将Constant设置为500。这样连接到函数的数值常数设置了500毫秒的等待时间。因此循环每半秒执行一次。注意,VI用一个随机数作为移位寄存器的初始值。如果没有设置移位寄存器端子的初始值,它就含有一个默认的数值,或者上次运行结

11、束时的数值,因此开始得到的平均数没有任何意义。13.执行该VI,观察过程。14.把该VI保存为LabVIEWActivity目录下的Random Average.vi。练习2-2结束。附注:移位寄存器的初值:上面的练习中对移位寄存器设置了初值0.5。如果不设这个初值,默认的初值是。在这个例子中,一开始的计算结果是不对的,只有到循环完次后移位寄存器中的过去值才填满,即第次循环执行后可以得到正确的结果。2.1.3 For循环For循环用于将某段程序执行指定次数。和While循环一样,它不会立刻出现在流程图中,而是出现一个小的图标,而后您可以修改它的大小和位置。具体的方法是,先单击所有端子的左上方,

12、然后按下鼠标,拖曳出一个包含所有端子的矩形。释放鼠标时就创建了一个指定大小和位置的For循环。For循环将把它的框图中的程序执行指定的次数,For循环具有下面这两个端子:N:计数端子(输入端子)用于指定循环执行的次数。I:周期端子(输出端子)含有循环已经执行的次数。上图显示了一可以产生100个随机数并将数据显示在一个图表上的For循环。在该例中,i的初值是0,终值是99。练习2-3 使用For循环目的:用For循环和移位寄存器计算一组随机数的最大值。1.打开一个新的前面板,按照下图创建对象。a.将一个数字显示对象放在前面板,设置它的标签为“最大值”。b.将一个波形图表放在前面板,设置它的标签为

13、“随机数”。将图表的纵坐标范围改为0.0到1.0。c.在图表的快捷菜单中选择Visible ItemsScrollbar和Digital Display,并隐藏Plot Legend。d.用移位工具修改滚动栏的大小。图2-5 练习2-3的面板和流程图2.按照上图画流程图。3.在流程图中放置一个For循环(FunctionsStructures)。4.在For循环的边框处单击鼠标右键,在快捷菜单中选择Add Shift Register。5.将下列对象添加到流程图。a.Random Number(01)函数(FunctionsNumeric)产生0到1之间的某个随机数。b.数值常数(Functi

14、onsNumeric)在这个练习中需要将移位寄存器的初始值设成0。c.Max&Min函数(FunctionsComparison)输入两个数值,再将它们的最大值输出到右上角,最小值输出到右下角。这里只需要最大值,只用连接最大值输出。d.数值常数(FunctionsNumeric)For循环需要知道需要执行的次数。本练习中是100次。6.按照上图连接各个端子。7.运行该VI。8.将该VI保存为LabVIEWActivity目录下的Calculate Max.vi。练习 2-3 结束。2.2 分支结构:CaseCase结构含有两个或者更多的子程序(Case),执行那一个取决于与选择端子或者选择对象

15、的外部接口相连接的某个整数、布尔数、字符串或者标识的值。必须选择一个默认的Case以处理超出范围的数值,或者直接列出所有可能的输入数值。Case结构见下图,各个子程序占有各自的流程框,在其上沿中央有相应的子程序标识:Ture、False或1、2、3。按钮用来改变当前显示的子程序(各子程序是重叠放在屏幕同一位置上的)。练习2-4 使用 Case结构目的:创建一个VI以检查一个数值是否为正数。如果它是正的,VI就计算它的平方根,反之则显示出错。前面板1.打开一个新的前面板,并按照下图所示创建对象。控制对象用于输入数值,显示对象用于显示该数值的平方根。流程图2.照下图创建流程图。图2-6 练习2-4

16、的面板和流程图3.从FunctionsStructures中选择一个Case结构,并放置在在流程图中。Case结构是一个可以改变大小的方框。先来做Ture的情况,照流程图上半部分构造。a.Greater Or Equal To 0?函数(FunctionsComparison)如果输入数值大于或者等于0就会返回一个TRUE值。b.Square Root函数(FunctionsNumeric)返回输入数值的平方根。c.连好线d.点击Case框的选择按钮,转入False情况编程e.数值常数(FunctionsNumeric)这里用于显示错误的代数值-999.00。f.One Button Dial

17、og函数(FunctionsTime&Dialog)在这里它用于显示一个对话框,内容是Error.。g.字符串常数(FunctionsString)用Edit Text Tools在对话框中输入字符串。h.该VI在TRUE或者FALSE情况下都会执行。如果输入的数值大于等于0,VI会执行TRUE Case,返回该数的平方根,否则将会输出999.00,并显示一个对话框,内容为Error.。4.返回前面板,运行该VI。修改标签为Number的数字式控制对象的数值,分别尝试一个正数和负数。注意,当把数字式控制对象的值改为负数时,LabVIEW会显示Case结构的FALSE Case中设置的出错信息。

18、5.保存该VI到LabVIEWActivity目录中的Square Root.vi。VI的算法本练习中的流程图功能相当于代码式编程语言中的下列伪代码:if(Number=0)thenSquare Root Value=SQRT(Number)elseSquare Root Value=-999.00Display MessageError.end if练习2-4结束。2.3 顺序结构和公式节点2.3.1 顺序结构(Sequence Structure)在代码式的传统编程语言中,默认的情况是,程序语句按照排列顺序执行,但LabVIEW中不同,它是一种图形化的数据流式编程语言。在图2-7左图中,假

19、设有A、B、C、D个节点,其数据流向如右图所示。按照数据流式语言的约定,任何一个节点只有在所有图2-7 顺序结构的说明的输入数据有效时才会执行,所以图中,当且仅当A、B、C个节点执行完,使得D节点的3个输入数据都到达D节点后,D节点才执行。但是你要注意,这里并没有规定A、B、C3个节点的执行顺序。在LabVIEW中这种情况下,A、B、C的执行顺序是不确定的,如果你需要对它们规定一个确定的顺序,那就需要使用本节介绍的“顺序结构”。图2-7中的右边是顺序结构的图标,它看上去像是电影胶片。它可以按一定顺序执行多个子程序。首先执行0帧中的程序,然后执行1帧中的程序,逐个执行下去。与Case结构类似,这

20、多帧程序在流程图中占有同一个位置。练习2-5 使用顺序结构目的:创建一个VI,计算生成等于某个给定值的随机数所需要的时间。前面板1.打开一个新的前面板,并按照下图所示创建对象。图2-8 练习2-5的前面板我们约定数据是0到100范围的整数。当前值用于显示当前产生的随机数。“执行次数”用于显示达到指定值循环执行的次数。匹配时间用来显示达到指定值所用的时间。流程图图2-8 练习2-5的流程图(共3帧)2.在流程图中放置顺序结构(FunctionsStructures)。3.用鼠标右键单击帧的边框,在快捷菜单中选择Add Frame After,创建一个新帧。重复这个步骤,再创建一个帧。共桢。4.选

21、中第0桢,设置读取初始时间(子)程序5.第0帧的下边框上含有一个小方框,其中有一个箭头。这个方框叫做顺序局部变量,可以在同一个顺序结构中的各个帧之间传递数据。用鼠标右键单击第0帧的底部边框,选择Add Sequence Local,创建顺序局部变量。顺序局部变量显示为一个空的方块。当您将某个功能函数与顺序局部变量相连时,方块中的箭头就会自动显示。6.Tick Count(ms)函数(FunctionsTime&Dialog)返回启动到现在的时间(以毫秒为单位)。在这里例子里需要使用两个这个函数。另一个在第2帧中。7.按图连好线。转入第1帧。该帧是匹配计算,内含一个循环结构。该图中使用的新函数有

22、:Round to Nearest函数(FunctionsNumeric)在该例中,它用于取0到100之间的随机数到距离最近的整数。Not Equal?函数(Functions Comparison)在该例中,它将随机数和前面板中设置的数相比较,如果两者不相等会返回TRUE值,否则返回FALSE。Increment函数(FunctionsNumeric)在该例中,它将While循环的计数器加1。8.按图连好线。转入第2帧在第0帧中,Tick Count(ms)功能函数将以毫秒为单位表示当前时间。这个数值被连到顺序局部变量,这样它就可以被后续的帧使用。在第1帧中,只要函数返回的值与指定值不等,V

23、I就会持续执行While循环。在第2帧中,Tick Count(ms)功能函数以毫秒为单位返回新的时间。VI从中减去原来的时间(由第0帧通过顺序局部变量提供)就可以计算出花费的时间。9.返回前面板,在Number to Match控制对象中输入一个数值,执行该VI。10.把该VI保存为LabVIEWActivity目录下Time to Match.vi。练习2-5结束。附注与说明:设置数据范围在设定一个数据对象时,可以设置对输入数据的限制,利用快捷键选择Data Range选项,将会出现如下对话框:图2-9 设置数据范围它可以防止用户创建的控制对象或显示对象的值超出某个预设的范围。您可以选择忽

24、略这个值,将它强制修改到范围以内,或暂停程序的执行。在程序执行时,如果发生溢出错误,溢出错误符号将显示在工具栏中的执行按钮的位置。而且,一个立体的黑框将把发生溢出的控制对象包围起来。2.3.2 公式节点(Formula Node)公式节点是一个大小可变的方框,可以利用它直接在流程图中输入公式。从FunctionsStructures中选择公式节点就可以把它放到流程图中。当某个等式有很多变量或者非常复杂时,这个功能就非常有用。例如等式:y=x2+x+1使用公式节点可以表示为:图2-10 公式节点示意图利用公式节点可以直接输入一个或者多个复杂的公式,而不用创建流程图的很多子程序。使用文本编辑工具来

25、输入公式。创建公式节点的输入和输出端子的方法是,用鼠标右键单击第0帧的底部边框,选择Add Input(Add Output)。再在节点框中输入变量名称。变量名对大小写敏感。然后就可以在框中输入公式。每个公式语句都必须以分号(;)结尾。公式节点的帮助窗口中列出了可供公式节点使用的操作符、函数和语法规定。一般说来,它与C语言非常相似,大体上一个用C写的独立的程序块都可能用到公式节点中。但是仍然建议不要在一个公式节点中写过于复杂的代码程序。下面这个例子显示了如何在一个公式节点中执行不同条件时的数据发送。请阅读下面这段程序代码,如果X为正数,它将算出X的平方根并把该值赋给Y,如果X为负数,程序就给Y

26、赋值-99。if(x=0)theny=sqrt(x)elsey=-99end if可以用公式节点取代上面这段代码,如下图所示:注意:公式节点中变量字母X,Y大、小写是有区别的,开方的函数sqrt(X)中函数名称是小写。练习2-6 使用公式节点目的:创建一个VI,它用公式节点计算下列等式:y1=x3x2+5y2=m*x+bx的范围是从0到10。可以对这两个公式使用同一个公式节点,并在同一个图表中显示结果。前面板图2-11 练习2-6的面板1.打开一个新的前面板,按照上图(该图中包含运行结果)创建前面板中的对象。波形图显示对象用于显示等式的图形。该VI使用两个数字式控制对象来输入m和b的值。流程图

27、2.按照下图创建流程图。图2-12 练习2-6的流程图在创建某个输入或者输出端子时,必须给它指定一个变量名。这个变量名必须与公式节点中使用的变量名完全相符。公式节点中,在边框上单击鼠标右键,在快捷菜单中选择Add Input,可以创建三个输入端子。在快捷菜单中选择Add Output,创建输出端子。x的范围是从0到10(包括10),就必须连接11到计数端子。Build Array(FunctionsArray)在这个例子中,它用于将两个数据构成数组形式提供给一个多曲线的图形中。通过用变形工具拖拉边角就可以创建两个输入端子。3.返回前面板,尝试给m和b赋以不同的值再执行该VI。4.把该VI保存为LabVIEW/Activity目录下的Equations.vi。练习 2-6结束。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1