Presentation is loading. Please wait.

Presentation is loading. Please wait.

声明 本课件供《虚拟仪器技术》、《自动测试技术》等相关课程教师授课使用与参考. 教师可根据课程需要和实际情况在此课件基础上增删内容

Similar presentations


Presentation on theme: "声明 本课件供《虚拟仪器技术》、《自动测试技术》等相关课程教师授课使用与参考. 教师可根据课程需要和实际情况在此课件基础上增删内容"— Presentation transcript:

1 声明 本课件供《虚拟仪器技术》、《自动测试技术》等相关课程教师授课使用与参考. 教师可根据课程需要和实际情况在此课件基础上增删内容
本课件版权属NI(中国)公司所有,供中国大陆地区高校教师无偿使用或在课程中引用,但使用或引用之前请联系NI(中国)公司高校市场部获得免费使用授权 (联系方式 本课件不得用于公开出版或其他商业用途. 如需在公开出版物中引用其中部分内容, 请与NI(中国)公司高校市场部联系获得授权

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

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

4 LabVIEW的出现推动了测试技术的发展
从手工测试迈向自动化测试 使仪器和PC得以有效连接 有效降低了仪器控制的复杂程度 从此以后,软件在测控系统中发挥的作用越来越大 图片是LabVIEW的早期开发者之一的Jeff Kodosky (被称为LabVIEW之父) 通过LabVIEW对一台示波器进行控制

5 LabVIEW的发展 功能不断增加,效率不断提升 不断融合各种最新的技术发展,简化工程师在测控系统中利用新技术的复杂度 1990 1998
LabVIEW 6i 网络技术 LabVIEW 3.0 多平台 LabVIEW 2009 更高效率,机器人 LabVIEW 4.0 专业化开发 LabVIEW 8.20 20周年纪念版 简体中文版 LabVIEW 1.0 Macintosh 1990 1998 2003 2005 2008 2010 1986 1993 1997 2000 2006 2009 LabVIEW 2.0 编译语言程序 LabVIEW 5.0 实时技术 LabVIEW 8 分布式智能 LabVIEW 8.6 多核、FPGA、无线 LabVIEW 7 Express PDA 和 FPGA LabVIEW 2010 FPGA云编译

6 LabVIEW的本质是什么? 首先是一种编程语言 是一种针对工程师和科学家所设计的开发环境 只不过是图形化的而已
内置许多简化编程复杂度的功能和函数

7 LabVIEW作为编程语言的优势 基于数据流的自然思维方式,但同时也支持调用文本语言的代码 LabVIEW LabVIEW LabVIEW
Dataflow C / HDL Code Textual Math Simulation Statechart LabVIEW MPU/MCU LabVIEW Desktop LabVIEW `` Real-Time LabVIEW FPGA Personal Computers PXI Systems CompactRIO Custom Design Single-Board RIO 支持连接各种硬件,而且支持发布到多种Target

8 一个简单而典型的LabVIEW应用 采集 分析 表达 第4讲 数据采集与信号调理 第5讲 LabVIEW中的信号处理 第3讲
第6讲 LabVIEW程序设计进阶

9 LabVIEW基本开发环境介绍

10 VI —— LabVIEW程序文件的基本单位
VI (Virtual Instruments的缩写) 由三部分组成 前面板、程序框图(后面板)、图标/连线板

11 前面板 相当于界面 每个VI都有前面板 输入控件 Control, 相当于输入 显示控件 Indicator, 相当于输出 控件选板

12 程序框图 函数选板 图形化的程序代码 决定程序运行行为 可能包含元素 终端 子VI 函数 常数 结构 连线

13 程序框图中的连线 通过颜色、类型、粗细来表示不同的数据类型 不同数据类型之间的连线会产生错误 Ctrl+B可清楚所有错误连线
LabVIEW 8.6之后具有整理连线功能 DBL Numeric Integer Numeric String Scalar 1D Array 2D Array

14 前面板和程序框图的工具栏 LabVIEW程序的基本调试 查看编译错误 单步执行 布置探针 设置断点 可以结合一个非常简单的程序来进行演示

15 工具选板 一般LabVIEW会自动选择当前工具 连线、拖拽、文字… 利用工具选板可以强制选择工具 着色、设置断点…

16 LabVIEW程序设计基础

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

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

19 理解数据流 (没有固定答案) 哪个节点先执行? A) 加法 – 可能 B) 减法 – 不可能 C) 随机数 – 可能 D) 除法 – 可能
E) 正弦 – 不可能

20 一个简单的VI:采集、分析、表达 完全基于Express VI实现. 虽然是一个简单的程序,不过体现了许多虚拟仪器应用的程序结构: 采集、分析、数据表达

21 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

22 LabVIEW中的“分析”Express VI
Amplitude and Level Measurements Express VI 幅值和电平 Statistics Express VI 统计 Spectral Measurements Express VI 频谱测量 Tone Measurements Express VI 单频测量 Filter Express VI 滤波器

23 数据“表达” 显示控件 Express VI 其他功能函数 波形图、波形图标、XY图…
Write to Measurement File Express VI… 其他功能函数 数据库、网络通信…

24 基本数据类型1 数值型 整型 有些数据类型的本质也是整形,如枚举型 浮点型 可以更改数据表达方式 决定其占用的存储字节数及数值表达方式

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

26 基本数据类型2 布尔型 注意: 前面板对应的布尔控件有六种机械动作可选 可通过范例区别六种机械动作的不同

27 基本数据类型3 字符串 前面板控件可现实不同的显示方式 字符串操作函数选板
Normal, ‘\’ Codes, Password 以及 Hex 字符串操作函数选板

28 基本数据类型4 枚举型 本质上也可以认为是整型,不过取值范围有限 常与条件结构共同使用 枚举型变量作为条件结构的分支选择依据
某枚举型变量的配置对话框

29 条件结构 可以有多个分支,可以设置默认分支 类似于文本语言的 case 或 if…else if…else 结构 分支标签 分支选择端
分支选择可以是布尔、数值、文本等… 分支选择端

30 条件结构的输入和输出通道 输入通道可以只传递到某些分支 但各个分支的输出通道必须赋值

31 动态数据类型 主要是与Express VI结合使用的 如果与普通VI或函数共同使用,需要先进行类型转换
如果连接至数值、波形、或布尔型终端(输入控件或显示控件),可自动转换 不是最常用的类型,若课时有限,可不讲. 如果学生遇到问题再做解释

32 数组 当前显示的第一个元素所对应的索引 LabVIEW中的数组可以是1维的,也可以是多维的 每一维元素从0开始索引 数组元素

33 数组 在LabVIEW的前面板/程序框图中创建数组 在程序中对数组进行操作

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

35 创建簇 需注意元素顺序

36 LabVIEW中的循环结构 While循环 For循环 隧道 寄存器 For循环的条件终止

37 While循环 LabVIEW While Loop Flowchart Pseudo Code Repeat (code);
Until Condition met; End; LabVIEW While Loop Flowchart Pseudo Code

38 While循环 终止条件 (也可以是继续条件) 返回执行次数 (从0开始) 隧道 (Tunnel)

39 For循环 LabVIEW For Loop Flowchart Pseudo Code N=100; i=0; Until i=N:
Repeat (code;i=i+1); End; LabVIEW For Loop Flowchart Pseudo Code

40 For循环 可增加条件终止端

41 While循环和For循环的比较 For Loop While Loop 按照约定的次数执行 (除非增加了条件终止端) 可以一次也不执行
默认情况下,隧道输出的是一个数组 (需要禁用索引才能输出值) While Loop 循环终止执行由终止条件决定 至少会执行一次 默认情况下,隧道输出的是一个值 (需要开启索引才能输出数组) 这里可以结合演示说明

42 使用数组作为索引输入 可不定义循环次数,循环次数自动设置为数组大小 相当于每次循环就从数组中依次取一个数

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

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

45 移位寄存器的初始化 程序框图 首次执行 再次执行 初始化 Output = 5 Output = 4 Output = 8

46 移位寄存器的堆栈 可以“记住”前若干次循环的数据

47 延时 为何需要延时? LabVIEW中常用的软件定时VI 注意: 软件定时的精度通常为1ms左右 控制循环执行的频率
使处理器有资源处理其他任务 (如界面刷新等) LabVIEW中常用的软件定时VI 注意: 软件定时的精度通常为1ms左右 Wait 和 Wait Until 的区别没有必要用课时内时间向学生细讲,学生可参阅相关参考书,或当学生提出问题时,由老师做简要说明

48 波形图表、波形图、XY图 波形图和波形图表的区别: 波形图表(Chat)可以记录历史数据. 可以通过演示向学生介绍波形图表不同的刷新方式
同时告诉学生,通过属性编辑可改变波形的粗细、颜色等

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

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

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

52 程序架构 程序架构的重要性 好的程序架构可以简化编程和调试的复杂度 便于增加、扩展程序功能 代码更清晰,增强程序的可读性
就像盖房子,规划和框架设计非常重要

53 常用的一种LabVIEW程序架构: 状态机
典型用途 界面响应: 在程序运行的不同阶段响应不同的用户输入 状态控制: 控制测控系统在各种不同状态下的行为和状态转移

54 状态机的代码形式 由While循环和条件结构组成 状态由枚举型变量确定 每个状态都会转移到其他状态或本状态 While循环 移位寄存器

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

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

57 调试你的LabVIEW代码 找出编译错误 高亮执行 探针 设置断点

58 LabVIEW帮助 Ctrl+H

59 LabVIEW范例查找器

60 网络学习资源 GSDzone.net NI Developer Zone

61 启发: 一些LabVIEW软件小游戏演示 见附带的程序目录

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

63 作业 (准备一个题目, 利用目前所掌握的编程技术完成) 课后推荐自学内容: 文件操作


Download ppt "声明 本课件供《虚拟仪器技术》、《自动测试技术》等相关课程教师授课使用与参考. 教师可根据课程需要和实际情况在此课件基础上增删内容"

Similar presentations


Ads by Google