课件链接:https://wws.lanzous.com/iGAhtnt7fji
密码:ciqe

仅供学习参考,切勿用于其他用途。

Labview2018安装包:

下载链接:https://pan.baidu.com/s/1_eTPF-XQdnZOwEmrdtyLmg 
提取码:tttt 
安装教程:http://www.zhanshaoyi.com/9085.html

1.虚拟仪器的技术背景与基本概念

 仪器技术与系统的发展趋势

伴随着半导体技术、处理器技术、计算机总线技术、网络技术、软件技术等快速发展,仪器与测控系统出现了如下发展趋势:数字化 自动化 综合化 模块化 标准化 虚拟化 智能化 网络化

  • 数字化:模拟量转换成数字量并进行处理,具有精确度高、稳定度高,速度快,便于数字处理计算和远传等特点;摩尔效应驱动ADC的革新
  • 自动化:程序控制代替手动操作,提高效率,减轻操作者劳动强度. 自动化程度愈高,速度愈快
  • 综合化:利用一台多功能仪器代替多台单功能仪器系统,提高灵活性和可靠性,并降低成本,减小体积
  • 模块化:插卡或模块代替传统台式仪器,在系统应用时节省系统重复资源,减少体积和重量
  • 标准化:利用标准总线使仪器互联成系统或配备总线接口的仪器,相对独立仪器可减少系统集成时间,提高响应性和简便性.并行总线适合于本地/集中,串行总线适合远程/分布测试
  • 虚拟化:基于通用硬件平台,充分利用软件定义的仪器设备,例如用软件实现的软面板代替传统的仪器操作面板. 提高硬资源重用性和结构灵活性,降低成本、功耗、故障率等
  • 智能化:利用单或多处理器实现学习、识别、推理等功能,以使设备充分模拟人的智力能力, 特别适合故障诊断、识别等应用
  • 网络化:利用通信线路和设备将仪器连接成较大的复杂系统,共享资源,提高速率、灵活性, 适合于远程分布测试、维修、校准、培训等应用

2.以软件定义的模块化仪器系统

3. LabVIEW基本开发环境介绍

               

        

4. LabView程序设计基础

4.1 初识LabView——随机数与表盘

现需要实现如下功能:在labview中产生一个随机数,并让人能看见生成的是什么。

在第二节中,我们知道“前面板”相当于界面,“程序框图”决定程序的运行情况。这个显然在“程序框图”中寻找。显示生成的结果,在前面板显示。

        

由于篇幅有限,所有的控件不能一一展示,这里建议自己多动手试一试,或者查阅“帮助文档”。

选中的“随机数”是生成0~1的,我们想使其生成0~10,只需把随机数乘以“数值常量”10即可。

                   

在乘号后面“创建”“显示控件”,单击运行后就会在前面板显示。

        

这里,运行一次显示一次,那么,怎么让随机数一直生成呢?

对与需要一直循环的要求,需要使用while函数(学过C语言等编程语言的同学相信一看就懂)。while循环在程序框图函数的“结构”里。

在加入while循环后,需要在右下角创建个bool变量。

   

运行效果如下:

显然,这个生成的速度太快,我们希望他生成慢一点,这里需要在while循环里添加一个延时。

这里的默认的单位是毫秒(ms):

    

我们希望的是在前面板,动态的是圆盘指针:

这样,第一个项目就完成了。

4.2 正弦信号与噪声

生成一个正弦信号,并显示出来。

对信号添加噪声:

现在还是一顿一顿的,演示效果如下:

为了使它连续生成,加一个while循环:

运行效果如下:

关于波形图,也有很多参数可以调试:

4.3 噪声滤波

在上面添加噪声的波形图的基础上,进行滤波处理,快速VI里的滤波器如下图所示,具体模型的滤波器如右图所示:

                 

把噪声处理的信号与原信号合并在波形图控件中显示:

运行效果如下:

4.4 时间字符串

在前面板显示当前系统的日期、时间:

             

创建“日期字符串”、“时间字符串”的显示控件,并加入while循环,这样可以实现动态的时间显示:

运行效果如下:

4.5 简易计算器

在3.1中,已经初次体验了乘法,现在希望加减乘除都可以使用,怎么实现呢?

先设置一个”枚举“,在里面存储”加、减、乘、除“的名称。在前面板中选择枚举。

      

然后新建一个”条件结构“,用来存储计算程序。在条件中添加”加、减、乘、除“分支。

在每个分支中依次添加运算程序即可,下面用”加“来举例。

为了让它一直计算,即输入后就直接出结果,不用再运行,加一个while循环。

运行效果如下:

要想再练练手,做个厉害一点的计算器,带界面的,如下图所示,可以看我的另一篇博客:https://blog.csdn.net/txr152111/article/details/115369513?spm=1001.2014.3001.5501

4.6 初识数组——猜数游戏

现在要完成这样的一个功能:产生一个随机数,想知道在大于0.9的时候程序运行了多少次,并想记录到这时一共产生了哪些数。

在上面的案例中,通过显示控件显然每次只能显示一次,这时需要数组来存储,且需要一个while循环,在产生大于0.9的数之后停止.

   

4.7 数组与绘图(基础篇)

要求:在前面板显示一个单位圆。在前面板显示一个点按着圆轨迹”跑步“。

基本原理:画一个单位圆,横坐标x,纵坐标y。

x = rcosβ,y=rsinβ

这里的β是弧度值,弧度与角度的转化:

公式为:角度=180°×弧度÷π   弧度=角度×π÷180°

运行效果如下:

4.8 数组与绘图(进阶篇)

在3.7的基础上,需要达到这样的一个效果:在XY图中不再是显示一个点按着圆轨迹”跑步“,而是类似于用笔画画,前面的痕迹留下来。

为了实现这样的效果,选择使用“移位寄存器”

首先移位寄存器是一个寄存器,用来存储数据。而他的特殊之处就是循环结束的时候进行存储,循环开始的时候读取上次循环结束时的数据。

以python来对比,n是寄存器

n = 0
for i in range(10):print(i)n += 3

移位的话,是一组绑定的寄存器,可以用list来模拟,新的值插入list的第一个元素,原有的值往后移动
labview中新建一个移位寄存器相当于创建一个长度为1的list,增加端子就是增加list的长度

n = [0,0,0]
for i in range(10):# 一个移位寄存器的三个端子n_first = n[0]n_second = n[1]n_third = n[2]print(n)# 操作移位寄存器n_first += 3# 最新值传入移位寄存器n.insert(0, n_first)n.pop()result:
[0, 0, 0]
[3, 0, 0]
[6, 3, 0]
[9, 6, 3]
[12, 9, 6]
[15, 12, 9]
[18, 15, 12]
[21, 18, 15]
[24, 21, 18]
[27, 24, 21]

在上面3.7的基础上,为实现相应的功能,基本思路如下:将每一次产生的数放在数组里(即保留痕迹),然后再在XY图中显示

运行效果如下:

4.9  LabView画三维图——花瓶(基础版)

可以参考这个大佬的文章:https://blog.csdn.net/weixin_44543463/article/details/115510775?spm=1001.2014.3001.5501

最终效果如下:

                  

这个花瓶的本质是:轮廓沿引导线扫描

思路如图所示:

就是在X-Y平面画圆,然后半径关系随着z的增大而变化,变化规律为sinβ。

首先找到三维曲面的位置:

哑铃状是这样的:

运行效果如下图所示:

不细看的话。效果还不错。但是,这个图是有漏洞的,真的是漏:

而且在上面的基础上,还是没有底的。

4.10  LabView画三维图——花瓶(进阶版)

在这一节,我们要求做的效果就是吧那个缝给补上。

为什么有那个缝?是不是因为没有绕完整?那么多绕几圈行不行(循环该为720)?

事实上,这不是因为绕的次数问题,即便绕3600次,也没有用。

我们已经知道,这个通过一个个点连起来,所以能画图,如下图所示:

四个不同的点只能连三次,要想连成一个封闭图形,需要五个点,其中第五个点是第一个点的重复使用。

      

简单来说,就是把第一个点放在队尾,这样即可“女娲补天”。

在Labview中,如何实现呢?

这里需要两个小函数,分别是创建数组与数据索引:

查阅帮助文档,可以了解到:

现在,我们来升级编程:

因为要提取首位元素放到队尾,因而需要一个容器。这个容器就是数组。因为X、Y、Z需要相同的类型才能输入到三维图中。

另外,值得注意的是,X、Y、Z三个数组需要维数相同,这样才能补好漏洞,不然默认取最小的维数为标准。这样的话,放在队尾的首位元素值就“失效”了。

运行效果如下图所示:

这样就没有了缝隙!!补天成功!

那么,下面我们想做个有底有顶盖的,那么我们如何实现呢?可以根据这个例子思考一下,具体的方法敬请期待!!

4.11 LabView画三维图——花瓶(完全版)

如何给“花瓶”补上底或者盖呢?

答案依然是“补点”。

在首位元素和末尾元素补上零点,就可以得到一个有顶有底的花瓶。

       

由于太密集,可以把点便少点,这样看的更加清楚。

4.12 三维“水管”思路

1.可以画出螺旋管,就像是弹簧那样,这在数字化方法基础中实现过,可以找出来,那c++代码转化成labview写出来即可

2.可以利用微积分中的曲面方程,确定好X、Y、Z的函数关系,生成X、Y、Z的数组输入到三维图中,即可

忘了的可以复习一下微积分该章节的相关知识:https://wenku.baidu.com/view/a0e9721ca76e58fafab00316.html

3.堆圆。就是单独生成一个个的圆,然后控制着圆心按着一定的轨迹进行移动。

4.13 会走的几个连续点

在这一节,需要做到这样的一个效果:在一个较长的sinx的曲线上,有几个点(连续的)按着轨迹走动,作出一种动态效果。

这个大佬作为每天上同一节课的同学,也写了相关的知识:https://blog.csdn.net/weixin_44543463/article/details/115661093

这里,我用我的方法来讲解该目标如何实现:

首先,需要生成要走的轨迹。这里生成的是10个周期的。

“小玩意”在曲线上跑,事实上,就是两个元素,一个是不动的曲线,一个是——队头总在取下一个点,并删掉队尾的点。

要想两个同时在波形图中显示,动态数组需要和生成的不动曲线维数相同,这样才能同时导入波形图中。

为了直接计算数组的大小,可以使用“数组大小”这个函数。

                

NaN:Not a Number。使用时直接创建常量输入NaN即可。在绘制曲线时,NaN不会被显示在波形图上。

在前面板需要修改曲线的格式,这样使得效果比较明显。否则可能程序是对的,但是就是看不出来。

最后运行效果如下:

上面的程序还可以进一步地优化。

4.14  记录痕迹  用鼠标画画(基础版)

这一节里,有点像QT中的鼠标事件。这一节里,需要学到一些新的控件。

这一节的目标是:在一个空白的画板上,当鼠标左键按下的时候,在画板画画。再创建一个按钮,用于清空刚刚画的东西。

                        

尤其这一节有点难,我自己也忘了不少,所以就写细一点。

首先创建一个while循环。再从前面板创建一个二维图片。

再创建二维图片的属性节点,并选择鼠标。Button Down即为鼠标按下的时候。

       

在鼠标按下为真时,画出点,即需要添加一个条件判断。

运行效果如下:

4.15  记录痕迹  用鼠标画画(进阶版)

在上一节,画上去的点只能瞬时存在,如何编程连续的,让画上的点连续地存在呢?

没错,移位寄存器。注意,条件为假时,也要修改,不然松开鼠标后

运行效果如下:

运行起来抖动地厉害,可以加上延时函数,效果会好点,不然刷新的频率太高。

4.16  记录痕迹  用鼠标画画(完整版)

在这一节,需要在上面3.15的基础上添加一个按钮。当画完后,按下按钮,画板会被清空。

现在前面板放置一个按钮控件。

运行效果如下:

4.17  涟漪圈圈扰我心

在这一节,我们先看效果:

首先,介绍几个新的控件。

思路:由于需要一直显示,来一个while循环。在二维图片中显示,在前面板中选择二维图片控件(3.14中有介绍),并创建它的鼠标属性节点。后面连接一个“按名称解绑”,以获得鼠标位置。需要显示鼠标的位置,创建一个显示控件。二维图片控件需要初始化,空白。

由于是创建一系列“涟漪”,所以创建一个For循环,使圈圈越来越淡,最终看不见。创建移位寄存器,用来显示具体显示多少个圈,这里选10个,方便后面透明度的计算。初始化。

创建数组,把通过移位寄存器产生的连续的一系列数存起来。再找到“醒目显示颜色”和“绘制点”。

记得上面的程序加上一个延时,我忘记加了,结果就是一顿一顿,看不出效果。

加上延时之后,看出效果:

具体的细节上面的还需要再调整,只是参数的问题。

4.18  状态机——点灯实验

先看一下要达到的效果:

在Labview中,任何一个状态机都是由三个基本部分构成:

(1)首先外层是一个while循环,用于维持状态机的运行;

(2)同时在while循环中包含一个条件结构,条件结构用于对各个不同的状态进行判断;

(3)第三个基本部分是移位寄存器,用以将下一个状态机传递到下一次循环状态判断中。

除了前面提到的三个基本部分外,状态机的构建还有一个技巧,就是使用枚举型常量来作为状态机变量,相对于其它数据类型来说,枚举型常量表示了两组成对的数据,一组是字符串,一组是数值。

在实际的工程状态机中,会遇到一个状态向多个状态转换的情况。一般来说,实现状态变量的选择有四个基本的方法。

(1)默认转换;无论这个状态执行的情况怎么样,都会无条件地转换到指定的下一个状态中。

(2)选择转换;利用真假选择函数来实现,在逻辑子VI输出为真时,跳入真分支的状态,进行state1,为假时,跳入假分支的状态,进行state2。

当下一个状态有可能是三个或三个以上的状态时:

(3)条件结构转换;条件结构的多个分支分别对应了不同的下一个状态值,根据逻辑判断子vi输出的结果,跳入不同的分支以选择不同的状态,当子vi输出1时,跳入state1;
(4)转换数组转换;条件结构虽然解决了多个状态选择的问题,但是从结构上来看不太直观,管理不够方便,因此可以把所有选择的状态放在数组中,通过逻辑子vi输出不同的索引值直接从数组中索引出下一个状态输出到移位寄存器。

下面,就来一起搭建状态机控制灯的程序。

现放一个while循环,并用一个停止按钮来控制while循环。

然后添加一个条件结构,设置三个状态,分别为“开始”“亮”“灭”。设置枚举常量,添加项“开始”“亮”“灭”

然后一次设置每一个条件分支的程序

       

运行效果如下:

程序逻辑如下:

初始条件的输入值为“开始”,进入“开始”的条件分支进行判断。

如果按钮按下,输出“亮”,并作为下一次条件的输入;
如果按钮未按下,输出“开始”,并作为下一次条件的输入,即保持原状态。
如果条件的输入为“亮”,此时条件输出“灭”,并作为下一次的输入。

如果条件的输入为“灭”,此时条件输出“亮”,并作为下一次的输入。

在“开始”和“灭”分支进行期间,为LED赋值False;在“亮”分支期间,为LED赋值True。

这样就实现了:启动程序后,程序一直循环执行“开始”分支,LED灯灭。按下按钮后,程序在“亮”分支和”灭“分支交替执行,实现LED灯的亮灭变化。
https://blog.csdn.net/weixin_44543463/article/details/115905756?spm=1001.2014.3001.5501

4.19 子VI

LabVIEW 中的子VI类似于C语言中的函数,如果学习过simulink的话,你还可以联想到子系统。如果在 LabVIEW 中不使用子 VI,就好比所有的代码都写在main函数里面一样,根本不可能构建大的程序;而且程序框图太大,布局根本不方便,因此很多情况下,我们需要把程序分割为一个个小的模块来实现,这些小的模块就是子VI,本节将简单学习一下如何使用子VI。

任何一个 VI 本身就可以作为子 VI 被其他 VI 调用,只是需要在普通 VI 的基础上定义连接端子和图标即可。下面通过一个简单的例子来学习如何创建子VI:

我们在前面的例子里反复使用一个角度转弧度的公式,就可以封装成一个子vi:

编辑 VI 图标。直接双击 VI 右上角的图标,打开 VI图标编辑器,对VI图标进行编辑,如下图所示:

建立连接端子。连接端子就好比函数参数,用于子VI的数据输入与输出。初始情况下,连接端子是没有与任何控件连接的,即所有的端子都是空白的,每一个小方格代表一个端子。右击该图标,选择模式下的三端子模式。先点击左上角小方格,再单击输入控件X1,就实现了该端子与控件X1的连接。这时候该小方格就会自动更新为该控件所代表的数据类型的颜色。同样方法将左下角小方格与控件X2连接,右边方格与显示控件Min连接。

左上角代表输入,右上角代表输出。

调用子vi:

5. 结束语

本篇到此将要结束,特别感谢刘今越老师的教导,以及潘政同学和马浩飞同学这两个大佬的帮助。也希望大家多多支持他们!

可能辛辛苦苦更新了这么久,只是给自己一个交代,留作纪念。若是不小心能帮到一些网友,深表荣幸,感谢CSDN平台。

欢迎大家留言,批评指正!

6.下载

相关案例程序

https://wws.lanzous.com/ijShporcoob
密码:4fp7

《传感与检测技术》课程笔记——虚拟仪器技术及应用LabView案例相关推荐

  1. 计算机虚拟仪器技术与测试技术相关的概念,测试技术与虚拟仪器

    测试技术与虚拟仪器 出版时间:2010年版 内容简介 <测试技术与虚拟仪器>介绍了传感与测试系统和基本测试电路,详细讲述了电阻式传感器.电感式传感器.电容式传感器及其他常用传感器工作原理. ...

  2. 虚拟仪器技术期末复习

    一.填空题 1.虚拟仪器划分为计算机.仪器模块和软件三大功能模块. 2.框图程序由节点,端口,连线三种组件构建而成. 3.数值型控件的常用属性有:标签.名称,数字显示 4.因为 For 循环的常用来处 ...

  3. 虚拟仪器的python实现_基于Python的虚拟仪器技术探究及实现.pdf

    第 20卷 第 l6期 电子设计工程 2012年 8月 V01.20 No.16 E1ectronic Desin Engineering g Aug.2012 . . . . . . . . . . ...

  4. 电子信息工程专业打工人的单片机原理与接口技术课程笔记

    文章目录 前言 一.单片机 二.时钟频率 三.单片机电路 1.时钟引脚 2.P3口 3.控制引脚 4.内部结构 四.C51编程语言基础 1.基本了解 2.具体实际 3.LCD1602 五.实际应用 总 ...

  5. 计算机应用技术课程本科,《计算机应用技术I》课程教学大纲(共本科29级用)().doc...

    <计算机应用技术I>课程教学大纲(共本科29级用)() 课程编号 <计算机应用技术I> 教学大纲 课程名称:计算机应用技术I英文名称:Computer Application ...

  6. 计算机虚拟仪器技术文献,文献翻译-基于虚拟仪器技术的温度测控系统设计.doc...

    附件A 英语原文 Design of PID Temperature Controlling System Based on Virtual Instrument Technique Author: ...

  7. 中南大学计算机科学与技术课程,中南大学计算机科学与技术专业本科培养方案.doc...

    中南大学计算机科学与技术专业本科培养方案 计算机科学与技术专业本科培养方案 一.专业简介 我校计算机科学与技术专业源于早期的电子计算机专业,该专业在1972年由当时的中南矿冶学院(全国重点大学)创办, ...

  8. 电大计算机科学与技术课程,大学计算机科学与技术专业(本科)专业课程设置及教学管理...

    二.课程设置及教学管理 1.教学计划中设统设必修课.限选课.选修课和集中实践环节.课程性质有统设.统设服务.自开等. 2.统设必修课由中央电大统一开设,执行统一教学大纲.统一教材.统一考试.统一评分标 ...

  9. 什么是VI?(虚拟仪器)

    VI是虚拟仪器的简写.在LabVIEW它是LabVIIW的一个程序.其扩展名为.vi 这类似C语言中的C. 虚拟仪器指具有虚拟仪器面板的个人计算机仪器,它可利用软件在微型机屏幕上构成虚拟仪器面板,在有 ...

最新文章

  1. 光伏电价断崖式下跌 企业遭遇成长烦恼
  2. java感谢_这三天看完Java入门第一季和第二季的成果!纪念一下!感谢Java入门的作者!...
  3. 如何基于Redis Replication设计并实现Redis-replicator?
  4. Android项目技术总结:项目中选择任务的联系人引出android的spinner的监听问题
  5. 程序人生:这5个程序员,改变了世界,你都认识吗!
  6. SpringBoot(十) :邮件服务
  7. springmvc controller动态设置content-type
  8. For in 详解
  9. 使用Keras框架进行单变量时间序列预测——以上证指数为例
  10. 文件服务器的未分页内存
  11. hutol json null值没了_详解Java去除json数据中的null空值问题
  12. Spring Boot 设置启动时banner
  13. CAPL可以读写的几种文件
  14. 程序猿必看10本好书推荐
  15. unity3d手游破解(一)
  16. [机缘参悟-6]:阳明心学三大核心思想:心外无物、知行合一、致良知的理解
  17. IE不支持使用for in语法
  18. 什么是机器人,机器人的发展主要经历哪几个历史阶段?
  19. python爬取千图网图片(出现HTTP Error 403怎么解决)
  20. 【NLP】Python NLTK获取文本语料和词汇资源

热门文章

  1. QT编程:QT int和float转QString
  2. ​拥有1.9亿年轻人的鲁大师进军元宇宙
  3. PL/SQL Developer常用命令快捷设置
  4. 什么是ocaml语言之ocaml语言入门
  5. 模式总结——模板方法
  6. Excel只选中有数字的行或列并删除的方法(详细)
  7. 如何更有效的发布招聘信息
  8. 程序员转型架构师推荐书籍
  9. 基于postCss的TaiWindCss源码解析
  10. 【MFC基础】20字体和颜色