虚拟仪器
DESCRIPTION
湖南大学电气与信息工程学院. 虚拟仪器. Virtual Instrument. 唐 求. E-Mail : tangqiuhnu @ hnu.edu.cn Tel : 13077368836. 第三章 LabVIEW 入门. 主要内容:. 3.1 基本概念与术语 3.2 LabVIEW 的操作模板 3.3 创建和编辑 VI 3.4 运行和调试 VI 3.5 创建和调用 子 VI 3.6 善用 LabVIEW 联机帮助. 计算机程序语言历经几代的发展演变 : 机器语言 (Machine language) - PowerPoint PPT PresentationTRANSCRIPT
虚拟仪器虚拟仪器
唐 求E-Mail : E-Mail : tangqiuhnutangqiuhnu@@hnu.edu.cnhnu.edu.cnTel : Tel : 1307736883613077368836
湖南大学电气与信息工程学院
Virtual InstrumentVirtual Instrument
第三章 LabVIEW 入门
3.1 基本概念与术语
3.2 LabVIEW 的操作模板
3.3 创建和编辑 VI
3.4 运行和调试 VI
3.5 创建和调用子 VI
3.6 善用 LabVIEW 联机帮助
主要内容:
引子 计算机程序语言历经几代的发展演变:
• 机器语言 (Machine language)• 汇编语言( Assembly language )• 高级语言: C 语言、:面向对象的 C++ 、 Java 及具有可
视化编程环境的 VC 、 VB 、 Delphi 等• 图形化编程语言:“高级语言”是否还可以进一步抽象出
“超级编程语言”呢? 从计算机语言的发展规律来看,回答应该是肯定的。 并且早在二十多年前,这种语言的雏形就已经出现,那就
是 LabVIEW 图形化编程语言
引子 图形化编程语言优势:
• 1 、因为使用图形,可以直观的表达比较复杂的事情。
• 2 、图形表现的是一种视觉语言。• 3 、图形因为形象化所以容易记忆和理解。
引子 几种高级语言和图形化语言的代码展示:
显示“ Hello, World!”
引子 C 程序代码:
# include<stdio.h>
int main ()
{
Printf (“Hello , World! \n”);
Return 0;
}
引子 C++ 程序代码:
# include <iostream>Int main(){ Std::cout<<’Hello , World !\n’; return 0;}
引子 C# 程序代码:
class ConsoleHelloWorld{ public static void main (){ System.Console.WriteLine(“Hello , World !”) ;}}
引子 JAVA 程序代码:
public class HelloWorldCommandLine{
public static vold main (String[ ] args){
System.out.printLn(“Hello,World!”);
}
}
引子 Windows 程序代码:
# include <windows.h>Int WINAPI WinMain (HINSTANCE hinstance,HINSTANCE
hPrevlnstance,PSTR szCmdLine,int iCmdShow){ MessageBox(NULL,TEXT(“Hello, World!”), TEXT(“HelloMsg”,0); returm 0;}
引子 VB 程序代码:
Dim ny As Integer
Private Sub Form_Load ()
Ny=0
Text1.Text=”Hello , World !”
Text1.ForeColor=RGB(255,0,0)
End Sub
引子 LabVIEW( 图形化 ) 程序代码:
?
3.1 基本概念与术语
3.1 基本概念与术语 LabVIEW (Laboratory Virtual Instrument Enginee
ring Workbench) 是一种图形化的编程语言,又称为“ G” 语言。使用这种语言编程时,基本上不 写 程 序 代 码 , 取 而 代 之 的 是 流 程 图 。
传统文本编程语言根据语句和指令的先后顺序决定程序执行顺序,而 LabVIEW 则采用数据流编程方式,程序框图中节点之间的数据流向决定了程序的执行顺序。它用图标表示函数,用连线表示数据流向。
LabVIEW 程序被称为 VI ( Virtual Inst
rument ),即虚拟仪器。
LabVIEW 的核心概念就是“软件即是仪器”,即虚拟仪器的概念。
LabVIEW 还包含了大量的工具与函数用于数据采集、分析、显示与存储等。
LabVIEW 有以下主要特点:
( 1 )图形化的仪器编程环境
LabVIEW 使用“所见即所得”的可视化技术建立人机界面。
LabVIEW 提供了面板上所必需的许多显示和控制对象,如旋钮、表头、图表等。用户还可以方便地将现有控制对象改成适合自己需要的控制对象。
( 2 )自定义界面和数据流编程
自定义界面• 灵活个性地进行应用界面设计
数据流编程• 直观形象地编程实现
( 3 )内置的程序编译器
LabVIEW 采用编译方式运行 32 位应用程序,解决了其它按解释方式工作的图形编程平台速度慢的问题,其速度大体相当于编译 C 的速度。
( 4 )灵活的程序调试手段
用户可以在源代码中设置断点,单步执行源代码,在源代码的数据流上设置探针,在程序运行中观察数据流的变化。
( 5 )功能强大的函数库
LabVIEW 提供了大量的现成函数供用户直接调用,从底层 VXI 、 GPIB 、串口及数据采集板的控制子程序到大量的仪器驱动程序,从基本的功能函数到高级分析库,基本涵盖了仪器设计需要的函数。
( 6 )支持多种系统平台
LabVIEW 支持多种系统平台,在 Windows NT 、HP 、 SUN SPARC ( SUN 工作站)等系统平台上,NI 公司都提供了相应版本的软件,并且平台之间开发的应用程序可直接进行移植。
( 7 )开放式的开发平台 LabVIEW 提供了 DLL (动态链接库)接口和 CIN 接口,使用户在 LabVIEW 平台上能调用其它软件平台编译的模块,提供对 OLE (对象链接和嵌入)的支持。
( 8 )网络功能 LabVIEW 支持 TCP/IP (传输控制协议 / 网际协议)、 DDE (动态数据交换)、 IAC (应用间通信)等功能。
( 9 )提供丰富的数据显示方法
LabVIEW 为用户提供了多种结果显示控件,如旋钮、表头、表盘、图表等,以及多种结果显示方式,例如,数字显示、模拟仪表显示、极坐标显示、时域波形显示、频谱图形显示等。
用户可以根据实际需要进行显示方式的选择与配置,也可以对显示控件进行必要的修饰。
( 10 )灵活的数据报表生成方式
LabVIEW 一般是以数据文件或数据库文件的形式储存监测与分析结果的,它本身也包含了丰富的数据报表格式。
如果需要生成的数据报表格式非常复杂,可以通过接口将数据输出到 EXCEL 等专用电子表格软件中,由 EXCEL 完成报表的生成与统计工作。
( 11 )层次化结构
LabVIEW 的强大功能归因于它的层次化结构,用户可以把创建的 VI 程序当作子程序调用,以创建更复杂的程序,而这种调用阶数是无限的。 LabVIEW 这种创建和调用子程序的方法,使创建的程序结构模块化,易于调试、理解和维护。
LabVIEW 可以做什么?
LabVIEW 在测试、测量和自动化等领域具有最大的优势,因为 LabVIEW 提供了大量的工具与函数用于数据采集、分析、显示和存储。
用户可以在数分钟内完成一套完整的从仪器连接、数据采集到分析、显示和存储的自动化测试测量系统。
它被广泛地应用于汽车、通信、航空、半导体、电子设计生产、过程控制和生物医学等各个领域。
LabVIEW 可以做什么 ?
LabVIEW 不仅可以用来快速搭建小型自动化测试测量系统,还可以被用来开发大型的分布式数据采集与控制系统。
在美国 Lawrence Livermore 国家实验室,一个花费 2000 万美金的极为复杂的飞秒激光切割系统就是基于LabVIEW开发的。
在北京正负电子对撞机二期工程北京谱仪慢控制系统中,大约有 30 种物理量共 7000 多点的现场数据点需要实时采集控制和分析记录等。
助力各个工程领域的 LabVIEW 工具包
报表生成工具包
声音与振动工具包
高级信号处理工具包
数据库连接工具包控制设计工具包
系统辨识工具包
频谱分析工具包
调制解调工具包
LabVIEW 的发展历程
使用 LabVIEW开发平台编制的程序称为虚拟仪器( Virtual Instruments )程序,简称为 VI 。扩展名默认为 .vi 。
它包括前面板( Front Panel )、框图程序( Block Diagram )以及图标 / 连接端口 (Icon/Connector) 三部分。
框图窗口
前面板窗口
图标
前面板
1. 前面板
前面板:即图形化用户界面,用于设置输入数值和观察输出量,模拟真实仪表的前面板。
1. 前面板
前面板构成:控制( Control )、指示( Indicator ) 和 修 饰 ( Decoration ) 构 成 。
控 制 : 用 户 设 置 和 修 改 VI 输 入 量 的 接 口;
指 示 : 显 示 VI 输 出 数 据 或 图 形 ;修 饰 : 对 前 面 板 进 行 美 化 、 装 饰 。
控制和指示统称为对象或控件。
10
- 10
- 5
0
5
正弦波
STOP
10000
200
400 600
800
频率
100123
4 5 6789
振幅
输入控件( Controls )和显示控件( Indicator )
利用输入控件可以输入相应的数据,例如数字、布尔量、字符串和文件路径等。
显示控件用来显示数据。显示控件有数字、温度计、 LED 指示灯、文本、波形图等 。
前面板中的一些控件既可以作为输入控件也可以做作为显示控件。右击控件,选择 Change to Indicator或 Change to Control 可以进行输入控件与显示控件之间的切换。
前面板中的每个控件都有自己的属性,如控件的颜色、最大最小值、显示精度和方式等。许多属性都可以根据不同的需要进行编辑。
右击前面板任何一个控件选择 Properties 选项就可以弹出该控件的属性配置窗口。
框图程序
2. 框图程序每一个程序前面板都对应着一段框图程序。框图程序用 LabVIEW 图形编程语言编写,可以把它理解成传统程序的源代码。框图程序构成:节点( Node )、端子、图框和连线( Wire )构成。节点:带有输入和输出连接线的对象,类似文本编程 语言中的语句、运算符、函数和子程序,包括 功能函数、结构、代码接口节点和子 VI;端子 : 可 视 为 入 口 和出口 ,或者源 和目的 地;图框:实现结构化程序控制命令;连线:端子、节点间的数据通道,定义了框图内 的数据流动方向。
正弦波
频率
振幅
100
512采样点数
10
100000
程序框图中的控件对象实际上是前面板相应控件的接线端
前面板控件 程序框图中对应的接线端
程序框图节点
LabVIEW 中的程序框 图 节 点 是 指带有输入 和输出 接 线端的 对 象 ,类似文 本编程语言中的语句、运 算符、 函 数 和 子程序。 LabVIEW 中的 节 点主要包括函数、结构、 Express VI 、子 VI 等。
对象连线
整 形
浮点数
逻辑量
字符串
文件路径
下面是一些常用数据类型所对应的线型和颜色:
图标 / 连接端口
3. 图标 /连接端口
图标和连接端口可以将一个虚拟仪器系统变成一个子系统( SubVI ),然后被其他的虚拟仪器程序调用。
图标:作为 SubVI 的直观标记,代表着该 SubVI中所有的框图程序和前面板控件;
连接端口:描述了该 SubVI 与调用它的 VI 之间进行数据交换的输入输出端口,每一个输入输出口分别与 SubVI 前面板上的控件相对应。连接端口通常隐藏在图标中。
波形发生器的图标 波形发生器的连接端口
图标
图标可以将一个虚拟仪器系统变成一个子系统( SubVI ),然后被其他的虚拟仪器程序调用。
图标是 VI 的图形表示,会在另外的 VI 框图中作为一个对象使用。
图标:作为 VI 的直观标记,代表着该 VI 中所有的框图程序和前面板控件。
3.2 LabVIEW 的操作模板
3.2 LabVIEW 的操作模板
LabVIEW 具有多个图形化的操作模板,用于创建和运行程序。共分三类:为工具( Tools )模板、控件( Controls )模板和功能( Functions )模板。
1.工具模板
工具模板为编程者提供了各种用于创建、修改和调试 VI 程序的工具。
:Operation Tool :Positioning Tool:Labeling Tool:Wiring Tool:Object pop-up menu Tool:Scrolling Tool:Break Point Tool:Probe Tool:Color Copy Tool:Color Tool
2. 控件模板
该模板用来给前面板设置各种所需的输出显示对象和输入控制对象。
每个图标代表一类子模板。
只有当打开前面板窗口时才能调用控制模板。
:Numeric :Boolean:String & Path:Array & Cluster :List & Table:Graph:Ring & Enum:I/O
:Refnum :Dialog:Classic:ActiveX :Decorations:Select:User
3. 功能模板
功能模板是创建流程图程序的工具。
该模板上的每一个顶层图标都表示一个子模板。
只有打开了框图程序窗口,才能出现功能模板。
:Structures :Numeric:Boolean:String:Array:Cluster:Comparison:Time & Dialog:File I/O:Data Acquisition:Waveform:Signal Processing
:Instrument I/O :Motion & Vision:Mathematics:Communication:Application Control:Graphics & Sound:Tutorial:Report Generation :Advanced :Select a VI:User Lobrary
3.3 创建和编辑 VI
3.3 创建和编辑 VI
3.3.1 创建 VI
创建 VI 的一般步骤如下: 1. 选择创建一个新的 VI; 2.创建 VI前面板; 3.创建框图程序; 4.创建 VI 图标; 5.保存 VI 。 例 3.2.1 下面以 c=a+b 为例。
1. 选择创建一个新的 VI
VI程序和工程创建栏
新近打开的工程和 VI程序列表栏
帮助资源列表栏
2.创建 VI前面板
3.创建框图程序
4.创建 VI 图标
3.3.2 编辑 VI 编辑 VI操作: 1. 选择对象; 2.删除对象; 3. 改变对象位置; 4. 改变对象大小; 5. 改变对象颜色; 6. 对象对齐; 7. 对象分布; 8. 改变对象层次; 9. 设置对象字体 10.添加标签。
3.4 运行和调试 VI
3.4 运行和调试 VI 3.4.1 运行 VI 1. 运行 VI 2.停止运行 VI 2.连续运行 VI 4.暂停 VI 运行
Run Button
Continuous Run Button
Abort Execution
Execution Highlighting Button
程序框图工具条
前面板工具条
Retain Wire Values ButtonStep Function Buttons
1.运行 VI 单击前面板或程序框图工具栏中的运行按钮
就可以运行 VI 一次,当 VI正在运行时,运行按钮变为
2.停止运行 VI当程序运行时,停止按钮由编辑时的状态变为可用状态
单击此按钮可强行停止程序的运行。如果调试程序时,使程序无意中进入死循环或无法退出时,这个按钮可以强行结束程序运行。
状态。
3.4.2 调试 VI 1. 单步执行 VI (1) 单步(入)执行 (2) 单步(跳)执行 (3) 单步(出)
2. 设置断点 将工具模板总鼠标切换到断点工具状态,单击框图程序中需设置断点的地方即可。
3. 设置探针 将工具模板总鼠标切换到探针工具状态,单击框图程序中需查看的数据连线,会弹出一个对话框,若有数据流过,即显示该数据值。
4. 显示数据流动动画 程序在高亮方式下运行,可以逼真地显示数据的流动过程。再次单击此按钮,程序又恢复正常运行。
注意 : 使用高亮执行方式,将明显降低程序的执行速度。
单击工具条中 ,运行 VI ,在框图程序上实时显示程序执行过程。通常和单步结合使用。
运行按钮 连续执行按 钮 停止按钮 暂停按钮
字体框。包括字体类型、尺寸、风格和颜色。
排列调整框。用位置工具选择调整对象后,上下左右调整,美化界面设计。
间隔列表框。为选定的两个或多个对象提供间隔派了控制。
重新排列框。为选定的对象重新设定在窗口中的前后次序。
默认的图标 / 连接端口。
框图程序窗口
运行指示灯按钮。单击,动态显示 VI执行时的数据流动动画。
单 步 ( 入 ) 按 钮 。单击,不仅按节点顺序 单 步 执 行 ,而且 在节点 内 也 单 步执行。
单 步 (跳) 按 钮 。单击, 按节点顺序单 步 执 行 ,不进 入循环 , SubVI 内部节点单步执行。
单 步 (出) 按 钮 。单击,推出循环, SubVI 内部节点单步执行。
5.查找 VI 不可执行的原因
变为断裂状态 ,如果单击此按钮就会弹出错误列表对话框。
如果在一个 VI 程序中存在错误时, VI 是不能运行的。这时,工具栏中的运行按钮由
3.5 创建和调用子 VI
3.5 创建和调用子 VI
3.5.1 创建子 VI 创建完成一个 VI后,按一定规则定义 VI 的连接端口,就完成了子 VI 的创建。 定义连接端口的步骤: 1.创建理解端口 2. 将控制和指示对象与连接端口的对应端相连 3.保存
图标 /连接器( Icon/Connector )
图标和连接端口可以将一个虚拟仪器系统变成一个子系统( SubVI ),然后被其他的虚拟仪器程序调用。图标作为 SubVI 的直观标记,代表着该 SubVI 中所有的框图程序和前面板控件;连接端口描述了该 SubVI 与调用它的 VI 之间进行数据交换的输入输出端口,每一个输入输出口分别与 SubVI前面板上的控件相对应。连接端口通常隐藏在图标中。
3.5.2 调用子 VI 调用子 VI 的步骤: 1. 选择子 VI; 2. 将子 VI 的图标放入主 VI框图程序中; 3.连线。
3.6 善用 LabVIEW 联机帮助
3.6 善用 LabVIEW联机帮助
LabVIEW 为用户提供了非常全面的帮助信息,有效地利用帮助信息是快速掌握 LabVIEW 的一条捷径。
LabVIEW 提供了各种获取帮助信息的方法,包括实时上下文帮助( Show Context Help )、联机帮助、 LabVIEW范例查找器( Find Examples )、网络资源( Web Resources )等。
3.6.1 实时上下文帮助窗口
单击此处访问更详细的联机帮助更多帮
助信息锁定上下文相关帮助
显示VI路径
选择菜单栏中 Help->Show Context Help 选项或按下 Ctrl+H ,就会弹出 Context Help窗口。
当鼠标移到某个对象或函数上时,上下文帮助窗口就会显示相应的帮助信息。
3.6.2 联机帮助文档
当单击 Context Help窗口中 Detailed help会弹出相应的完整的帮助信息。这是一个 Windows 标准风格的帮助窗口,包含了 LabVIEW全部的帮助信息。
也可以选择主菜单 Help->Search the LabVIEW Help 选项打开它。
3.6.3 范例查找器
LabVIEW 提供了大量的范例,这些范例几乎包含了 LabVIEW 所有功能的应用实例,并提供了大量的综合应用实例。
在菜单栏中选择 Help->Find Examples 选项可以打开范例查找器。
LabVIEW 更多特性与编程技巧
www.ni.com/labview/zhs
走进 LabVIEW 的世界
实验一
新建一个 VI ,进行如下练习:• 任意放置几个控件在前
面板,改变它们的位置、名称、大小、颜色等等。
• 在 VI 前面板和后面板之间进行切换
• 并排排列前面板和后面板窗口
实验一 VI 程序的创建、编辑和调试
1.熟悉 LabVIEW 环境。
2.创建一个 VI 。 发生一个值为 0.0~ 1.0 的随机数 a ,放大 10倍后与某一常数 b比较,若 a>b ,则指示灯亮。要求:① 编程实现;② 单步调试程序;③ 应用探针观察各数据流。
3.创建和调用子 VI 。 创建一个子 VI ,子 VI 功能:输入 3 个参数后,求其和,再开方。 编一个 VI 调用上述子 VI 。
• 对三个输入控件等间隔并右对齐。
• 添加注释• 分别用普通方式和高亮方式运行程序,体会数据流向。
• 单步执行一遍
4. 编写一个 VI求三个数的平均值。要求:
1.熟悉 LabVIEW 环境。2.创建一个 VI 。 发生一个值为 0.0~ 1.0 的随机数 a ,放大 10倍后与某一常数 b比较,若 a>b ,则指示灯亮。要求:① 编程实现;② 单步调试程序;③ 应用探针观察各数据流。
3.创建和调用子 VI 。 创建一个子 VI ,子 VI 功能:输入 3 个参数后,求其和,再开方。 编一个 VI 调用上述子 VI 。
4 、编写一个 VI求三个数的平均值。
谢谢!