上海理工大学虚拟仪器实验指导书.docx
- 文档编号:10192858
- 上传时间:2023-05-24
- 格式:DOCX
- 页数:66
- 大小:1.64MB
上海理工大学虚拟仪器实验指导书.docx
《上海理工大学虚拟仪器实验指导书.docx》由会员分享,可在线阅读,更多相关《上海理工大学虚拟仪器实验指导书.docx(66页珍藏版)》请在冰点文库上搜索。
上海理工大学虚拟仪器实验指导书
第一章虚拟仪器技术概述
第一节虚拟仪器的构成及特点
现代化技术的进步以计算机技术的进步为代表。
不断革新的计算机技术,从各个层面上影响着、引导着各行业的技术更新。
基于计算机技术的虚拟仪器系统技术正以不可逆转的力量推动着测控技术的革命。
虚拟仪器系统的概念不仅推进了以仪器为基础的测控系统的改造,同时也影响了以数据采集为主的测控系统的传统构造方法的进化。
过去独立分散、互不相干的许多领域,在虚拟仪器系统的概念之下,正在逐渐靠拢、相互影响,并形成新的技术方法和技术规范。
虚拟仪器系统概念是对传统要求概念的重大突破,是计算机系统与仪器系统技术相结合的产物。
它利用计算机系统的强大功能,结合相应的硬件,大大突破传统仪器在数据处理、显示、传送、存储等方面的限制,使用户可以方便地对其进行维护、扩展、升级等。
虚拟仪器系统技术的基础是计算机系统,核心是软件技术。
因此,美国国家仪器公司提出其著名的口号:
TheSoftwareistheInstrument(软件就是仪器)。
可以说,组建现代化测控系统的成败很大程度上取决于软件平台和工具以及相关硬件设备的选择。
一、虚拟仪器系统的硬件结构
虚拟仪器系统的概念是测控系统的抽象。
不管是传统的还是虚拟的仪器,它们的功能都是相同的:
采集数据,对采集来的数据进行分析处理,然后显示处理的结果。
它们之间的不同主要体现在灵活性方面。
虚拟仪器的功能由用户自己定义,这意味着您可以自由地组合计算机平台、硬件、软件、以及各种完成应用系统所需要的附件。
而这种灵活性在由供应商定义、功能固定、独立的传统仪器上是达不到的。
您常用的数字万用表、示波器、信号发生器、数据记录仪,以及温度和压力监控器就是传统仪器的代表。
从传统仪器向虚拟仪器的转变,为用户带来更多实际的利益。
虚拟仪器不强调每一个仪器功能模块就是一台仪器,而是强调选配一个或几个带共性的基本仪器硬件来组成一个通用硬件平台,通过调用不同的软件来扩展或组成各种功能的仪器或系统。
图1-1示出了现阶段虚拟仪器系统硬件结构的基本框图。
图1-1
二、虚拟仪器系统的软件体系结构
基本硬件确定之后,要使虚拟仪器能按用户要求自行定义,必须有功能强大的应用软件。
然而相应的软件开发环境长期以来并不理想,用户花在编制测试软件上的工时与费用相当高,即使使用C,C++等高级语言,也会感到与高速测试及缩短开发周期的要求极不适应。
因此,世界各大公司都在改进编程及人机交互方面做了大量的工作,其中基于图形的用户接口和开发环境是软件工作中最流行的发展趋势。
典型的软件产品有NI公司的LabVIEW和LabWindows,HP公司的HPVEE和HPTIG,Tektronix公司的Ez-Test和Tek-TNS等。
图1-2是NI公司开发的图形开发软件LabVIEW和LabWindows的软件系统体系结构。
其中仪器驱动程序主要是完成仪器硬件接口功能的控制程序,NI公司提供了各制造厂家数百种GP-IB,DAQ,VXI和RS-232等仪器的驱动程序。
有了仪器驱动程序,用户就不必精通这些仪器的硬件接口,而只要把仪器的用户接口代码及数据处理与分析软件组合在一起,就可以迅速而方便地构建一台新的虚拟仪器。
图1-2
第二节LabVIEW虚拟仪器系统开发平台
一、LabVIEW简介
LabVIEW(LaboratoryVirtualInstrumentEngineeringWorkbench)是美国NI公司研制的一个功能强大的仪器系统开发平台,用来进行数据采集、数据分析和数据表达。
经过十多年的发展,LabVIEW已经成为一个具有直观界面,便于开发,易于学习且具有多种仪器驱动程序和工具的大型仪器系统开发工具。
LabVIEW是一种图形程序设计语言,它采用了工程人员所熟悉的术语、图标等图形化符号来代替常规基于文字的程序语言,把复杂繁琐、费时的语言编程简化成简单、直观、易学的图形编程,同传统的程序语言相比,可以节省约80%的程序开发时间。
这一特点也为那些不熟悉C、C++等计算机语言的开发者带来了很大的方便。
LabVIEW还提供了调用库函数及代码接口节点等功能,方便了用户直接调用由其他语言编制成的可执行程序,使得LabVIEW编程环境具有一定的开放性。
LabVIEW的基本程序单位是VI(VirtualInstrument)。
LabVIEW可以通过图形编程的方法,建立一系列的VI(虚拟仪器),来完成用户指定的测试任务。
对于简单的测试任务,可由一个VI完成。
对于一项复杂的测试任务,则可按照模块设计的概念,把测试任务分解为一系列的任务,每一项任务还可以分解为多项小任务,直至把一项复杂的测试任务变成一系列的子任务。
设计时,先设计各种VI以完成每项子任务,然后把这些VI组合起来以完成更大的任务,最后建成的顶层虚拟仪器就成为一个包括所有功能子虚拟仪器的集合。
LabVIEW可以让用户把自己创建的VI程序当做一个VI子程序节点,以创建更复杂的程序,且这种调用是无限制的。
LabVIEW中各VI之间的层次调用结构如图1-3所示,由图可见,LabVIEW中的每一个VI相当于常规程序中的一个程序模块。
图1-3
二、LabVIEW特点
LabVIEW拥有卓越的功能、性能和丰富的实用软件包,这不仅保证了系统开发质量,同时简化了开发难度。
◆LabVIEW使用“所见即所得”的可视化技术建立人机界面。
针对测试测量和过程控制领域,美国国家仪器公司在LabVIEW中提供了大量的仪器面板中的控制对象,如表头、旋钮、图表等。
用户还可以通过控制编辑器将现有的控制对象修改成适合自己工作领域的控制对象。
◆LabVIEW使用图标表示功能模板,使用图标间的连线表示在各功能模块间的数据传递,使用为大多数工程师和科学家熟悉的数据流程图式的语言书写程序源代码。
这样使得编程过程与思维过程非常近似。
◆LabVIEW提供程序调试功能。
用户可以在源代码中设置断点;单步执行源代码;在源代码中的数据流连线上设置探针,观察程序运行过程中数据流的变化;在数据流程图中以较慢的速度运行程序;根据连线上显示的数据值检查程序运行的逻辑状态。
◆LabVIEW继承了传统的编程语言中的结构化和模块化编程的优点。
这对于建立复杂应用,提高代码的可重用性来说是至关重要的。
◆LabVIEW采用编译方式运行32位应用程序,这就解决了其它用解释方式运行程序的图形化编程平台运行程序速度慢的问题。
◆LabVIEW支持多种系统平台,如Macintosh、PowerMacintosh、HP-UX、SunSPACE、Windows3.X、Windows95/98和WindowsNT等;在以上任何一个平台上开发的LabVIEW应用程序都可以直接移植到其它平台上。
◆LabVIEW提供了大量的库函数供用户直接调用。
从基本的数学函数、字符串处理函数、数组运算函数和文件I/O函数到高级的数字信号处理函数和数值分析函数。
从底层的VXI仪器、数据采集板和总线接口硬件的驱动程序到世界各大仪器厂商的GPIB仪器的驱动程序,LabVIEW都有现成的模板帮助用户方便迅速组建自己的应用系统。
◆LabVIEW是一个开放式的开发平台。
LabVIEW提供DLL库接口和CIN节点使用户有能力在LabVIEW平台上使用由其它软件平台编译的模块。
◆借助DDE、ActiveX等技术,扩充系统的开发能力。
◆LabVIEW运行多线程技术改善系统的运行及可靠性。
◆将可重用代码直接嵌入LabVIEW中,并通过简单的图形编程方式进行控制。
◆可用多种语言把LabVIEW做为服务器调用其程序。
第二章虚拟仪器G语言编程技术
第一节虚拟仪器(VI)
美国国家仪器(NI)公司的LabVIEW(LaboratoryVirtualInstrumentEngineeringWorkbench)是一种基于G语言的仪器系统开发平台,LABVIEW的程序称为虚拟仪器程序,简称为VI。
VI包括三个部分:
前面板,框图程序和图标/连接口。
前面板用于设置输入数值和观察输出量。
由于程序前面板是模拟真实仪表的前面板,输入量被称为Controls,输出量被称为Indicators。
用户可以使用许多图标,如旋钮,开关,按钮,图表,图形等,来使前面板易懂易看。
图2-1是一个温度计程序(ThermometerVI)的前面板。
图2-1
每一个前面板程序都伴有一个对应的框图程序。
框图程序用图形编程语言编写,可以把它理解成传统程序的源代码。
框图中的部件可以看成程序节点,如循环控制,事件控制,和算术功能等。
这些部件都用连线联接,以定义框图内的数据流动方向。
上述温度计程序(ThermometerVI)的框图程序如图2-2。
图2-2
图标/接口部件可以让用户把VI程序变成一个对象(VI子程序),然后在其他程序中象子程序一样地调用。
图标表示在其他程序中被调用的子程序,而接线端口表示图标的输入/输出口,就象子程序的参数端口,它们对应着VI程序前面板的控制量和指示量数值。
图2-3为温度计程序(ThermometerVI)的图标和接线端口,接线端口一般情况下隐含不显示,除非用户选择打开看它。
图2-3
LABVIEW的强大功能归因于它的层次化结构,用户可以把创建的VI程序当作子程序调用,以创建更复杂的程序,而这种调用阶数是无限制的。
举一个例子,我们把前面板创建的温度计程序(ThermometerVI)作为一个子程序用在当前新建程序里,当前程序的前面板如图2-4所示,先前的温度计子程序用于采集数据,而当前的程序用于显示温度曲线,还可以在前面板上设定测量次数和每次测量间的延时。
图2-4
图2-5
当前程序的框图程序如图2-5所示,它把温度计子程序应用在一个控制循环里,每次循环过程采集一次测量结果,当循环执行了设定的次数后,程序把采集的数据送到前面板的图表上显示。
LABVIEW的这种创建和调用子程序的方法,使创建的程序结构模块化,易于调试,理解和维护。
第二节LABVIEW模板
LABVIEW具有图形化的可移动的工具模板用于创建和运行程序,共有三类模板包括工具(Tools),控制(Controls),和功能(Functions)模板。
一、工具模板(ToolsPalette)
工具模板用于创建、修改和调试程序。
如果该模板没有出现,则可以在Windows菜单下选择ShowToolsPalette功能以显示该模板。
当从模板内选择了任一种工具后,鼠标箭头就会变成该工具相应的形状。
当从Windows菜单下选择了ShowHelpWindow功能后,把工具模板内选定的任一种工具光标放在框图程序的子程序(SubVI)或图标上,就会显示相应的帮助信息。
工具图标有如下几种:
1.操作工具。
使用该工具来操作前面板的控制量和指示量。
当它经过文件控制框,例如数字或字串控制时,工具会变成相应形状。
2.位置工具。
用于选择、移动或改变对象的大小。
当它用于改变对象的边框大小时,会变成相应形状。
3.标签工具。
用于输入标签文本或者创建自由标签。
当创建自由标签时它会变成相应形状。
4.连线工具。
用于在框图程序上连接对象。
当从Windows菜单下选择ShowHelpWindow功能后,把该工具放在任一条连线上,就会显示相应的数据类型。
5.对象弹出菜单工具。
用左鼠标键可以弹出对象的弹出式菜单。
6.翻滚工具。
使用该工具就可以不需要使用滚动条而在窗口之间翻滚。
7.断点工具。
使用该工具在程序、功能块和结构内设置断点。
8.探针工具。
可以在框图程序内设置探针。
9.颜色提取工具。
使用该工具来提取颜色用于编辑其他的对象。
10.颜色工具。
用来给对象定义颜色。
它也显示出对象的前景色和背景色。
与上述工具模板不同,控制和功能板只显示顶层的图标,但它们包含各个相应的子模板,通过这些子模板可以找到创建程序所需的所有对象工具。
用鼠标点击顶层图标就可以访问相应的子模板,只需按下子模板左上角的大拇指就可以把子模板变成浮动模板留在屏幕上。
二、控制模板(ControlsPalette)
用控制模板可以给前面板增加输入控制量和输出指示量。
每个图标代表一个子模板。
如果控制模板不显示,可以用Windows菜单的ShowControlsPalette功能打开它,也可以在前面板的空白处,点击鼠标右键,以弹出控制模板,然后按下模板左上角的拇指,就可以把该模板变成可移动的模板。
注:
只有当打开前面板窗口时才能调用控制模板。
控制模板如图所示,它包括15个子模板。
1.数值子模板。
包含数值的控制和指示功能。
2.字符串子模板。
ASCII码字符串和表格的控制输入和指示输出
3.数组和簇子模板。
组合型数值的控制和指示功能。
4.路径和参考名(Refnum)子模板。
用于文件操作。
5.控制选择子模板。
显示一个对话框,装入用户指定的控制量。
6.布尔值子模板。
逻辑数值的控制和显示。
7.列表子模板。
用于选择列表栏。
8.枚举(Ring)子模板。
用于选择枚举类型控件。
9.图形子模板。
用于数据结果的图形绘制和实时表格。
10.修饰子模板。
用于给前面板进行装饰的各种图形对象。
11.I/O控制子模板。
数据采集I/O控件。
12.经典控制按钮。
是LABVIEW5.1的平面控件。
13.ACTIVE控件。
用于引入ACTIVE控件。
14.自选控件子模板。
可选择存在的控件。
15.用户自定义控件。
三、功能模板(FunctionsPalette):
使用功能模板来创建框图程序,模板上的每一个顶层图标都表示一个子模板。
若功能模板不出现,则可以用Windows菜单下的ShowFunctionsPalette功能打开它,也可以在框图程序窗口的空白处点击鼠标右键以弹出功能模板,按下左上角的大拇指就可以把功能模板变成可移动的模板。
注:
只有打开了框图程序窗口,才能出现功能模板。
功能模板如下图所示,它包括最基本的16个子模板。
1.结构子模板。
包括程序控制结构,例如循环控制等。
2.数值运算子模板。
包括三角函数、对数和数值量处理功能。
3.字符串子模板。
包括字符串处理功能。
4.比较子模板。
包括数值的比较,布尔值的比较和字符串的比较功能。
5.数组子模板。
包括数组的处理功能。
6.簇子模板。
包括簇的处理功能。
7.布尔逻辑子模板。
包括逻辑和布尔函数功能。
8.时间和对话框子模板。
包括对话框窗口、时间和出错处理功能。
9.文件输入/输出子模板。
包括处理文件输入/输出的程序。
10.数据采集子模板。
包括驱动数据采集卡的VI程序。
11.波形数据子模板。
专门来处理波形数据的。
12.分析功能子模板。
包括数值分析VI程序。
13.仪表输入/输出子模板。
包括GPIB、串行、和VISA仪表控制的VI程序。
14.计算功能子模板。
包括数值的复杂计算。
15.通讯子模板。
包括TCP、DDE、APPLEEVENTS和OLE方式的网络
VI程序。
16.示教课程子模板。
包括Labview示教程序。
17.高级功能子模板。
包括库函数调用,VI程序控制,数值处理等一些
高级功能。
18.“选择…VI子程序”子模板。
包括一个对话框,可以选择一个VI程
序作为子程序(SUBVI)插入当前程序中。
第三节LABVIEW程序结构
程序结构(structure)是一种程序控制方法,用于控制VI中的数据流向。
G语言提供了5种程序结构:
While循环、For循环、Case结构、顺序结构和公式节点。
一、While循环
While循环是一种程序结构,它可以反复执行程序的某个部分,直到到达某个边界条件。
它类似于普通编程语言中的Do循环和Repeat-Until循环。
如下图所示,While循环的框图是一个大小可变的方框,用于执行框中的程序,直到条件端子接收到的布尔值为FALSE。
VI在每次循环结束之后会自动检查条件端子的赋值,注意While循环至少要运行一次。
迭代端子是一个输出端子,可以输出循环已经完成的次数。
但是因为计数总是从0开始,所以如果循环只执行一次,那么循环输出值为0。
While循环
While循环相当于下列伪代码:
Do
ExecuteDiagramInsidetheLoop(Whichsetsthecondition)
WhileConditionisTRUE
二、For循环
For循环用于将某段程序执行指定次数。
它是可以修改的,而且和While循环一样,它不会立刻出现在流程图中,而是出现一个小的图标,而后您可以修改它的大小和位置。
具体的方法是,选择Functions>>Structures,单击所有端子的左上方,然后按下鼠标,拖曳出一个包含所有端子的矩形。
释放鼠标时,G语言就创建了一个指定大小和位置的For循环。
For循环将把它的框图中的程序执行指定的次数,For循环具有下面这两个端子:
计数端子(输入端子)——用于指定循环执行的次数。
周期端子(输出端子)——含有循环已经执行的次数。
For循环相当于下面这段伪代码:
Fori=0toN-1
ExecuteDiagramInsideTheLoop
For循环的框图
三、Case结构
Case结构和顺序结构都可以含有多个子程序,这些子程序像一组重叠的纸牌,一次只能显示其中的一个。
每个结构图的顶部是子程序显示窗口,它的中央有一个程序标识符,每侧都有一个增加和减少按钮。
程序标识符指出当前显示的子程序名称。
对于Case结构,程序标识符是一列可以标识子程序的数值;对于顺序结构,程序标识符是这个子程序在整个顺序中的编号。
下图显示了一个Case结构和顺序结构的例子。
Case结构、顺序结构的示意图
Case结构含有两个或者更多的子程序,当程序执行时,其中某个会自动执行。
这取决于与选择端子或者选择对象的外部接口相连接的某个整数、布尔数、字符串或者标志的值。
(注:
在其他的编程语言中,如果某个case超出了范围,那么程序不会执行任何子程序。
在G语言中,必须选择一个默认的case以处理超出范围的数值,或者直接列出所有可能的输入数值。
)
四、顺序结构
顺序结构看上去像是电影胶片,它可以按一定顺序执行多个子程序。
在传统的编程语言中,程序语句按照排列顺序执行,而在数据流式编程语言中,任何一个节点只有在所有的输入数据有效时才会执行,尽管有时候需要逐个执行某些节点。
G语言使用顺序结构来控制节点执行的顺序。
G语言将首先执行0帧中的程序,然后执行1帧中的,这样逐个执行下去。
对于Case结构,一次只能显示一帧。
五、公式节点
公式节点是一个大小可变的方框,可以利用它直接在流程图中输入公式。
从Functions>>Structures中选择公式节点就可以把它放到流程图中。
当某个等式有很多变量或者非常复杂时,这个功能就非常有用。
利用公式节点可以直接输入一个或者多个复杂的公式,而不用创建流程图的很多子程序。
您要使用标签工具来输入公式。
创建公式节点的输入和输出端子的方法是,用鼠标右键单击第0帧的底部边框,选择AddInput(Addoutput)。
再在节点框中输入变量名称。
变量名对大小写敏感。
然后就可以在框中输入公式。
每个公式语句都必须以分号(;)结尾。
公式节点的帮助窗口中列出了可供公式节点使用的操作符和功能函数。
在学习LabVIEW过程中,学生要有效利用它自身携带的help帮助。
六、事件结构
简单的说,EventStructure就好像一个具有“WaitonOccurrence”能力的选择结构,但是这个选择结构能同时相应多个选择。
Event能同时相应多个事件,但是传统的选择结构是没有这个能力的,它只能一次接受并相应一个选择。
Event与其它三种结构在执行时的流程规则没有什么不同,当没有任何事件发生时,EventStructure就会处于睡眠状态,直到有一个或多个预先设定的事件发生时,EventStructure才会自动苏醒,并根据发生的事件执行用户预先设定的动作。
EventStructure能够相应的事件有两种类型:
Notify(通告)事件和Filter(过滤)事件。
Notify事件通知LabVIEW一个动作已经发生。
Filter事件用来控制用户界面的操作。
通过Filter事件,可以在用户界面收到事件数据之前决定是否激活、修改这些数据,或者完全丢弃这些数据,不产生任何作用。
第四节LABVIEW编程及调试技术
一、VI程序创建
请记住,VI程序具有三个部分:
前面板、框图程序和图标/接线端口,如图2-6所示。
图标/接线端口将在练习1中讨论。
1.前面板:
使用输入控制部件和输出指示部件来构成前面板。
控制部件是用户输入数据到程序的方法。
而指示部件显示程序产生的数值。
控制和显示部件有许多种类。
可以从控制模板的各个子模板中选取。
两种最常用的数字对象是数字控制部件和数字指示部件。
需要在数字控制部件中输入或修改数值,你只需要用操作工具(见工具模板)点击控制部件的增减按钮,或者用操作工具或标签工具双击数值栏进行输入数值修改。
2.框图程序:
图2-6
节点是程序执行的元素。
节点就类似于文本语言程序的语句、函数或者子程序。
LABVIEW共有四种节点类型——功能函数、子程序、结构和代码接口节点(CINS)。
功能函数是内置节点,用于进行一些基本操作例如数值相加,文件I/O,字符串格式化等。
子程序节点是以前创建的程序,然后在其他程序中以子程序方式调用。
结构节点,如For循环控制,While循环控制等,控制程序的执行方式。
代码接口节点(CIN)是框图程序与用户提供的C语言文本程序的接口。
图2-6所示的框图程序表示VI程序有两个功能函数节点,一个函数使两个数值相加,另一个函数使两数相减。
数据端口是数据在框图程序部分和前面板之间传输的接口,以及数据在框图程序的节点之间传输的接口。
端口类似于参数和常数。
有两种类型的端口——控制或者指示端口以及节点端口。
控制或指示端口用于前面板,当程序运行时,从控制部件输入的数据就通过这些端口传送到框图程序。
而当运行结束后,输出数据就通过这些端口从框图程序送回到前面板的指示部件。
当在前面板创建或删除控制指示部件时,可以自动创建或删除相应的控制指示端口。
前述程序的框图程序有二个控制部件端口,二个指示部件端口。
同时在框图程序中,Add和Subtract功能函数在图标下隐含着节点端口,如图2-6所示。
3.连线:
连线是端口间的数据通道。
它们类似于普通程序中的变量。
数据是单向流动的,从源端口向一个或多个目的端口流动。
不同的线型代表不同的数据类型。
在彩显上,每种数据类型还以不同的颜色予以强调。
下面是一些通用线型:
标量一维数组二维数组颜色
数值量——————===橙色(浮点数)兰色(整数)
逻辑量………………………绿色
字符串紫色
在图2-7所示的连线例子中,鼠标箭头表示接线点,而中间的数字表示按鼠标键的次数。
连线点(HotSpot)是连线工具的线头部分。
当需要连接两个端点时,在第一个端点上点击连线工具(从工具模板栏调用),然后移动到另一个端点,再
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 上海 理工大学 虚拟仪器 实验 指导书