LabVIEW是实验室虚拟仪器集成环境(Laboratory Virtual Instrument Engineering Workbench)的简称,是美国国家仪器公司(NATIONAL INSTRUMENTS,简称NI)的创新软件产品,也是目前应用最广、发展最快、功能最强的图形化软件集成开发环境。
LabVIEW是一种图形化编程语言,又称G语言。 其编写的程序称为虚拟仪器VI(Virtual Instrument),以.VI后缀。
LabVIEW模板:
- 工具模板(Tools Palette)
- 控件模板(Controls Palette)
- 功能模板(Functions Palette)
VI的组成:
- 前面板(Panel)
控制(Control),指示(Indicator),修饰(Decoration)。
将前面板中的控制和指示统称为前面板对象或控件。
- 框图程序(Diagram Programme)
节点(Node),数据连线(Wire)
节点有:功能函数(Functions),结构(Structures),代码接口节点(CIN),子VI(SubVI)。
数据端口有:控制端口和指示端口,节点端口。
LabVIEW编程又称为“数据流编程”。
- 图标/连接端口(Icon/Terminal)
把VI作为一个SubVI在其它VI中调用。
常用术语 :
SubVI 子VI Chart 实时趋势图
LLBs VI库 Graph 事后记录图
Objects 对象 Functions 功能
Panel 前面板 Structures 结构
Block Diagram 框图程序 Cluster 簇
Control 控制 Bundle 打包
Indicator 指示 Unbundle 解包
Control和Indicator 前面板对象或控件 RefNum 枚举,标志号
Palette 模板 Local Variable 本地变量
Functions Palette 功能模板 Global Variable 全局变量
Controls Palette 控件模板 Constant 常量
Tools Palette 工具模板 Disable Indexing 无索引
Terminal 端口 Enable Indexing 有索引
Wires 数据连线 Read Local 本地读
Bad Wires 错误数据连线 Write Local 本地写
Node 节点 Read Global 全局读
Attribute Node Write Global 全局写
Property Node 属性节点 Legend 图例
Frame 框架 Cursor 光标
Channel 框架通道 Bounds 边界范围
Index 索引 Data Acqisition(DAQ) 数据采集
Shift Register 移位寄存器 Label 标签
运行VI
1.运行VI(Run)
2.连续运行VI(Run Continuously)
3.停止运行VI(Abort Execution)
4.暂停运行VI(Pause)
调试VI
- 单步执行
单步(入),单步(跳),单步(出)
2.设置端点
3.设置探针
4.显示数据流动画
数据类型:
基本数据类型:数字型(Numeric),布尔型(Boolean),字符串型(String)
构造数据类型:数组(Array),簇(Cluster)
其它数据类型:枚举(RefNum),空类型
数组(Array):
索引号从0开始
一维数组(1D,列或向量),二维数组(2D,矩阵)
组成:数据类型,数据索引(Index),数据
创建:1.控制模板->Array & Cluster子模板
2.根据需要将相应数据类型的前面板对象放入数组框架中
使用:
1. Array Size返回输入数组的长度
2. Index Array返回输入数组由输入索引指定的元素
3. Replace Array Element替换输入数组的一个元素
4. Array Subset从输入数组取出指定的元素
5. Reshape Array改变输入数组的维数
6. Initialize Array初始化数组
7. Build Array建立一个新数组
8. Rotate 1D Array将输入数组的最后n个元素移至数组的最前面
9. Sort 1D Array将数组按升序排列
10.Reverse 1D Array将输入的1D数组前后颠倒,输入数组可以是任何类型的数组
11.Transpose 2D Array转置输入的二维数组,也叫矩阵转置
12.Search 1D Array搜索指定元素在一维数组中的位置
13.Array Max & Min返回输入数组中的最大值和最小值
14.Split 1D Array将输入的一维数组在指定的元素处截断,分成2个一维数组
15.Interpolate 1D Array线性插值
16.Threshold 1D Array一维数组阀值,是线性插值的逆过程
17.Interleave 1D Arrays将从输入端口输入的一维数组插入到输出的一维数组中
18.Decimate 1D Array将输入的一维数组分成数个一维数组,是Interleave 1D Arrays的逆过程
簇(Cluster):
类似于Pascal语言的record和C语言的struct
组成:不同的数据类型
创建:控制面板—>Array & Cluster子面板;向框架添加所需的元素;根据需要更改簇和簇中元素的名称
使用:
1.Unbundle解包。获得簇中元素的值
2.Bundle打包。将相互关联的不同数据类型的数据组成一个簇,或给簇中的某个元素赋值
3.Unbundle By Name按名称解包。获得由元素名称指定簇中相应元素的值
4.Bundle By Name按名称打包。将相互关联的不同数据类型的数据组成一个簇,或给簇中的某个元素赋值
5.Build Cluster Array建立簇的数组
6.Index & Bundle Cluster Array将输入数组的元素按照索引组成簇,然后将这些簇组成一个数组
7.Cluster To Array将簇转化为数组
8.Array To Cluster将数组转化为簇
结构
For循环(For Loop)
For(i=0;i<N;i++)
{
}
功能模板—>Structure子模板
组成:循环框架(Loop Frame):内有节点
重复端口(Iteration Terminal):N
计数端口(Count Terminal):i,初值为0,递增步长为1
移位寄存器(Shift Register):右侧移位寄存器(第i-1次)—>左侧移位寄存器(第i次)
框架通道(Channel):循环开始前,循环外节点—>循环内节点
循环结束时,循环内节点—>循环外节点
索引(Enable Indexing)—>数组
无索引(Disable Indexing)—> 最后一个数
自动索引(Auto Indexing):循环执行时自动检测数组长度,并在每次循环时将数组中的元素按顺序一一取出
While循环
当循环次数不能确定时,用While循环
while(条件)
{
}
do
{
}while(条件)
组成:循环框架(Loop Frame)
重复端口(Iteration Terminal)
条件端口(Conditional Terminal)每次循环结束时,条件端口检测数据连线输入的布尔值,若为TRUE,停止循环;若为FALSE,继续循环。如果不赋值,只执行一次
移位寄存器(Shift Register)
框架通道(Channel)
顺序结构(Sequence Structure)
•传统编程语言:控制流程(Control Flow)
LabVIEW: 数据流程(Data Flow)
在LabVIEW中只有当某个节点的所有输入均有效时,LabVIEW才能执行该节点
—>数据从属性(Data Dependency)
•组成:顺序框架(Sequence Frame)
框图标识符(Diagram Identifier)
递增/递减按扭(Increment/Decrement Buttons)
•本地结果(Sequence Local):在顺序框架中向后传递数据
•框架通道(Frame Channel):无Enable Indexing和Disable Indexing两种属性
•公共连线(Common Threads):建立流程控制权(Flow Control Right)
Error Cluster也是一种很好的公共连线,这种技术称为ERROR I/O
选择结构(Case Structure)
switch(表达式)
{case 常量表达式1:语句1;
case 常量表达式2:语句2;
┇
case 常量表达式n:语句n;
default :语句n+1;
}
if(条件判断表达式)
{
}
else
{
}
组成:选择框架(Case Frame)
选择端口(Selection Terminal):布尔型,数字整型,字符串型
框图标识符(Diagram Identifier)
递增/递减按扭(Increment/Decrement Buttons)
公式节点(Formula Node)
创建:1.功能模板—>Structures子模板—>Formula Node
2.添加输入输出端口
3.按照C语言的语法规则在公式节点的框架中加入程序代码
属性节点(Attribute Node)
改善人机交互界面
使用:1.Visible Attribute
2.Disabled Attribute
3.Key Focus Attribute
4.Blinking Attribute
5.Position Attribute
6.Bounds Attribute(Read Only)
//
波形显示控件
按照处理测量数据的方式和显示过程的不同,LabVIEW波形显示控件主要分为两类:
事后记录图(Graph):基本数据结构是数组,一次显示完成
实时趋势图(Chart):基本数据结构是数据标量或数组,连续不断显示
数据采集(Data Acquisition,DAQ)
一般而言,所有能够在计算机控制下完成数据采集和控制任务的板卡产品都称为DAQ
产品。其分为内插式(plug-in)板卡和外挂式板卡。内插式DAQ板卡包括基于ISA,PCI,PXI/Compact PCI,PCMCIA等总线的板卡,速度快,但插拔不方便;外挂式DAQ板卡包括USB,IEEE1394,RS232/RS485和并口板卡,使用方便,但速度相对较慢。
NI公司对其全部DAQ产品提供了专门的驱动程序库。NI公司的LabWindows/CVI是开发LabVIEW驱动程序的最好工具。
DAQ基本功能
◆A/D
将模拟量输入转换为数字量,是DAQ的核心。就工作原理而言,有逐次逼近法A/D,双积分法A/D,并行比较法A/D。指标:采样分辨率,即A/D转换位数;A/D转换速度。
◆D/A
将数字量转换为模拟量输出。指标:分辨率;线性误差
◆数字I/O(Digital I/O)
与外部通信。一般采用TTL电平。
◆定时(Timer)/计数(Counter)器
脉冲周期信号测量,精确时间控制,脉冲信号产生。指标:分辨率;时钟频率。
DAQ VIs的位置
功能模板—>Data Acquisition子模板(6个)
◆Analog Input
◆Analog Output
◆Digital I/O
◆Counter
◆Calibration and Configuration校准和配置DAQ设备,并返回DAQ设备的配置信息
◆Signal Conditioning将采集到的模拟电压信号转换为相应的应力单位或温度单位
DAQ VIs的组织结构