LabVIEW应用开发——VI模块化

这篇具有很好参考价值的文章主要介绍了LabVIEW应用开发——VI模块化。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

        我们在写C语言的时候,一些模块化的功能或者多次调用的功能,我们一般会用一个函数封装起来,方便使用并且让代码看起来更加的简洁。这种函数一般都会包含这几个概念,输入参数输出参数返回值。而LabVIEW的VI就可以当作是一个函数,输入参数就是输入控件输出参数就是显示控件,不同于C函数,LabVIEW可以有多个返回值,当然C也能使用指针和引用让函数调用结束后得到多个返回值得效果。

VI的层次结构

        每个VI都可以是一个独立的模块,实现独立的、特殊的、复用性高的的功能。和函数一样,VI都能够被其他的VI调用,被调用的称呼为子VI。一个上位机一般都能够拥有几十个子VI文件,这也是LabVIEW希望我们实现的模块化编程思想,在视图VIEW->VI Hierarchy可以查看层次结构。

LabVIEW应用开发——VI模块化,LabVIEW边学边记录,上位机,labview

 LabVIEW应用开发——VI模块化,LabVIEW边学边记录,上位机,labview

        在上图我们通过1号位置可以设置层次结构的布局方向,默认为垂直方向布局,可以改为水平方向布局。

        可以看到在层次结构里面,除了工程的vi还有一个Main Application Instance,这里可以理解为这里就是程序的入口,也就是我们常用的main函数,而VI又能调用子VI,就类比函数之间的调用。

子VI的制作

        从前面的章节,我们知道VI是前面板+程序框图组成,但是有这两个是不够的。C函数需要有入参和出参,我们的子VI也需要有参数连接关系。

        接下来我们来制作实现一个s=a²+2ab+b²的示例,参数有a、b、s。

LabVIEW应用开发——VI模块化,LabVIEW边学边记录,上位机,labview

LabVIEW应用开发——VI模块化,LabVIEW边学边记录,上位机,labview

        现在前面板和程序框图弄好了,还需要制作图标,在VI层次结构可以看到。双击右上角图标,在弹出图标编辑器icon Editor中制作自定义图标。

LabVIEW应用开发——VI模块化,LabVIEW边学边记录,上位机,labviewLabVIEW应用开发——VI模块化,LabVIEW边学边记录,上位机,labview

LabVIEW应用开发——VI模块化,LabVIEW边学边记录,上位机,labview

        最后一步,需要制作连线板前面板控件的关系。我们选择连线工具,模型选择三个参数的就行,因为我们只要a、b、s三个参数,左侧两个,右侧一个,表示输入和输出。然后先点击连线板的端子白色小框,在选择一个控件,绑定好的关系会导致端子的颜色改变。重复这个操作,把三个控件都绑定即可。

LabVIEW应用开发——VI模块化,LabVIEW边学边记录,上位机,labview

调用子VI    

        在上面我们新建好了一个子VI,包含前面板程序框图连线板图标,完成一个函数的运算,接下来我们新建一个VI去调用它,拉子VI进来的方法有四种。

1)在程序框图中右击,弹出的函数选板中选择“Select a VI”。

LabVIEW应用开发——VI模块化,LabVIEW边学边记录,上位机,labview

        选择我们上面制作的VI,得到了一个制作的图标,并且可以看到有左侧两个输入,右侧一个输出。 

LabVIEW应用开发——VI模块化,LabVIEW边学边记录,上位机,labview

2)直接在文件夹中找到VI文件,拖入到程序框图中。

3)子VI如果开着,甚至可以直接从子VI中选中图标直接拖到当前VI中,不过不建议这么干。

LabVIEW应用开发——VI模块化,LabVIEW边学边记录,上位机,labview

4)从项目中把VI文件拖进来,我们前面创建的都是单独的VI,还没有项目的概念,后面再补充。

        拖进来后,我们再查看VI层次结构,这时候就发现,当前VI底下多了子VI。

LabVIEW应用开发——VI模块化,LabVIEW边学边记录,上位机,labview

        当前VI同样创建两个输入控件,一个输出控件,两个输入给子VI的输入,子VI输出到输出控件,这样就完成了子VI的调用,而运算在子VI中实现。

LabVIEW应用开发——VI模块化,LabVIEW边学边记录,上位机,labview

VI属性

        最后讲一下VI的属性,在File->VI Properties或者直接快捷键Ctrl+I调出属性窗口。

LabVIEW应用开发——VI模块化,LabVIEW边学边记录,上位机,labview

        这里根据类别Category来设置VI的相关属性,有些信息是只读的不能修改,有些是设置的,比如外观、图标、版本。

1)常规属性General。

LabVIEW应用开发——VI模块化,LabVIEW边学边记录,上位机,labview

        常规属性这里可以设置VI的文件名文件存储的位置当前修订的版本信息Current revision源版本Source version修订历史revision History编辑图标信息,没错,这里也可以修改图标。这里注意两点:

        1、由于LabVIEW有个很大的缺点,就是不同版本的LabVIEW很有可能会打不开非当前版本制作的项目,所以在源版本中我们可以知道是使用了什么版本的LabVIEW制作的,让程序员可以正确的打开它。

        2、只要有对VI文件做了改动,甚至是移动了一下控件,当前修订版本就会往上加1,在版本信息修改中选择重置reset可以把修订版本重置为0。

        3、版本信息的修改,这里比较重要的功能,每次对VI有重大的修改,都要有修改的原因,添加的功能,这是每个程序员必须要养成的习惯。

2)内存使用Memory Usage

LabVIEW应用开发——VI模块化,LabVIEW边学边记录,上位机,labview

        在这里我们可以看到VI的内存使用情况,包括前面板、程序框图、代码空间和数据空间,还有硬盘占用的空间大小。一个程序的内存占用情况,可以决定一个程序的优劣,我们要尽量避免没必要的占用。

3)说明信息Documentation

LabVIEW应用开发——VI模块化,LabVIEW边学边记录,上位机,labview

        和前面板的控件说明一样,调用子VI的时候,如果有设置了说明信息,那么会在即使帮助窗口显示该说明,说明信息可以保存在VI本身,也可以保存在帮助文件中。

        在Help->Show Context Help或者使用快捷键Ctrl+H调出及时帮助窗口。

LabVIEW应用开发——VI模块化,LabVIEW边学边记录,上位机,labview

        单击子VI,在窗口即可看到VI的说明信息。

LabVIEW应用开发——VI模块化,LabVIEW边学边记录,上位机,labview

4)修订历史revision History

LabVIEW应用开发——VI模块化,LabVIEW边学边记录,上位机,labview

        设置提示输入修订信息的触发条件和规则,当满足条件的时候会主动弹出修改历史的窗口,提示程序员要输入修改记录。条件包括每次保存VI、每次关闭VI,还可以选择是否由LabVIEW生成的注释。

5)编辑器选项Editor Options

LabVIEW应用开发——VI模块化,LabVIEW边学边记录,上位机,labview

        这里可以设置当前VI前面板和程序框图的网格尺寸,值得注意的是这里设置网格尺寸只针对当前VI,前面我们讲过在工具栏也有设置该属性的位置,那是针对全部的VI的。

        除了网格尺寸,编辑器选项还可以选择控制控件的样式,包括现代风格Modern style经典风格Classic style跟随系统风格System style银色风格Silver styleNXG风格Silver style。

6)保护选项Protection

LabVIEW应用开发——VI模块化,LabVIEW边学边记录,上位机,labview

        保护选项保护用户不对它非法编辑。一种常规锁定,用户必须在保护界面解锁否则无法编辑前面板和程序框图。还有一种密码锁定,用户如果没有密码打不开VI程序。这里要注意一点,如果你忘记了密码,是没有任何办法可以解锁的。

7)外观窗口Window Appearance

LabVIEW应用开发——VI模块化,LabVIEW边学边记录,上位机,labview

        该界面设置VI的外观方式,在前面章节提到的属性界面也可以设置该属性。外观选项又四种,顶层VI、对话框、默认、自定义。区别在于是否显示主菜单、工具栏和一些窗口最大、最小、关闭按钮等。

8)窗口尺寸Window Size

LabVIEW应用开发——VI模块化,LabVIEW边学边记录,上位机,labview

        该窗口用来设置前面板的最小尺寸,使用”设置当前面板尺寸“按钮即可得到当前面板尺寸,也可以手动输入。

9)窗口运行位置Window Run-Time Position

LabVIEW应用开发——VI模块化,LabVIEW边学边记录,上位机,labview

        该窗口用来设置VI运行的时候相对于桌面的位置和大小,如果设置为不改变Unchanged,那么就保持原来VI窗口原来的位置。也可以设置为居中、最大化、最小化、自定义的方式,如果设置自定义就需要设置前面板和程序框图的位置和大小。

10)执行Execution

LabVIEW应用开发——VI模块化,LabVIEW边学边记录,上位机,labview

        该界面左侧默认勾选允许调试Allow debug,可以进行单步跟踪、设置断点等。

        重入设置Reentrancy,默认为非重入执行Non-reentrant execution,在多线程中,如果出现两个子线程需要调用同一个子VI,就会出现户锁的情况,不允许同时操作该VI,比如涉及到了操作硬件。共享克隆重入执行Shared clone reentrant execution,共享统一的数据空间,多个副本之前共享数据。预分配克隆重入执行Preallcated clone reentrant execution,每个线程运行都是子VI的备份,具有独立的数据空间和代码空间。正常的计算模块VI都是需要允许重入的,不然效率非常低。根据VI的结构和功能适当选择是否重入和重入方式。

        右侧优先级Priority首选执行系统Preferred Execution System这两个一般都不需要设置我们来了解下下面几个复选框。

        启动自动错误处理Enable automatic error handing,默认是选中状态,提示程序运行中当出现一些错误。这里不是VI本身的错误,编译期的错误在连线的时候如果不能运行,就会弹窗提示了。在一些无人值守的场景下,我们可能会把该功能关闭,因为一但弹出对话框,会停止程序的运行,这是不合理的,这种场景下需要程序设置错误捕捉陷阱,根据错误在做处理,类似C的try+catch。

        打开时运行Run when opened,默认未选中,勾选则双击vi或者File导入的时候直接运行,这一般用不上。

        调用时挂起Suspend when called,默认未选中。这个功能主要是调试的时候使用,勾选后,当程序调用这个VI的时候,暂时停止程序,这时候我们通过探针等工具观察VI的运行情况。

        调用时清空显示控件Clear indicators when called,默认未选中。显示控件的值一般都取决于接线端子,这里就是一个清空默认值的情况,防止出现误导。

       启动时自动处理菜单Auto handle menus at launch,默认勾选。

11)打印Print Options

LabVIEW应用开发——VI模块化,LabVIEW边学边记录,上位机,labview

        该界面涉及一些打印的属性,包括是否打印页眉、是否前面板加边框、是否缩放、自定义上下左右边距等。每次VI执行结束自动打印前面板默认不勾选,这个选项一般用于票据系统,输入一些数据之后点击执行,顺便把结果打印出来,其他情况下,一般不会勾选。 文章来源地址https://www.toymoban.com/news/detail-729243.html

到了这里,关于LabVIEW应用开发——VI模块化的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 前端基础(Vue的模块化开发)

    前端基础(Vue的模块化开发)

      前言 :前面学习了前端HTML、CSS样式、JavaScript以及Vue框架的简单适用,接下来运用前端模块化编程的思想,继续学习Vue框架,完成自己项目项目的搭建。 目录 响应式基础 ref reactive 学习成果展示 Vue项目搭建 搭建自己的vue项目 总结  关于ref和reactive,官方解释如下,另外一

    2024年02月12日
    浏览(15)
  • WPF如何构建MVVM+模块化的桌面应用

    WPF如何构建MVVM+模块化的桌面应用

    模块化是一种分治思想,不仅可以分离复杂的业务逻辑,还可以进行不同任务的分工。模块与模块之间相互独立,从而构建一种松耦合的应用程序,便于开发和维护。 .NET 6 + WPF + Prism (v8.0.0.1909) + HandyControl (v3.4.0) 什么是MVVM Model-View-ViewModel  是一种软件架构设计,它是一种简化

    2024年02月13日
    浏览(13)
  • 使用Webpack进行模块化开发与打包

    Webpack是一个现代化的JavaScript模块打包工具,它可以将多个模块打包成一个或多个静态资源文件。通过Webpack,我们可以将项目中的各个模块进行模块化开发,并将它们打包成一个或多个可供浏览器加载的静态资源文件。 使用Webpack进行模块化开发与打包有以下几个优势: 2.1

    2024年02月12日
    浏览(27)
  • 【Unity】程序集Assembly模块化开发

    【Unity】程序集Assembly模块化开发

    笔者按:使用Unity版本为2021.3LTS,与其他版本或有异同。请仅做参考 一、简述。 本文是笔者在学习使用Unity引擎的过程中,产学研的一个笔记。由笔者根据官方文档Unity User Manual 2021.3 (LTS)/脚本/Unity 架构/脚本编译/程序集定义相关部分结合自身经验所做,有不足之处,还请指正

    2024年02月15日
    浏览(40)
  • Python面向对象编程,实现模块化开发

    面向对象编程(Object Oriented Programming,OOP)是一种编程范式,它将真实世界中的事物抽象成程序中的对象,并通过对象之间的相互作用来完成程序的逻辑。 封装 (Encapsulation) 封装是指把数据和行为结合成一个相对独立的整体,防止程序中其他部分直接访问或修改这个整体,而

    2024年02月05日
    浏览(39)
  • Java模块化应用实践之精简JRE(内含开源)

    Java9及以后的版本引入了模块化特性,但是直到今天JDK21都发布了,依然没有被大量使用起来,那么这个特性就真的没啥意义了吗? 别忘了,Java本身可是把模块化做到了极致的,所以可以利用这个特性对JRE本身进行定制化或者精简化。 由于平时偶尔会开发一些Java的客户端应

    2024年02月07日
    浏览(9)
  • Flask 高级应用:使用蓝图模块化应用和 JWT 实现安全认证

    本文将探讨 Flask 的两个高级特性:蓝图(Blueprints)和 JSON Web Token(JWT)认证。蓝图让我们可以将应用模块化,以便更好地组织代码;而 JWT 认证是现代 Web 应用中常见的一种安全机制。 在大型应用中,一个单独的 Python 文件可能无法容纳所有的路由和视图函数。这时,Flask 的

    2024年02月13日
    浏览(9)
  • 第三章认识Node.js模块化开发

    目录 认识Node.js 概述 作用 基本使用 Node.js的运行 Node.js的组成 Node.js的语法 Node.js全局对象 认识模块化开发 概述 场景 特点 模块成员的导入和导出 Node.js 模块化语法 导入模块 导出模块 ES6 模块化语法 导入模块 导出模块 项目 认识Node.js 概述 Node.js是一个 开源的、跨平台 的

    2024年02月06日
    浏览(11)
  • 第四章认识Node.js模块化开发

    Node.js系统模块 续上一篇文章第三章认识Node.js模块化开发-CSDN博客,这次继续来认识和总结以下node的常用模块开发 Node.js系统模块是指Node.js自带的一些模块,这些模块可以直接在Node.js中使用,无需安装其他包。以下是常用的Node.js系统模块: fs模块:用于处理文件系统。 htt

    2024年02月08日
    浏览(10)
  • 前端组件封装:构建模块化、可维护和可重用的前端应用

    前端开发领域的快速演进已经将前端应用的规模和复杂性提升到了一个新的水平。在这个背景下,前端组件封装成为了一项关键实践,旨在构建模块化、可维护和可重用的前端应用。在本文中,我们将深入研究前端组件封装的重要性、设计原则、常见封装模式以及如何在实际

    2024年02月07日
    浏览(10)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包