自动检测技术与人工智能之虚拟仪器与Labview——笔记

虚拟仪器及Labview

第一章——学科概述

学科概述

  • 多学科知识综合
  • 应用范围
    理工科专业的测量应用,包括:电工电子、机械、力学、物理、化学、生物、化工、水利、汽车、环境、工物
  • 什么是虚拟仪器
    官话:虚拟仪器(Virtual Instrument——VI)——计算机化的测量仪器,是计算机与相关面向仪器的软、硬件产品的有机结合。
    使用者通过友好的图形界面即虚拟仪器的前面板操作计算机,就像在操控自己定义、设计的测量仪器一样,并可以方便地组合、更新和扩展它,从而更快捷、更经济、更灵活地解决各个领域的测量和自动控制等应用问题。
  • 什么是Labview
    官话:LabVIEW( Laboratory Virtual Instrument Engineering)是用于计算机化的仪器设计用的编程工具软件
    具有图形化编程语言特征,人机界面友好,功能函数库丰富、强大,被工业界、学术界和高校科研教学实验室等广泛认同,被视为一个标准的数据采集、仪器设计及控制的优秀工具软件。是多种计算机化仪器设计工具软件中最成功的一种。
    个人理解:
  • 区分虚拟仪器与Labview
    虚拟仪器即虚拟的仪器,只是一个概念。虚拟仪器不等于Labview,Labview可以说是虚拟仪器产品,是一个实际Windows软件产品,由美国国家仪器(NI)公司研制开发。所以说,Labview是虚拟仪器概念的具体实现,并实际投入工程使用。
  • 为什么要使用虚拟仪器产品
    一个招标项目,为了快速成型,虚拟仪器产品有时候可以排上很大的用处。虚拟仪器产品如Labview,依托Windows操作系统,首先其上位机有友好的人机交互界面(可轻松实现数据波形曲线、命令操作控制等);图形化的编程环境和高度集成的虚拟仪器对象极大降低了项目编程难度;依托于Windows操作系统的计算机其CPU性能更高,数据处理能力更强;
    虚拟仪器产品是一套设备,包括软件平台(Windows操作系统、Labview等)和硬件基础设备(数据采集板等,计算机等),这一套设备成本投入下来,工程师便可以结合具体对象快速地给出大型工程问题的解决方案,随之而来的就是经济回报。

    Labview基础

    Labview应用程序的构成

  • 前面板(front panel)
    在前面板上,只能看到输入控制量和程序运行结果即输出; 虚拟仪器程序即VI的图形化设计则在框图面板上进行。
  • 框图(框图面板;后面板)

  • 图标/连接器(icon/connector)

    LabVIEW的编程环境——操作选板

  • 工具面板
  • 控件面板(前面板里)
    用于向前面板添加各种输入控制对象和各种输出显示对象。
  • 前面板工具条
  • 函数面板(后面板里)
    是为VI编程提供图形化的各种功能函数的选择模板。只有打开了框图窗口(即框图面板/后面板),才能显示函数选板。
  • 后面板工具条

    编程举例:求平均数

  • 注意
    前面板两个数值输入、一个数值显示,则后面板自动会出现相应的编程组件,仔细观察组件的箭头在组件框的左边(代表要有数据输入,接上一个数据输出口)还是右边(代表要有数据输出,接下一个数据输入口)。
    除法模块,上面是被除数,下面是除数

    其他功能

  • 调试技术

    找不到按钮可以参考上一小节的操作面板的详细图解。

  • 执行加亮
    单击框图面板上的加亮按钮;节点间的数据流动便以在连线上移动的气泡来表示。

  • 单步执行
    单击框图面板上的“单步步入”或“单步步过”钮以观察VI运行的每一步动作;与执行加亮结合使用效果更好

  • 探针工具
    检查VI运行时的即时数据。必须在数据流动之前加设——在希望探查的数据连线上弹出快捷菜单、选择“探针”(就是先把光标放在线上在右键选择探针)或用工具模板上的探针工具,单击数据连线,均可增加探针。
  • 断点
    用工具模板上的断点工具为程序中的子VI、节点或连线等添加断点。程序运行到断点处会自动中止,可在此处开始作单步运行、使用探针探测即时数据,等等。
  • 修改图标和建立连接器(用于构建子VI)
    修改图标:为构建子程序,可对默认图标进行修改,以获得更能说明子VI功能的图标。具体地,用鼠标右键单击前面板或框图面板右上角的默认图标,在弹出的快捷菜单中选择编辑图标,即打开了图标编辑器窗口(其中,左为工具;中是编辑窗;右是黑白、16色、256色;确定/取消键)。
    建立连接器:用鼠标右键单击前面板的图标窗格,从其快捷菜单中选显示连接板即可打开连接器窗格,从而可设置连接器端子的连接模式(36种,默认);利用鼠标指针在连接器端子与前面板上的控件建立连接,并在连接器左端口弹出快捷菜单,选择“接线端类型”子菜单下的“必需”选项。


    内容总结

    本节主要介绍了:
    Labview程序组成
  • 前面板
  • 框图(框图面板;后面板)
  • 图标/连接器
    Labview编程面板
  • 操作选板:工具选板,控件选板,函数选板;
  • 前面板和框图面板工具条;
  • VI调试技术:连线,执行加亮,单步执行,探针工具,断点,着色,等等。

    第二章——程序结构

    循环结构

    while循环

  • 函数选板-> 编程 -> 结构
  • 先执行后判断(即先DO再循环端子加一再进行判断)
  • While可以嵌套
    举例:构建一个可显示随机信号波形的虚拟仪器程序即VI,其速度应可调

    注意:
    自由文本显示标签不属于任何对象,在前面板双击鼠标即可创建。

    For循环

  • 函数选板-> 编程 -> 结构
  • 先判断后执行

    循环结构内外之间的数据交换

  • 执行循环前,读数一次;循环结束,才输出

    自动索引

    While循环和For循环都具有自动索引功能。当把一个数组(有关知识稍后介绍)连接到这两种循环结构的边框上时,会在边框上生成所谓可流动数据的隧道。生成隧道后,可选择是否打开自动索引功能。如果隧道的自动索引功能被打开,则数组将在每次循环中顺序经隧道送过一个数;该数在原数组中的索引(地址信息),与当次循环计数端子的值相同。
    While循环的自动索引被默认关闭;For循环自动索引被默认打开。
    隧道小方格呈空即“[ ]”,自动索引功能被打开;呈实心,则被关闭。


    若For循环接入多个数组且均自动索引,同时循环总数端子也接入一正整型常量,其循环次数取最小值。现况下,For循环的循环次数由数组元素个数确定。
    而While循环的执行次数,仍然由条件端子决定。

    自动索引(举例)


    注意:
    一个数组框里在拖进一个数值输入框,然后横纵拉边框即可拓展数组维度

    移位寄存器

    功能:把当前循环完成时子框图程序代码执行结果的某个数据,传递给下一次循环的开始作输入
    左右边框弹出快捷菜单可建立一对;输入可多个,但输出只一个。

    或者直接这样拉就可以

    条件结构

  • 函数选板-> 编程 -> 结构

    也就是说,一个情况下对应一个框图,可以通过增量按钮进行切换界面

    分支标签时,可以按列表和范围指定:列表的各子项之间以英文的逗号分开;范围则用连续的两个英文句点表示。此示例结构有4个分支。
    条件结构也称分支结构,其快捷菜单(在其边框上任意处右击鼠标即弹出;不同分支结构的基本操作相同)中的部分有关选项如下:

    条件结构的输入/输出隧道:
    向条件结构内引入连线,或从其内部向外引出连线时,会在其边框上生成隧道;输入隧道在每一个分支中都可以使用;输出隧道必须从每一个分支都得到明确的输入值,否则程序无法运行。

    顺序结构

  • 函数选板-> 编程 -> 结构
  • 顺序结构的两种类型:层叠式顺序结构;平铺式顺序结构

    1.层叠式顺序结构及操作:——从其边框弹出快捷菜单

    选中边框后右键添加帧,添加完之后就看能看到框顶部的选择器标签
    层叠式顺序结构伴有一种称为局部变量的功能,用以在不同帧之间实现数据传递。送入(置入)局部变量的数据,在当前帧之后的各帧中均可作输入数据使用。
    如何生成局部变量:点击边框快捷菜单,添加局部变量

    为与外部交换数据,顺序结构的边框也会产生隧道。输入数据在顺序结构运行前读入,其各帧均可利用;在本顺序结构执行完后,才能且只能从其最后一帧输出数据
    2.平铺式顺序结构及操作:无局部变量!(无需)


    3.层叠式顺序结构与平铺式顺序结构的相互转换
    边框上右键替换为层叠/顺序式顺序

    公式节点

    必要性:对拟采用的复杂算法,若完全依赖图形代码进行编程,会过于繁琐。针对此,LabVIEW中专门设立有以文本编辑形式实现程序逻辑的所谓“公式节点”。
  • 函数选板-> 编程 -> 结构
  • 公式节点代码文本的语法与C语言十分相似。
  • 公式节点中,可以直接使用LabVIEW预定义函数和操作符。
    通过输入、输出端子与外部交换数据
    在左边框上弹出快捷菜单,选择“添加输入”,添加输入端子;
    在右边框上弹出快捷菜单,选择“添加输出”,添加输出端子。

    注意:
  • 端子名称必须与公式节点中的变量名称相同。各输入端子不能重名;各输出端子也不能重名;
  • 变量名对字母的大小写敏感

    事件结构

  • 函数选板 -> 编程 -> 结构
  • 以图形化方式响应和处理用户的操作;与Windows操作系统的事件处理方式相似。

    事件结构的组成:
  1. 上边框中间是事件选择标签,用于标识当前显示的子框图(第0个)所处理的事件源;(事件源添加可以选中边框右键添加时间分支然后选择事件源)
  2. 事件数据节点,为子框图提供所处理事件的相关数据;
  3. 事件超时端子,隶属于整个事件结构,用于为超时事件提供超时时间参数。

    定时结构

    定时循环一般用来解决周期性的轮询操作,省去了手动添加定时器的麻烦。
    定时顺序一般用来解决周期性的顺序操作。

    第三章——数据类型及其操作函数

    除整数、浮点数、布尔数和字符串等基本数据类型以及相应的运算、操作外,LabVIEW中还提供有几种复合数据,包括数组、簇和波形,以及对它们进行操作的函数。灵活使用这些复合类型的数据及相应的操作函数,可简化程序代码,方便虚拟仪器即VI的编程。

    数组

    数组的创建(1)
    1)创建数组框架(输入、显示、常量,三种类型);
    2)向数组框架中添加“元素”,以确定数组元素的数据类型;
    3)以拖动方式操作,可确定数组的可视大小;
    4)给数组赋值(指定具体元素)。
    数组输入控件和数组常量可作为数据源;数组显示控件则作为数据流动的目标容器。
    数组显示框架(前面板):
    (前)控件选板->新式->数组、矩阵与簇->数组;
    数组常量框架(后面板):
    经函数选板 -> 编程 ->数组 -> 数组常量找到。

    数组的创建步骤:
  4. 建框架
  5. b)向框架的元素区域中添加数据类型“元素”(不论输入、显示还是常量)
  6. 调整元素的可视大小和个数
  7. 赋值;改变数组元素的默认值
    默认值的设置方式:在某号元素上右键弹出快捷菜单,选择“数据操作” ->“当前值设置为默认值”。
    索引(坐标、下标)从0开始
    数组的快捷操作(这里,以数组常量索引区的快捷菜单为例):选中边框右键即可看到。
    数组的行、列、页

    注意:一般来说,任何类型数据的输入、显示控件和常量,均可用来定义数组的元素类型。但是,数组、子面板控件(控件->新式->容器->子面板)、选项卡控件(控件->新式->容器->选项卡控件)、ActiveX控件、波形图表、XY 图等不能作为数组的元素

    注意:索引区域显示的值,永远是元素区域所显示的左上角元素的索引值(即元素下标;从第0页、0行、0列记起) 。

    数组操作函数
  • 数组大小
    函数选板->编程->数组子选板
    如果输入“数组” 是一维的,输出“大小” 便给出一个整数值;若输入“数组”是多维的,则输出“大小” 提供的(也称返回的)就是1个一维的整型数组,其每个分量对应输入数组中相应维的长度。 (就是几页,几行,几列)
  • 索引数据
    “函数”选板->“编程”->“数组”子选板

  • 初始化数组
    “函数”选板 ->“编程” -> “数组”子选板

    功能:创建n维数组。每一维的长度,分别由“维数大小 0”~“维数大小n-1”这n个输入端输入的数值确定。刚创建成仅一维,拖曳其图标下边框,可增加输入端子数,从而创建多维数组;且数组刚创建成时,其每个元素的值均与“元素”端子输入的值相同。
  • 创建数组
    “函数”选板 ->“编程” -> “数组”子选板
    功能:将若干个输入数组即“数组”与“元素”组合成一个数组。该函数图标上弹出的快捷菜单中有“连接输入”选项 ,当它被选中时,该函数输出端会提供将所有输入连接在一起的结果,此输出数组的维数,与所有输入中的最高维数相同;该选项被关闭,所有输入的维数必须相同,该函数输出的数组比输入(数组)高一维;若所有输入均为标量, “连接输入”选项被自动关闭,函数输出一维数组,按顺序输出所有输入的参数(作为它的元素)。

    左边一个索引(行或者列向量)对应的一维数组
    左边两个索引(行列)对应二维数组
    左边三个索引对应三维数组
    注意:在没有进行连线的时候,设置连接输入选项。选项关闭,所有输入维数必须相同。

  • 这边有点小问题!!!
  • 数组子集

    功能:输出(返回)输入的数组中从“索引”参数指定的位置开始、由“长度”参数指定长度的数组子集。每个“索引”与一个“长度”构成一对;“索引-长度”对的数目与输入参数“索引”的维数相同;输出“子数组”的维数,也与“数组”的维数相同。
  • 其他函数
    求数组的最大值和最小值
    数组的转置
    数组的排序
    数组的移位
    数组的反转
    抽取一维数组
  • 操作函数的多态化(理解为智能化,懒人化,友好化,必要化)
    多态化是指一种函数功能,即它可以协调/接纳不同格式、不同维数或不同显示模式的输入数据。在 LabVIEW中提供的大多数功能函数均是多态化的。

    簇(有容乃大,啥都能包含)

  • “函数”选板 -> “编程” -> “簇与变体”子选板
    簇可以包含任意数目、任意类型的元素。簇不能在运行时添加新元素(而数组的长度在运行时可以自由改变)。簇类似于C语言中的结构(structure)。
    簇与数组最明显的区别是,一个簇中的所有元素,不必同时为输入控件、显示控件或常量。但数组则不然。

    簇(Cluster)的创建

    a)创建簇框架;
    b)向簇框架中添加元素;
    c)拖动确定簇的可视大小。
    簇输入控件和簇显示控件的框架在(前)控件选板-> 新式->数组、矩阵与簇子选板上;(前面板)
    簇常量的框架,则在(框图)函数选板->编程->簇与变体子选板上 。(后面板)

    簇元素的顺序

    在簇中,元素有一定的排列顺序,该顺序即为创建该簇时添加元素的顺序。簇元素的排列顺序很重要,是完成很多操作的依据。
    改变簇中元素的排序:在簇框架上弹出快捷菜单,选择“重新排序簇中控件…”,即打开了簇元素顺序编辑状态。簇元素上有两个序号,左侧反显的为新序号;右侧加灰的是旧序号。单击簇元素之一,将把该元素设置为第0号元素;对其他重复此过程,直到改好所有元素的顺序,点击上方工具栏OK按钮,确认所做修改。
    在簇边框上弹出快捷菜单,选“自动调整大小”子菜单,可实现下图所示的所需操作。

    簇操作函数

    “函数”选板 -> “编程” -> “簇与变体”子选板
    捆绑
  • 将所有输入元素打包成簇。(元素均是“常量”,但可为不同数据类型)
    替换新簇
    解除捆绑
    大概就是组合拆散成个体
    按名字打包(捆绑)
  • 按标签替换“输入簇”中的元素;替换结果从“输出簇”提供出来。
  • 添加标签:在对象(簇某元素)上弹出快捷菜单,从“显示项”子菜单选中“标签”,可为对象添加标签。
    按名称解绑
  • 把输入簇中的元素按标签解除捆绑。在函数输出端,只能获得拥有标签的簇元素。
  • 函数初建时,只有一个输出端子;单击其标签域,可弹出带有标签的簇元素的列表;必须对其分别建立相应的显示器。

    簇与数组相互转换

    簇转数组
    功能:把所有簇元素按顺序组合成一维数组经“数组”端子输出。 显然,它要求簇的所有元素的类型要相同。
    数组转簇
    功能:把“数组”端子输入的数组中的元素,按顺序捆绑成簇,并经“簇”端子输出。

波形

波形的创建(输出、显示)

路径:控件选板 ->“新式” ->“I/O ”子选板
波形数据含有4个组成部分:

  • t0为时间标识常量类型,表示波形数据的时间起点;
  • dt属于双精度浮点类型,表示波形相邻数据点间的时间间隔,以秒为单位;
  • Y是双精度浮点数组,它按时间顺序给出整个波形的所有数据点;
  • “属性”具有变体类型,用于携带任意的属性信息。

自动调整X、Y、图例大小




可以验证香浓采样定理:示波器的采样率必须大于2倍的待采集信号的频率
可以验证在待采集信号的频率确定时,提高采样率可提高信号复现的完整性,采样数仅仅影响采样过程的所需时间并不影响采样率。
自动进行缩放,免去手动布局。

删除数值控件自带的增减按钮