Image by xresch from Pixabay

LabView-01

基础常识

Posted by Yvan on October 4, 2021

LabView

Labview是由美国国家仪器(NI)有限公司开发的IDE,编程语言为G,就是graphical programming language,是图形化编程,没有基于文本的代码,用于可视化数据流。与Matlab Simulink的区别在于[1]Simulink可以使用Matlab的文本代码,[2]Simulink注重仿真模拟,Labview注重测量控制和模拟仪器界面。can used to develop sophisticated measurement, test, and control systems.

Labview Core 1 参考资料:

Lvcore1-Participantguide-English from Scribd

Lvcore1-Participantguide-English from academia

Lvcore1-Participantguide-English Sample from NI Official Website

LabVIEW 基础 from NI Official Website

LabVIEW User Manual from NI Official Website

NI LabVIEW 基本介绍 from NI Official Website

一 [L1] File

Labview的项目中会有三种基本文件:

  • .vi: 虚拟仪器文件 最主要的文件
  • .ctl: 控制器文件 控制器(按钮,输入框等)的设定储存在.vi或.ctl中,当控制器被储存在.ctl中时,可以被自定义或赋予特殊的行为。(详见 Labview02 Type Definition)
  • .lvproj: LabView项目文件 储存文件、目标、硬件配置等信息。用Notepad打开是xml格式的。

1 .lvproj

一个项目文件可以用于管理项目内部的文件,部署程序为远程嵌入式程序,创建独立运行的应用程序或安装程序,集成LabView源代码控制程序。

Labview项目中可以添加两种文件夹:

  • auto-populated Folder:实际存在于硬盘中的文件夹及其内部结构
  • virtual Folder:虚拟结构

2 .vi / Virtual Instrument(VI)

  1. VI的内容(图形化源代码)
    1. Front Panel
    2. Block Diagram
    3. Icon / Connector Pane: 将VI作为子VI时,需要图标以及连接端口
  2. Front Panel 前面板
    模拟仪器的图形界面GUI,只有

    1. Control and Indicator: 输入输出/输入控件显示控件
    2. Label
    3. Decoration
  3. Block Diagram 程序框图
    程序框图对象包括接线端、子VI、函数、常量、结构和连线。用 Ctrl + E打开。

    1. Terminal: 接线端,即前面板的输入输出。
    2. Constant
    3. Node:函数,子VI,结构,单个节点
      • subVI: 需要Icon/Connector Pane
      • function
      • structure: Case/Event/Loop等等。其中的子代码部分称为subdiagram。
    4. Wire:连线
      • 浮点数 橙整数 蓝字符串 粉布尔 绿

      • Scalar 细线, 1D-Array 粗线, 2D-Array 双横线/更粗线

        DataType

      • 错误提示: 颜色1 X 颜色2:可以看出输出到输入的传值类型错误。比如Bool传给Numeric。

        image-20211010000245219

    5. Label
      • owned label
      • free label
        • Bookmark:加#,可以在bookmarks manager中找到
      • Subdiagram label: 在VI中的子结构的标签

      image-20211010001032908

  4. Toolbar

    • Front Pannel和Block Diagram都有的按钮:
      • run / run continuously
      • Abort Execution
      • Pause
      • Text Setting
      • Align / Distribute/ Resize Objects
      • Reorder(组合/锁定/前移后移)
      • Search / Help
    • 只出现在BlockDiagramm:
      • Retain Wire Values
      • Highlight Execution
      • Step Into/Over/Out
      • Clean Up

    image-20211010001225453

3 Express VI

蓝色背景的VI。预设了很多参数和接口。在大型项目中大量使用并不好,因为Express VI涉及很长的流水线,往往不确定后台发生了什么。而且资源占用量更大。

image-20211010001327756

4 Help

  • Context Help: 显示数据类型 Ctrl + H

    image-20211009234108959

  • LabView Help: Ctrl + ?

  • Examples: Help » Find Examples

5 Palette Search / Quick drop

  • Controls Palette for Front Panel

  • Functions Palette for Block Diagram: 按住 control 后拖拽可以自动连线

  • Tool Palette

    image-20211010011842080

  • Quick Drop Ctrl + Shift + Space

二 [L2] Data

1 Data Flow

  1. 只要是平行的相互无依赖的Node 是不确定先后/同时开始的
    1. A-B,A-C, BC是平行的;A-B,A-C-D,BD也是平行的。进程Scheduling不确定。
    2. 简单地说,一条支路上才能比较先后
  2. 当一个node的输入都齐全时才会运行,当运行完成时才会有输出。

terminal/constant 不是 node

2 Data Type

  1. Bool
    Mechanical Actions

    1. Switch when pressed / Switch when released / Switch until released
    2. Latch when pressed / Latch when released / Latch until released

    MAction

    (图标中m代表mouse v代表value RD代表read)
    Latch 在read区间内不改变,至少维持一个read区间,起始是鼠标点击时,第n次read的时候如果mouse改变了就改变
    read表示程序跑到这一node了,比如循环中下次经过这个节点时,比如程序被延时wait(ms)后不会自动弹起
    Latch when released 常应用于对话框或者系统确认按钮,点了以后自动恢复的

  2. Numeric
    1. Int
      U8 0 to 255
      I8 -128 to 127 (10000000)2=-128
      I/U 16 32 64
    2. Float:
      fixed,single,double,ext
      Complex:
      single,double,ext
      • Coercion 不同的类型连接在一起操作,比如类型A+类型B
      1. Int 和小数 没什么大问题,Int会转换成小数

      2. Unsigned 和 Signed 有大问题
        • I16 自动换算成 U16 就很难找出错误
        • 范围绝对值大的类型 覆盖 小的类型: U8 255, I8 128 coercion dot 提醒 有自动转换问题

        cdot1

      3. 蓝色的coercion dot 和浮点数计算精度有关。

        cdot

      4. 除了数学运算 Typ Def 等情况,也可能出现Coercion Dot:Coercion Dot
  3. String
    1. Display Style 只是style:普通显示,code显示,密码显示,ASCII显示(16进制代码)
    2. Case sensitive 可以关闭
  4. Enum 备选框

    img

    • enum:枚举型,unsigned 16bit Integer,在case中可以显示 String ,值是连续的整数

    • ring:文本下拉列表,值可以更改

      img

    • Enum也会出现coercion dot 详见 Labview02 状态机

  5. Dynamic:ExpressVI的输出信息

  6. Path: 比string好,如果切换操作系统,能自动转换

  7. Waveform:棕色 含有t0, Δt, [y]。也就是横轴为t,间距相同Δt,打点y数据。

3 Data Structure

(详见Labview02 数据结构

  1. Scalar
  2. Array
  3. Cluster
    • Error

AllData

三 [L2] Programming Tool

Tool Platte
Shift + 右键 / view » tool platte 用于连线,改变文字,选择选项,改变颜色等

Wire
选择一条线时 可以尝试 单击 双击 三击
一条线弯弯曲曲时 可以右键clean up
一些node排列乱七八糟时 可以框起来按clean up按钮

Label
见上方1.2.5 Label。给结构,长连线,常数加标签标明用法。如果是SubVI可以更改Context Help,而非添加label。

默认值

各种类型的数据有默认值,比如numeric是0, bool是false。用于Event/Case等子结构在输出没有连线的情况下,默认输出为默认值。可修改,但一般不修改。

四 [L2] Some Basic VIs

DAQ Assistant vs. Instrument I/O:
​ NI的设备 用 DAQ
​ 其他厂商设备 用 Instrument IO

Simple AAV VI Flowchart

五 [L3] Error and Debugging

Common Causes / Problems

Debug Tool

  1. Error List
  2. Execution Highlighting
  3. Probe
  4. Single Stepping
    • labview会假装平行的block都是同时开始同时结束的
    • 多用于SubVI
  5. Breakpoint
  6. Retain Wire Values
    • after execution completes

Error and Warning

  1. Type:
    status: bool
    code: I32 非0
    source: string
    status: true: error; false: warning
  2. Error Handling
    • Automatic Error Handling
      • VI运行时如发生错误,LabVIEW会自动中断执行、高亮显示产生错误的子VI或函数,并弹出错误对话框。
      • Change the configuration settings in the Tools » Options
    • Manuell Error Handling
      • Simple Error Handle.vi
  3. Merge Errors
    返回按上下列表顺序遇到的第一个Error,并不是按时间顺序发生的第一个Error。如果没有Error 返回第一个Warning。
  4. Errors and Warnings Recommendations
    Simple Error Handle的弹窗提示方式

image-20211010004457377


注:部分图片来源
https://knowledge.ni.com/
https://zone.ni.com/
https://www.ni.com/images/gettingstarted/