Labview虚拟仪器程序设计笔记 - 图文
更新时间:2023-11-27 21:04:01 阅读量: 教育文库 文档下载
第一章 Labview综述 注意事项:
1.数据流驱动:从左至右 2.数据连线颜色代表:
1.while循环执行后外界数据接不能传入循环内,封闭性的。 2.注意簇的元素的排列顺序。
3.局部变量,全局变量,共享变量,值属性节点会破坏Labview的数据流。 4.枚举常量仅在程序框图可见,在前面板不可见。
5.使用局部变量控制布尔开关时,按钮只能使用机械动作中的转换模式
6.Labview多线程:将没有直接数据连接的程序块单独创建一个线程,将各个模块放到循环结构中并行执行而实现多线程。
7.子VI前面板进入内存的原因是:前面板打开、VI修改后尚未保存、前面板数据打印、程序框图中有数性节点。
8.While+条件结构,while+事件结构
9.自动索引功能在for循环中默认打开,whil循环默认关闭
10.While循环里面一定记得要加延时,特别是多任务时,不然会十分占用CPU
11.局部变量和值属性节点那个好?
同一vi最好数据流,其次局部变量,绝对不要使用值属性,子vi目前可用引用+属性节点或全局变量。
多使用移位寄存器,少使用属性节点值,尽量不使用局部变量 功能全局可以完全代替全局变量!
一般建议尽量少用局部变量,但就局部变量与“值”属性节点来说,局部变量的写入效率要比“值”属性节点快得多,
值属性只建议使用在程序启动的时候对于控件或显示器的初始化上。
当且仅当需要产生一个事件,以相应“值改变”事件时,才推荐使用值(信号)属性。 用属性结点会触发界面线程,使得程序界面被强制更新。如果一个大型程序的某个子程序中用了属性结点,本来子vi的界面的前面板是不需要用户看见的,但由于使用了属性结点而在后台进行强制更新,这样很显然会影响程序执行的效率。你写一个简单的程序验证一下
就
看
出
来
了
。
局部变量也不是越多越好,它使labview无法重用缓存,不得不开辟新的缓存区,可以尽量用移位寄存器等结构来强制内存重用。
同vi间用局部变量,不同vi间用引用+属性节点。
12.“局部变量”执行效率高,但占用内存多,“属性节点:值”带错误处理,可以更好的引导数据流,但执行效率较低。局部变量和值属性节点两个都不推荐使用, 两种都需要memory allocation, 导致执行效率过低, 尤其是property node - value, 因为它还引入了UI thread. 极力推荐功能全局变量或队列
13.
14.避免在循环外使用事件结构:下面这样是错误的!
15.因为直接赋值只能改变变量的值,而不能引起次变量的事件触发。如下图为错误编程:
解决办法就是:要软件触发事件,必须对变量右键->创建->属性节点->值(信号)进行赋值,
这样才能触发事件结构。
Labview调试方法:
1.高亮灯泡显示:
2.断点+探针+单步执行(用查看—工具选板来设置 )
Labview性能分析:
工具--性能分析
1.性能和内存分析窗口
2.显示缓存区分配:小黑点代表此处有一个数组的拷贝,尽量消除黑点。
Labview程序优化:
1.避免强制类型转换:前后数据类型一致,避免对大块数据如数组进行类型转换。
2.防止内存泄漏:一定要记得关闭文件引用和其他引用(VI server)
共享变量:和全局变量类似,但它可以在多个本地VI和网络应用程序中传递数值,还有数据缓冲功能。
功能性全局变量:仅运行一次的WHILE循环+未初始化的移位寄存器,使用移位寄存器保存变量的值,避免竞争冒险,用来替代全局变量由于每次读和写变量时,都是取自于while循环中的移位寄存器,因此能够避免了数据拷贝的问题(当然,全局性功能变量VI不能够设置为Reentrant可重载的)。由于功能性全局变量VI中加入了“错误簇”端子,因此使用ErrorIn和ErrorOut能够很好地避免“竞争冒险”问题。
从理论上说,功能性全局变量能够完全取代传统的全局变量。由于加入了“错误簇”和移位寄存器,避免了数据的重复拷贝。同时,使用枚举型控件(可以设置为Type Def.控件)能够使得整个程序结构更加清晰、明了,实现模块化程序设计的目的。
更多参见:http://liuhao815.blog.163.com/blog/static/23142978200961654226929/ 引用:相当于指针
程序结构 1.循环结构:
1、可以同时运行多个WHILE循环结构。
同时运行多个WHILE循环结构在C语言中是比较麻烦的,必须开辟多个线程,而LABVIEW是自动多线程的。LABVIEW不仅可以同时并行运行多个WHILE结构,甚至在每个while循环中可以同时运行多个数据流程。 多了同时运行的WHILE循环可以分成两类:
一类是一个VI中多个同时运行的WHILE循环。多个WHILE循环在同一程序框图中。
另一类是每个子VI拥有各自的WHILE循环,此时多个WHILE循环同时工作相当于WINDOWS的多窗口运行。
2、每个循环中必须增加延时函数,释放系统控制权。
如果在循环中没有延时类函数,将导致WHILE循环独占CPU,CPU占用率很快达到100%。
3、仅运行一次的WHILE循环+未初始化的移位寄存器。这就是著名的LV2(功能)全局变量。
移位寄存器:左边的为初值,运行一次后值赋给右边,下一次循环是,右值赋给左边,当循环结束后,右边输出最后结果值。可以不赋初值,可以输出每次结果值。
反馈节点:与移位寄存器相同可以直接互换。当移位寄存器连线太长太乱时,可以替换成反馈节点。
2.条件结构:
连接端:布尔 = if else
数值/字符/枚举 = Switch case
连接为数值时只能为整数,非整可以放大后在判断,如0.1放大10倍变成1.
【While+条件结构】:多任务并行,查询模式,程序效率低下!,条件结构里面的经常为子VI!
多按钮编程技巧:按钮必须是触发类型
提高while效率的办法:【等待前面板活动函数】
可以明显降低while循环次数。
标准状态机:可以选择从那一个状态开始进行执行,条件内容都指向了下一下,所以是连贯性的运行。
3.顺序结构:破坏并行运行机制和从左到右的数据流,不提倡使用!
1.平铺式
2.层叠式:借助局部变量进行帧之间的数据传递
通过人为控制数据依从来替代之:
正在阅读:
招标投标与合同管理实务试题(答案)04-29
nadcap - 图文09-27
自己整理的Linux课后习题04-28
市交通运输局健康防护工程工作总结08-04
高斯烟羽扩散模型再研究02-20
2016吉林省特岗教师考试历史备考:“中华民族的抗日战争”考点梳理二12-28
主语从句03-17
FZSAP-MM培训考试题-谢宝松06-18
【中国现代大案实录】失踪奇案05-26
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 虚拟仪器
- 程序设计
- Labview
- 图文
- 笔记
- 泸州部分学校前世今生
- “三自六不让”查摆剖析材料
- 128个扰码的小知识
- 河北省石家庄市2018届高三下学期第一次模拟考试英语试题含答案
- TCP-IP协议实验1-IP分组交付和ARP协议
- 高速公路环境保护监理计划
- 公务员面试试题
- xxxx学校廉洁文化进校园实施方案
- 地图分幅编号
- 2015年工程系列建设系统高级评委会评审通过人员名单:233人
- 算法练习题-分章节-带答案
- 什么决定了中国上市公司衍生工具的使用?
- 第六单元 完全竞争产品市场上价格和产量的决定
- 《小石潭记》选择题
- 省道二级公路工程施工组织设计(路基开挖)
- 营养师练习题3
- 高考最困难考点系列汇总:科普说明文阅读
- 甘肃省工业企业环境保护标准化建设暨环境信用评价工作方案(试行) - 图文
- 桩基高压线下施工规程
- 数学思维训练导引 - 图文