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)
- VI的内容(图形化源代码)
- Front Panel
- Block Diagram
- Icon / Connector Pane: 将VI作为子VI时,需要图标以及连接端口
-
Front Panel 前面板
模拟仪器的图形界面GUI,只有- Control and Indicator: 输入输出/输入控件显示控件
- Label
- Decoration
-
Block Diagram 程序框图
程序框图对象包括接线端、子VI、函数、常量、结构和连线。用Ctrl + E
打开。- Terminal: 接线端,即前面板的输入输出。
- Constant
- Node:函数,子VI,结构,单个节点
- subVI: 需要Icon/Connector Pane
- function
- structure: Case/Event/Loop等等。其中的子代码部分称为subdiagram。
- Wire:连线
-
浮点数 橙,整数 蓝,字符串 粉, 布尔 绿 等
-
Scalar 细线, 1D-Array 粗线, 2D-Array 双横线/更粗线
-
错误提示: 颜色1 X 颜色2:可以看出输出到输入的传值类型错误。比如Bool传给Numeric。
-
- Label
- owned label
- free label
- Bookmark:加#,可以在bookmarks manager中找到
- Subdiagram label: 在VI中的子结构的标签
-
- 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
- Front Pannel和Block Diagram都有的按钮:
3 Express VI
蓝色背景的VI。预设了很多参数和接口。在大型项目中大量使用并不好,因为Express VI涉及很长的流水线,往往不确定后台发生了什么。而且资源占用量更大。
4 Help
-
Context Help: 显示数据类型
Ctrl + H
-
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
-
Quick Drop
Ctrl + Shift + Space
二 [L2] Data
1 Data Flow
- 只要是平行的相互无依赖的Node 是不确定先后/同时开始的
- A-B,A-C, BC是平行的;A-B,A-C-D,BD也是平行的。进程Scheduling不确定。
- 简单地说,一条支路上才能比较先后
- 当一个node的输入都齐全时才会运行,当运行完成时才会有输出。
terminal/constant 不是 node
2 Data Type
-
Bool
Mechanical Actions- Switch when pressed / Switch when released / Switch until released
- Latch when pressed / Latch when released / Latch until released
(图标中m代表mouse v代表value RD代表read)
Latch 在read区间内不改变,至少维持一个read区间,起始是鼠标点击时,第n次read的时候如果mouse改变了就改变
read表示程序跑到这一node了,比如循环中下次经过这个节点时,比如程序被延时wait(ms)后不会自动弹起
Latch when released 常应用于对话框或者系统确认按钮,点了以后自动恢复的 - Numeric
- Int
U8 0 to 255
I8 -128 to 127 (10000000)2=-128
I/U 16 32 64 - Float:
fixed,single,double,ext
Complex:
single,double,ext- Coercion 不同的类型连接在一起操作,比如类型A+类型B
-
Int 和小数 没什么大问题,Int会转换成小数
- Unsigned 和 Signed 有大问题
- I16 自动换算成 U16 就很难找出错误
- 范围绝对值大的类型 覆盖 小的类型: U8 255, I8 128 coercion dot 提醒 有自动转换问题
-
蓝色的coercion dot 和浮点数计算精度有关。
- 除了数学运算 Typ Def 等情况,也可能出现Coercion Dot:Coercion Dot
- Int
- String
- Display Style 只是style:普通显示,code显示,密码显示,ASCII显示(16进制代码)
- Case sensitive 可以关闭
-
Enum 备选框
-
enum:枚举型,unsigned 16bit Integer,在case中可以显示 String ,值是连续的整数
-
ring:文本下拉列表,值可以更改
-
Enum也会出现coercion dot 详见 Labview02 状态机
-
-
Dynamic:ExpressVI的输出信息
-
Path: 比string好,如果切换操作系统,能自动转换
- Waveform:棕色 含有t0, Δt, [y]。也就是横轴为t,间距相同Δt,打点y数据。
3 Data Structure
(详见Labview02 数据结构)
- Scalar
- Array
- Cluster
- Error
三 [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
- Error List
- Execution Highlighting
- Probe
- Single Stepping
- labview会假装平行的block都是同时开始同时结束的
- 多用于SubVI
- Breakpoint
- Retain Wire Values
- after execution completes
Error and Warning
- Type:
status: bool
code: I32 非0
source: string
status: true: error; false: warning - Error Handling
- Automatic Error Handling
- VI运行时如发生错误,LabVIEW会自动中断执行、高亮显示产生错误的子VI或函数,并弹出错误对话框。
- Change the configuration settings in the
Tools » Options
- Manuell Error Handling
- Simple Error Handle.vi
- Automatic Error Handling
- Merge Errors
返回按上下列表顺序遇到的第一个Error,并不是按时间顺序发生的第一个Error。如果没有Error 返回第一个Warning。 - Errors and Warnings Recommendations
Simple Error Handle的弹窗提示方式
注:部分图片来源
https://knowledge.ni.com/
https://zone.ni.com/
https://www.ni.com/images/gettingstarted/