键,则可以画出水平或垂直方向的连线。 使用文本工具写入文字,双击文本工具把字体换成Small Font。当图标创建完成后,点击OK以关闭图标编辑。生成的图标在面板窗口的
2/8
右上角。
7. 创建联接器端口:
a. 点击右上角的图标面板,从弹出菜单中选择Show Connector功能。
LabVIEW将会根据控制和显示的数量选择一种联接器端口模式。在本例中,只有两个端口,一个是竖直开关,另一个是温度指示。 b. 把联接器端口定义给开关和温度指示。 c. 使用连线工具,在左边的联接器端口框内按鼠标键,则端口将会变黑。
再点击开关控制件,一个闪烁的虚线框将包围住该开关。
d. 现在再点击右边的联接器端口框,使它变黑。再点击温度指示部件,
一个闪烁的虚线框将包围住温度指示部件,这即表示着右边的联接器端口对应温度指示部件的数据输入。 e. 如果再点击空白外,则虚线框将消失,而前面所选择的联接器端口将
变暗,表示你已经将对象部件定义到各个联接器端口。
注意:LabVIEW的惯例是前面板上控制的联接器端口放在图标的接线面板的左边,而显示的联接器端口放在图标的接线面板的右边。也就是说,图标的左边为输入端口而右边为输出端口。 8. 用文件菜单的SAVE功能保存上述文件,并将文件命名为Thermometer.Vi。 现在,该程序已经编制完成了。它可以在其他程序中作为子程序来调用,在其它程序的框图窗口里,该温度计程序用前面创建的图标来表示。联接器端口的输入端用于选择温度单位,输出端用于输出温度值。
9. 关闭该程序
(二) 把一个VI程序作为子VI程序调用
在任意一个VI程序的框图窗口里,都可以把其他的VI程序作为子程序调用,只要被调用VI程序定义了图标和联接器端口即可。用户使用功能模板的Select a VI来完成。当使用该功能时,将弹出一个对话框,用户可以输入文件名。一个子VI程序,相当于普通程序的子程序。节点相当于子程序调用。子程序节点并不是子程序本身,就象一般程序的子程序调用语句并不是子程序本身一样。如果在一个框图程序中,有几个相同的子程序节点,它就象多次调用相同的子程序。请注意,该子程序的拷贝并不会在内存中存储多次。
目的:使用一个条件循环结构和一个被测波形图表实时地采集数据。
创建一个VI程序,进行温度测量,并把结果在波形图表上显示。该VI程序使用我们前面创建的温度计程序(Thermometer VI)作为子程序。
前面板:
3/8
1. 打开一个新的前面板窗口,在里面放一个开关(在Boolean逻辑部件子
模板),给该开关标注为“Enable”。你可以用该开关来开始/停止数据采集。
2. 在前面板内再放置一个趋势图(Graph子模板中的Waveform Chart),标
注为“温度历史趋势”。该图表将实时地显示温度值。
3. 由于趋势图将它的图标注解plot自动地标注为“plot 0”,你可以用标
注工具将其重新标注为“Temp”。
4. 因为趋势图用于显示室内温度,需要对它的标尺进行重新定标。将Y轴的
“10”改为“90”,而将“0.0”改为“20”。 5. 此时暂时不要创建模式转换开关,我们将尝试从框图程序窗口创建前面板
的部件。
框图程序:
1. 打开框图程序窗口。
2. 从结构(Structures)工具模板选择条件循环结构“While Loop”放入
框图程序窗口,调整该条件循环框的大小,把先前从前面板创建的两个节点放入循环框内。
条件循环结构是一种无限循环结构,只要条件满足,它就一直循环运行下去。在本例中,只要允许开关(Enable Switch)是ON状态,该VI程序就一直运行,采集温度测量值,并在图表上显示。 3. 放入其它的框图程序对象。Thermometer VI,这个VI程序是你在上个练习中创建的,从你保存的位置中调出(通过Select a VI…子模板调用)。 4. 按照上图的框图程序连好线。
5. 创建模式开关。把连线工具放在Thermometer VI的Mode输入端口上,
按鼠标右键并选择Creat Control,这样就可以自动创建模式转换开关,并将它与Thermometer VI子程序相连线,再转换到前面板窗口,将模式转换开关的位置重新调整。
6. 在前面板窗口,使用标注工具,双击模式开关的“OFF”标签,并把它转
换成“华氏”,再把“ON”标签转换民“摄氏”。要转换开关状态,使用操作工具(Operating Tool)。
7. 将模式开关设置为ON状态,运行该VI程序。
8. 要停止数据采集,点击Enable开关,使其状态变为OFF,循环结束。
4/8
9. 修改Enable开关缺省设置,使你运行VI程序时不必每次打开该开关。
a. 若程序在运行状态,则关闭程序运行。 b. 把开关设置为ON状态。
c. 点击开关,从弹出菜单中选择Data Operations>Make Current Value
Default选项,这将使ON状态变为缺省值。
d. 再点击开关,从弹出菜单中选择Mechanical Action>Latch When
Pressed选项。
10. 运行该程序,把开关点击为Stop状态以停止数据采集。开关将变为OFF
状态,但当条件循环结构再次读取其数值时,它又会变成ON状态。 增加定时器控制: 当运行程序时,它将会尽可能快地运行。但是你也许希望以一定的时间间隔,例如一秒钟一次或者一分钟一次来采集数据。
你可以用Wait Until Next ms Multiple功能(在Time & Dialog子模板)来满足上述条件。该功能模块可以保证循环间隔时间不少于指定的毫
秒数。
11. 如右图所示,使VI程序采样间隔为500毫秒。 使用Time & Dialog子模板中的Wait Until Next ms Multiple功能,再加上时间常数Numeric Constant,把它设置为500。
12. 运行上述程序,试用不同的时间间隔值。
13. 关闭并保存上述程序,文件名为Temperature Monitor.vi。
(三)以图表方式显示数据并使用分析功能子程序
目的:以图表方式显示数据并使用分析功能子程序。
利用练习(二)创建的VI程序,在数据采集过程中,实时地显示数据。当采集过程结束后,在图表上画出数据波形,并算出最大值、最小值和平均值。该练习只使用华氏温度单位。
1. 打开练习(二)创建的Temperature monitor.vi程序。 2. 按照下图修改程序,其中被虚线框住的部分是新增加的。
趋势图“温度历史趋势”显示实时采集的数据。采集过程结束后,在Temp Graph中画出数据曲线,同时在Mean(Analyze子模板中Mathematics子模板中probability and statisties子模板中的Mean.vi)、Max和Min(Array子模板中array max&min)数字显示栏中显示出温度的平均值、最大值和最小值。
本题中只使用华氏温度单位。
5/8
前面板:
框图程序:
1. 完成上面的框图程序。被虚线框住的部分表示新增程序。条件循环框边线
上的方块叫作通道(tunnel)。在本例中,通道是条件循环的数据通道口。若要建立数据索引,点击通道,并选择Enable Indexing选项,表示当条件循环执行时,把数据顺序放入一个数组中。循环结束后,通道输出该数组。否则,通道仅输出最后一次循环放入的数据值。 2. 返回前面板,并运行VI程序。 3. 当允许运行开关(Enable Switch)设置为OFF后,将显示温度数据曲线。
6/8
4. 面修改后的程序重命名为Temperature Analysis.vi并存盘。
(四) 使用Case结构
目的:学习使用Case结构。
修改Temperature Analysis.VI程序以检测温度是否超出范围,当温度超出上限(High Limit)时,前面板上的LED将点亮,并且有一个蜂鸣器发声。
前面板:
1. 打开练习(三)创建的Temperature Analysis VI程序。
2. 按照下图所示修改前面板。被虚线框住的部分表示增加的部件。High
Limit表示温度上限值。报警指示灯(WARNING LED)和当前温度状态(CurrentTemperature State)用来表示温度是否超限。点击趋势图,并且选择Show>Legend和Show>Dighital Display选项,可以增加图注(Legend)和数字显示。
7/8
框图程序:
1. 按照上图编写框图程序。被虚线框住的部分为新增加的部件。下面的
FALSE Case与图中的TRUE Case同属于一个Case结构。根据其输入端上的数值,来决定执行哪一个Case程序。
如果Thermometer Vi子程序返回的温度值大于High Limit数值,将执行True Case程序,反之则执行False Case程序。 本程序用到下面的对象:
Bundle功能(Cluster子模板)。
Build Cluster Array功能(Cluster子模板)。 Case结构(Structures子模板)。 字符串常量(String子模板)。
Beep.vi(Graphics & Sound子模板中Sound子模板中)。
2. 返回前面板程序,在High Limit控制栏中输入86。再运行VI程序。当
温度超过86时,LED将点亮,蜂鸣器也会发声。
3. 将程序重新命名为Temperature Control.vi,并保存起来。
8/8