器相似。每接受一个新数据,新数据就将显示在右侧,而原有数据移动到左侧
图1-4 图表的例子
2.用鼠标选中chart,点击右键,可在快速菜单中选择AdvancedoUpdate Mode子菜单。可以选择更换其他两种更新模式。
示波器模式是一个返回式的显示器,与示波器类似。每接受一个新数据时,它就把新数据绘制在原有数据的右侧。当数据曲线到达显示区的右边缘时,VI 会删除全部图形,从左边缘重新开始绘制曲线。示波器模式显然要快于条状图模式,因为它不会因为滚动产生溢出。
扫描模式更接近于示波器模式,但是当数据曲线到达显示区的右边时,不会变成空白,而是会出现一个移动的垂线,标记新数据的开始,并当VI添加新数据时穿过整个显示区。
练习 1-3 结束。
4 实验报告
写出以上三个练习的中的步骤要点,附上运行时的前后面版图形。
6
实验2 程序结构
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-1 使用While循环和图表
目的:用 While 循环和图表获得数据,并实时显示。
创建一个可以产生并在图表中显示随机数的VI。 前面板有一个控制旋钮可在0到10秒之间调节循环时间,还有一个开关可以中止VI的运行。学习怎样改变开关的动作属性,以便不用每次运行VI时都要打开开关。操作步骤如下:
前面板
?o?úD?1?1.00.80.60.40.20.0010230.010.02.0-o?2ó?ê±4.06.08.0?????a??ONOFF
图2-1 练习2-1的前面板
1. 选择FileoNew,打开一个新的前面板。 2. 选择ControlsoBoolean,在前面板中放置一个开关。设置开关的标签为控制开关。
7
3. 使用标签工具创建 ON 和 OFF 的标签,放置于开关旁。 4. 选中ControlsoGraph,在前面板中放置一个波形图(是chart,而不是graph)。
设置它的标签为随机信号。这个图表用于实时显示随机数。 5. 把图表的纵坐标改为0.0 到 1.0。方法是用标签工具把最大值从10.0改为1.0。 6. 选择ControlsoNumeric,在前面板中放置一个旋钮。设置旋钮的标签为循环延时。
这个旋钮用于控制While 循环的循环时间。 流程图
7. 开流程图,按照下图创建流程图。
图2-2 练习2-1的流程图
a) 从 FunctionsoStructures 中选择 While 循环,把它放置在流程图中。将其拖至适当大小,将相关对象移到循环圈内。
b) 从 Functionso Numeric中选择随机数(0-1)功能函数放到循环内。 c) 在循环中设置Wait Until Next ms Multiple函数 (FunctionsoTime &
Dialog),该函数的时间单位是毫秒,按目前面板旋钮的标度,可将每次执行时间延迟0到10毫秒。
d) 照上面所示的流程图连线,把随机数功能函数和随机信号图表输入端子连
接起来,并把启动开关和While 循环的条件端子连接。
8. 返回前面板,调用操作工具后单击垂直开关将它打开。 9. 把该 VI 保存为 LabVIEW\\Activity目录中的Random Signal.vi。
10. 执行该 VI。While循环的执行次数是不确定的,只要设置的条件为真,循环
程序就会持续运行。在这个例子中,只要开关打开(TRUE),框图程序就会一直产生随机数,并将其在图表中显示。
11. 单击垂直开关,中止该VI。关闭开关这个动作会给循环条件端子发送一个
FALSE值,从而中止循环。
12. 用鼠标右键单击图表,选择Data OperationsoClear Chart,清除显示缓存,
重新设置图表。
练习 2-1结束
附注与说明
布尔开关的机械动作:
布尔开关有6种机械动作属性可供选择。在前面板上用鼠标右键单击开关,在快捷菜单中选择Mechanical Action就可以看到这些可选的动作。LabVIEW还提供了一个范例示范这些动作,它是位于Examples\\General\\Controls\\booleans.llb的Mechanical Action of Booleans.vi。
8
练习 2-2 使用移位寄存器
目的:创建一个可以在图表中显示运行平均数的VI。 前面板
1. 打开一个新的前面板,按照下图所示创建对象。 2. 把波形图表的坐标范围改为0.0到2.0。 3. 在添加竖直坐标之后,用鼠标右键单击它,在快捷菜单中选择Mechanical Action?Latch When Pressed,再选择Operate?Make Current Values Default,把ON状态设置为默认状态。
BooleanONOFFè?±ê?μ£1ONúDoμ?ˉ3÷Latch When Pressed?o?úêy2.01.51.00.50.0050 图2-3 练习2-2的前面板
1. 按下图创建流程图。
图2-4 练习2-2的流程图
2. 在流程图中添加 While 循环(Functions?Structures),创建移位寄存器。
a. 用鼠标右键单击While循环的左边或者右边,在快捷菜单中选择Add Shift Register。 b. 用鼠标右键单击寄存器的左端子,在快捷菜单中选择Add Element,添加一个寄存器。用同样的方法创建第三个元素。 3. Random Number (0–1)函数(Functions?Numeric)——产生0到1之间的某个随机数。 4. Compound Arithmetic 函数(Functions?Numeric)——在本练习中,它将返回两个周期产生的随机数的和。如果要加入其他的输入,只需用右键单击某个输入,从快捷菜单中选择Add Input。 5. 除法函数(Functions?Numeric)——在本练习中,它用于返回最近四个随机数的平均值。
9
6. 数值常数(Functions?Numeric)——在While循环的每个周期,Random Number (0–1)函数将产生一个随机数。VI就将把这个数加入到存储在寄存器中的最近三个数值中。Random Number (0–1)再将结果除以4,就能得到这些数的平均值(当前数加上以前的三个数)。然后再将这个平均值显示在波形图中。 7. Wait Until Next ms Multiple函数 (Functions?Time & Dialog)——它将确保循环的每个周期不会比毫秒输入快。在本练习中,毫秒输入的值是500毫秒。如果用鼠标右键单击图标,从快捷菜单中选择Visible?Label,就可以看到Wait Until Next ms Multiple的标签。
8. 用鼠标右键单击Wait Until Next ms Multiple 功能函数的输入端子,在快捷菜单中选择Create Constant。出现一个数值常数,并自动与功能函数连接。
9. 将Constant设置为500。这样连接到函数的数值常数设置了500毫秒的等待时间。因此循环每半秒执行一次。注意,VI用一个随机数作为移位寄存器的初始值。如果没有设置移位寄存器端子的初始值,它就含有一个默认的数值,或者上次运行结束时的数值,因此开始得到的平均数没有任何意义。 10. 执行该 VI,观察过程。
11. 把该 VI 保存为LabVIEW\\Activity目录下的Random Average.vi。
练习 2-2 结束。
附注:移位寄存器的初值:
上面的练习中对移位寄存器设置了初值0.5。如果不设这个初值,默认的初值是0。在这个例子中,一开始的计算结果是不对的,只有到循环完3次后移位寄存器中的过去值才填满,即第4次循环执行后可以得到正确的结果。
练习 2-3 使用For循环
目的:用For循环和移位寄存器计算一组随机数的最大值。 1.打开一个新的前面板,按照下图创建对象。
a. 将一个数字显示对象放在前面板,设置它的标签为“最大值”。
b.将一个波形图表放在前面板,设置它的标签为“随机数”。将图表的纵坐标范围改为0.0到1.0。
c.在图表的快捷菜单中选择Visible ItemsoScrollbar和Digital Display,并隐藏Plot Legend。
d.用移位工具修改滚动栏的大小。
图2-5 练习2-3的面板和流程图
2.按照上图画流程图。
10