APP下载

虚拟仪器技术在实验室的应用研究

2013-11-23杜奔新

实验技术与管理 2013年12期
关键词:编程语言图形化虚拟仪器

王 超,李 可,杜奔新

(北京航空航天大学 航空与科学工程学院,北京 100191)

实验室是高校校内的实践基地,是培养学生创新能力和实践能力的重要场所,对培养具有实践和创新能力的高素质人才有着重要的作用[1]。在测控领域,随着低成本、高性能计算机的普及运用,采用虚拟仪器技术的数字化测量平台逐渐成为测量仪器的主流趋势。虚拟仪器技术利用计算机强大的计算能力和灵活的软件技术,在有限的硬件基础上,实现符合要求的、全新的测量仪器体系。与传统的测量仪器相比,它能够明显地提高实验的测量精度和实验的效率[2]。

虚拟仪器主要由硬件和软件两部分组成:其中硬件分为数据采集部分和数据分析显示部分;软件部分是虚拟仪器的核心,通过编制软件,可以实现众多的仪器功能。虚拟仪器的开发软件通常分为通用开发软件和专用开发软件。通用开发软件就是常见的高级编程语言,比如 Visual C++、VB、Delphi、Java等;专用开发软件是指专业化的图形化编程软件,例如Lab-VIEW、LabWindow/CVI或者 VEE等[3-4]。

1 测控虚拟仪器开发软件的优势比较

在开发虚拟仪器的方面,专业开发软件(例如LabVIEW)比通用开发软件(例如Visual C++)具有明显的优势。

Visual C++是一种通用且强大的编辑语言,开发者具有较高的自由度,可以自定义具有独特个性的虚拟仪器,这是其他开发软件不能比拟的。LabVIEW是美国NI公司推出的业界领先的工业标准图形化编程工具,主要用于开发测试、测量与控制系统。它是一个开放性的开发环境,使用图标代替文本代码创建应用程序,拥有大量与其他应用程序通信的VI库。在开发虚拟仪器方面,LabVIEW比Visual C++有以下几方面优势[5-7]。

(1)Visual C++是一种传统的文本代码编程语言环境,而LabVIEW是一种图形化编程语言环境。图形化编程环境具有形象生动、便于理解的特点。通过LabVIEW的图形化编程语言,在开发过程中可以很快编写出所需要的程序界面。LabVIEW提供了丰富的图形控件,程序内容由一个个表示函数的图标和图标之间的数据流的连线构成。而使用Visual C++编程就需要记忆复杂的语法和函数原型。因此,Lab-VIEW的图形化开发环境更符合通常的思维习惯,从而使编写程序的过程也变得简单、快捷。

(2)用Visual C++编写的程序,是根据代码的语句和指令的先后顺序来决定程序的执行顺序。而LabVIEW采用数据流的编程方式,程序框图中结点之间的数据流向决定程序的执行顺序。

(3)在开发系统时,经常会用到多线程技术。在处理多个并行的线程的时候,用Visual C++需要花费一定的时间和精力编写众多线程代码,用来提高程序的运行效率;而在LabVIEW编程环境中实现了自动多线程,不用再为定义线程去浪费时间和精力。这样便使处理器的性能得到充分的利用,尤其在多处理器的环境下,优势更加明显。

(4)为利用多种编程语言的优势,在进行混合编程时,Visual C++ 能够和大多数的编程语言进行混合编程,通用性比较好,但是在调用其他语言时,编写的代码有时过于复杂。而LabVIEW也提供了大量的接口与外部语言进行混合编程。通过DLL、CIN结点、ActiveX、.NET或Matlab脚本节点等技术,可以轻松实现LabVIEW与其他语言的混合编程,在编写的过程中不用编写复杂的代码,有效地提高了编程效率。

(5)由于Visual C++是通用性的软件,与底层硬件进行通信需要编写相应的代码,虽然其通用性比较好,但过程比较复杂、繁复,对于硬件设备的适应性不强。而LabVIEW为开发者提供了大量的驱动和专用工具,几乎能够和绝大多数硬件接口连接。这又省去了开发者许多的宝贵的时间和精力。

以上几点可以看出:LabVIEW在开发速度上具有绝对的优势。通常使用LabVIEW开发应用系统的速度比使用其他编程语言快4~10倍。这得益于图形化的开发环境和LabVIEW本身集成的大量驱动程序和函数库。因此,LabVIEW对于开发虚拟仪器更加具有针对性[8-9]。

2 Visual C++与LabVIEW开发虚拟仪器应用比较

实验室引进先进的实验技术,可以减少人力和物力的浪费,极大地提高实验效率,同时也可以使学生紧跟技术前沿和科学技术的发展[5-6]。在实验室测控领域,基于虚拟仪器的数字化测量平台已得到广泛的应用。目前实验室比较常用的有Visual C++和Lab-VIEW等开发平台。本文以本校实验室的环境模拟测控系统为例予以说明。

该实验室的环境模拟测控系统,利用计算机的接口连接外部硬件。通过接口,将要输出的控制信号传递给硬件,控制硬件的工作模式,同时将硬件工作产生的相关数据传递给计算机,通过软件处理,实现仪器面板上各个模拟环境变量的测量、显示等功能。整个系统由Visual C++编写而成,人机界面友好、操作简单,可以满足实验室大部分实验的数据测控工作(见图1)。

图1 环境模拟测控系统硬件图

由于整个系统由VISUAL C++编写而成,需要开发者对VISUAL C++编程语言非常熟悉,而且整个编程周期比较长。然而,现在流行的测控软件LabVIEW对编写者的要求却不是很高,比较容易掌握,因此可以大大缩短系统的编写周期,提高系统编写的效率。

本文利用LabVIEW开发了与上述实验室的环境模拟测控系统相似的环境模拟测控系统,从中体会到LabVIEW确实可以极大地提高开发效率,主要体现在以下几方面。

2.1 系统程序的编程环境友好

LabVIEW的编程环境十分友好,它具有以下几方面的优点。

(1)编辑和调试方便。LabVIEW有开发、测试和调试等多种工具,其特点是:模块执行时为高亮度显示,可在单步模式下进行调试、使用线式探针和断点跟踪调试,可以跟踪和监视块间的执行流向,如果程序有错,就会给出错误列表信息。

(2)丰富的帮助体系。相关的“帮助”详细介绍了每个图标及其相关的内容,在线即时帮助窗口可迅速提供一般问题的解答、在线手册、错误代码、用户支持信息等。这些在开发系统的过程中,可以帮助用户更加快捷地完成系统的开发。

(3)LabVIEW提供了大量详细的实例帮助用户进行开发。开发系统时可以直接利用这些实例,也可以按照自己的需要进行修改,免去了从头开始建立程序的工作,从而也提高了开发效率。这些都是Visual C++所不及的。

2.2 系统界面的搭建

LabVIEW的前面板集成了大量用于搭建界面的控件,无需用户重新筹划,只需用户根据需要制定人机界面。使用LabVlEW的图像控制工具箱生成的图形或引入其他绘图工具绘制的图形,都可以用来表示仪表符号和系统框图。用户可以很方便地搭建出自己所需要的软件界面。其控件丰富程度远远超过了Visual C++的控件种类。与Visual C++编程语言相比,可以极大地提高界面设计的效率。

2.3 系统程序的编写

所设计的环境模拟测控系统分为3层:顶层、逻辑层和驱动层。顶层负责人机界面和系统状态;逻辑层负责配置、数据处理、数据存储等;驱动层负责与硬件通信[5]。本系统主要是实现数据的采集和控制信号的输出。整个系统的组成除计算机和仪器之外,还必须建立仪器与计算机之间的通路以及上层应用程序。通路属于驱动层设计内容,上层应用程序属于逻辑层和顶层设计工作。通路包括总线技术和针对不同仪器的驱动程序,上层应用程序用于发送控制命令,仪器控制面板的显示以及数据采集、处理、分析、显示和存储等。

LabVIEW支持数千种仪器的驱动;支持多种总线的连接方式。在本系统的底层程序设计中,使用Lab-VIEW提供的VISA库函数[10],不需要自己去编写与仪器通信的程序。VISA支持大多数仪器总线连接。本系统主要是通过串行总线实现仪器的控制,只需要通过VISA库函数进行配置参数就可以实现系统的I/O功能。而使用Visual C++进行底层程序的设计,需要对仪器和总线有相当的了解,才能够编写底层程序,实现系统的I/O功能。如果使用Visual C++开发系统,还需要编写纷繁复杂的代码,与LabVIEW相比,既增加了程序编写的难度,也增加了时间成本。

对于上层应用程序的设计,LabVIEW把复杂、繁琐、费时的代码语言编程简化为简单易懂的图形编程。LabVIEW是建立在目标定向和数据流程序设计基础上的,被连接的图标之间的数据流控制着程序执行的顺序。所以用LabVIEW开发系统,不需花时间去定义众多的变量;在编写所需的VI时,也不必考虑传统编程语言的许多语法细节,只需要在函数菜单中选择需要的函数,按照程序要求进行连线,即可实现数据流的流动。这样设计出的程序简洁、直观、易懂,便于提高开发效率以及后续的维护。

相比之下,Visual C++需要严格按照文本代码的编写规范进行编写程序,尤其要注重代码的顺序指令。在Visual C++开发的系统中,为了方便定义各个传感器采集数据的变量,优化数据结构,在Access数据库里面定义了所有的传感器变量[11],需要繁复地定义要集数据采集硬件的信息,过程比较繁琐。

利用LabVIEW开发时,只需要通过VISA库函数就可以轻松地读出实时测得的实验数据值,通过简单的处理,即可实现数据的实时显示、处理和存储。特别是LabVIEW还以图形方式提供了大量的波形显示和信号分析处理功能,使得数据的显示和处理更加方便,也很容易发现错误并立即改正。与Visual C++相比,利用LabVIEW作为开发工具,可以极大地节省时间。

在环境模拟系统开发过程中[12-14],逻辑层的各项功能通常由数个较小的单元实现。在用LabVIEW开发系统时,各个单元都相互独立,由功能齐全的模块构成。这些模块可以独立运行、编辑和测试。本系统将文件配置、硬件配置、数据处理以及数据存储查询等功能均进行了模块化处理。这样就可以提高代码模块的可重复利用性,使得整个系统的结构层次比较清楚、有条理,可以方便地调试、测试模块的性能,轻松地集成到更高层次的系统内。与Visual C++相比,这样的编程形式,可以极大地减少开发所用的时间,同时使整个系统结构更加的清晰,便于制定更加简洁高效的解决方案,也利于以后的系统维护。

3 结束语

在实验室测控领域,无论是在资金方面还是在技术方面,虚拟仪器都具有明显的优势,利用专业虚拟仪器软件进行测控领域开发有很好的前景。LabVIEW具有强大的用户界面,使用图形编程方法设计图形程序,使用数据流编程,具有可独立运行的应用程序,可提高用户的效率。与利用Visual C++开发的虚拟仪器相比,利用LabVIEW软件开发虚拟仪器,不仅可以大大简化虚拟仪器的研制过程,明显缩短其开发周期,而且使多种仪器性能的改进和维护也变得更加容易。

[1]刘湘梅.高校实验室建设的思考[J].科技资讯,2012(31):193,195.

[2]刘民岷,杨平,吴浩文.基于虚拟仪器的实验室建设[J].实验技术与管理,2002,19(1):93-95,101.

[3]尚振东,王群燕,韩建海.基于LabVIEW的虚拟仪器在测试技术实验中的应用[J].中国现代教育装备,2007(1):119-121.

[4]王英红,秦化渤,闫芳,等.LabVIEW虚拟仪器开发平台及其应用分析[J].辽宁工学院学报,2004,24(5):16-18.

[5]宋波,陈一民.关于虚拟仪器开发工具的比较与选取[J].国外电子测量技术,2006,25(8):1-5.

[6]时秋兰,赵伟,侯国屏.基于LabVIEW环境开发虚拟仪器的几点体会[J].电测与仪表,2001,38(12):29-33.

[7]张千锋.浅谈LabVIEW在语言程序实现中的优势[J].机电产品开发与创新,2010,23(3):119-121.

[8]陈锡辉,张银鸿.LabVIEW8.20程序设计从入门到精通[M].北京:清华大学出版社.2007.

[9]杨乐平,李海涛,肖凯,等.虚拟仪器技术概论[M].北京:电子工业出版社,2003.

[10]蒋薇,赖青贵,张晓波.基于LabVIEW的仪器通信技术研究[C]//中国核学会2011年学术年会论文集:中国核科学技术进展报告第2卷.北京:原子能出版社,2011:44-47.

[11]唐亚鹏,侯媛彬.基于LabVIEW的实践教学平台与Access数据库的开发[J].计算机技术与发展,2011,21(5):219-222.

[12]宋建军,何常青.基于研华PCI-1713U和LabVIEW的测控系统设计[J].机电产品开发与创新,2013,26(1):130-132.

[13]卢佳,徐熙平.LabVIEW环境下自动温度检测系统的研究[J].电子测量技术,2011,34(9):80-83.

[14]顾文武,何庆中,周铁,等.基于LabVIEW与智能仪器数据采集系统[J].仪表技术与传感器,2012(11):53-54,58.

猜你喜欢

编程语言图形化虚拟仪器
压力-体积转换在CFC编程语言中的实现解析
Java编程语言的特点与应用
LKJ自动化测试系统图形化技术研究
浅谈不同编程语言对计算机软件开发的影响
PCB 刻制机功能开发及在虚拟仪器实验室建设中的应用
虚拟仪器及其在电工电子实验中的应用
虚拟仪器技术在农业装备测控中的应用
面向对象Web开发编程语言的的评估方法
基于虚拟仪器的DMFC实时监控系统
运用图形化听写式复习,构建高效地理课堂