61
第第第 LabVIEW 第第第第第第第第第第第

第三讲 LabVIEW 开发环境及程序设计基础

Embed Size (px)

DESCRIPTION

第三讲 LabVIEW 开发环境及程序设计基础. LabVIEW 的出现. 1986 年诞生,革命性地简化了仪器控制的复杂度 针对测量应用的界面控件 符合工程思维方式的数据流编程. LabVIEW 的出现推动了测试技术的发展. 从手工测试迈向自动化测试 使仪器和 PC 得以有效连接 有效降低了仪器控制的复杂程度 从此以后,软件在测控系统中发挥的作用越来越大. LabVIEW 的发展. 功能不断增加,效率不断提升 不断融合各种最新的技术发展,简化工程师在测控系统中利用新技术的复杂度. LabVIEW 6 i 网络技术. LabVIEW 3.0 多平台. - PowerPoint PPT Presentation

Citation preview

Page 1: 第三讲 LabVIEW 开发环境及程序设计基础

第三讲LabVIEW 开发环境及程序设计基础

Page 2: 第三讲 LabVIEW 开发环境及程序设计基础

LabVIEW 的出现

• 1986 年诞生,革命性地简化了仪器控制的复杂度– 针对测量应用的界面控件– 符合工程思维方式的数据流编程

Page 3: 第三讲 LabVIEW 开发环境及程序设计基础

LabVIEW 的出现推动了测试技术的发展

• 从手工测试迈向自动化测试– 使仪器和 PC 得以有效连接– 有效降低了仪器控制的复杂程度– 从此以后,软件在测控系统中发挥的作用越来越大

Page 4: 第三讲 LabVIEW 开发环境及程序设计基础

LabVIEW 的发展• 功能不断增加,效率不断提升• 不断融合各种最新的技术发展,简化工程师在测控系统中利用

新技术的复杂度

2005

2006

20031998

20001993 1997

1990

1986

LabVIEW 1.0Macintosh

LabVIEW 2.0编译语言程序

LabVIEW 3.0多平台

LabVIEW 4.0专业化开发

LabVIEW 6i网络技术

LabVIEW 5.0实时技术

LabVIEW 7 ExpressPDA 和 FPGA

LabVIEW 8.2020 周年纪念版简体中文版

LabVIEW 8分布式智能

2008

LabVIEW 8.6多核、 FPGA 、无线

2009

LabVIEW 2009更高效率,机器人

2010

LabVIEW 2010FPGA 云编译

Page 5: 第三讲 LabVIEW 开发环境及程序设计基础

LabVIEW 的本质是什么 ?

• 首先是一种编程语言– 只不过是图形化的而已

• 是一种针对工程师和科学家所设计的开发环境– 内置许多简化编程复杂度的功能和函数

Page 6: 第三讲 LabVIEW 开发环境及程序设计基础

LabVIEW 作为编程语言的优势Dataflow C / HDL Code Textual Math Simulation Statechart

Personal Computers PXI Systems CompactRIO Custom DesignSingle-Board RIO

LabVIEW

``Real-Time

LabVIEW

Desktop

LabVIEW

FPGA

LabVIEW

MPU/MCU

支持连接各种硬件,而且支持发布到多种 Target

基于数据流的自然思维方式,但同时也支持调用文本语言的代码

Page 7: 第三讲 LabVIEW 开发环境及程序设计基础

一个简单而典型的 LabVIEW 应用

采集 分析 表达

第 4 讲 数据采集与信号调理

第 5 讲 LabVIEW 中的信号处理

第 3 讲 LabVIEW 开发环境及程序设计基础

第 6 讲 LabVIEW 程序设计进阶

Page 8: 第三讲 LabVIEW 开发环境及程序设计基础

LabVIEW 基本开发环境介绍

Page 9: 第三讲 LabVIEW 开发环境及程序设计基础

VI —— LabVIEW 程序文件的基本单位

• VI (Virtual Instruments 的缩写 ) 由三部分组成– 前面板、程序框图 ( 后面板 ) 、图标 / 连线板

Page 10: 第三讲 LabVIEW 开发环境及程序设计基础

前面板

• 相当于界面– 每个 VI 都有前面板

• 输入控件– Control, 相当于输入

• 显示控件– Indicator, 相当于输出

• 控件选板

Page 11: 第三讲 LabVIEW 开发环境及程序设计基础

程序框图

• 图形化的程序代码– 决定程序运行行为

• 可能包含元素– 终端 – 子 VI– 函数– 常数– 结构– 连线

函数选板

Page 12: 第三讲 LabVIEW 开发环境及程序设计基础

程序框图中的连线

• 通过颜色、类型、粗细来表示不同的数据类型

• 不同数据类型之间的连线会产生错误– Ctrl+B 可清楚所有错误连线– LabVIEW 8.6 之后具有整理连线功能

Scalar1D Array2D Array

DBL Numeric Integer Numeric String

Page 13: 第三讲 LabVIEW 开发环境及程序设计基础

前面板和程序框图的工具栏

• LabVIEW 程序的基本调试– 查看编译错误– 单步执行– 布置探针– 设置断点

Page 14: 第三讲 LabVIEW 开发环境及程序设计基础

工具选板

• 一般 LabVIEW 会自动选择当前工具– 连线、拖拽、文字…

• 利用工具选板可以强制选择工具– 着色、设置断点…

Page 15: 第三讲 LabVIEW 开发环境及程序设计基础

LabVIEW 程序设计基础

Page 16: 第三讲 LabVIEW 开发环境及程序设计基础

数据流

• 原则 1: 只有当一个节点 ( 函数或子 VI) 的所有输入端的数据全部准备好才会执行

• 原则 2: 一个节点 ( 函数或子 VI) 只有执行完成后才会向后输出数据

Page 17: 第三讲 LabVIEW 开发环境及程序设计基础

理解数据流

哪个节点先执行 ?A) 加法B) 减法C) 随机数D) 除法E) 正弦

Page 18: 第三讲 LabVIEW 开发环境及程序设计基础

理解数据流 (没有固定答案 )

哪个节点先执行 ?A) 加法 – 可能 B) 减法 – 不可能C) 随机数 – 可能D) 除法 – 可能E) 正弦 – 不可能

Page 19: 第三讲 LabVIEW 开发环境及程序设计基础

一个简单的 VI:采集、分析、表达

Page 20: 第三讲 LabVIEW 开发环境及程序设计基础

LabVIEW 中的“采集” Express VI

• DAQ Assistant Express VI

– 数据采集助手

• Instrument I/O Assistant Express VI

– 仪器 I/O助手 ( 用于仪器控制 )

• Simulate Signal Express VI

• Read from Measurement File Express VI

21

Page 21: 第三讲 LabVIEW 开发环境及程序设计基础

LabVIEW 中的“分析” Express VI

• Amplitude and Level Measurements Express VI– 幅值和电平

• Statistics Express VI– 统计

• Spectral Measurements Express VI– 频谱测量

• Tone Measurements Express VI– 单频测量

• Filter Express VI– 滤波器

• …

Page 22: 第三讲 LabVIEW 开发环境及程序设计基础

数据“表达”

• 显示控件– 波形图、波形图标、 XY 图…

• Express VI– Write to Measurement File Express VI…

• 其他功能函数– 数据库、网络通信…

Page 23: 第三讲 LabVIEW 开发环境及程序设计基础

基本数据类型 1

• 数值型– 整型

• 有些数据类型的本质也是整形,如枚举型

– 浮点型

– 可以更改数据表达方式• 决定其占用的存储字节数及数值表达方式

Page 24: 第三讲 LabVIEW 开发环境及程序设计基础

强制数据类型转换

• 通常,函数返回占用字节数较多的数据类型• 为提高程序执行效率 , 尽量避免自动强制转换

强制转换点

Page 25: 第三讲 LabVIEW 开发环境及程序设计基础

基本数据类型 2

• 布尔型– 注意 : 前面板对应的布尔控件有六种机械动作可选

– 可通过范例区别六种机械动作的不同

Page 26: 第三讲 LabVIEW 开发环境及程序设计基础

基本数据类型 3

• 字符串– 前面板控件可现实不同的显示方式

• Normal, ‘\’ Codes, Password 以及 Hex

– 字符串操作函数选板

Page 27: 第三讲 LabVIEW 开发环境及程序设计基础

基本数据类型 4

• 枚举型– 本质上也可以认为是整

型,不过取值范围有限– 常与条件结构共同使用

某枚举型变量的配置对话框枚举型变量作为条件结构的分支选择依据

Page 28: 第三讲 LabVIEW 开发环境及程序设计基础

• 可以有多个分支,可以设置默认分支• 类似于文本语言的 case 或 if…else if…else 结构

条件结构

分支选择端

分支标签

Page 29: 第三讲 LabVIEW 开发环境及程序设计基础

条件结构的输入和输出通道

• 输入通道可以只传递到某些分支• 但各个分支的输出通道必须赋值

Page 30: 第三讲 LabVIEW 开发环境及程序设计基础

数组

• LabVIEW 中的数组可以是 1

维的,也可以是多维的• 每一维元素从 0 开始索引

数组元素

当前显示的第一个元素所对应的索引

Page 31: 第三讲 LabVIEW 开发环境及程序设计基础

数组

• 在 LabVIEW 的前面板 / 程序框图中创建数组

• 在程序中对数组进行操作

Page 32: 第三讲 LabVIEW 开发环境及程序设计基础

• 类似与 C 语言中的结构体

Page 33: 第三讲 LabVIEW 开发环境及程序设计基础

• 创建簇– 需注意元素顺序

Page 34: 第三讲 LabVIEW 开发环境及程序设计基础

LabVIEW 中的循环结构

• While循环• For循环• 隧道• 寄存器• For循环的条件终止

Page 35: 第三讲 LabVIEW 开发环境及程序设计基础

While循环

LabVIEW While Loop Flowchart Pseudo Code

Repeat (code);

Until Condition met;

End;

Page 36: 第三讲 LabVIEW 开发环境及程序设计基础

While循环

返回执行次数( 从 0 开始 )

终止条件 ( 也可以是继续条件 )

隧道 (Tunnel)

Page 37: 第三讲 LabVIEW 开发环境及程序设计基础

For循环

LabVIEW For Loop Flowchart Pseudo Code

N=100;

i=0;

Until i=N:

Repeat (code;i=i+1);

End;

Page 38: 第三讲 LabVIEW 开发环境及程序设计基础

For循环

• 可增加条件终止端

Page 39: 第三讲 LabVIEW 开发环境及程序设计基础

While循环和 For循环的比较

For Loop

•按照约定的次数执行 ( 除非增加了条件终止端 )•可以一次也不执行•默认情况下,隧道输出的是一个数组 (需要禁用索引才能输出值 )

While Loop

•循环终止执行由终止条件决定•至少会执行一次•默认情况下,隧道输出的是一个值 (需要开启索引才能输出数组 )

Page 40: 第三讲 LabVIEW 开发环境及程序设计基础

使用数组作为索引输入

• 可不定义循环次数,循环次数自动设置为数组大小

Page 41: 第三讲 LabVIEW 开发环境及程序设计基础

例 : 利用 For循环自动索引对数组赋值

一维数组

二维数组

Page 42: 第三讲 LabVIEW 开发环境及程序设计基础

移位寄存器

• 通过右键菜单可以对循环添加移位寄存器– 可以“记住”上一次循环执行后的数据– 右边的移位寄存器记录的是循环当此执行后的数据– 左边的移位寄存器记录的是循环上次执行后的数据

Page 43: 第三讲 LabVIEW 开发环境及程序设计基础

移位寄存器的初始化

程序框图 首次执行 再次执行有初始化 Output = 5 Output = 5

无初始化 Output = 4 Output = 8

Page 44: 第三讲 LabVIEW 开发环境及程序设计基础

移位寄存器的堆栈

• 可以“记住”前若干次循环的数据

Page 45: 第三讲 LabVIEW 开发环境及程序设计基础

延时

• 为何需要延时 ? – 控制循环执行的频率– 使处理器有资源处理其他任务 (如界面刷新等 )

• LabVIEW 中常用的软件定时 VI

• 注意 : 软件定时的精度通常为 1ms左右

Page 46: 第三讲 LabVIEW 开发环境及程序设计基础

波形图表、波形图、 XY 图

Page 47: 第三讲 LabVIEW 开发环境及程序设计基础

子 VI

当程序中有些部分的内聚度较高时,可利用子 VI 使主程序结构更清晰简洁(类似于文本语言的子函数)

Page 48: 第三讲 LabVIEW 开发环境及程序设计基础

创建并调用子 VI

• 方法一 : 定义子 VI 图标和连线板– 连线板决定了子 VI 的参数输入与输出– 通过图标或函数选板调用子 VI

Page 49: 第三讲 LabVIEW 开发环境及程序设计基础

创建并调用子 VI

• 方法二 : 在主程序中直接圈出一块程序,通过右键菜单直接创建子 VI

Page 50: 第三讲 LabVIEW 开发环境及程序设计基础

程序架构

• 程序架构的重要性– 好的程序架构可以简化编程和调试的复杂度– 便于增加、扩展程序功能– 代码更清晰,增强程序的可读性

– 就像盖房子,规划和框架设计非常重要

Page 51: 第三讲 LabVIEW 开发环境及程序设计基础

常用的一种 LabVIEW 程序架构 : 状态机

• 典型用途– 界面响应 : 在程序运行

的不同阶段响应不同的用户输入

– 状态控制 : 控制测控系统在各种不同状态下的行为和状态转移

Page 52: 第三讲 LabVIEW 开发环境及程序设计基础

状态机的代码形式

• 由 While循环和条件结构组成• 状态由枚举型变量确定

– 每个状态都会转移到其他状态或本状态

While循环

条件结构移位寄存器

Page 53: 第三讲 LabVIEW 开发环境及程序设计基础

例 : 默认状态及单一状态转移

Page 54: 第三讲 LabVIEW 开发环境及程序设计基础

例 : 根据情况选择转移状态

Page 55: 第三讲 LabVIEW 开发环境及程序设计基础

调试你的 LabVIEW 代码

• 找出编译错误

• 高亮执行

• 探针

• 设置断点

Page 56: 第三讲 LabVIEW 开发环境及程序设计基础

LabVIEW帮助

• Ctrl+H

Page 57: 第三讲 LabVIEW 开发环境及程序设计基础

LabVIEW范例查找器

Page 58: 第三讲 LabVIEW 开发环境及程序设计基础

网络学习资源

• GSDzone.net• NI Developer Zone

Page 59: 第三讲 LabVIEW 开发环境及程序设计基础

启发 : 一些 LabVIEW 软件小游戏演示

Page 60: 第三讲 LabVIEW 开发环境及程序设计基础

俗话说“师傅领进门 修行在个人”,程序设计的学习尤其如此 . 希望大家利用好参考书和网络学习资源,学习借鉴 . 但最重要的是多动手尝试,从而深刻领悟图形化编程之道

Page 61: 第三讲 LabVIEW 开发环境及程序设计基础

作业

• (准备一个题目 , 利用目前所掌握的编程技术完成 )

• 课后推荐自学内容 : 文件操作