江务学 王志明
摘要:为提高虚拟实验室设计中的远程数据库访问的有效性,分析了LabView访问远程数据库方法的特点和不足,提出了Lab SQL工具包和ADO技术的集成应用策略。结合一个网络虚拟实验室的应用开发,给出了基于LabSQL的数据库访问步骤和虚拟实验室的设计过程。该策略及设计具有较高的实用价值。
关键词: 虚拟仪器; LabVIEW; 远程数据库; LabSQL; ADO
中图分类号:TP391文献标志码:A 文章编号:1006-8228(2012)05-32-03
Research on strategy and application of access to remote database based on LabVIEW
Jiang Wuxue, Wang Zhiming
(Dongguan Polytechnic, Dongguan, Guangdong 523808, China)
Abstract: To improve the effective of access to remote database in the design of virtual laboratory, this paper analyzes the characteristics and insufficiency of access to remote database method based on LabView, presents the integrated application strategy of the LabSQL toolkits and ADO. Combined with a virtual laboratory application development, based on LabSQL database access steps and virtual laboratory design process is given, and has great practical value.
Key words: virtual instruments; LabVIEW; remotedatabase; LabSQL; ADO
0 引言
虚拟仪器(VI-Virtual Instrument)是指通过应用程序将通用计算机与功能化硬件结合起来的计算机系统,用户可通过友好的图形界面来操作这台计算机,就像在操作自己定义、自己设计的一台单个仪器一样。
LabVIEW是当前虚拟仪器的主要开发工具之一,是由NI(National Instruments)公司开发的一种高效的图形化编程工具, 是一个集开发、调试和运行于一体的数据采集和仪器控制软件,目前通用的最新版本为LabVIEW2011。LabVIEW集成了与满足GPIB、VXI、RS-232和RS-485协议的硬件及数据采集卡通讯的全部功能,还内置了便于应用TCP/IP、ActiveX等软件标准的库函数,是一个功能强大且灵活的软件。通过LabVIEW可以方便地建立适应个性化需求的虚拟测量和控制仪器,其图形化的界面使得编程及使用过程形象而生动。目前,LabVIEW在数据采集及分析、仪器和控制、测试测量及过程监控和控制等领域中的应用越来越广泛。其中,数据的存储、分析所涉及到的数据库读写操作是一个重要环节,现有的LabVIEW版本中还没有提供与通用数据库直接接口的方法[1]。这一问题一般会考虑采用以下几种方法解决。
⑴ 采用其他编程语言编写动态链接库DLL访问数据库,并在LabVIEW中调用此DLL与数据库连接。
⑵ 利用中间文件存取数据,先将数据存入文件中,在一定的时刻或者需要时再将数据导入到数据库中。这种方法实现比较简单,但是需要单独的软件对数据文件导入导出。
⑶ LabVIEW中包含了大量的ActiveX对象,包括ADO(ActiveX Data Objects)接口的各种对象,可以利用ADO的接口进行数据库的访问。
⑷ 使用NI公司的SQL ToolKit for LabVIEW附加工具包与数据库连接[2]。
这些方法中,第一种方法的工作量较大,第二种方法不能对数据进行实时的存取,第三种方法通用性和灵活性欠佳,而第四种方法需单独购买该工具包,价格昂贵,成本过高。针对上述四种方法的不足,本文采用Premise Development公司的Chris Roth和Jeffrey Travis开发的免费LabVIEW数据库支持工具VI—LabSQL来完善整个系统的数据库功能,将复杂的底层ADO及SQL操作封装成一系列的LabSQL VIs。LabSQL的优点是易于理解,使用简单,只需进行简单的编程,就可以在LabVIEW中实现数据库访问。利用LabSQL几乎可以访问任何类型的数据库且易于实现。
1 基于LabSQL的远程数据库访问的步骤
一般而言,对远程数据库的操作有以下几步。
⑴ 在服务器上建立网络数据库
选择一种客户/服务器体系结构的数据库软件,分别安装在客户端和服务器端。
⑵ 连接数据库
应用程序是通过“连接”访问数据源的,连接是交换数据所必需的环境。所以,创建“Connection”对象是所有数据库操作的必需的一个步骤。
⑶ 执行SQL指令
通过已经建立的连接发出的SQL指令可以用某种方式来操作数据源。Microsoft ADO的Command对象,Connection对象以及Recordset对象都提供有执行SQL指令的方法,可依据具体情况具体选择对象。
⑷ 处理结果
检索到的数据通过各种需要的算法加以处理。
⑸ 关闭连接
执行完任务后,必须切断与数据库资源的连接,释放任何属于连接的资源,关闭任何从属对象。否则将导致服务器资源浪费并影响服务器性能[3]。
Oracle 是以高级结构化查询语言(SQL)为基础的大型关系数据库,是目前最流行的客户/服务器(CLIENT/SERVER)体系结构的数据库之一,也是目前技术比较领先、应用非常广泛的一个商业数据库产品。 所以我们选择Oracle来搭建所需的网络数据库。
在运行LabVIEW程序的应用程序服务器上,设已经安装了Oracle客户端,已连接到数据库服务器上的远程数据库,通过Windows控制面板中管理工具里面的“数据源 (ODBC)”来创建ODBC数据源,设置系统DSN(数据源名称)为loginoracle,驱动程序选择Microsoft ODBC for Oracle,设置成功后客户端就可以像访问本地数据库一样访问远程数据库了[4]。
2 基于LabSQL虚拟实验室的应用开发
我们建立了一个校园网虚拟实验室,将过程控制实验室的液位过程控制实验搬到了网站上,学习者可以远程监视并控制其运行状态,进行不受时空限制的个性化学习。但是实验装置并不是随时打开的,我们需要将它的历史状态保存在数据库中,以便在未打开装置的情况下通过历史数据显示数据采集曲线,因此在数据库服务器上建了一个Waveform表,将液位高度数据和控制器输出电压数据保存在其中,就可对这个表进行相关的操作。
2.1 本实验装置的工作原理
过程控制实验室引进英国FeedBack公司开发的PROCON(PROcess CONtroller)38系列综合实验装置,它是处理过程控制问题一个完整的组合装置,包括相关的硬件过程控制装置,监视器和接口设备,一个工业标准控制器,并且附带指导手册和软件。我们用LabVIEW2011软件取代PROCON 38系列系统的工业标准控制器,搭建自己的控制平台。选用的芯片和设备分别是:一块I/V转换芯片RCV420,一块V/I转换芯片XTR110,一块NI公司出产的PCI-6014E系列数据采集卡和一台微机。
PROCON38系列系统水箱的浮子式液位计采集到的0-5V电压液位信号被过程接口(PI)转换为一个4-20毫安的电流信号,通过一个I/V转换电路将其还原成0-5V的电压信号,用NI公司的PCI-6014数据采集卡采集电压信号,经控制算法的处理后再通过该数据采集卡输出0-5V的电压控制信号,接着通过一个V/I转换电路转换成4-20毫安的电流信号,控制伺服阀的开闭、4毫安时阀门全闭、20毫安时阀门全开,通过控制进水量来控制水箱中的液位。文中采用PID控制实现控制算法,直接调用仿真工具箱里的PID工具包[5]。程序框图如图1所示。
图1液位过程控制实验程序框图
2.2 虚拟实验室的的开发过程
访问数据库信息的第一步是与数据库建立连接,LabSQL中的Connection VIs就能够实现这个目的.首先利用ADO Connection Create.vi创建一个Connection对象,然后利用ADO Connection Open.vi建立与数据库的连接。但是ADO Connection Open.vi只能设置DSN,而网络数据库为了安全起见都设置有用户名和密码,所以要打开远程数据库不能使用LabSQL中的ADO Connection Open.vi,而要用ADO接口对象进行再开发。具体过程如下:
从控制模板的Application Control子模板中调用Invoke Node结点,在点右键弹出的菜单中选择Select Class,再在顺次闪出的菜单里选择ActiveX,最后选定其中的ADODB._Connection,然后选择其方法(Method)为Open,最终在程序框图中显示的图标如图2所示。
图2打开数据库连接的Invoke Node结点
这样,通过在ConnectionString中设置DSN,在UserID中设置用户名,在Password中设置密码,就可对一个远程数据库进行象本地数据库一样的数据操作了。
接下来是执行SQL指令LabSQL中的Connection VIs里有一个ADO Connection Execute.vi,它可以执行SQL命令,检索数据库以及对数据库进行添加、更新、删除操作,它的CommandText端子传送的就是命令文本,通常是SQL语句,它返回的是一个记录集(Recorderset)对象。
如果需要处理相关数据,可利用SQL Fetch Data(GetString).vi获得查询结果,处理后送到前面板中的示波器或者其它仪器或表格加以显示。本文只介绍数据的存储过程,所以没有涉及此步骤[6]。
最后,用ADO Connection Close.vi关闭与数据库之间的连接。
在前面板中的ConnectionString中输入“DSN=loginoracle”,在UserID中输入远程数据库的登录用户名,在Password中输入密码,并设为默认值,然后将它们在前面板上隐藏。设置了各个参数后就可点击程序“启动”按钮。液位过程控制实验程序的运行结果如图3所示。
图3液位过程控制实验程序运行结果
在程序运行的时候,参数设置和其他无关的按钮都在前面板隐藏起来,停止采样后则将示波器隐藏,然后再将参数设置及复位等其他按钮显示出来。前面板显示如图3.3之结果的同时,在后台的程序中当前的两组波形数据已经由当前本地的应用程序服务器传递给了数据库服务器。
在装置未打开时,我们可通过访问Waveform数据表,将波形的数据取出,显示其历史工作状态,这样无论实验装置是否打开,学习者都能看到如图3所示的装置运行时的波形图。
3 结束语
在LabVIEW环境下,利用LabSQL工具包实现数据库的管理,在很大程度上减轻了编程的工作量,这是一种很有效的远程数据库访问的方法。再结合LabVIEW中的ADO接口对象,就能够实现对Oracle网络数据库的各种操作。实践证明,该实验室不仅实现了所需功能,而且在速度、稳定和效率上均具有良好的性能。
参考文献:
[1] 杨乐平,李海涛,赵勇等.LabVIEW高级程序设计[M].北京清华大学出
版社,2003.
[2] 李建文,刘笃喜,朱名铨.基于ADO技术的LabVIEW访问数据库的方
法[J].自动化仪表,2003.24(9):15~17
[3] Chen X Z,Chen C,Qi H. Design of a kind of single neuron PID
adaptive controller based on expert[C]/ / Proceedings of the 7th International Conference on Electronic Measurement & Instruments. Beijing: International Academic Publishers,2005:216~220
[4] 齐虹,周文滨,陈冲等.利用LabVIEW实现的虚拟网络实验室及其虚
拟实验[J].福州大学学报(自然科学版),2010.38(2):237~250
[5] 杨静. 基于LabVIEW的电工电子网络虚拟实验室研究与开发[J].实
验室研究与探索,2011.30(2):74~77
[6] 江务学.基于LabVIEW 的校园网虚拟实验室的开发[J].浙江万里学
院学报,2005.18(4):51~54