ni培训中文版LabVIEW核心教程二练习手册_第1页
ni培训中文版LabVIEW核心教程二练习手册_第2页
ni培训中文版LabVIEW核心教程二练习手册_第3页
ni培训中文版LabVIEW核心教程二练习手册_第4页
ni培训中文版LabVIEW核心教程二练习手册_第5页
已阅读5页,还剩100页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、LabVIEWTM练习手册(二)版本 20092010 年 2 月325293A-0118 19932010 National Instruments Corporation.。根据法、National Instruments Corporation 事先同意、本物不得以(包括电子或机械形式)进行全部或部分或、包括影印、录制、于任何信息检索系统中、或翻译。National Instruments 公司尊重他方的知识、也恳请的用户能给予同样的尊重。 NI受和其他知识法律的保护。当 NI生产被用来生产属于他方的该资料。或其他资料时、请确保您仅可在符合任何有效证条款或其他法律限制的前提下、以NIFo

2、r components used in USI (XerC+, ICU, HDF5, b64, Stingray, and STLport), the following copyright stipulations apply. For a listing ofers, refer to either the US ICopy r igh t s .or the Copyrights topic in your software.the conditions and diXerC+. This product includes softwaret was developed by the

3、Apache Software Foundation () .Copyright 1999 The Apache Software Foundation.s.ICU. Copyright 19952009ernational Business Machines Corporation and others.HDF5. NCSA HDF5 (Hierarchical Data Format 5) Software Library and Utilitiess.Copyright 1998, 1999, 2000, 2001, 2003 by thof Trustees of the Univer

4、sity of Illinois.s.b64. Copyright 20042006, Matthew Wilson and Synesis Software.s.Stingray. This software includes Stingray software developed by the Rogue Wave Software diviof Quovadx, Inc.Copyright 19952006, Quovadx, Inc.s.STLport. Copyright 19992003商标National IFomitchev和 LabVIEW 为 National Instru

5、ments Corporation 的商标。有关 National Instruments 商标的详细信息/ lega l 上的 Terms of Use 部分。见此处所提及的其它产品和公司名称为其各自公司的商标或商业名称。National Instruments Alliance Partn合伙或合资关系。rogram 的成员为独立于National Instruments 的商业实体、与 National Instruments 无、专利权关于 National Instruments 产品和技术的专利权、见pa ten ts 查看 National Instruments Patent

6、Notice。中的帮助 专利信息、光盘上的 pa ten t s . tx t 文档、或登录/全球技术支持及产品信息/ c h i n aNational Instruments 总部11500 North Mopac ExpresswayAustin, Texas 78759-3504USA: 512 683 0100全球办事处澳大利亚 1800 300 800, 奥地利 43 662 457990-0, 巴西 55 11 3262 3599, 比利时 32 (0) 2 757 0020, 波兰 48 22 328 90 10,丹麦 45 45 76 26 00, 德国 49 (0) 89

7、7413130, 俄罗斯 7 495 783 6851, 法国 01 57 66 24 24, 芬兰 358 (0) 9 725 72511,韩国 82 02 3451 3400, 荷兰 31 (0) 348 433 466,800 433 3488, 捷克420 224 235 774, 黎巴嫩 961 (0) 1 33 28 28,1800 887710, 墨西哥 01 800 010 0793, 南非 27 0 11 805 8197, 挪威 47 (0) 66 90 76 60, 葡萄牙 351 210 311 210,0120-527196, 瑞典 46 (0) 8 587 895

8、00,41 56 2005151, 斯洛文尼亚 386 3 425 42 00,662 278 6777, 新西兰 0800 553 322,886 02 2377 2222, 土耳其 90 212 279 3031, 西班牙 34 91 640 0085, 新加坡以色列 972 3 6393737, 意大利 39 02 41309277,91 80 41190000, 英国 44 0 1635 523545, 中国 86 21 5050 9800如需关于技术支持的信息,请查阅 “ 补充信息与资源 ” 附录。如需对 National Instruments 文档提出任何意见或建议,Nation

9、al Instruments/ in fo 并输入代码 feedbac k 。目录学员指南A.B.C.D.E.第 2 课同步技术概述vi之前的准备工作vi. vii学习本安装目标vii的行文规范viii练习 2-1第 3 课事件编程练习 3-1练习 3-2第 4 课错误处理练习 4-1第 5 课控制用户界练习 5-1练习 5-2练习 5-3第 6 课文件 I/O 技术练习 6-1练习 6-2第 7 课改进现有 VI练习 7-1第 8 课概念:比较队列和局部变量2-1概念:事件结构练习3-1创建打印队列控制台3-4使用错误处理修改打印控制台 VI4-1显示温度和上下限值5-1自定义 VI 窗口5

10、-5设置曲线名5-9写入位图文件 VI6-1TDMS 文件6-7概念:重构 VI7-1创建和发布应用程序练习 8-1练习 8-2附录 A使用变量练习 A-1练习 A-2练习 A-3准备待发布的文件8-1创建独立的应用程序8-6局部变量 VIA-1全局数据项目. A-7VIA-12概念: National Instruments Corporatioi面目录附录 B配置硬件附录 C补充信息与资源课程评价iv/china学员指南非常感谢您LabVIEW(二)课程套件。在您完成中的练习后,就可以开始开发应用程序了。在为期二天的面授课程 LabVIEW(二)中,将使用本手册和配套。如在 90 天内参加

11、培训,可将时间表、课程提纲、培训中心和课程training。的费用抵扣相应的培训费用。关于课程的详细信息/注关于的更新和修正信息,/info,输入信息码core2 查询。LabVIEW(二)是 NI 培训系列课程中的一门,该系列课程可以帮助您熟练掌握 LabVIEW 和顺利通过 NI LabVIEW 认证。下图为 LabVIEW 培训系列课程介绍。关于 NI 认证的信息见/training。 National Instruments Corporationv初级用户中级用户高级用户课程管理LabVIEW的工程系统设计LabVIEW高级架构认证其它课程*是帮助您高效实现LabVIEW性能的入门首

12、选。LabVIEW仪器控制LabVIEW FPGALabVIEW互连接口LabVIEW机器视觉模块化仪器系列LabVIEW性能 LabVIEW Real-TimeLabVIEW程序架构师LabVIEW开发工程师LabVIEW助理开发工程师LabVIEW(三)LabVIEW(一)LabVIEW第 1 课学员指南A.概述通过本手册熟悉 LabVIEW 的编程理论、技巧、特性、 VI 和函数,学习创建测试测量、阅读本、仪器控制、数据、测量分析和生成报表等应用程序。前请先熟悉 Windows 和使用流程图或程序框图编写算法的方法,请先学习 LabVIEW包括若干节课。(一)或具有同等的编程经验。和练习

13、手册手册的每节课由下列部分组成:本课的学习目的和学习内容的介绍本课的概述用于测试和强化课程概念和技巧的总结测验练习手册的每节课由下列部分组成:巩固课程的练习有些课程还包含一些有一定难度的选作练习或一套附加练习。时间允许的情况下,学员可以选作这些练习。某些练习需要使用下列 NI 硬件产品:连接DAQ 信号附件的即插式多功能数据(DAQ) 设备, DAQ 信号附件包含温度传感器、函数发生器和 LED 显示灯。即使无法获取上述硬件,您仍可以完成中的练习。包含不使用硬件完成练习的相关说明。需要使用硬件的练习使用图标标注,如左图所示。您也可以使用其它硬件替代上述硬件设备。例如,也可将 NI 的其它 DA

14、Q 设备 (如函数发生器)连接到信号源。B.学习本之前的准备工作在学习本之前,请确保如下几条:操作系统是Windows 2000或更高版本;本统最适用于Windows XP操作系多功能 DAQ 设备在 Measurement & Automation Explorer (MAX) 中配置为“dev1”。DAQ 信号附件和线缆LabVIEW 专业版开发系统 2009 或更高版本DAQmx 8.9.5 或更高版本LabVIEW(二)光盘包含下列文件:vi/china文件夹名称说明Ex e r c is e s包含本中需要用到的 VI 的文件夹So l u t ion s包含所有练习的解答第 1 课

15、学员指南C. 安装请按以下步骤安装:电脑光驱。1.2.将光盘安装 Exercises 和 Solutions 文件至目标路径。D.目标本的目标是帮助您掌握以下内容:应用使用通知器、队列和事件的常用设计模型有效地使用事件编程通过编程控制用户界面对象评估二进制文件 I/O 格式,并将其用于应用程序修改现有的代码,以增强可用性准备、构建和部署独立的应用程序在学习本的过程中,将创建一个项目,其中的 VI 将会应用到以上这些概念。每个单独的 VI 用于说明 LabVIEW 的特定概念或功能,所有 VI 共同了本课程中将创建的一个大型项目。本课程不包括以下内容:LabVIEW(一)中涉及到的编程方法每个内

16、置 VI、函数或者对象;LabVIEW 帮助中未提及的 LabVIEW 功能,请查阅为学员开发一个完整的应用程序;单击帮助 查找范例,使用 “NI 范例查找器” 应用并整合范例 VI 至学员自创的 VI 中 National Instruments Corporationvii第 1 课学员指南E.的行文规范本的行文规范如下: 表示通过嵌套菜单和框选项作出最终选择。例如,文件 页面设置 选项,表示先下拉文件菜单,再选择页面设置,然后在框中选择选项。该提示符号提醒用户注意参考信息。该提示符号提醒用户注意重要信息。该警告符号提醒您采取预防措施以防受伤、数据丢失或系统。该提示符号表明练习中需要用到式

17、 DAQ 设备。粗体粗体文本表示中的必选项 (例如,菜单和框选项)。粗体文本还表示框的一部分、菜单名称和选参数名称、前面板上的控件和按钮、板名称。框、斜体斜体文本表示变量、强调、交叉或重要概念介绍。同时也可作为占位符,表示须由用户填写的文字或数值。等宽字体文本表示用户必须从键盘输入的文字、部分代码、程序范例和语法范例。该字体也用于对磁盘驱动器名称、路径、目录、程序、子程序、设备名、等宽字体函数、运算、变量、文件名和扩展名名。等宽粗体文本表示在计算机屏幕上自动显示的消息和响应。该字体也用于强调与其它范例不同的代码行。等宽粗体viii/china2同步技术练习 2-1目标概念:比较队列和局部变量在

18、本练习中,运行并查看生产者 / 消费者设计模式 VI,它分别使用局部变量和队列将生产者循环生成的数据传输至消费者循环。概述1.打开LabVIEW Core 2Queues versus Local Variables中的Queuesvs Local Variables.vi。 VI 的前面板如图2-1 所示。图 2-1. 队列与局部变量比较的前面板运行 VI。生产者循环生成数据,并通过局部变量和队列将数据传递至每个消费者循环。2. National Instruments Corporation2-1第 2 课同步技术3.显示并检查 VI 的程序框图。图 2-2. 队列与局部变量比较的程序框图

19、创建队列在生产者循环左侧放置一个“ 获取队列” 函数以创建队列。连线“数据” 字符串常量至“ 获取队列” 函数的名称 (未命名)输入端,为待获取或创建的队列分配名称。连线 “ 数据类型 ” 数值常量至 “ 获取队列输入端,指定队列包含数据的类型。” 函数的 “ 元素数据类型 ”使用队列传递生产者循环生成的数据生产者循环的“ 元素入队列” 函数将“ 正弦波” 子 VI 生成的数据元素添加至队列后端。从队列中移出来自于生产者循环的数据,并进入消费者循环。队列消费者循环中的“ 元素出队列” 函数将从队列前端删除元素,并在队列消费者循环的波形图表中输出该元素。队列消费者循环使用“ 获取队列状态” 函数

20、指示当前队列所包含的元素个数。要处理这些数据元素,必须保证队列消费者循环处理速度高于生产者循环,或其可在生产者循环停止运行后继续处理数据。2-2/china第 2 课同步技术等待队列清空VI 停止运行前,层叠式顺序结构中的 While 循环将等待队列清空。此 While 循环称为队列的等待循环。队列的等待循环使用“ 获取队列状态” 函数返回队列的当前状态信息(例如,当前队列的元素个数)。连线“ 等于 0? ” 函数至队列的等待循环的停止条件接线端,检查队列是否已清空。队列的等待循环右侧的“队列” 函数并销毁队列的。队列” 函数右侧的“ 简单错误处理器” 函数将在程序执行结束“后生成的错误。使用

21、局部变量的消费者循环生产者循环生成正弦波数据并将其写入局部变量。使用局部变量的消费者循环周期性地从同一局部变量中正弦波数据。使用局部变量的消费者循环中的点区别 VI 输出丢失点的数量或重复切换至 VI 前面板。点的数量。1.选择使用局部变量的消费者循环的循环时间,并观察消费者循环波形图表以及丢失点数显示控件的生成结果。确保循环时间 (ms) 选择等同生产者循环,观察使用局部变量的生产者和消费者循环的波形图表。竞争状态将导致丢失点或重复读点。在循环时间 (ms) 控件的下拉菜单中选择最高速度,观察局部变量消费者循环的波形图表。此时将产生竞争状态 (即局部变量重复数据),因为数据处理的速度高于数据

22、生成的速度。同一在循环时间 (ms) 控件的下拉菜单中选择 1/2 生产者,观察局部变量消费者循环的波形图表。此时将产生竞争状态,因为数据生成的速度高于处理速度。局部变量未某些数据之前,数据已发生改变。选择循环时间 (ms) 下拉菜单中余下的选项,并观察获取的数据。2.停止 VI。使用局部变量在 2 个非同步并行循环间传递数据将导致竞争状态。其产生原因如下:生产者循环向局部变量中写入数据,而消费者循环周期性的从同一局部变量中数据因为并行循环未同步,即使数据未被仍可写入新数据,反之亦然。从而导致数据或数据覆盖。 National Instruments Corporation2-3第 2 课同步

23、技术使用队列的消费者循环1.运行 VI。选择使用队列的消费者循环波形图表的循环时间,观察消费者循环波形图表以及队列中元素数量显示控件的生成结果。确保循环时间 (ms) 选择等同生产者循环,观察队列中元素数量显示控件的生成值。该值应保持为零。即使用队列时,生产者与消费者循环执行速度一致时不会丢失数据。在循环时间 (ms) 控件的下拉菜单中选择最高速度,观察队列中元素数量控件的值。该值应保持为零。对于队列,消费者循环执行速度高于生产者循环时不会丢失数据。在循环时间 (ms) 控件的下拉菜单中选择 1/2 生产者,观察队列中元素数量控件的值。队列的元素数量将增加。您需要在队列点数到达最大值之前处理堆

24、积的数据元素,以防止发生数据丢失。选择循环时间 (ms) 控件下拉菜单中其余可用选项,并观察使用队列的生产者循环和消费者循环之间的数据传输同步性。2.停止 VI。当使用队列的生产者循环和消费者循环以相同速度执行时,队列中元素不会发生变化。如使用队列的消费者循环执行速度较慢,队列将快速积累数据。此时生产者循环必须等待消费者循环移出数据元素。如使用队列的消费者循环执行速度较快,队列将快速被清空。此时消费者循环必须等待生产者循环填充数据元素。因此队列可同步 2 个独立并行循环间的数据传 输,并可避免数据丢失或重复。3.关闭 VI。不要保存对 VI 所做的更改。练习 2-1 结束2-4/china第

25、2 课同步技术笔记 National Instruments Corporation2-5第 2 课同步技术笔记2-6/china3事件编程练习 3-1目标概念:事件结构练习练习 VI 的事件结构操作。概述使用并修改包含事件结构的 VI。1.打开 NI 范例查找器。 单击帮助 查找范例。打开新事件处理器范例。2. 顺序创建用户界面 获取用户输入 常规,双击新事件处理器3.4.5.6.7.8.9.关闭 NI 范例查找器。启用程序框图上的显示执行过程按钮。运行 VI。单击前面板按钮并观察 VI 运行情况。停止 VI。禁用显示执行过程。修改 VI,使其响应前面板中新控件的值改变事件。切换至 VI 前

26、面板。创建前面板上按钮的副本。将按钮文本和更改为新建按钮。右键单击新建按钮,确认按钮的机械动作为切换至 VI 的程序框图。时触发。右键单击事件结构边框,从快捷菜单选择添加事件分支打开编辑事件框。 National Instruments Corporation3-1第 3 课事件编程在事件源一栏选择新建按钮,事件一栏选择值改变。如图3-1 所示。图 3-1. 新建按钮值改变事件单击确定创建新的事件结构分支。在“ 新键按钮” 事件分支中放置一个新建按钮控件。在“新建按钮”事件分支中添加一个“单按钮框”函数,连线一个字符串常量至消息输入端。设置字符串常量内容为新建事件分支。穿过事件分支连线“ 时域

27、波形” 数据。连线假常量至隧道。运行 VI,单击新建按钮。此时弹出一个分支。框,框消息为新建事件停止 VI。3-2/china第 3 课事件编程10.修改事件结构,添加一个过滤事件以放弃前面板关闭事件。右键单击事件结构,从快捷菜单中选择添加事件分支打开编辑事件对话框。在事件源一栏选择 。在事件一栏选择前面板关闭 ?,单击确定按钮。连线真常量至前面板关闭?事件分支中事件过滤节点的“ 放弃? ”项。穿过事件分支连线“ 时域波形” 数据。连线假常量至隧道。11.12.13.14.15.运行 VI。尝试通过关闭前面板关闭 VI。单击停止按钮,中止 VI 运行。打开 NI 范例查找器。打开旧事件处理器范

28、例。 顺序创建用户界面 获取用户输入 常规,双击旧事件处理器。16.17.18.19.启用程序框图上的显示执行过程按钮。运行 VI。观察旧事件处理器的运行情况,并比较它与新事件处理器之间的区别。关闭全部 VI,不要保存对 VI 所做更改。练习 3-1 结束 National Instruments Corporation3-3第 3 课事件编程练习 3-2目标创建打印队列控制台使用生产者 / 消费者(事件)模板创建打印队列控制台,向提交打印任务并任务队列。应用场景创建一个打印控制台 VI,用于控制打印任务的提交和每次单击“ 事件入队列” 按钮,将发送一个打印任务至任务进程状态。用户。通过垂直条

29、打印任务的数量。 LED 指示灯用于显示打印进程状态。每个任务的打印进程均包含 2 部分用于初始化的固定时间 (300 ms)和用于打印的可变时间,具体时间取决于任务大小。设计本项目的必要控件和自定义类型枚举控件已创建。您需要使用 LabVIEW 附带的生产者 / 消费者设计模式模板创建打印控制台 VI。表 VI 的前面板使用的控件。3-1 列出了打印控制台表 3-1. 前面板控件和说明表 3-2 为生产者循环中实现的事件分支。表 3-2. 生产者循环事件分支3-4/china事件分支分支说明事件入队列:值改变本分支使用“ 元素入队列” 函数排序 p rj ob 字符串常量的值。停止:值改变本

30、分支使用“ 获取队列状态” 函数获取队列中元素的数量。传输值到打印任务队列条。超时本分支将中止 While 循环。控件控件说明事件入队列按钮用户每次单击此按钮,将发送一个打印任务至。打印任务队列条用于显示当前任务队列中的打印任务。每发送一个打印任务至 ,都会将其添加至任务队列。 每开始一个新任务,就从队列中移除相应的任务。正在等待LED仅在队列中无打印任务时点亮。正在初始化LED每个打印任务的初始阶段点亮。正在打印LED每个打印任务的打印阶段点亮。停止按钮本按钮可使 VI 停止运行。第 3 课事件编程表 3-3 为消费者循环状态机实现的状态。表 3-3.消费者循环状态 National Ins

31、truments Corporation3-5状态状态说明等待本状态执行下列任务。使用“ 元素出队列” 函数等待打印任务队列。设置“ 元素出队列” 函数的超时为 100 ms。“ 元素出队列” 函数超时的情况下,设置下一个状态为“ 等待” 状态。 “ 元素出队列” 函数未超时的情况下,设置下一个状态为“ 初始化设置”状态。设置“ 正在等待” 指示灯为真。初始化设置本状态执行下列任务。设置“ 正在等待” 指示灯为假。设置“ 正在初始化” 指示灯为真。切换至“ 设置” 状态。设置本状态执行下列任务。仿真打印设置,等待时间为 300 ms。设置“ 正在初始化” 指示灯为假。切换至“ 初始化打印” 状

32、态。初始化打印本状态执行下列任务。设置“ 正在打印” 指示灯为真。切换至“ 打印” 状态。打印本状态执行下列任务。使用不同的等待时间仿真打印任务。设置“ 正在打印” 指示灯为假。切换至“ 正在等待” 状态。第 3 课事件编程实现注为了强化您所学到的开发技能,本练习仅给出有限的操作指南。新建基于模板的 VI1.打开LabVIEW Core 2PrConsole 目录下的Pr Console.lvproj。使用生产者 / 消费者设计模式(事件)新建一个 VI。单击文件 VI 属性 说明信息。在 VI 说明信息部分,使用应用程序的简明描述替换模板说明信息。2.3.4.5.为 VI 创建有意义的图表。

33、保存 VI 为PrConsole.vi,放在LabVIEW Core 2PrConsole 目录下。确认新建 VI 已被添加至Pr项目。Console.lvproj6.保存PrConsole.lvproj 项目。创建前面板使用PrConsole.lvproj 项目中的Queued PrJobs.ctl 和PrLEDs.ctl 创建与图 3-2 类似的前面板。图 3-2. 打印控制台的前面板生产者循环首先修改生产者循环,再修改消费者循环完成程序框图。生产者循环响应前面板事件。用户每次单击“ 事件入队列” 按钮,将发送一个打印任务至队列条。生产者循环还负责使用队列中的元素数量更新打印任务3-6/c

34、hina1PrConsole.lvproj 项目中已经创建的部分1第 3 课事件编程图3-3 和 3-4 为完成后的生产者循环范例。图 3-3. 生产者循环事件入队列结构1.在“ 事件入队列” 结构中,使用 p r的元素字符串。j ob 替换“ 元素入队列” 函数2.在事件结构中添加“ 超时” 分支。“ 超时” 分支通过数量更新打印任务队列条。 事件源一栏选择 ,事件一栏选择超时。队列中元素的注如果事件数据节点无效 (黑色文本),右键单击并选择有效。注因为“ 超时” 分支为应用程序事件,其顶端的时间选择器与其它事件关联对象不同。名称仅表示事件,不包含关联对象。图 3-4. 生产者循环超件分支

35、National Instruments Corporation3-7第 3 课事件编程 添加“ 获取队列状态” 函数,队列中元素的数量。 连线常量值为 100 的常量至超时接线端,设置时间结构的超时时间为100 ms。注由于模板中已经存在停止分支,无需进行任何修改。消费者循环消费者循环仿真打印过程和更新 LED 指示灯状态。使用状态机实现打印过程。 “ 正在等待” 状态接收打印任务。接收到打印任务后,状态机初始化一系列步骤以仿真打印过程。每个步骤后更新打印指示灯。因此,“ 初始化设置”状态后点亮“ 正在初始化” 指示灯,“ 设置” 状态后关闭指示灯。同上,“ 初始化打印” 状态后点亮“ 正在

36、打印” 指示灯,“ 打印” 状态后关闭指示灯。图3-5 至 3-9 为完成后的消费者循环范例。在生产者循环中创建状态机,状态机的开始状态为 “ 等待 ”。“ 等待 ”状态使用 “ 元素出队列 ” 函数接收打印任务。如果 “ 元素出队列 ” 函数在指定状态机超时范围内 (100 ms) 接收到队列元素,状态机切换至 “ 初始化设置 ” 状态。如果 “ 元素出队列 ” 函数超时,状态机保持 “ 等待 ”状态。1.图 3-5. 消费者循环等待分支“ 打印处理状态” 自定义枚举类型控件已创建。从项目浏览器窗口选择并拖放Pr连线Prsing Ses.ctl 至程序框图。Prosing Ses.ctl 至

37、分支选择器,关联分支结构和Pro枚举控件的值。拖曳“ 元素出队列” 函数到分支结构。使用“元素出队列”函数的超时输出端判定下一个状态为“等待”状态或“ 初始化设置” 状态。添加“ 按名称” 函数,设置 “ 正在等待” LED控件的状态。3-8/china1PrConsole.lvproj 项目中已经创建的部分1第 3 课事件编程 在项目浏览器窗口,选择并拖放P r“ 打印指示灯” 簇常量。LEDs . c t l 至程序框图,创建2.按照图 3-6 创建“ 初始化设置” 分支。图 3-6. 消费者循环初始化设置分支 右键单击条件结构的边框,选择为每个值添加分支,为枚举控件的每个值创建关联分支。

38、提示或者通过现有分支创建新的分支结构。右键单击条件结构的边框,选择分支创建分支的副本。包含前面板接线端的条件结构时要特别注意,因为这将影响后的前面板对象。 右键单击错误隧道,选择未连线时使用默认。3.按照图 3-7 创建“ 设置” 状态。图 3-7. 消费者循环设置分支 仿真初始化设置,等待时间为 300 ms。 National Instruments Corporation3-9第 3 课事件编程4.按照图3-8 创建“ 初始化打印” 状态。图 3-8. 消费者循环初始化打印分支3-9 创建“ 打印” 状态。5.按照图图 3-9. 消费者循环打印分支 为了仿真不同的打印过程,生成 300

39、ms 和 1500 ms 的随机等待时间。使用 P r保存 VI 并保存Con s o l e . lvp r o j 中的范围内随机数 VI 设置随机等待时间。6.P rCon s o le . l vp r o j 项目。3-10/china第 3 课事件编程测试1.运行 VI 以确保它运行正确。用户每次单击“ 事件入队列” 按钮,将发送一个打印任务至栏中看到积压数据。如果连续提交几个打印任务,将在打印任务队列 注意:停止传送打印任务到队列时,仍继续执行打印过程。 注意:消费者循环仅在出错时停止执行。生产者循环停止,“队列” 破环队列时将出错。没有有效的队列,消费者循环中的“ 元素出队列”

40、 函数将返回错误代码 1122 (节点等待的句柄无效)。中止出错的消费者循环比较容易实现,但创建具有可扩展性和可性的专业应用程序时,不建议采用本方法。较好的解决方案是关闭应用程序,并向用户所有错误。2.关闭 VI 和项目。保存改动。练习 3-2 结束 National Instruments Corporation3-11第 3 课事件编程笔记3-12/china4错误处理练习 4-1目标使用错误处理修改打印控制台 VI修改 VI,实现 VI错误并包含一个关闭状态。应用场景使用打印控制台 VI, VI 仿真提交打印任务的控制过程,并打印任务的处理状态。用户每次单击“ 事件入队列” 按钮,将发送

41、一个打印任务至。打印任通过垂直条务的处理。打印任务的数量。使用 LED 指示灯和数值显示控件打印控制台 VI 不能错误。请修改 VI,实现潜在的错误和警告。并在最后一个打印任务结束后执行关闭进程。设计如果要实现 VI 的错误功能,需要:在全部循环中,使用移位寄存器并错误和警告。使用“ 合并错误” VI 获取生产者循环和消费者循环的错误信息。使用“ 简易错误处理器” 显示错误和警告。发生错误或生产者循环发送关闭消息时,由错误处理 VI 触发状态机执行“ 关闭” 条件分支。 National Instruments Corporation4-1第 4 课错误处理实现1.打开LabVIEW Core

42、 2Error Handling 目录下的Console with Error Handling.lvproj。Pr图 4-1. 打印控制台的前面板打开并运行打印控制台 VI。 VI 的前面板如图 4-1 所示。2.用户每次单击“ 事件入队列” 按钮,将发送一个打印任务至打印任务队列条中显示累积的打印任务。如果当前队列中不包含打印任务,“ 正在等待” 打印指示灯点亮。每处理一个打印任务会更新“ 任务” 显示控件一次,以显示当前正在处理的打印任务。初始化打印阶段,“ 正在初始化” 打印指示灯点亮。打印阶段,“ 正在打印” 指示灯点亮。单击停止按钮。3.检查程序框图。 注意,此时未任何错误。 注意

43、:消费者循环仅在出错时停止执行。如果生产者循环停止,“队列有效的队列” 函数的队列被破坏,此时就会发生错误。没有,消费者循环中的“ 元素出队列” 函数将返回错误代码 1122 (节点等待的句柄无效)。4-2/china第 4 课错误处理消费者循环中的错误处理1.按照图4-2 所示修改程序框图,实现错误功能。图 4-2. 带错误处理的消费者循环的程序框图连线“ 获取队列” 函数的错误簇至消费者 While 循环。使用移位寄存器替换 While 循环的错误隧道。从左端的移位寄存器连线错误簇至“ 元素出队列” 函数的错误输入接线端。连线右侧的错误隧道至右侧的移位寄存器。2.在“ 初始化配置” 分支中

44、,连线左侧的错误簇隧道至“ 扫描字符串”函数的错误输入接线端。3.对于所有余下的分支,连线左侧的错误簇隧道至右侧的错误簇隧道。合并和错误添加一个“ 合并错误” VI。添加一个“ 简易错误处理器” VI。 右键单击“ 简易错误处理器” VI 的常量。框类型接线端,选择创建 National Instruments Corporation4-3第 4 课错误处理 选择 OK Message + warnings。默认情况下,“ 简易错误处理器” VI 仅在发生错误时显示注框。如果要警告和错误信息,请将框选项修改为 OK Message + warnings。3.按如图 4-3 所示,完成“ 合并错

45、误” VI 和“ 简易错误处理器” VI 的连线。图 4-3.运行 VI。“ 合并错误” VI 和“ 简易错误处理器” VI 的程序框图4. 注意,单击停止按钮时,VI 不会停止运行。必须使用“ 中止” 按钮停止VI。检查程序框图。 注意,生产者 / 消费者循环结束后,才会执行 “ 合并错误” VI。因此,5.“列队列” 函数不会破坏队列。消费者循环要依赖这些队停止循环。移动“队列” 函数至“ 合并错误” VI 的前面将导致消费者循环停止。但使用错误来终止循环,将导致每次运行 VI 时,“ 简易错误处理器” VI 均“ 关闭” 状态时,修复此处。错误。在消费者循环中修改4-4/china第 4

46、 课错误处理添加错误处理器 VI1.按照图 4-4 修改程序框图,当生产者循环停止,或消费者循环中发生错误时,消费者循环执行“ 关闭” 分支。图 4-4.错误处理 VI 的程序框图 修改生产者循环,当用户单击“ 停止” 按钮时在队列前端素。关闭元在“ 停止” 事件分支中,添加“ 队列最前端元素” 函数。右键单击“ 队列最前端中选择创建 常量。元素” 函数的元素输入端,从快捷菜单在字符串常量中键入Shu t down。注字符串文本是区分大小写的。按图 4-4 中所示完成“ 停止” 事件分支的连线。 修改消费者循环,使其执行“ 关闭” 分支后停止。删除右侧错误隧道至 While 循环条件接线端间的

47、错误连线。在“ 关闭” 条件框图中添加“ 真” 常量。连线“ 真” 常量至 While 循环条件接线端。右键单击隧道,选择未连线时使用默认。 National Instruments Corporation4-5第 4 课错误处理 修改消费者循环,接收到队列中的“关闭”元素时执行“关闭”分支。在P rCon so l e wit h E rr o r Ha nd l ing . l vp r o j 的 s ubv i s 文件夹中,拖曳 Prer Error Handler.vi 至消费者循环。双击按照图 4-4 所示完成消费者循环连线。错误处理 VI,打开 VI。错误处理 VI 的程序框图

48、。2.3.检查 注意,下一个状态与当前状态相同。除非错误簇中包含错误,或“ 元素出队列” 的值等于关闭。如果发生错误或函数值与关闭匹配,下一个状态切换为“ 关闭”。4.5.6.错误处理 VI。关闭切换至打印控制台 VI 前面板。打开并运行打印控制台 VI。 注意,单击“ 停止” 按钮可停止 VI 执行,且不会错误。 尽管 VI 已经实现了预期的功能,错误处理功能。仍可以强制发生错误和警告,测试测试 (可选)如果时间允许,尝试在代码中错误和警告,运行 VI 以测试错误代码处理功能。用户可断开错误连线,使用包含错误或警量替换连线,强制发生错误。态和代码值的错误代码常保存带有强制错误的 VI。练习

49、4-1 结束4-6/china第 4 课错误处理笔记 National Instruments Corporation4-7第 4 课错误处理笔记4-8/china5控制用户界面练习 5-1目标显示温度和上下限值使用属性节点通过编程改变前面板对象属性。应用场景完成将温度至波形图表的 VI。执行过程中 VI 需完成下列任务:设置图表的 x 值为用户自定义值。清空波形图表,使其最初不包含任何数据。当数据超出某特定值时,更改曲线的颜色。当数据超出某特定值时,警告显示控件开始闪烁。设计添加下列属性节点至现有 VI: National Instruments Corporation5-1类型名称属性波形

50、图表温度XScale.Multipr波形图表温度History波形图表温度Active Plot 0Plot.Color显示控件 (LED 指示灯)超过限制Blinking第 5 课控制用户界面实现1.打开LabVIEW Core 2Temperature Limit 目录下的Temperature Limit.vi。前面板已创建好。图 5-1. 温度上限 VI 的前面板打开 VI 的程序框图。部分程序框图已创建。图 5-2 为最终程序框图范例。2.图 5-2. 温度上限VI 的程序框图修改 VI,使图表的 x 值等于用户输入的 t (ms)。3.右键单击“ 温度” 显示控件,从快捷菜单中选择

51、创建 属性节点 X 标尺 偏移与缩放系数 缩放系数,创建一个属性节点。将这个新的属性节点放置在 While 循环的左侧。右键单击属性节点,从快捷菜单中选择全部转换为写入。将 del(ms) 除以 1000 用作 X 标尺的缩放系数,如图 5-2 所示。5-2/china第 5 课控制用户界面4.修改 VI,使其在开始温度前先清除温度图表中的原有数据。提示将一个空数据数组传递至历史数据属性,就可清空波形图表历史。调整属性节点的大小,使其有 2 个接线端。第二个接线端选择历史数据 (History Data) 属性。验证历史数据属性是否设置为写入。右键单击历史数据属性,从快捷菜单中选择创建 常量。

52、按照图 5-2 所示对属性节点进行连线。5.修改 VI,实现 VI 在数据时,如果温度超过限制值,数据曲线就变成红色且超过限制指示灯闪烁。右键单击温度显示控件,从快捷菜单中选择创建 属性节点 活动曲线,创建另一个属性节点。将该属性节点放置在条件结构的真条件分支中。调整属性节点的大小,使其有 2 个接线端。单击第二个节点并选择曲线 (Plot) 曲线颜色 (Plot Color)。右键单击属性节点,从快捷菜单中选择全部转换为写入。连线 0 的数值常量至活动曲线属性节点,这样选择了温度图表上的第一条曲线。连线红色颜色盒常量至曲线颜色属性节点,当数据超出上限值时将曲线颜色设置为红色。按住 键的同时选

53、中并拖曳属性节点,创建一个属性节点的副本。提示使用剪贴板 (编辑 或 )创建属性节点的副本。这将创建不同类型的属性节点,详细信息见第 5 课中的控件一节。将属性节点的副本放置在条件结构的假条件分支中,如图 5-3 所示。连线值为 0 的数值常量至活动曲线属性节点,这样选择了温度图表上的第一条曲线。连线绿色颜色盒常量至曲线颜色属性节点,当数据低于上限时将曲线颜色设置为绿色。图 5-3. 温度上限VI 中的假条件分支 National Instruments Corporation5-3第 5 课控制用户界面6.修改 VI,满足 VI烁。数据时,如温度超出上限值,则超过限制指示灯闪右键单击超过限制

54、显示控件,从快捷菜单中选择创建 属性节点 闪烁。将新建的属性节点置于 While 循环。右键单击属性节点,从快捷菜单中选择全部转换为写入。按照图 5-2 所示对属性节点进行连线。7.保存 VI。测试1.2.运行 VI 以确保它运行正确。关闭 VI。练习 5-1 结束5-4/china第 5 课控制用户界面练习 5-2目标自定义 VI 窗口学习使用属性节点和调用节点更改 VI 属性。应用场景通过 VI 属性页可静态设置 VI 的外观属性。但具有鲁棒性的用户界面经常需要在程序运行期间改变前面板外观。请创建一个可完成下列目标任务的 VI:显示或隐藏标题栏显示或隐藏菜单栏变成透明,使得 VI 后面的对

55、象可见。移至屏幕中心。设计输入和输出提示使用开关按钮控件,因为此类控件的默认机械动作为单击时转换。使用确定按钮控件,因为它的默认机械动作为时触发。属性使用 VI 类的下列属性和方法。显示菜单栏属性为真时, VI 的菜单栏可见。图 5-4. VI 菜单栏标题栏可见属性为真时, VI 的标题栏可见。图 5-5. VI 标题栏 National Instruments Corporation5-5类型名称默认值开关按钮显示菜单栏?真开关按钮显示标题栏?真开关按钮将 VI 设置为透明?真确定按钮居中假停止按钮停止假第 5 课控制用户界面以透明方式运行 VI 属性为真时, VI 的可改变。该属性的默认值

56、为“ 假”,所以在改变VI之前需对该属性写入“ 真”。属性可改变 VI 的。属性接收值的范围为 0 到 100。值为 0 时,VI 完全不透明 (常规行为);值为 100 时, VI 完全透明 (不可见)。本练习中,按下将 VI 设置为透明 ? 按钮时,的值为 50。方法与属性不同,每次调用方法时它都会产生一个响应。因此,仅在要执行动作时调用方法。例如,如果每一次循环都调用 Fp.Center 方法,则 VI 将一直位于中心位置而不允许用户移动它。可以使用条件结构控制方法的调用,实现只在某次循环中调用该方法。使用 VI 类的下列方法:居中每次调用方法时, VI 都会移至屏幕的中心。提示使用即时

57、帮助窗口查看每个属性和方法的说明信息。VI 结构VI 每 50 毫秒轮询一次前面板控件,并根据控件的当前值设置属性值。条件结构控制“ 居中” 方法的执行。实现1.打开LabVIEW Core 2Customize VI WindowCustomize VI Window VI。 VI 的前面板如图 5-6 所示。目录下的图 5-6. 自定义 VI 窗口 VI 的前面板按照下列步骤创建 VI 程序框图。图 5-7 为程序框图范例。图 5-7. 自定义 VI 窗口的程序框图5-6/china第 5 课控制用户界面图 5-8. 居中方法的“ 假” 条件分支使用 While 循环包围接线端。2.3.创

58、建 VI 的。 添加“VI 服务器 将 VI 服务器” 至程序框图,放置在 While 循环的左侧。设置为本 VI。注本 VI一个用于。当前 VI 的所有方法和属性,且的同时无需直接打开和关闭4.为“ 以透明方式运行 VI” 属性创建一个属性节点:右键单击本 VI,从快捷菜单选择创建 VI 类的属性 前面板窗居中,创建一个属性节点。将属性节点移至本 VI的右侧,且位于 While 循环外部。右键单击属性节点,从快捷菜单中选择全部转换为写入。右键单击FP:RunTransparently 属性节点,从快捷菜单中选择创建 常量。将常量的值改为“ 真”。5.分别为显示菜单栏 (ShowBar)、标题

59、栏可见 (TitarVis) 和(Transparency) 属性创建属性节点。右键单击“本VI”显示菜单栏。,从快捷菜单选择创建VI类的属性前面板扩展属性节点,使其显示 3 个元素。单击属性节点中的第二个属性,选择前面板 标题栏可见。单击属性节点中的第 3 个属性,选择前面板。右键单击属性节点,从快捷菜单中选择全部转换为写入。将属性节点移至 While 循环。在 While 循环放置一个“ 选择” 函数。在“ 选择” 函数的左侧放置 2 个数值常量,值分别为 0 和 50 。连线 0 数值常量至“ 选择” 函数的 f 接线端。连线 50 数值常量至“ 选择” 函数的 t 接线端。按照图 5-

60、7 完成控件与相关属性节点的连线。 National Instruments Corporation5-7窗口窗口窗口口第 5 课控制用户界面6.为“ 居中” 方法创建调用节点。 右键单击本VI,从快捷菜单选择创建VI 类的方法 前面板 居中,创建一个调用节点。7.8.在 FP.Center 调用节点周围放置一个“ 条件” 结构。为循环添加一个 50 ms 的等待时间。在 While 循环放置一个“ 等待 (ms)” 函数。右键单击等待时间 (毫秒)输入端,从快捷菜单中选择 创建 常量。在常量中键入 50 。9.当用户按下“ 停止” 按钮,或者发生错误时, While 循环需停止运行。在 Wh

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论