众所周知,对于工程师而言,时间在任何方面都是宝贵的因素。无论您是需要更快地采集数据,从而利用软件更精准地反映真实世界的信号、同步远程系统、还是仅仅更快速地完成您的工作,时间都是非常重要的。
作为图形化的编程语言,NI公司的LabVIEW软件有助于节省您的时间和编译G语言的时间。 图形化的编程方法可以让您只需关注数据以及对数据的操作,并且抽象出了诸如内存分配和语法规则等大量复杂的计算机编程工作,从而进一步提高您的工作效率。此外,LabVIEW也包括了高级的定时机制和应用程序API函数,来定义硬件和软件之间时间约束的参数和关系。
LabVIEW最新版软件LabVIEW 2010,其最显著的新功能就是针对各种时间实现的优化。最新的版本是整个软件平台的综合更新,包括直接被客户需求推动的新功能,新的FPGA IP模块,增强的定时和同步功能,以及改进的用于产生优化机器码的后端编译器,总体可提升高达20%的应用程序运行性能。
图1. 相比LabVIEW2009,LabVIEW 2010提升了高达20%的应用程序运行性能
本文将通过编译器的优化、内置的定时与同步以及用户自身提出的新特性,三个方面,为您全面介绍LabVIEW 2010。
编译器的优化
LabVIEW编译器在提升编程效率方面是一个关键的技术。编译器用于处理复杂的任务如内存分配和线程管理等,并在编辑时,当程序框图代码不可执行的情况下提供反馈给用户。最终,复杂的编译器和优化线程解析您高层次设计并返回高效率的机器代码。
在过去的数十年中, 编译器已经愈加地智能化和最优化, 加入了内嵌法(inplaceness),类型传播法,聚丛法,虚拟寄存器,文本编译器优化以及其他来自于NI编译器研发者智囊团的智能化处理方法。无论是一个新增功能,修正漏洞,还是编译器的改进,每一次发布都引入了更新的编译器,让您的代码性能更优化。LabVIEW 2010版本关注的焦点之一就是VI 运行时的性能–也就是说,无需改变源代码本身,提升您的VI运行性能。
为了更快地提高您的代码执行效率同时无须更改您的代码,研发者引入了2个 “层”到编译器层次关系中。LabVIEW 2009 引入了数据流的中间代码表示(DFIR),一个高层次的架构用于转换从您的程序框图中产生的数据流驱动的图形化代码。 LabVIEW 2010加入了基于底层虚拟机(LLVM)的后端 ,提供了一种新的标准编译器的优化(图2) 。 DFIR和LLVM协同工作提供高层次和低层次的中间代码表示,以便于编译器使用中间代码细分和优化LabVIEW程序。 在LabVIEW 2010中,采用了中间代码表示意味着编译器优化线程并未影响实际的程序框图,但由于产生了优化的机器代码,这就为您的应用程序提升了高达20%的运行时执行效率。
图2. 全新的 LabVIEW 编译流程
LabVIEW 2010通过帮助您管理源代码和开发更多模块化的软件架构,提供了助力于大型应用程序开发这一新功能。 通过从LabVIEW编写出的源代码中分离出已经编译过的对象,LabVIEW 2010可以明显提高开发者的工作流程。 当这一新的VI属性选项设置打开时,一个VI在重新编译后并不显示为已经修改,除非开发人员修改了图形化的源程序;这就避免了重新保存和重新提交文件到源代码控制的需要。
新的打包项目库提供了更加模块化的软件设计和开发过程,更短的生成时间和更简便的部署方法。 LabVIEW打包项目库文件是一个新的LabVIEW文件类型,由一个项目库和所有涉及的子程序组合而成一个单独的文件。 导出的VI包含在这个文件中,就如同其它的VI保存为不带程序框图的形式,但是它们的层次已经完全被隐藏。它们遵循一个生成规范,现有的lvlib后缀文件被选择用于确定哪些VI正在被生成到打包的项目库中以及哪些VI是公共的或导出的。
内置的定时和同步
大部分计算机应用程序必须要满足和它们交互的计算机物理系统所需求的时间约束参数。如果您所使用的系统环境并没有一个明确的时间概念,您将会不大容易写出一个可以定时的程序。
幸运的是,LabVIEW拥有很多独特的处理时间的机制。举例来说,定时循环结构是在您的应用程序之中用于指定时间约束参数的一个定义很好的API函数节点。另外,您还可以使用定时循环来配置优先级,处理器分配,和定时源。您可以在一个单一的系统中或者在一个分布式实时系统的部分中实现多个定时循环之间的同步。
在LabVIEW 2010 中,引入了一种新的基于时间的同步技术,从而更进一步地扩展了LabVIEW应用程序的功能,使得LabVIEW可以将不同的LabVIEW实时目标平台通过标准的以太网实现同步功能。LabVIEW 2010已经合并了该软件IEEE 1588协议的执行情况作为定时循环的另一个定时源,从而提供了分辨率为1ms的绝对时间。另外,为了控制定时的基源和功能,LabVIEW 2010 引入了一种新的内部定时机制,帮助您在多个定时分辨率中进行衡量。借助于定时循环,您所开发的代码从台式机处理器的ms级系统到带有FPGA背板处理器的ns级系统进行移植时可以保留相同的应用程序代码段。
社区驱动的新功能
LabVIEW社区对于您使用LabVIEW所能到达的成功程度具有深远的影响。 会员可以在NI论坛对他人提供技术支持,也可以上传范例代码到NI 开发者社区,以及/或者用户组。 另外,LabVIEW 社区对于LabVIEW2010产生了决策性的影响。
LabVIEW Idea Exchange–在2009年8月,NI 设立了LabVIEW Idea Exchange,这是一个产品反馈的论坛,通过连接LabVIEW社区和LabVIEW开发团队, 有助于确定每一个版本的新功能。 LabVIEW 2010包含了14个这样的功能,直接来源于社区会员的反馈。
优秀的技术支持 – 社区同样也提供NI工程师日常处理的技术支持问题的反馈。鉴于LabVIEW常常是协同硬件使用的,最常见的技术支持问题就是分布式硬件的配置。您可以在分布式硬件上安装新的基于网页的监测和配置实用工具,然后可以直接通过浏览器利用类似配置路由器的方式来配置您的硬件。您也可以监测性能和内存信息,文件浏览器,以及直接与实时操作系统(RTOS)的交互。
图3.基于网络的监测和配置实用工具简化了远程硬件的管理
LabVIEW开发的第三方附加软件 –为了加强第三方开发的附加软件的打包和发布功能,LabVIEW 2010 引入了很多的改进方法。 对于代码开发,可以直接使用LabVIEW Scripting, 即一个可以自动创建LabVIEW代码的可编程应用程序接口函数(API)。另外,授权和激活帮助开发者创建评估版的软件,并确保使用LabVIEW开发的附件工具包和应用程序在授权后正常使用。 对于打包生成一个附加软件,来自于JKI软件团队的VI打包管理器软件提供了一个流水线的打包过程,并紧密地集成了授权/激活的功能。
结语
LabVIEW 作为工程师与科学家们的编程语言,在20多年来不断地实现自我突破与进步,融合了最前沿的商业可用技术,全新的2010版本进一步让您实现与时俱进,实现各种工程应用创新!