APP下载

基于LabVIEW环境下调用DLL实现仪器控制

2015-03-27长春理工大学电子信息工程学院廖醒宇

电子世界 2015年21期
关键词:前面板虚拟仪器驱动程序

长春理工大学电子信息工程学院 侯 博 廖醒宇

引言

虽然配套仪器控制程序已经涵盖了仪器本身所有的功能控制,但由于后续开发环境和具体实验操作的要求,配套控制软件不能很好的达成预期效果。此需要重新设计仪器控制软件。一旦从底层重新设计控制软件将消耗大量的人力以及时间,并且会造成仪器功能的损失。厂商提供的配套控制软件的动态链接库中基本已经涵盖了所有的控制接口,直接调用原有动态链接库,较比重新设计控制程序将减少大量的研发周期和人力资源。本文介绍了使用LabVIEW软件开发平台调用基于.net平台的动态链接库,完成控制软件的二次开发。并以ARCopt ix公司生产的液晶可调相位延时器控制软件为例,给出具体的设计方法。

1 虚拟仪器与仪器控制

1.1 虚拟仪器

现如今仪器控制系统开发通常采用虚拟仪器技术[1]。近30年来NI公司(Nat ional Inst r uments)一直致力于推广和引领他们提出并制定的这种基于计算机系统的仪器和测量技术。与传统技术相比,虚拟仪器技术无可比拟的占据着上风。虚拟仪器技术能够在极短的开发周期内,在通用计算机平台上构建各式各样的测量和控制系统。用户无需关心仪器的底层硬件接口情况,虚拟仪器平台LabVIEW已经完成了这部分的工作。对于大多数用户来说,硬件的测量和控制工作已经成为软件设计。仪器在某种意义上可视为软件。虚拟仪器依托计算机强大的图形操作界面和在丰富的网络资源,建立虚拟仪器面板,完成与仪器的数据交互、数据解析与显示、近儿完成对仪器的控制。虚拟仪器以其多样的可变性和广泛的适用性正逐步替代传统的仪器技术,并且提高仪器的功能和使用效率,简化仪器的二次开发和利用,同时大大降低了仪器的价格。虚拟仪器在电子测量,电气工程,科学探索,医学,振动分析,光学分析,声学分析,故障诊断及科学研究和教学等许多领域有着广泛的应用。

1.2 仪器控制

仪器控制是指通过个人计算机与智能仪器之间传输相关的数据和命令,以实现对智能仪器的控制。两者之间通过不同的的总线接口实现通信,大体可分为串口、网口、USB、PXI和VXI等接口。仪器控制负责上位机与仪器的连接工作,同时还可以根据需要对仪器的功能进行扩展和增强。计算机平台拥有强大的数据解析、运算、显示和存储能力的,以计算机作为上位机可以最大限度的增强仪器的性能。一个完整的仪器控制系统包括仪器、总线、计算机、底层驱动程序和上层应用程序。总线完成计算机和仪器的硬件连接。上层应用程序调用底层底层驱动程序预备好的控制接口,发送控制命令控制仪器行为并且完成数据的采集、处理、分析、显示和存储等。

LabVIEW是美国NI公司在仪器控制领域最具竞争力的核心技术之一。与其他使用字符代码设计程序的平台不同,LabVIEW使用图形代码设计程序。LabVIEW采用数据流编程方式,用连线连接程序各个模块,程序的执行顺序由程序框图中节点之间的数据流向决定。它用图标代替传统程序设计语言的函数,用连线取代了函数的复杂调用。它拥有丰富的仪器驱动库,其中涵盖了各种总线连接方式。即使是对单一总线编程,也可以采取多种编程方法。因此它是一个非常适合用于仪器控制的开发平台。

2 LabVIEW下动态链接库调用

动态链接库介绍:

微软公司提出了一种在windows操作系统中用以实现共享函数库的方式——动态链接库技术(Dynamic-l ink Libr ar y)。动态链接是一种共享可执行代码的技术进程可以调用与自身无关的其他进程的可执行代码。函数的可执行代码汇集于一个DLL文件,这就是动态链接库。不同进程可以调用不属于自身的可执行代码,这样有助于共享资源和数据,并且减少了代码量,简化开发者的工作量。不同应用程序可同时调用内存中DLL文件中的函数。同一DLL文件被多个应用程序调用时,内存也只会加载一次,如此便可节约内存资源。

厂商为保证设备的兼容性和可拓展性,在提供包含动态链接库文件的驱动程序的同时,还会使设备驱动程序兼容微软.NET平台。也就是使用与.NET兼容的c#,VB.net或是C++/CLI语言来编写驱动程序。在动态链接库文件中,仪器厂商已经完成了应用层与仪器控制底层之间的通信。完成数据通信的函数就是我们通常说的API(Appl icat ion Pr ogr amming Int er f ace)函数[2]。在LabVIEW中调用DLL文件,实质就是调用厂商预先准备好的API函数。后续开发者不需要具备C#,VB.NET,C++、CLI语言开发基础,也不需要阅读API函数源码或是了解API函数内部工作机制,只需要了解API函数的功能及传入传出参数即可。这便使得控制程序的开发停留在了LabVIEW的图形化界面中,使编程语言不是很好的开发者也能轻松实现仪器控制程序的设计。

3 调用dll仪器控制实例

3.1 函数功能介绍

本文所使用的是ARCopt ix公司生产的液晶相位可变延时器。实验目的是使光通过两片相位延时器,之后使用相位检测仪来观测光偏振角度。故控制程序需同时控制两片延时器,并且能够准确控制各个延时器的延时特性。延时器自带windows下驱动程序,安装完成后,在其安装目录下可找到函数库LCDr iver.dl l[3]和CyUSB.dl l。其中LCDr iver.dl l中包含延时器控制的所有函数,下面对其进行简要说明。

按照函数功能不同,大体将函数分为两类:

第一类为回调函数,开发者可以通过这些函数获取仪器具体性能参数以及仪器工作状态。

doubl e MaxVol tage{get; } 获取仪器最大允许电压其传出参数为doubl e型。

doubl e MaxDacCount{get;} 获取仪器最大模数转换精度 其传出参数为doubl e型。

bool Tr igOut 1{get; } 获取延时器1工作状态 其传出参数为bool型。

bool Tr igOut 2{get; } 获取延时器2工作状态 其传出参数为bool型。

st r ing Get Serial Number() 返回已连设备的设备码其返回值为st r ing型。

第二类为控制函数,开发者通过传入具体参数完成仪器控制。

bool Set DACVol t age(doubl e V, byt e DACno) 函数功能为设置两片相位延时器的输出电压。参数doubl e V控制延时器的输出电压,参数byt e DACno负责选择需要控制的延时器。由于设备为电控的液晶可调相位延时器,控制输出电压实质是控制相位延时器的延时特性。

bool Set Tr i gger s(bool Out 1Ext er nal, bool Out 2Ext er nal) 函数功能与单片机中的使能标志位类似,负责控制所选延时器是否工作。

3.2 具体操作实例

首先打开l abvi ew新建一个vi。在程序框图的函数选版中选择互联接口》.NET》构造器节点,然后在浏览窗口中搜索原驱动程序安装路径,找到所要使用的DLL文件,l cvr的DLL文件名为LCDr iver.dl l。

然后在新创建的属性节点图标上点击右键》创建》ARCopt ix.LCDdr iver.LCdr iver类的方法,并在下级菜单中找到所要使用的函数。

DLL文件的调用以及具体功能函数的调用就如上面所述,剩下的就是l abview图形环境下的g语言设计了。LabVIEW程序设计分前后两个面板。前面板为人机交互界面,用户通过前面板完成个人计算机与仪器的数据交互并控制仪器运作。前面板主要包括各种数值的输入控件,程序控制按键,显示框体等。程序后面板是程序运行的主干部分,也是程序设计的主要部分。后面板包括数据的流向,属性节点的写入和读取,仪器的“打开”和“关闭”。

本程序主要功能是控制两片相位延时器,可同时控制两片相位延时器或者指定控制单一一片。程序前面板需要有两组电压输入控件分别对应两片延时器的输出电压。两个使能按键Tr igger Out 1、Tr igger Out 2,控制与之相对应的相位延时器使能与否。用户在输入控件输入所需电压数值后,按下Set Vol t age按键控制电压输出。程序完成功能后使用STOP按键退出程序。程序前面板如图1所示。

程序后面板设计在whi l e循环下嵌套3层事件结构。第一层事件调用Set DACVol t age函数分别控制两片延时器的输出电压。前面板的Set Vol t age按键被按下为事件触发条件。当Set Vol t age按键按下,程序将两组电压值写入Set DACVol t age函数,控制延时器输出。第二层事件调用Set Tr igger s函数使能两片延时器。前面板Tr igger Out 1和Tr igger Out 1为条件触发按键。Tr igger Out 1或Tr igger Out 1按下,程序调用Set Tr igger s函数完成对延时器使能。第三层是使程序跳出循环,程序结束。红色st op按键为触发条件。程序后面板如图2所示。

图1 程序前面板

图2 程序后面板1

具体的程序设计可以根据实际实验环境变化。依靠l abview丰富的时序控制,可以配合其他设备,完成自动化仪器控制。

4 结束语

在l abview中调用原有驱动程序的动态链接库文件,重新优化设计驱动控制程序,扩展了仪器的适用范围,增加仪器的自动化进程。并且l abview中图形化编程简单快捷,即使是编程语言不是很精通的设计人员也能得心应手的使用。节约开发时间和开发成本。

[1]吴亮.基于LabVIEW的通用仪器控制软件设计[J].舰船科学技术,2009,31(10):73-75.

[2]陈式清,齐洪喜..NET与LabVIEW混合环境的一种串口通信编程[J].网络与通信,2014,5:48-50.

[3]ARCoptix LC Driver 1.1 API.[DB/CD].USA:ARCoptix,2010.

猜你喜欢

前面板虚拟仪器驱动程序
颜值高和散热强可以并存3款高品质机箱推荐
电竞潮牌范航嘉GX520S机箱评测
电竞潮牌范 航嘉GX520S机箱评测
计算机硬件设备驱动程序分析
PCB 刻制机功能开发及在虚拟仪器实验室建设中的应用
虚拟仪器及其在电工电子实验中的应用
虚拟仪器技术在农业装备测控中的应用
基于虚拟仪器的DMFC实时监控系统
基于MPC8280的CPU单元与内部总线驱动程序设计
个性化的机箱选择