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