1、1实验二 LabVIEW 程序结构1 实验目的(1)学会使用 LabVIEW 中的 While 循环;(2)学会使用 LabVIEW 中的移位寄存器;(3)学会使用 LabVIEW 中的 For 循环;(4)学会使用 LabVIEW 中的 CASE 结构;(5)学会使用 LabVIEW 中的顺序结构;(6)学会使用 LabVIEW 中的公式节点。2 实验任务(1)建立一个 While 循环的 VI;(2)建立一个移位寄存器的 VI;(3)建立一个 For 循环的 VI;(4)建立一个 CASE 结构的 VI;(5)建立一个顺序结构的 VI;(6)建立一个有公式节点的 VI。3 实验步骤练习 使
2、用 While 循环和图表 目的:用 While 循环和图表获得数据,并实时显示。创建一个可以产生并在图表中显示随机数的 VI。 前面板有一个控制旋钮可在 0 到 10秒之间调节循环时间,还有一个开关可以中止 VI 的运行。学习怎样改变开关的动作属性,以便不用每次运行 VI 时都要打开开关。操作步骤如下:前面板2图 2-1 练习的前面板 选择 FileNew,打开一个新的前面板。 选择 ControlsBoolean,在前面板中放置一个开关。设置开关的标签为控制开关。 使用标签工具创建 ON 和 OFF 的标签,放置于开关旁。 选中 ControlsGraph,在前面板中放置一个波形图(是 c
3、hart,而不是 graph)。设置它的标签为随机信号。这个图表用于实时显示随机数。 把图表的纵坐标改为 0.0 到 1.0。方法是用标签工具把最大值从 10.0 改为1.0。 选择 ControlsNumeric,在前面板中放置一个旋钮。设置旋钮的标签为循环延时。这个旋钮用于控制 While 循环的循环时间。流程图 开流程图,按照下图创建流程图。图 练习的流程图a) 从 FunctionsStructures 中选择 While 循环,把它放置在流程图中。将其拖至适当大小,将相关对象移到循环圈内。b) 从 Functions Numeric 中选择随机数(0-1)功能函数放到循环内。c) 在
4、循环中设置 Wait Until Next ms Multiple 函数 (FunctionsTime & Dialog),该函数的时间单位是毫秒,按目前面板旋钮的标度,可将每次执行时间延迟 0 到 10 毫秒。d) 照上面所示的流程图连线,把随机数功能函数和随机信号图表输入端子连接起来,并把启动开关和 While 循环的条件端子连接。 返回前面板,调用操作工具后单击垂直开关将它打开。 把该 VI 保存为 LabVIEWActivity 目录中的 Random Signal.vi。 执行该 VI。While 循环的执行次数是不确定的,只要设置的条件为真,循环程序就会持续运行。在这个例子中,只要
5、开关打开(TRUE),框图程序就会一直产生随机数,并将其在图表中显示。 单击垂直开关,中止该 VI。关闭开关这个动作会给循环条件端子发送一个FALSE 值,从而中止循环。 用鼠标右键单击图表,选择 Data OperationsClear Chart,清除显示缓存,重新设置图表。练习 结束3附注与说明布尔开关的机械动作:布尔开关有 6 种机械动作属性可供选择。在前面板上用鼠标右键单击开关,在快捷菜单中选择 Mechanical Action 就可以看到这些可选的动作。LabVIEW 还提供了一个范例示范这些动作,它是位于 ExamplesGeneralControlsbooleans.llb
6、的 Mechanical Action of Booleans.vi。练习 使用移位寄存器 目的:创建一个可以在图表中显示运行平均数的VI。前面板1. 打开一个新的前面板,按照下图所示创建对象。2. 把波形图表的坐标范围改为 0.0 到 2.0。3. 在添加竖直坐标之后,用鼠标右键单击它,在快捷菜单中选择 Mechanical ActionLatch When Pressed,再选择 OperateMake Current Values Default,把 ON 状态设置为默认状态。图3 练习的前面板1. 按下图创建流程图。图 练习的流程图2. 在流程图中添加 While 循环(Functio
7、nsStructures ),创建移位寄存器。a. 用鼠标右键单击 While 循环的左边或者右边,在快捷菜单中选择 Add Shift 4Register。b. 用鼠标右键单击寄存器的左端子,在快捷菜单中选择 Add Element,添加一个寄存器。用同样的方法创建第三个元素。3. Random Number (01)函数(FunctionsNumeric)产生 0 到 1 之间的某个随机数。4. Compound Arithmetic 函数(FunctionsNumeric)在本练习中,它将返回两个周期产生的随机数的和。如果要加入其他的输入,只需用右键单击某个输入,从快捷菜单中选择 Add
8、 Input。5. 除法函数(FunctionsNumeric)在本练习中,它用于返回最近四个随机数的平均值。6. 数值常数(FunctionsNumeric)在 While 循环的每个周期,Random Number (01)函数将产生一个随机数。VI 就将把这个数加入到存储在寄存器中的最近三个数值中。Random Number (01)再将结果除以 4,就能得到这些数的平均值(当前数加上以前的三个数) 。然后再将这个平均值显示在波形图中。7. Wait Until Next ms Multiple 函数 (FunctionsTime & Dialog)它将确保循环的每个周期不会比毫秒输入快
9、。在本练习中,毫秒输入的值是 500 毫秒。如果用鼠标右键单击图标,从快捷菜单中选择 VisibleLabel,就可以看到 Wait Until Next ms Multiple 的标签。8. 用鼠标右键单击 Wait Until Next ms Multiple 功能函数的输入端子,在快捷菜单中选择Create Constant。出现一个数值常数,并自动与功能函数连接。9. 将 Constant 设置为 500。这样连接到函数的数值常数设置了 500 毫秒的等待时间。因此循环每半秒执行一次。注意,VI 用一个随机数作为移位寄存器的初始值。如果没有设置移位寄存器端子的初始值,它就含有一个默认的
10、数值,或者上次运行结束时的数值,因此开始得到的平均数没有任何意义。10. 执行该 VI,观察过程。11. 把该 VI 保存为 LabVIEWActivity 目录下的 Random Average.vi。练习 结束。附注:移位寄存器的初值:上面的练习中对移位寄存器设置了初值0.5。如果不设这个初值,默认的初值是。在这个例子中,一开始的计算结果是不对的,只有到循环完次后移位寄存器中的过去值才填满,即第次循环执行后可以得到正确的结果。练习 2-3 使用 For 循环目的:用 For 循环和移位寄存器计算一组随机数的最大值。打开一个新的前面板,按照下图创建对象。a. 将一个数字显示对象放在前面板,设
11、置它的标签为“最大值”。b.将一个波形图表放在前面板,设置它的标签为“随机数”。将图表的纵坐标范围改为 0.0 到 1.0。c.在图表的快捷菜单中选择 Visible ItemsScrollbar 和 Digital Display,并隐藏Plot Legend。5d.用移位工具修改滚动栏的大小。图5 练习3 的面板和流程图按照上图画流程图。在流程图中放置一个 For 循环(FunctionsStructures)。在 For 循环的边框处单击鼠标右键,在快捷菜单中选择 Add Shift Register。将下列对象添加到流程图。 Random Number (01)函数(Functions
12、Numeric)产生 0 到 1 之间的某个随机数。 数值常数(FunctionsNumeric)在这个练习中需要将移位寄存器的初始值设成 0。 Max&Min 函数(FunctionsComparison)输入两个数值,再将它们的最大值输出到右上角,最小值输出到右下角。这里只需要最大值,只用连接最大值输出。 数值常数(FunctionsNumeric)For 循环需要知道需要执行的次数。本练习中是 100 次。按照上图连接各个端子。运行该 VI。将该 VI 保存为 LabVIEWActivity 目录下的 Calculate Max.vi。练习 2-3 结束。练习 - 使用 Case 结构
13、目的:创建一个VI以检查一个数值是否为正数。如果它是正的,VI就计算它的平方根,反之则显示出错。前面板1. 打开一个新的前面板,并按照下图所示创建对象。控制对象用于输入数值,显示对象用于显示该数值的平方根。流程图照下图创建流程图。6图 练习的面板和流程图3. 从 FunctionsStructures 中选择一个 Case 结构,并放置在在流程图中。Case 结构是一个可以改变大小的方框。先来做 Ture 的情况,照流程图上半部分构造。a Greater Or Equal To 0? 函数(FunctionsComparison)如果输入数值大于或者等于 0 就会返回一个 TRUE 值。b S
14、quare Root 函数(FunctionsNumeric)返回输入数值的平方根。c 连好线d 点击 Case 框的选择按钮,转入 False 情况编程e 数值常数(FunctionsNumeric)这里用于显示错误的代数值-999.00。f One Button Dialog 函数(FunctionsTime & Dialog)在这里它用于显示一个对话框,内容是 Error.。 g 字符串常数 (FunctionsString)用 Edit Text Tools 在对话框中输入字符串。h 该 VI 在 TRUE 或者 FALSE 情况下都会执行。如果输入的数值大于等于 0,VI 会执行TR
15、UE Case,返回该数的平方根,否则将会输出999.00,并显示一个对话框,内容为Error.。4. 返回前面板,运行该 VI。修改标签为 Number 的数字式控制对象的数值,分别尝试一个正数和负数。注意,当把数字式控制对象的值改为负数时,LabVIEW 会显示 Case结构的 FALSE Case 中设置的出错信息。5. 保存该 VI 到 LabVIEWActivity 目录中的 Square Root.vi。练习 - 结束。练习 - 使用顺序结构 目的:创建一个 VI,计算生成等于某个给定值的随机数所需要的时间。前面板71. 打开一个新的前面板,并按照下图所示创建对象。图 练习的前面板
16、我们约定数据是到 100 范围的整数。当前值用于显示当前产生的随机数。 “执行次数”用于显示达到指定值循环执行的次数。匹配时间用来显示达到指定值所用的时间。流程图图7 练习的流程图(共帧)i. 在流程图中放置顺序结构(FunctionsStructures)。ii. 用鼠标右键单击帧的边框,在快捷菜单中选择 Add Frame After,创建一个新帧。重复这个步骤,再创建一个帧。共桢。iii. 选中第桢,设置读取初始时间(子)程序.iv. 第 0 帧的下边框上含有一个小方框,其中有一个箭头。这个方框叫做顺序局部变8量,可以在同一个顺序结构中的各个帧之间传递数据。用鼠标右键单击第 0 帧的底部
17、边框,选择 Add Sequence Local,创建顺序局部变量。顺序局部变量显示为一个空的方块。当您将某个功能函数与顺序局部变量相连时,方块中的箭头就会自动显示。v. Tick Count (ms) 函数(FunctionsTime & Dialog)返回启动到现在的时间(以毫秒为单位)。在这里例子里需要使用两个这个函数。另一个在第帧中。vi. 按图连好线。转入第帧。该帧是匹配计算,内含一个循环结构。该图中使用的新函数有:Round to Nearest 函数(FunctionsNumeric)在该例中,它用于取 0 到100 之间的随机数到距离最近的整数。Not Equal?函数(Fun
18、ctions Comparison)在该例中,它将随机数和前面板中设置的数相比较,如果两者不相等会返回 TRUE 值,否则返回 FALSE。Increment 函数(FunctionsNumeric)在该例中,它将 While 循环的计数器加 1。vii. 按图连好线。转入第帧在第 0 帧中,Tick Count (ms)功能函数将以毫秒为单位表示当前时间。这个数值被连到顺序局部变量,这样它就可以被后续的帧使用。在第 1 帧中,只要函数返回的值与指定值不等,VI 就会持续执行 While 循环。在第 2 帧中,Tick Count (ms)功能函数以毫秒为单位返回新的时间。VI 从中减去原来的
19、时间(由第 0 帧通过顺序局部变量提供)就可以计算出花费的时间。viii. 返回前面板,在 Number to Match 控制对象中输入一个数值,执行该 VI。ix. 把该 VI 保存为 LabVIEWActivity 目录下 Time to Match.vi。练习 2-5 结束。练习 2-6 使用公式节点 目的:创建一个VI,它用公式节点计算下列等式: 3215*yxmbx 的范围是从 0 到 10。可以对这两个公式使用同一个公式节点,并在同一个图表中显示结果。前面板9图9 练习的面板 打开一个新的前面板,按照上图(该图中包含运行结果)创建前面板中的对象。波形图显示对象用于显示等式的图形。
20、该 VI 使用两个数字式控制对象来输入 m 和 b 的值。流程图 按照下图创建流程图。图9 练习的流程图在创建某个输入或者输出端子时,必须给它指定一个变量名。这个变量名必须与公式节点中使用的变量名完全相符。公式节点中,在边框上单击鼠标右键,在快捷菜单中选择 Add Input,可以创建三个输入端子。在快捷菜单中选择 Add Output,创建输出端子。x 的范围是从 0 到 10(包括 10),就必须连接 11 到计数端子。Build Array (FunctionsArray)在这个例子中,它用于将两个数据构成数组形式提供给一个多曲线的图形中。通过用变形工具拖拉边角就可以创建两个输入端子。 返回前面板,尝试给 m 和 b 赋以不同的值再执行该 VI。 把该 VI 保存为 LabVIEW/Activity 目录下的 Equations.vi。10练习 2-6 结束。4 实验报告写出以上 6 个练习的中的步骤要点,附上运行时的前后面版图形。