【labview教程】labview 如何助力大型应用程序的开发_第1页
【labview教程】labview 如何助力大型应用程序的开发_第2页
【labview教程】labview 如何助力大型应用程序的开发_第3页
【labview教程】labview 如何助力大型应用程序的开发_第4页
【labview教程】labview 如何助力大型应用程序的开发_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

【LabVIEW 教程】LabVIEW 如何助力大型应用程序的开发 目录 1. 状态图(Statechart) 模块 2. 对多核技术的支持 3. 功能增强的项目管理 4. 总结 5. 更多相关资源 从 1986 年诞生至今, NI LabVIEW 作为测试测量和控制行业的标准软件平台,一直致力于简化自动化测 试和仪器控制的实现过程,使工程师和科学家们可以专注自己专业的研究领域,而不是将大量的时间和成 本放在系统底层通讯和算法的实现上,从而实现效率的最大化。例如在 LabVIEW 7 中推出的 Express VI 技术,就可以让开发人员简单地通过交互界面进行相应配置,然后 LabVIEW 就可以生成代码,自动完成 数据采集、仪器控制等功能(图 1)。 图 1 Express VI 简化数据采集实现过程 而另一方面,随着测控系统的日趋大型和复杂,很多工程师们开始使用 LabVIEW 来开发大型的应用程序。 因此,简化大型或复杂的测控系统的搭建和开发过程,成为了 LabVIEW 致力实现的又一个目标。 2 年前,LabVIEW 8 推出的项目(Project)工具让工程师们能够以一个整体项目的角度进行开发,为想要开 发大型应用程序的 LabVIEW 用户们提供了强有力的支持:在一个项目中,开发人员可以将多个程序文件 有机地整合在一起,并附带相关的文档及配置文件。此 外,由于 LabVIEW 和硬件的良好的连接性,项目中还可对多个硬件平台进行集中管理,实现分布式智能。 可以说,当时的 LabVIEW 已经具备了开发大型应用程序的条件,随后的 LabVIEW 8.2 开始支持面向对象 的编程方式。而去年 8 月推出的 LabVIEW 8.5 更是提供了多个崭新工具来协助工程师轻松而高效地实现 大型系统的构架和开发。 因此,本文将深入讨论如何使用这些新工具在 LabVIEW 平台下实现更高效和快捷的大型程序的开发。 1. 状态图(Statechart) 模块 诚然,在开发大型程序之前,对系统进行整体架构是必不可少的过程,而如何将系统的架构转换为实际可 运行的代码,这之间的转换过程看似简单,其实会花费开发者不少的精力和时间;此外,在开发后期,开 发者们还会面临需要根据实际情况对程序的结构进行频繁修改的头疼场面。因此,一个好的系统架构方式 或工具可以起到事半功倍的效果。 LabVIEW 8.5 新引入了一个功能强大的全新工具NI LabVIEW 状态图模块。有了这个基于 LabVIEW 平台的新功能,工程师们就能更快捷地设计出高层抽象的系统架构,并可以将状态图自动生成 LabVIEW 代码,从而直接运行。 例如,我们要实现一个简单的数据采集系统(图 2),它能够根据用户按不同的按钮来进行相应的功能:在 配置状态下按 Acquisition 键开始采集信号,在采集时按 Pause 键则暂停,在任何时候按 Stop 键停止整 个采集系统。 这样的要求虽然不算复杂,但是如果纯粹进行编程的话还是需要花费不少的时间;而相比之下,使用状态 图就能够在很短的时间内实现。图 2 的右边部分就是播放器的状态图,通过简单的几个状态和之间的切换 的设置,我们就能够既直观而又轻松地予以实现。 图 2 使用 LabVIEW 状态图实现数据采集 测控系统日益复杂,有时就需要在传统的有限状态机基础上再添加层次性、并发性以及状态间转换的全面 行为定义。在 1980 年,以色列魏兹曼科学研究所的 David Harel 在设计一个复杂的航空系统时发明了状 态图。在 90 年代,状态图被引入 UML 规范,从而被广泛地用于嵌入式系统的建模。 状态图的层次性允许编程人员可以定义所谓的“超状态” ,即将一个子状态嵌套在另一个状态中。超状态同 时封装了出、入动作和过渡。举例来说,从超状态的单个过渡,代表了从每个超状态所包含的子状态的过 渡。这一特点极大地简化了框图的设计和开发。在图 3 中,标有“Error”的过渡转换,可以在系统处于液罐 控制的四个状态中的任一状态时发生。 图 3 LabVIEW 状态图模块支持层次性、并发性和全面动作 并发性也是状态图所具有的特点之一,这意味着,两个甚至多个状态都能在同一时刻被激活,即处于“与 状态”。当描述同一框图所表示的系统中的独立函数时,与状态是非常有用的。图 3 中描述的系统,可以 同时处于灌注(Filling)和采集(Acquire)的状态。由于 LabVIEW 软件固有的并行处理特点,状态图的并发性 特点在 LabVIEW 环境下非常适合。 除此之外,状态图第三个重要的特点就是可以用动作和转换来定义全面行为。每个状态在定义了编程人员 为响应特殊事件所配置的动作外,还定义了进入和退出动作。用户可以为每个已定义的行为编写 LabVIEW 数据流代码。而过渡转换也是以同样的方式工作,在已配置的触发信号产生时或者 LabVIEW 保护码值为“真” 时被执行。 开发 LabVIEW 状态图非常简单,只需要 4 个步骤,如图 4 所示:首先在 LabVIEW 状态图模块中创建系 统相应的状态和状态间的转移;然后再定义状态中的动作,包括何时进入、退出、警戒等等,您也可以自 己开发 LabVIEW 代码来设计自定义触发来确定什么时候发生状态转移;接下来只需要按下“生成” 键即可 自动生成包含状态图逻辑的子 VI;最后将这些子 VI 嵌入到 LabVIEW 程序中就完成了整个开发的过程。 图 4 四步骤轻松开发 LabVIEW 状态图 当状态图设计完成后,LabVIEW 可以在一系列的硬件平台中部署状态图代码,包括台式机、人机界面 (HMI)、可编程自动化控制器(PAC)如 NI CompactRIO 及 PXI、NI 硬件中的 FPGA 以及任何 32 位单片机。 这个能部署到多种硬件的特性使得 LabVIEW 状态图模块成为设计和部署嵌入式系统的最佳工具。 目前的测控系统规模和复杂程度已远甚于几年前,系统架构代码量以及后期的调试成本都呈指数增长,这 给予了开发人员持续的压力。LabVIEW 8.5 这一全新的模块则为架构复杂的大型程序提供了有利的工具, 协助工程师轻松应对挑战。 2. 对多核技术的支持 可以想象,应用程序规模的日益增大导致开发人员对于 CPU 处理器的运算速度的要求也越来越高。而由 于能量消耗和热量发散的限制,处理器的速度发展近年来遇到了瓶颈,通过增加时钟速度来提高性能已经 不再可行,芯片制造商开始转向全新的芯片结构,就是多核技术。 以往,当电脑升级到一个更快速的 CPU 后,也就意味着每一条独立指令的运行速度都会加快。而如今使 用多核之后,如果要想继续提高性能,开发者就需要设计应用程序,为每个核分配工作本质上就是开 发一个并行应用程序来取代顺序应用程序。 然而,这对于许多习惯于开发单线程应用的开发者来说是一个极大的挑战。如果工程师使用的是串行的编 程语言,如 C 语言,那么在进行多线程应用软件的编写时,需要专门的语义创建和管理线程,并且在线 程安全方式下进行数据的传送。 相比之下,NI LabVIEW 就非常适合于创建并行的多线程应用。首先,相比文本编程语言的自上而下的顺 序结构,由于 LabVIEW 是基于数据流的编程方式,其本身就是一种并行的编程结构;早在 LabVIEW 5.0 时 LabVIEW 就支持多线程:在程序编写完毕后,LabVIEW 编译器可以自动识别线程并创建线程到不同 的任务和循环上,再由操作系统分配到不同的核上运行(图 5)。 图 5 LabVIEW 本身就是自动多线程的编程语言 LabVIEW 的未来版本还将针对多核技术提供更多特性:比如可以将嵌入式实时应用自动地划分为多个线 程,并将它们映射到多个处理核之中,这也被称为对称多线程处理技术,从而使设计人员可以自动将均衡 的任务量分配到各个核上;同时,工程师也可以根据自身需求手动设置线程运行在特定的核上,例如将时 间确定性要求苛刻的采集与控制任务放在单独的核上运行,而将对确定性要求不高的界面响应、数据录入 等任务放在另外一个核上运行(图 6)。 图 6 LabVIEW 8.5 允许用户手动分配线程在指定的核上运行 综上所述,使用多核技术已经成为工程师开发大型复杂的测控系统的必要条件,而 LabVIEW 8.5 则可以 让您更方便和更直接地享受到多核给系统性能带来的直线提升。 3. 功能增强的项目管理 诚然,系统架构和程序设计是开发大型应用程序的核心,但是开发人员也需要一个载体能够全面管理项目 中的所有资源,而前文已经提到,LabVIEW 8 中首次引入的 LabVIEW 项目极大地帮助编程人员进行大型 应用程序的开发,但是经验丰富的 LabVIEW 程序员依然渴望更多更强的新功能以解决他们在开发过程中 所遇到的挑战。 以前,工程师在开发过程中会遇到下面两个挑战:首先,随着应用程序大小的增长,使得查看和管理硬盘 中所有与开发工程相关的文件变得愈加困难;其次,在多个程序版本存放在同一个本地硬盘时,有时候会 出现在程序员未知的情况下 VI 自动链接到不需要的或者旧版本的子 VI 中,我们把这种情况叫做交叉连接 (cross-linking)。 因此,为了响应开发者们的要求,在 LabVIEW8.5 中针对项目管理增添了两大新功能,从而解决了这两大 挑战。 同步 LabVIEW 项目文件夹至本地硬盘 对于那些熟悉 LabVIEW 项目的开发人员而言,当使用 LabVIEW 8.5 中的项目浏览器时会马上发现一个明 显的变化:新增加了选项卡视图(图 7)。开发者们通过项目选项卡,既可以使用以前版本的 LabVIEW 已 经存在和熟悉的 LabVIEW 项目组件,也可以在新增的文件选项卡中交互式地查看和改变 LabVIEW 项目 中所有文件的位置。 图 7 全新的选项卡视图允许用户自由选择不同的浏览方式 开发者们从 LabVIEW 8 引入项目管理之后就一直希望能够定义 LabVIEW 项目文件夹与硬盘文件夹之间 更为明确的关系。因此,LabVIEW 8.5 开始允许开发者同步 LabVIEW 项目文件夹至硬盘上的目录,从而 简化了对同一应用程序的所有文件的管理。这里所说的“同步” 就是指这些新的 LabVIEW 项目文件夹将会 基于它们相应的物理目录中的内容而不断地更新。 这些自动同步的 LabVIEW 项目文件夹可以即时地反映开发者在硬盘中所进行的任何操作(包括添加、移动 或删除文件等)。但是,在使用自动同步的项目文件夹后,由于文件夹中的内容总是精确地匹配其物理目 录的结构,从而导致开发者就不能脱离硬盘上的文件层次结构来对文件实现自定义的虚拟的组织活动。但 是,在 LabVIEW 8.5 中,这样的情况是不会发生的,因为用户可以在同一个项目中同时使用自动同步的 文件夹和虚拟文件夹,从而结合两种方式以实现最大化的灵活性。 去除交叉连接现象 为了能够让读者更清晰地明白交叉连接是什么,先举一个简单的例子:如果开发者移动了硬盘上某个 VI 的路径,那么在下次需要它的时候 LabVIEW 就必须搜索并重新连接倒那个丢失的 VI。在某种情况下, LabVIEW 可能会恰巧错误地连接倒同一个代码的早期版本或另一个分支,或者是具有同样名称的不同 VI,从而导致不可预料的行为发生,这种情况是很难进行定位和调试的。而 LabVIEW 8.5 提供了新的工 具以帮助开发者防止交叉连接的发生。 首先第一个工具就是新增的文件选项卡,利用文件选项卡,开发者可以直观地确认存在于废弃目录中不必 要的 VI 以及其它文件不会错误地包含在某个特定的 LabVIEW 项目中。其次, LabVIEW 项目还提供了其 它的警告和调试工具来帮助开发者了解和防止交叉连接。当 LabVIEW 检测到一个可能的交叉连接情况时, 它将会通过在 LabVIEW 项目中的 VI 名称后面显示“冲突”(Conflict)来警告开发人员(图 8)。这一信息意味 着 LabVIEW 已检测到在同一个 LabVIEW 项目中多于一个具有相同名称的 VI 被调用。此时开发者就可以 通过工具栏中的一个新对话框来解决这个冲突,它可以帮助开发者采取一种自上而下的方式来引用正确的 文件。 图 8 LabVIEW 8.5 去除交叉连接现象 LabVIEW 一直积极响应使用者的反馈来实现持续的创新和发展,从而给予工程师和科学家们更完美的编 程体验。这次新增的项目管理功能则更进

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论