计算机虚拟仪器图形编程LabVIEW实验教材

上传人:细水****9 文档编号:63393141 上传时间:2022-03-18 格式:DOC 页数:70 大小:766.50KB
收藏 版权申诉 举报 下载
计算机虚拟仪器图形编程LabVIEW实验教材_第1页
第1页 / 共70页
计算机虚拟仪器图形编程LabVIEW实验教材_第2页
第2页 / 共70页
计算机虚拟仪器图形编程LabVIEW实验教材_第3页
第3页 / 共70页
资源描述:

《计算机虚拟仪器图形编程LabVIEW实验教材》由会员分享,可在线阅读,更多相关《计算机虚拟仪器图形编程LabVIEW实验教材(70页珍藏版)》请在装配图网上搜索。

1、LabVIEWLabVIEW目录第一课第一课 LABVIEW 概述概述.4第一节 虚拟仪器(VI)的概念 .4第二节 LABVIEW 的操作模板 .6工具模板(Tools Palette).6控制模板(Controls Palette).7功能模板(Functions Palette).8第三节 创建一个 VI 程序.101.前面板.10框图程序.11从框图程序窗口创建前面板对象.124.数据流编程.12第四节 程序调试技术.131.找出语法错误.132.设置执行程序高亮.133.断点与单步执行.134.探针.14第五节 练习 1-1 .14第六节 把一个 VI 程序作为子 VI 程序调用 .

2、 17第七节 练习 1-2 .18第八节 练习 1-3 .21第九节 练习 1-4 .22第十节 练习 1-5 .24第二课第二课 数据采集数据采集.27第一节 概述.27第二节 数据采集 VI 程序的调用方法.29第三节 模拟输入与输出.30练习2-1 .31第四节 波形的采集与产生.34练习2-2 .35第五节 扫描多个模拟输入通道.36练习2-3 .36第六节 连续数据采集.37练习2-4 .38第三课第三课 仪器控制仪器控制.40第一节 概述.40第二节 串行通讯 .40第三节 IEEE 488(GPIB)概述.41练习3-1 .43第四节 VISA 编程 .44练习3-2 .46第五

3、节 用 LABVIEW 编写仪器驱动程序.47第六节 验证仪器驱动软件.48练习3-3 .49第四课第四课分析软件分析软件.52第一节 概述.52第二节、高级分析功能程序.52第三节 信号产生 .53练习4-1 .53第四节 信号处理 .55练习4-2 .55第五节 数字滤波器 .56练习4-3 .57第六节 曲线拟合 .58练习4-4 .59练习4-5 .60第五课第五课 实用工具软件包实用工具软件包.62第一节 概述.62第二节 常用软件工具箱.62第三节 分析工具软件.64第一课第一课 LabVIEW 概述概述第一节第一节 虚拟仪器(虚拟仪器(VIVI)的概念)的概念使用 LabVIEW

4、开发平台编制的程序称为虚拟仪器程序,简称为 VI。VI 包括三个部分:程序前面板、框图程序和图标/连接器。程序前面板用于设置输入数值和观察输出量,用于模拟真实仪表的前面板。在程序前面板上,输入量被称为控制(Controls) ,输出量被称为显示(Indicators) 。控制和显示是以各种图标形式出现在前面板上,如旋钮、开关、按钮、图表、图形等,这使这得前面板直观易懂。下面是一个温度计程序(Thermometer VI)的前面板。每一个程序前面板都对应着一段框图程序。框图程序用 LabVIEW 图形编程语言编写,可以把它理解成传统程序的源代码。框图程序由端口、节点、图框和连线构成。其中端口被用

5、来同程序前面板的控制和显示传递数据,节点被用来实现函数和功能调用,图框被用来实现结构化程序控制命令,而连线代表程序执行过程中的数据流,定义了框图内的数据流动方向。上述温度计程序(Thermometer VI)的框图程序如下:图标/连接器是子 VI 被其它 VI 调用的接口。图标是子 VI 在其他程序框图中被调用的节点表现形式;而连接器则表示节点数据的输入/输出口,就象函数的参数。用户必须指定连接器端口与前面板的控制和显示一一对应。下面图示为温度计程序(Thermometer VI)的图标和连接器。连接器一般情况下隐含不显示,除非用户选择打开观察它。LabVIEW 的强大功能归因于它的层次化结构

6、,用户可以把创建的 VI 程序当作子程序调用,以创建更复杂的程序,而这种调用的层次是没有限制的。举一个例子,我们把前面创建的温度计程序(Thermometer VI)作为一个子程序用在当前新建程序里,当前程序的前面板如下图所示,先前的温度计子程序用于采集数据,而当前的程序用于显示温度曲线,并在前面板上设定测量次数和每次测量间隔的延时。当前程序的框图如下图所示,它把温度计子程序放置在一个 FOR 循环里,每次循环过程采集一次测量结果,当循环执行了设定的次数后,程序把采集的数据送到前面板的图表上显示。LabVIEW 这种创建和调用子程序的方法,使创建的程序结构模块化,更易于调试、理解和维护。第二节

7、第二节 LabVIEWLabVIEW 的操作模板的操作模板LabVIEW 具有多个图形化的操作模板,用于创建和运行程序。这些操作模板可以随意在屏幕上移动,并可以放置在屏幕的任意位置。操纵模板共有三类,为工具(Tools)模板、控制(Controls)模板和功能(Functions)模板。工具模板(Tools Palette)工具模板为编程者提供了各种用于创建、修改和调试 VI 程序的工具。如果该模板没有出现,则可以在 Windows 菜单下选择 Show Tools Palette 命令以显示该模板。当从模板内选择了任一种工具后,鼠标箭头就会变成该工具相应的形状。当从Windows 菜单下选择

8、了 Show Help Window 功能后,把工具模板内选定的任一种工具光标放在框图程序的子程序(Sub VI)或图标上,就会显示相应的帮助信息。工具图标有如下几种:操作工具:使用该工具来操作前面板的控制和显示。使用它向数字或字符串控制中键入值时,工具会变成标签工具的形状。选择工具:用于选择、移动或改变对象的大小。当它用于改变对象的连框大小时,会变成相应形状。标签工具:用于输入标签文本或者创建自由标签。当创建自由标签时它会变成相应形状。连线工具:用于在框图程序上连接对象。如果联机帮助的窗口被打开时,把该工具放在任一条连线上,就会显示相应的数据类型。对象弹出菜单工具:用左鼠标键可以弹出对象的弹

9、出式菜单。漫游工具:使用该工具就可以不需要使用滚动条而在窗口中漫游。断点工具:使用该工具在 VI 的框图对象上设置断点。探针工具:可以在框图程序内的数据流线上设置探针。程序调试员可以通过控针窗口来观察该数据流线上的数据变化状况。颜色提取工具:使用该工具来提取颜色用于编辑其他的对象。颜色工具:用来给对象定义颜色。它也显示出对象的前景色和背景色。与上述工具模板不同,控制和功能模板只显示顶层子模板的图标。在这些顶层子模板中包含许多不同的控制或功能子模板。通过这些控制或功能子模板可以找到创建程序所需的面板对象和框图对象。用鼠标点击顶层子模板图标就可以展开对应的控制或功能子模板,只需按下控制或功能子模板

10、左上角的大头针就可以把对这个子模板变成浮动板留在屏幕上。控制模板(Controls Palette)用控制模板可以给前面板添加输入控制和输出显示。每个图标代表一个子模板。如果控制模板不显示,可以用 Windows 菜单的 Show Controls Palette 功能打开它,也可以在前面板的空白处,点击鼠标右键,以弹出控制模板。注:只有当打开前面板窗口时才能调用控制模板。控制模板如左图所示,它包括如图所示的几个子模板。数值子模板:包含数值的控制和显示。布尔值子模块:逻辑数值的控制和显示。字符串子模板:字符串和表格的控制和显示。列表和环(Ring)子模板:菜单环和列表栏的控制和显示。数组和群子

11、模板:复合型数据类型的控制和显示。图形子模板:显示数据结果的趋势图和曲线图。路径和参考名(Refnum)子模板:文件路径和各种标识的控制和显示。控件容器库子模板:用于操作 OLE、ActiveX 等功能。对话框子模板:用于输入对话框的显示控制。修饰子模板:用于给前面板进行装饰的各种图形对象。用户自定义的控制和显示。调用存储在文件中的控制和显示的接口。功能模板(Functions Palette)功能模板是创建框图程序的工具。该模板上的每一个顶层图标都表示一个子模板。若功能模板不出现,则可以用 Windows 菜单下的 Show Functions Palette 功能打开它,也可以在框图程序窗

12、口的空白处点击鼠标右键以弹出功能模板。注:只有打开了框图程序窗口,才能出现功能模板。功能模板如下图所示。结构子模板:包括程序控制结构命令,例如循环控制等,以及全局变量和局部变量。数值运算子模板:包括各种常用的数值运算符,如+、-等;以及各种常见的数值运算式,如+1 运算;还包括数制转换、三角函数、对数、复数等运算,以及各种数值常数。布尔逻辑子模板:包括各种逻辑运算符以及布尔常数。字符串运算子模板:包含各种字符串操作函数、数值与字符串之间的转换函数,以及字符(串)常数等。数组子模板:包括数组运算函数、数组转换函数,以及常数数组等。群子模板。包括群的处理函数,以及群常数等。这里的群相当于 C 语言

13、中的结构。比较子模板:包括各种比较运算函数,如大于、小于、等于。时间和对话框子模板:包括对话框窗口、时间和出错处理函数等。文件输入/输出子模板:包括处理文件输入/输出的程序和函数。仪器控制子模板:包括 GPIB(488、488.2)、串行、VXI 仪器控制的程序和函数,以及 VISA 的操作功能函数。仪器驱动程序库:用于装入各种仪器驱动程序。数据采集子模板:包括数据采集硬件的驱动程序,以及信号调理所需的各种功能模块。信号处理子模板:包括信号发生、时域及频域分析功能模块。数学模型子模块:包括统计、曲线拟合、公式框节点等功能模块,以及数值微分、积分等数值计算工具模块。图形与声音子模块:包括 3D、

14、OpenGL、声音播放等功能模块。通讯子模板:包括 TCP、DDE、ActiveX 和 OLE 等功能的处理模块。应用程序控制子模块:包括动态调用 VI、标准可执行程序的功能函数。底层接口子模块:包括调用动态连接库和 CIN 节点等功能的处理模块。文档生成子模板。示教课程子模板:包括 LabVIEW 示教程序。用户自定义的子 VI 模板。 “选择VI 子程序”子模板:包括一个对话框,可以选择一个 VI 程序作为子程序(SUB VI)插入当前程序中。其它几个子模板是 LabVIEW 的附加 Toolkit 安装上去的。在 LabVIEW 完全版中不包括这些子模板。第三节第三节 创建一个创建一个

15、VIVI 程序程序请记住,VI 程序具有三个要素:前面板、框图程序和图标/连接器。我们将在练习 1-1 中讨论图标/连接器。1. 前面板使用输入控制和输出显示来构成前面板。控制是用户输入数据到程序的接口。而显示是输出程序产生的数据接口。控制和显示有许多种类,可以从控制模板的各个子模板中选取。两种最常用的前面板对象是数字控制和数字显示。若想要在数字控制中输入或修改数值,你只需要用操作工具(见工具模板)点击控制部件和增减按钮,或者用操作工具或标签工具双击数值栏进行输入数值修改。2. 框图程序框图程序是由节点、端点、图框和连线四种元素构成的。节点节点类似于文本语言程序的语句、函数或者子程序。LabV

16、IEW 有二种节点类型-函数节点和子 VI 节点。两者的区别在于:函数节点是 LabVIEW 以编译好了的机器代码供用户使用的,而子 VI 节点是以图形语言形式提供给用户的。用户可以访问和修改任一子 VI 节点的代码,但无法对函数节点进行修改。上面的框图程序所示的 VI 程序有两个功能函数节点,一个函数使两个数值相加,另一个函数使两数相减。端点端点是只有一路输入/输出,且方向固定的节点。LabVIEW 有三类端点-前面板对象端点、全局与局部变量端点和常量端点。对象端点是数据在框图程序部分和前面板之间传输的接口。一般来说,一个 VI 的前面板上的对象(控制或显示)都在框图中有一个对象端点与之一一

17、对应。当在前面板创建或删除面板对象时,可以自动创建或删除相应的对象端点。控制对象对应的端点在框图中是用粗框框住的,如例子中的 A 和 B 端点。它们只能在 VI 程序框图中作为数据流源点。显示对象对应的端点在框图中是用细框框住的。如例子中的 A+B 和A-B 端点。它们只能在 VI 程序框图中作为数据流终点。常量端点永远只能在 VI程序框图中作为数据流源点。图框图框是 LabVIEW 实现程序结构控制命令的图形表示。如循环控制、条件分支控制和顺序控制等,编程人员可以使用它们控制 VI 程序的执行方式。代码接口节点(CIN)是框图程序与用户提供的 C 语言文本程序的接口。连线连线是端口间的数据通

18、道。它们类似于普通程序中的变量。数据是单向流动的,从源端口向一个或多个目的端口流动。不同的线型代表不同的数据类型。在彩显上,每种数据类型还以不同的颜色予以强调。下面是一些常用数据类型所对应的线型和颜色:整 形 数兰色浮点数 橙色逻辑量 绿色字符串 粉色文件路径 青色当需要连接两个端点时,在第一个端点上点击连线工具(从工具模板栏调用) ,然后移动到另一个端点,再点击第二个端点。端点的先后次序不影响数据流动的方向。当把连线工具放在端点上时,该端点区域将会闪烁,表示连线将会接通该端点。当把连线工具从一个端口接到另一个端口时,不需要按住鼠标键。当需要连线转弯时,点击一次鼠标键,即可以正交垂直方向地弯曲

19、连线,按空格键可以改变转角的方向。3. 从框图程序窗口创建前面板对象用选择和连线工具,你都可以用鼠标右键点击任一节点和端点,然后从弹出菜单中选择“创建常数”, “创建控制”,或“创建显示”等命令。LabVIEW 会自动地在被创建的端点与所点击对象之间接好连线。4. 数据流编程控制 VI 程序的运行方式叫做“数据流”。对一个节点而言,只有当它的所有输入端口上的数据都成为有效数据时,它才能被执行。当节点程序运行完毕后,它把结果数据送给所有的输出端口,使之成为有效数据。并且数据很快从源送到目的端口。如左图所示,这个 VI 程序把两个输入数值相乘,再把乘积减去 50.0。这个程序中,框图程序从左往右执

20、行,快速提示:快速提示:接线头是为了帮助正确连接端口的连线。当把连线工具放到端口上,接线头就会弹出。接线头还有一个黄色小标识框,显示该端口的名字。这个执行次序不是由于对象的摆放位置,而是由于相减运算函数的一个输入量是相乘函数的运算结果,它只有当相乘运算完成并把结果送到减运算的输入口后才能继续下去。请记住,一个节点(函数)只有当它所有的输入端的数据都成为有效数据后才能被执行,而且只有当它执行完成后,它的所有输出端口上的数据才成为有效。再看另一个程序(见右图),你认为哪一个节点函数将先执行 是乘法还是除法?在这个例子中,我们无法知道哪一个节点函数首先执行,因为所有输入量几乎同时到达。对于这样一种相

21、互独立的数据流程,如果又必须明确指定节点执行的先后次序,就必须使用顺序(Sequence)结构来明确执行次序。第四节第四节 程序调试技术程序调试技术1. 找出语法错误如果一个 VI 程序存在语法错误,则在面板工具条上的运行按钮将会变成一个折断的箭头,表示程序不能被执行。这时这个按钮被称作错误列表。点击它,则 LabVIEW 弹出错误清单窗口,点击其中任何一个所列出的错误,选用 Find 功能,则出错的对象或端口就会变成高亮。2. 设置执行程序高亮在 LabVIEW 的工具条上有一个画着灯泡的按钮,这个按钮叫做“高亮执行”按钮上。点击这个按钮使该按钮图标变成高亮形式,再点击运行按钮,VI 程序就

22、以较慢的速度运行,没有被执行的代码灰色显示,执行后的代码高亮显示,并显示数据流线上的数据值。这样,你就可以在根据数据的流动状态跟踪程序的执行。3. 断点与单步执行为了查找程序中的逻辑错误,你也许希望框图程序一个节点一个节点地执行。使用断点工具可以在程序的某一地点中止程序执行,用探针或者单步方式查看数据。使用断点工具时,点击你希望设置或者清除断点的地方。断点的显示对于节点或者图框表示为红框,对于连线表示为红点。当 VI 程序运行到断点被设置处,程序被暂停在将要执行的节点,以闪烁表示。按下单步执行按钮,闪烁的节点被执行,下一个将要执行的节点变为闪烁,指示它将被执行。你也可以点击暂停按钮,这样程序将

23、连续执行直到下一个断点。4. 探针你可以用探针工具来查看当框图程序流经某一根连接线时的数据值。从Tools 工具模板选择探针工具,再用鼠标左建点击你希望放置探针的连接线。这时显示器上会出现一个探针显示窗口。该窗口总是被显示在前面板窗口或框图窗口的上面。在框图中使用选择工具或连线工具,在连线上点击鼠标右键,在连线的弹出式菜单中选择“探针”命令,同样可以为该连线加上一个探针。第五节第五节 练习练习 1-11-1目的:目的:创建一个 VI 程序,以便以后作为子 VI 程序使用。创建一个 VI 程序模拟温度测量。假设传感器输出电压与温度成正比。例如,当温度为 70F时,传感器输出电压为 0.7V。本程

24、序也可以用摄氏温度来代替华氏温度显示。本程序用软件代替了 DAQ 数据采集卡。使用 Demo Read Voltage 子程序来仿真电压测量,然后把所测得的电压值转换成摄氏或华氏温度读数。前面板:1. 用 File 菜单的 New 选项打开一个新的前面板窗口。2. 把温度计指示部件放入前面板窗口。a.在前面板窗口的空白处点击鼠标键,然后从弹出的 Numeric 子模板中选择 Thermometer。b.在高亮的文本框中输入“温度计”,再点击鼠标键按钮。3. 重新设定温度计的标尺范围为 0.0 到 100.0。使用标签工具 A,双击温度计标尺的 10.0,输入 100.0,再点击鼠标键或者工具栏

25、中的 V 按钮。4. 在前面板窗口中放入竖直开关控制。a.在面板窗口的空白处点击鼠标键,然后弹出的 Boolean 子模板中选择 Vertical Switch,在文本框中输入“温度值单位”,再点击鼠标键或者工具栏中的 V 按钮。b.使用标签工具 A,在开关的“条件真”(true)位置旁边输入自由标签“摄氏”,再在“条件假”(false)位置旁边输入自由标签“华氏”。框图程序:1. 从 Windows 菜单下选择 Show Diagram 功能打开框图程序窗口。2. 点击框图程序窗口的空白处,弹出功能模板,从弹出的菜单中选择所需的对象。本程序用到下面的对象:Demo Read Voltage

26、VI 程序(Tutorial 子模板) 。在本例中,该程序模拟从 DAQ 卡的 0 通道读取电压值。Multiply(乘法)功能(Numeric 子模板) 。在本例中,将读取电压值乘以 100.00,以获得华氏温度。Subtract(减法)功能(Numeric 子模板) 。在本例中,从华氏温度中减去 32.0,以转换成摄氏温度。Divide(除法)功能(Numeric 子模板) 。在本例中,把相减的结果除以 1.8 以转换成摄氏温度。Select(选择)功能(Comparison 子模板) 。取决于温标选择开关的值。该功能输出华氏温度(当选择开关为 false)或者摄氏温度(选择开关为 Tru

27、e)数值。数值常数。用连线工具,点击你希望连接一个数值常数的对象,并选择 Create Constant 功能。若要修改常数值,用标签工具双点数值,再写入新的数值。字符串常量。用连线工具,点击你希望连接字符串常量的对象,再选择 Create Constant 功能。要输入字符串,用标签工具双击字符串,再输入新的字符串。3. 使用移位工具(Positioning tool) ,把图标移至图示的位置,再用连线工具连接起来。Demo Read Voltage VI 子程序模拟从数据采集卡的 0 通道读取电压,我们的程序再将读数乘以 100.0 转换成华氏温度读 数,或者再把华氏温度转换成摄氏温度。4

28、. 选择前面板窗口,使之变成当前窗口,并运行 VI 程序。点击连续运行按钮,便程序运行于连续运行模式。5. 再点击连续运行按钮,关闭连续运行模式。6. 创建图标 Temp:此图标可以将现程序作为子程序在其他程序中调用。创建方法如下:a.在面板窗口的右上角的图标框中点击鼠标,从弹出菜单中选择Edit Icon 功能。b.双点选择工具,并按下 Delete 键,消除缺省的图标图案。c.用画图工具画出温度计的图标。请记住,如果要显示图标接线端口,则点击图标,再从弹出菜单中选择Show Terminals功能。也可以从Help 菜单中选择 Show Help 功能以打开帮助信息窗口。注意,在用鼠标画线

29、时按下键,则可以画出水平或垂直方向的连线。使用文本工具写入文字,双击文本工具把字体换成 Small Font。当图标创建完成后,点击 OK 以关闭图标编辑。生成的图标在面板窗口的右上角。7. 创建联接器端口:a.点击右上角的图标面板,从弹出菜单中选择 Show Connector 功能。LabVIEW 将会根据控制和显示的数量选择一种联接器端口模式。在本例中,只有两个端口,一个是竖直开关,另一个是温度指示。b.把联接器端口定义给开关和温度指示。c.使用连线工具,在左边的联接器端口框内按鼠标键,则端口将会变黑。再点击开关控制件,一个闪烁的虚线框将包围住该开关。d.现在再点击右边的联接器端口框,使

30、它变黑。再点击温度指示部件,一个闪烁的虚线框将包围住温度指示部件,这即表示着右边的联接器端口对应温度指示部件的数据输入。e.如果再点击空白外,则虚线框将消失,而前面所选择的联接器端口将变暗,表示你已经将对象部件定义到各个联接器端口。以后我们会讲到如何使用 SubVI From Selection 功能来创建子程序SubVI。8. 确认当前文件的程序库路径为 Seminar.LLB,用文件菜单的 SAVE 功能保存上述文件,并将文件命名为 Thermometer.Vi。现在,该程序已经编制完成了。它可以在其他程序中作为子程序来调用,在其它程序的框图窗口里,该温度计程序用前面创建的图标来表示。联接

31、器端口的输入端用于选择温度单位,输出端用于输出温度值。9. 关闭该程序(练习(练习 1-11-1 结束)结束)注意:LabVIEW的惯例是前面板上控制的联接器端口放在图标的接线面板的左边,而显示的联接器端口放在图标的接线面板的右边。也就是说,图标的左边为输入端口而右边为输出端口。第六节第六节 把一个把一个 VIVI 程序作为子程序作为子 VIVI 程序调用程序调用在任意一个 VI 程序的框图窗口里,都可以把其他的 VI 程序作为子程序调用,只要被调用 VI 程序定义了图标和联接器端口即可。用户使用功能模板的Select a VI 来完成。当使用该功能时,将弹出一个对话框,用户可以输入文件名。一

32、个子 VI 程序,相当于普通程序的子程序。节点相当于子程序调用。子程序节点并不是子程序本身,就象一般程序的子程序调用语句并不是子程序本身一样。如果在一个框图程序中,有几个相同的子程序节点,它就象多次调用相同的子程序。请注意,该子程序的拷贝并不会在内存中存储多次。第七节第七节 练习练习 1-21-2目的:目的:使用一个条件循环结构和一个被测波形图表实时地采集数据。学员将创建一个 VI 程序,进行温度测量,并把结果在波形图表上显示。该VI 程序使用我们前面创建的温度计程序(Thermometer VI)作为子程序。前面板:1. 打开一个新的前面板窗口,在里面放一个竖直开关(在 Boolean 逻辑

33、部件子模板) ,给该开关标注为“Enable”。你可以用该开关来开始/停止数据采集。2. 在前面板内再放置一个趋势图(Graph 子模板中的 Waveform Chart) ,标注为“温度历史趋势”。该图表将实时地显示温度值。3. 由于趋势图将它的图标注解 plot 自动地标注为“plot 0”,你可以用标注工具将其重新标注为“Temp”。4. 因为趋势图用于显示室内温度,需要对它的标尺进行重新定标。将 Y 轴的“10”改为“90”,而将“0.0”改为“20”。5. 此时暂时不要创建模式转换开关,我们将尝试从框图程序窗口创建前面板的部件。框图程序:1. 打开框图程序窗口。2. 从结构(Stru

34、ctures)工具模板选择条件循环结构“While Loop”放入框图程序窗口,调整该条件循环框的大小,把先前从前面板创建的两个节点放入循环框内。3. 放入其它的框图程序对象。Thermometer VI,这个 VI 程序是你在上个练习中创建的,从 Seminar.LLB 中调出(从 Select a VI子模板)。4. 按照上图的框图程序连好线。条件循环结构是一种无限循环结构,只要条件满足,它就一直循环运行下去。在本例中,只要允许开关(Enable Switch)是ON 状态,该 VI 程序就一直运行,采集温度测量值,并在图表上显示。5. 创建模式开关。把连线工具放在 Thermometer

35、 VI 的 Mode 输入端口上,按鼠标右键并选择 Creat Control,这样就可以自动创建模式转换开关,并将它与 Thermometer VI 子程序相连线,再转换到前面板窗口,将模式转换开关的位置重新调整。6. 在前面板窗口,使用标注工具,双击模式开关的“OFF”标签,并把它转换成“华氏”,再把“ON”标签转换民“摄氏”。要转换开关状态,使用操作工具(Operating Tool) 。7. 将模式开关设置为 ON 状态,运行该 VI 程序。8. 要停止数据采集,点击 Enable 开关,使其状态变为 OFF,循环结束。9. 修改 Enable 开关缺省设置,使你运行 VI 程序时不必

36、每次打开该开关。a.若程序在运行状态,则关闭程序运行。b.把开关设置为 ON 状态。c.点击开关,从弹出菜单中选择 Data OperationsMake Current Value Default 选项,这将使 ON 状态变为缺省值。d.再点击开关,从弹出菜单中选择 Mechanical ActionLatch When Pressed 选项。10. 运行该程序,把开关点击为 Stop 状态以停止数据采集。开关将变为OFF 状态,但当条件循环结构再次读取其数值时,它又会变成 ON 状态。增加定时器控制:当你运行程序时,它将会尽可能快地运行。但是你也许希望以一定的时间间隔,例如一秒钟一次或者一

37、分钟一次来采集数据。你可以用 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。(练习(练习 1-21-2 结束)结束

38、) 。第八节第八节 练习练习 1-31-3目的:目的:以图表方式显示数据并使用分析功能子程序。利用练习 1-2 创建的 VI 程序,在数据采集过程中,实时地显示数据。当采集过程结束后,在图表上画出数据波形,并算出最大值、最小值和平均值。该练习只使用华氏温度单位。前面板:1. 打开练习 1-2 创建的 Temperature monitor.vi 程序。2. 按照上图修改程序,其中被虚线框住的部分是新增加的。趋势图“温度历史趋势”显示实时采集的数据。采集过程结束后,在Temp Graph 中画出数据曲线,同时在 Mean、Max 和 Min 数字显示栏中显示出温度的平均值、最大值和最小值。本例中

39、只使用华氏温度单位。框图程序:1. 完成上面的框图程序。被虚线框住的部分表示新增程序。条件循环框边线上的方块叫作通道(tunnel) 。在本例中,通道是条件循环的数据通道口。若要建立数据索引,点击通道,并选择 Enable Indexing 选项,表示当条件循环执行时,把数据顺序放入一个数组中。循环结束后,通道输出该数组。否则,通道仅输出最后一次循环放入的数据值。2. 返回前面板,并运行 VI 程序。3. 当允许运行开关(Enable Switch)设置为 OFF 后,将显示温度数据曲线。4. 面修改后的程序重命名为 Temperature Analysis.vi 并存盘。(练习(练习 1 1

40、 - - 3 3 结束)结束)第九节第九节 练习练习 1-41-4目的:目的:学习使用 Case 结构。修改 Temperature Analysis.VI 程序以检测温度是否超出范围,当温度超出上限(High Limit)时,前面板上的 LED 将点亮,并且有一个蜂鸣器发声。前面板:1. 打开练习 1-3 创建的 Temperature Analysis VI 程序。2. 按照下图所示修改前面板。被虚线框住的部分表示增加的部件。High Limit 表示温度上限值。报警指示灯(WARNING LED)和当前温度状态(CurrentTemperature State)用来表示温度是否超限。点击

41、趋势图,并且选择 ShowLegend 和 ShowDighital Display 选项,可以增加图注(Legend)和数字显示。框图程序:1. 按照上图编写框图程序。被虚线框住的部分为新增加的部件。下面的FALSE Case 与图中的 TRUE Case 同属于一个 Case 结构。根据其输入端上的数值,来决定执行哪一个 Case 程序。如果 Thermometer Vi 子程序返回的温度值大于 High Limit 数值,将执行 True Case 程序,反之则执行 False Case 程序。2. 返回前面板程序,在 High Limit 控制栏中输入 86。再运行 VI 程序。当温度

42、超过 86 时,LED 将点亮,蜂鸣器也会发声。3. 将程序重新命名为 Temperature Control.vi,并保存起来。(练习(练习 1 1 - - 4 4 结束)结束)第十节第十节 练习练习 1-51-5目的:目的:学习使用顺序(Sequence)结构并且把数据传送到文件。学员将修改 Temperature Control.vi 程序,以学习使用顺序结构和包括头文件的数据文件。当程序停止数据采集后,自动产生数据文件的头文件,它包括操作者名字和文件名,然后将采集的数据附在头文件后面。前面板:如上图所示。框图程序:1. 如下图所示,完成框图程序,使用了如下的功能模块:Write Cha

43、racters to File 模块(在 File I/O 子模板) 。该功能把一个字符串写入一个新的文件或者附加到一个已存在的文件中。它在写入前打开或者创建一个文件,在完成时关闭该文件。在本例中,它用来建立头文件格式。Write to Spreadsheet File 模块(在 File I/O 子模块) 。该模块把一个二维或者一维单精度数组转换成字符串,并把字符串写入一个新文件或者附回在一个已存在的文件后面。在本例中,它将由温度采集数据和上限值组成的二维数组附加在一个已创建了头文件的数据文件后面。Transpose 2D Array 模块(在 Array 子模板) 。在本例中,它把二维数组

44、转换成以列为分界的二维数组,这样在写入数据文件时它就会以列的形式显示。Concatenate String 模块(在 String 子模板) 。在本例中,它用于创建头文件字符串。顺序结构程序按指定的顺序执行各个程序步骤。在本例中,我们首先创建数据文件的头文件,然后再将数据写入文件中。2. 返回前面板,在 High Limit 控制栏中输入 86,在 Operator Name 控制栏中输入你的名字,再输入数据文件名(例如 C:testdata.txt) 。运行该程序。当 Enable 开关设置为 OFF 状态后,将产生如下的 ASCII文件。 王思华TEMPLIMIT86.42686.0008

45、5.93786.00085.44986.00085.93786.00086.91286.00087.40286.00087.89186.00087.40286.00086.91486.00086.91486.00085.93786.00085.93786.0003. 将文件重新命名为 Temperature Control Logger.vi,并存盘退出(用 Save As 选项) 。(练习(练习 1 1 - - 5 5 结束)结束) 。第二课第二课 数据采集数据采集第一节第一节 概述概述LabVIEW 的数据采集(Data Acquisition)程序库包括了许多 NI 公司数据采集(DAQ

46、)卡的驱动控制程序。通常,一块卡可以完成多种功能 - 模/数转换,数/模转换,数字量输入/输出,以及计数器/定时器操作等。用户在使用之前必须 DAQ 卡的硬件进行配置。这些控制程序用到了许多低层的 DAQ 驱动程序。本课程需要一块安装好的 DAQ 卡以及 LabVIEW 开发系统。数据采集系统的组成:DAQ 系统的基本任务是物理信号的产生或测量。但是要使计算机系统能够测量物理信号,必须要使用传感器把物理信号转换成电信号(电压或者电流信号) 。有时不能把被测信号直接连接到 DAQ 卡,而必须使用信号调理辅助电路,先将信号进行一定的处理。总之,数据采集是借助软件来控制整个 DAQ 系统 包括采集原

47、始数据、分析数据、给出结果等。上图中描述了插入式 DAQ 卡。另一种方式是外接式 DAQ 系统。这样,就不需要在计算机内部插槽中插入板卡,这时,计算机与 DAQ 系统之间的通讯可以采用各种不同的总线,如并行口或者 PCMCIA 等完成。这种结构适用于远程数据采集和控制系统。模拟输入:当采用 DAQ 卡测量模拟信号时,必须考虑下列因素:输入模式(单端输入或者差分输入) 、分辨率、输入范围、采样速率,精度和噪声等。单端输入以一个共同接地点为参考点。这种方式适用于输入信号为高电平(大于一伏) ,信号源与采集端之间的距离较短(小于 15 英尺) ,并且所有输入信号有一个公共接地端。如果不能满足上述条件

48、,则需要使用差分输入。差分输入方式下,每个输入可以有不同的接地参考点。并且,由于消除了共模噪声的误差,所以差分输入的精度较高。输入范围是指 ADC 能够量化处理的最大、最小输入电压值。DAQ 卡提供了可选择的输入范围,它与分辨率、增益等配合,以获得最佳的测量精度。分辨率是模/数转换所使用的数字位数。分辩率越高,输入信号的细分程度就越高,能够识别的信号变化量就越小。下图表示的是一个正弦波信号,以及用三位模/数转换所获得的数字结果。三位模/数转换把输入范围细分为 23或者就 8 份。二进制数从 000 到 111 分别代表每一份。显然,此时数字信号不能很好地表示原始信号,因为分辩率不够高,许多变化

49、在模/数转换过程中丢失了。然而,如果把分辩率增加为 16 位,模/数转换的细分数值就可以从 8 增加到 216即 65536,它就可以相当准确地表示原始信号。增益表示输入信号被处理前放大或缩小的倍数。给信号设置一个增益值,你就可以实际减小信号的输入范围,使模数转换能尽量地细分输入信号。例如,当使用一个 3 位模数转换,输入信号范围为 0 到 10 伏,上面的图显示了给信号设置增益值的效果。当增益=1 时,模/数转换只能在 5 伏范围内细分成 4 份,而当增益=2 时,就可以细分成 8 份,精度大大地提高了。但是必须注意,此时实际允许的输入信号范围为 0 到 5 伏。一但超过 5 伏,当乘以增益

50、 2 以后,输入到模/数转换的数值就会大于允许值 10 伏。总之,输入范围,分辩率以及增益决定了输入信号可识别的最小模拟变化量。此最小模拟变化量对应于数字量的最小位上的 0,1 变化,通常叫做转换宽度(Code width) 。其算式为:输入范围/(增益*2分辩率) 。例如,一个 12 位的 DAQ 卡,输入范围为 0 到 10 伏,增益为 1,则可检测到 2.4mV 的电压变化。而当输入范围为-10 到 10 伏(20 伏) ,可检测的电压变化量则为 4.8mV。采样率决定了模/数变换的速率。采样率高,则在一定时间内采样点就多,对信号的数字表达就越精确。采样率必须保证一定的数值,如果太低,则

51、精确度就很差。下面的图表示了采样率对精度的影响。采样频率足够采样频率不够引起波形畸变根据耐奎斯特采样理论,你的采样频率必须是信号最高频率的两倍。例如,音频信号的频率一般达到 20KHz,因此其采样频率一般需要 40KHz。平均化。噪声将会引起输入信号畸变。噪声可以是计算机外部的或者内部的。要抑制外部噪声误差,可以使用适当的信号调理电路,也可以增加采样信号点数,再取这些信号的平均值以抑制噪声误差,这样误差可以减小到乘以下面的系数:例如,如果以 100 个点来平均,则噪声误差将减小 1/10。第二节第二节 数据采集数据采集 VIVI 程序的调用方法程序的调用方法LabVIEW 的 DAQ 程序包括

52、模拟输入、模拟输出、计数器操作、或者数字输入、输出等。你可以在框图程序窗口下选择 Data Acquisition。再在此子模板下,可以看到 6 个子模板:Analog Input, Analog Output, Digital I/O, Counter, Calibration and Configuration 和 Signal Conditioning。在上述 6 个子模板下,每个子模板又分成 Easy I/O Vis, Intermediate 采样点数1Vis, Utility Vis 和 Advanced Vis。下面我们以 Analog Input 子模板为例进行解释。如图所示,

53、在其顶层是简单模拟量输入 VI 程序(Easy AI) ,中间层是中级模拟量输入 VI 程序(Intermediate AI) ,然后下面是两个图标,一个用于调用模拟输入应用程序(Utility AI),一个调用高级模拟量输入程序(Advanced AI) 。在本教材中,我们主要讲述简单和中级程序。高级程序涉及到与 DAQ 驱动程序的低层接口,而通用应用程序是中级程序的组合。简单 I/O 程序仅仅只是表面层接口程序,它能执行基本的模拟量输入、模拟量输出、数字 I/O,以及计数器/定时器操作。它简单易用,并且包含一个简单的出错处理方法。当出错时,将弹出一个对话框,显示出错信息,而用户可以选择中止

54、程序执行或者忽略错误。相对于简单程序而言,中级程序具备更多的硬件设置功能,灵活性,并且可以更有效地开发实用程序。它具有许多简单程序所缺乏的功能,如外部时钟等。它对出错的处理也更加灵活,可以把出错状态信息传递给其它的程序,编程处理出错情况。第三节第三节 模拟输入与输出模拟输入与输出在 Data Acquisition 子模板下的 Analog Input 子模板程序执行模/数转换操作。而 Analog Output 程序库则执行数/模转换或多重转换。AI Sample Channel 程序测量指定通道上信号的一个采样点,并返回测量值。Device 是 DAQ 卡的设备编号,Channel 是描述

55、模拟输入通道号的字符串,High Limit 和 Low Limit 指明输入信号的范围,缺省值为+10V 和-10V。AO Update Channel 程序把一个给定电压值在一个模拟输出通道上输出。Device 是 DAQ 卡的设备编号,Channel 是输出通道号字符串 Voltage 是输出的电压值。在上述程序执行时,如果发生错误,则弹出一个对话框,显示错误代码,你可以选择中止程序或者继续程序执行。练习 2-1目的:目的:输出一个模拟电压信号,并且用 DAQ 卡再次采集该信号。首先编制一个 VI 程序,以 0.5 伏的间隔从 0 伏到 9.5 伏输出电压,再编制VI 程序进行单点模拟输

56、入电压测量,验证上述输出电压。最后,再修改程序,使之控制 Demo Box 上的 LED 指示灯。在演示盒 Demo Box 上,把模拟输出 CH0与模拟输入 CH1 相连。前面板:1. 打开电压输出 Voltage Output 程序窗口,用 Device 指定 DAQ 卡设备编号,Channel 字符串指定模拟输出通道,用 Voltage Output 输出显示来显示当前输出电压值。2. 切换到框图程序。框图程序1. 按照下图建立框图程序。对于循环 For Loop 要求每 500 毫秒执行一次,控制输出电压以 0.5 伏的间隔从 0 伏到 9.5 伏变化。当循环 For Loop 结束后

57、,输出电压又复位为 0 伏。2. 关闭上述框图程序窗口,再打开前面板窗口,创建输入电压测量Voltmeter 程序,以显示输入电压值。前面板:框图程序:1. 按照下图编写程序。2. 在前面板的电压测量仪表盘中,将其刻度定义为 0.0 至 10.0。3. 在通道控制 Channel 输入值 1,上限控制 High Limit 输入值 10.0,下限控制 Low Limit 输入值 0.00,打开 Power 开关,运行该程序。4. 如果运行过程中出现错误,将会弹出一个对话框,显示错误代码和解释。要模拟出错情况,在 Device 控制栏中输入 0 并运行程序,则将会显示出错情况。5. 确认已在演示

58、盒 Demo Box 中将模拟输出 CH0 接到模拟输入 CH1,运行电压输出 Voltage Output VI 程序,则在电压测量 Voltmeter 程序中将采集并显示电压值。6. 停止程序运行,并按上图虚线框住的部分修改程序,当输入电压大于5 伏时点亮 LED 灯。演示盒 Demo Box 上的 LED 灯是负逻辑,高电平时关闭 LED,低电平时打开 LED。7. 再同时运行前面的电压输出程序和本电压输入程序,以验证运行效果。(练习(练习 2-12-1 结束)结束) 。第四节第四节 波形的采集与产生波形的采集与产生在许多应用场合,一次只采样一个数据点是不够的。另外,采样点之间的间隔很难

59、保持恒定,因为它取决于很多因素,如循环的执行速度,子程序的调用时间等等。而使用 AI Acquire Waveform 和 AO Generate Waveform 程序,就可以以大于单点操作的速度进行多点的数据采集和波形产生,并且用户可以自定义采样速率。波形采集:AI Acquire Waveform 程序从一个指定的输入通道按用户定义的采样率和采样点数采集数据并返回计算机。上图中 Number of Samples 是采样点数,Sample rate 是采样率,以 Hz 为单位。Waveform 是模拟输入信号的一维采样数组,以伏特为单位。Actual sample period 是实际采

60、样率的倒数,它可能与指定采样率有一些小偏差,偏差取决于计算机硬件速度。波形产生:AO Generate Waveform 程序在一个模拟输出通道上以用户定义的更新速率产生一个电压波形。Update rate 是每秒钟产生的电压数值更新点数。Waveform 是一个一维数组,它包含写到输出通道上的模拟电压值,以伏为单位。练习 2-2目的:目的:采集并显示一个模拟信号波形。学员将编写一个 VI 程序,它使用 DAQ 卡采集一个信号波形,并在图表上显示。在本例中,把演示盒上的模拟输入 CH1 接到函数发生器的正弦波输出端口上。前面板:1. 打开一个新建前面板窗口,并照下图创建一个前面板程序。“采样数

61、”控制栏定义采样点数,而“采样/秒”控制栏定义采样率。2. 切换到框图程序。框图程序:1. 按照上图创建框图程序。2. 返回前面板窗口,输入各控制栏数值,并运行程序。图表窗口将绘出模拟信号波形。试用不同的采样率和采样点数,观察波形的差别。(练习(练习 2-22-2 结束)结束)第五节第五节 扫描多个模拟输入通道扫描多个模拟输入通道AI Acquire Waveforms 程序从多个输入通道以指定的采样率采集指定的采样点数,并将采样结果数据送回到计算机。Channels 控制栏指定要采样的多个通道的编号,各个通道号间以逗号隔开,例如 1,2,4。控制栏 Number of samples/ch

62、是每个通道要采集的采样点数。Scan rate 是每个通道每秒钟的采样点数即采样率。Waveform 是一个二维数组,包含模拟输入信号电压数值,以伏为单位。Actual scan period 是实际采样率的倒数,由于计算机硬件的不同,实际采样率与指定的采样率可能有微小差异。练习 2-3目的:目的:使用简单 I/O 程序来执行扫描多个通道的数据采集工作。学员将创建一个 VI 程序,它扫描两个不同通道的模拟信号波形,并将它们分别在图表上绘出。在本例中,把 Demo Box 的模拟输入通道 CH1 接到正弦波/三角波输出口,而模拟输入通道 CH2 接到方波输出口。前面板:1. 按照下图创建前面板程

63、序,它有两个输入通道,可同时显示两个波形。2. 切换到框图程序。框图程序:1. 创建如上图所示框图程序,它调用了如下的功能模块:AI Acquire Waveforms 子程序(在 Data AcquisitionAnalog Input子模板) 。在本例中,它在通道 1 和通道 2 以采样率 10000Hz 采样1000 个点。Index Array 子程序(在 Array 子模板) ,在本例中,把二维数组的第0 列定义为通道 1 的采集数据,第 1 列定义为通道 2 的采集数据。Write to Spreadsheet File 子程序(在 File I/O 子模板) 。在本例中,把通道

64、1 和通道 2 的数据写入数据文件(spreadsheet file) 。2. 将演示盒上的模拟输入通道 1 与方波发生器连接;模拟通道 2 与正弦波发生器相连接。运行该程序,在图表上将显示输入的两个数据波形。(练习(练习 2-32-3 结束)结束) 。第六节第六节 连续数据采集连续数据采集连续数据采集,或者说实时数据采集,是在不中断数据采集过程的情况下不断地向计算机返回采集数据。开始数据采集后,DAQ 卡不断地采集数据并将它们存贮在指定的缓冲区中(circular buffer) ,然后 LabVIEW 每隔一段时间将一批数据送入计算机进行处理。如果缓冲区放满了,DAQ 卡就会又重新从内存起

65、始地址写入新数据,覆盖原来的数据。这个过程一直持续,直到采集到了指定数目的数据点,或者 LabVIEW 主动中止了采集过程,或者程序出现错误。这种工作方式对于需要把数据存入磁盘或者观察实时数据很有用。练习 2-4目的:目的:调用中级功能模块程序执行连续数据采集工作。学员将验证一个连续数据采集程序,在本例中,把模拟输入通道 CH1 接到正弦/三角波输出口。前面板:1. 打开 Continuous Acquisition and Chart 程序。2. 缓冲区的大小即数据存贮内存的大小用“缓冲大小”来指定,同时还用“一次读入的扫描”来指定每次从内存读取的数据量,用“扫描剩余数据”显示内存中尚未读取

66、的采样数据个数。框图程序:1. 验证上图所示的框图程序。它调用了下面的功能模块:AI Configure 程序(在 Data AcquisitionAnalog Input 子模板) 。设置设备编号。通道号和数据缓冲区大小。AI Start 程序,用指定的采样率,以后台工作的方式开始连续数据采集过程。AI Read 程序,在条件循环中连续采集指定数目的采样点,并返回数据到计算机。AI Clear 程序,停止数据采集,释放所有资源。2. 运行上述程序,观察结果。在本程序中,AI Read 子程序的每次读取的采样点数取决于设定值和内存中未读取的采样点数的比较结果,取它们中的较大者。(练习(练习 2-42-4 结束)结束) 。第三课第三课 仪器控制仪器控制第一节第一节 概述概述本课程介绍使用 LabVIEW 来进行仪器控制的各种方法。要求学生学会串行I/O、GPIB I/O 和 VISA I/O 的使用方法,同时也可以验证 LabVIEW 本身提供的仪器驱动程序。本课程的实验设备要求一块已安装的 GPIB 卡,一台 GPIB 仪器以及LabVIEW 开发系统。第二节第二节 串行通讯串行通讯串

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!