在LabVIEW中利用ActiveX技术访问数据库
时间:11-05
来源:互联网
点击:
1 引言
虚拟仪器(VI—Virtual Instrumentation)是指通过应用程序将通用计算机与功能化硬件结合起来,用户可通过友好的图形界面来操作这台计算机,就像在操作自己定义、自己设计的一台单个仪器一样,从而完成对被测试量的采集、分析、判断、显示、数据存储等。
LabVIEW是当前虚拟仪器的主要开发工具之一,它是NI(National Instruments)公司开发的一种高效的图形化编程工具,是一个标准的数据采集和仪器控制软件,它集开发、调试和运行于一体,目前通用的最新版本为LabVIEW7.0。LabVIEW集成了与满足GPIB、VXI、RS-232和RS-485协议的硬件及数据采集卡通讯的全部功能。它还内置了便于应用TCP/IP、ActiveX等软件标准的库函数。这是一个功能强大且灵活的软件。利用它可以方便地建立自己的虚拟测量和控制仪器,其图形化的界面使得编程及使用过程都生动有趣。随着LabVIEW越来越多地用于数据采集及分析、仪器和控制、测试测量及过程监控和控制等领域,对测量数据进行存储、分析是一个关键环节,这其中要涉及到对测量数据的读写操作。现有的Lab- VIEW版本中还没有提供与通用数据库直接接口的方法[1],这一问题可以采用以下几种办法解决:
1)采用其他编程语言编写动态链接库DLL访问数据库,并在LabVIEW中调用此DLL与数据库进行连接;
2)利用中间文件存取数据,先将数据存入文件中,在一定的时刻或者需要时再将数据导入到数据库中。这种方法实现比较简单,但是需要单独的软件对数据文件导入导出;
3)LabVIEW中包含了大量的ActiveX对象,其中包含了ADO(ActiveX Data Obiects)接口的各种对象,可以利用ADO的接口进行数据库的访问;
4)使用NI公司的SQL ToolKit for LabVIEW附加工具包与数据库连接;[2]
第一种方法的工作量较大;第二种方法不能对数据进行实时的存取;第三种方法通用性和灵活性欠佳;而第四种方法该工具包需单独购买且价格昂贵。为了解决上述这些问题,我们采用Premise Development公司的Chris Roth和Jeffrey Travis开发的免费的LabVIEW数据库支持VI—LabSQL来完善整个系统的数据库功能。它将复杂的底层 ADO及SQL操作封装成一系列的LabsQL VIs, LabSQL的优点是易于理解,不熟悉SQL语言的用户也可以很容易地使用,只需进行简单的编程,就可以在LabVIEW中实现数据库访问。利用 LabSQL几乎可以访问任何类型的数据库,简单易用。另外,Microsoft ADO控件具有远程数据库访问的功能,但是LabSQL并没有开发这一部分,要在LabVIEW中实现远程数据库的访问,还需再结合LabVIEW中包含的ADO接口对象进行再开发。
2 访问远程数据库的步骤
一般而言,对远程数据库的操作有以下几步。
1)在服务器上建立网络数据库:
选择一种客户/月艮务器体系结构的数据库软件,分别安装在客户端和服务器端。
2)连接数据库:
应用程序是通过“连接”访问数据源,连接是交换数据所必需的环境。所以,创建“Connection”对象是所有数据库操作的必需的第一步骤。
3)执行SQL指令:
通过已经建立的连接发出的SQL指令可以用某种方式来操作数据源。Microsoft ADO的Com mand对象,Connection对象以及Recordset对象都提供有执行SQL指令的方法,依据具体情况具体选择对象。
4)处理结果:
检索到的数据有需要加以处理的则通过各种需要的算法加以处理。
5)关闭连接:
执行完任务后,必需切断与数据库资源的连接,释放任何属于连接的资源,关闭任何从属对象,因为它使用了服务器的资源,如果不释放的话将导致服务器资源浪费并影响服务器性能[3]。
Oracle是以高级结构化查询语言(SQL)为基础的大型关系数据库,通俗地讲它是用方便逻辑管理的语言操纵大量有规律数据的集合,是目前最流行的客户/服务器(CLIENT/SERVER)体系结构的数据库之一,也是目前技术比较领先、应用非常广泛的一个商业数据库产品。所以我们选择Oracle来搭建所需的网络数据库。数据库管理大部分是对数据的查询、插入、修改和删除等操作的综合应用。
在运行LabVIEW程序的应用程序服务器上,假设已经安装了Oracle客户端,并连接数据库服务器上的远程数据库成功,通过Windows控制面板中管理工具里面的“数据源(ODBC)”来创建 ODBC数据源,设置系统DSN(数据源名称)为loginoracle,驱动程序选择Microsoft ODBC for Oracle。设置成功后我们就可以像访问本地数据库一样访问远程数据库了。
3 应用实例
以下,我们就结合一个具体的应用实例说明如何在LabVIEW环境中实现对远程Oracle数据库的访问。
我们建立了一个校园网虚拟实验室,将我校控制系的过程控制实验室的液位过程控制实验搬到了网站上,学生和老师在宿舍就可以远程监视并控制其运行状态,但是实验装置并不是随时打开的,我们需要将它的历史状态保存在数据库中,以便在未打开装置的情况下通过历史数据显示数据采集曲线,因此我们在数据库服务器上建了一个Wave-form表,将液位高度数据和控制器输出电压数据保存在其中,我们就对这个表进行相关的操作。
先简要介绍一下本实验装置的工作原理。
过程控制实验室引进英国FeedBack公司开发的PROCON(PROcess CONtroller)38系列综合实验装置,它是处理过程控制问题一个完整的组合程序。它包括相关的硬件过程控制装置,监视器和接口设备,一个工业标准控制器,并且附带指导手册和软件。在本课题中我们用LabVIEW7.0软件取代PROCON 38系列系统的工业标准控制器,搭建自己的控制平台。我们选用了一块I/V转换芯片RCV420,一块V/I转换芯片XTRll0,一块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工具包。具体程序设计如下面程序框图2所示。
访问数据库信息的第一步应该是与数据库建立连接,LabSQL中的Connection VIs就能够实现这个目的,首先利用ADO Connection Create.vi创建一个Connection对象,然后利用ADO Connection Open.vi建立与数据库的连接。但是ADO Connec tion Open.vi只能设置DSN,而网络数据库为了安全起见都设置有用户名和密码,所以要打开远程数据库不能使用LabsQL中的ADO Connection Open.vi,而要用ADO接口对象再开发。具体操作如下:
从控制模板的Application Control子模板中调用Invoke Node结点,在点右键弹出的菜单中选择 Select Class,再在顺次闪出的菜单里选择ActiveX,最后选定其中的ADODB.-Connection,然后选择其方法(Method)为Open,最终在程序框图中显示的图标如图1所示。
这样,通过在ConnectionString中设置DSN,在UserID中设置用户名,在Password中设置密码,就可对一个远程数据库进行象本地数据库一样的数据操作了。
接下来是执行SQL指令:LabSQL中的Con nection VIs里有一个ADO Connection Execute.vi,它可以执行SQL命令,检索数据库以及对数据库进行添加、更新、删除操作,它的CommandText端子传送的就是命令文本,通常是SQL语句,它返回的是一个记录集(Recorderset)对象。
如果需要处理相关数据,可利用sQL Fetch Data(GetString).vi获得查询结果,加以处理并送到前面板中的示波器或者其它仪器或表格加以显示。本例中只介绍数据的存储过程,所以没有涉及此步骤。
最后,用ADO Connection Close.vi关闭与数据库之间的连接。
整个实现数据采集和数据库操作的框图程序如图2所示。
这只是完整程序的一部分,其它部分还包括前面板上其它主要按钮的事件处理程序。这里就不一一列举了。
在前面板中的ConnectionString中输入“DSN=loginoracle”,在UserlD中输入远程数据库的登录用户名,在Password中输入密码,并设为默认值,然后将它们在前面板上隐藏。
设置了各个参数后点击“启动”按钮,程序的运行结果如图3所示。
在程序运行的时候,参数设置和其它无关的按钮都在前面板隐藏起来,停止采样后则将示波器隐藏,然后再将参数设置及复位等其它按钮显示出来。前面板显示如图3之结果的同时,在后台的程序中当前的两组波形数据已经由当前本地的应用程序服务器传递给了数据库服务器。
在装置未打开时,我们可通过访问Waveform数据表,将波形的数据取出,显示其历史工作状态,这样无论实验装置是否打开,学生都能看到如图3所示的装置运行时的波形图。
虚拟仪器(VI—Virtual Instrumentation)是指通过应用程序将通用计算机与功能化硬件结合起来,用户可通过友好的图形界面来操作这台计算机,就像在操作自己定义、自己设计的一台单个仪器一样,从而完成对被测试量的采集、分析、判断、显示、数据存储等。
LabVIEW是当前虚拟仪器的主要开发工具之一,它是NI(National Instruments)公司开发的一种高效的图形化编程工具,是一个标准的数据采集和仪器控制软件,它集开发、调试和运行于一体,目前通用的最新版本为LabVIEW7.0。LabVIEW集成了与满足GPIB、VXI、RS-232和RS-485协议的硬件及数据采集卡通讯的全部功能。它还内置了便于应用TCP/IP、ActiveX等软件标准的库函数。这是一个功能强大且灵活的软件。利用它可以方便地建立自己的虚拟测量和控制仪器,其图形化的界面使得编程及使用过程都生动有趣。随着LabVIEW越来越多地用于数据采集及分析、仪器和控制、测试测量及过程监控和控制等领域,对测量数据进行存储、分析是一个关键环节,这其中要涉及到对测量数据的读写操作。现有的Lab- VIEW版本中还没有提供与通用数据库直接接口的方法[1],这一问题可以采用以下几种办法解决:
1)采用其他编程语言编写动态链接库DLL访问数据库,并在LabVIEW中调用此DLL与数据库进行连接;
2)利用中间文件存取数据,先将数据存入文件中,在一定的时刻或者需要时再将数据导入到数据库中。这种方法实现比较简单,但是需要单独的软件对数据文件导入导出;
3)LabVIEW中包含了大量的ActiveX对象,其中包含了ADO(ActiveX Data Obiects)接口的各种对象,可以利用ADO的接口进行数据库的访问;
4)使用NI公司的SQL ToolKit for LabVIEW附加工具包与数据库连接;[2]
第一种方法的工作量较大;第二种方法不能对数据进行实时的存取;第三种方法通用性和灵活性欠佳;而第四种方法该工具包需单独购买且价格昂贵。为了解决上述这些问题,我们采用Premise Development公司的Chris Roth和Jeffrey Travis开发的免费的LabVIEW数据库支持VI—LabSQL来完善整个系统的数据库功能。它将复杂的底层 ADO及SQL操作封装成一系列的LabsQL VIs, LabSQL的优点是易于理解,不熟悉SQL语言的用户也可以很容易地使用,只需进行简单的编程,就可以在LabVIEW中实现数据库访问。利用 LabSQL几乎可以访问任何类型的数据库,简单易用。另外,Microsoft ADO控件具有远程数据库访问的功能,但是LabSQL并没有开发这一部分,要在LabVIEW中实现远程数据库的访问,还需再结合LabVIEW中包含的ADO接口对象进行再开发。
2 访问远程数据库的步骤
一般而言,对远程数据库的操作有以下几步。
1)在服务器上建立网络数据库:
选择一种客户/月艮务器体系结构的数据库软件,分别安装在客户端和服务器端。
2)连接数据库:
应用程序是通过“连接”访问数据源,连接是交换数据所必需的环境。所以,创建“Connection”对象是所有数据库操作的必需的第一步骤。
3)执行SQL指令:
通过已经建立的连接发出的SQL指令可以用某种方式来操作数据源。Microsoft ADO的Com mand对象,Connection对象以及Recordset对象都提供有执行SQL指令的方法,依据具体情况具体选择对象。
4)处理结果:
检索到的数据有需要加以处理的则通过各种需要的算法加以处理。
5)关闭连接:
执行完任务后,必需切断与数据库资源的连接,释放任何属于连接的资源,关闭任何从属对象,因为它使用了服务器的资源,如果不释放的话将导致服务器资源浪费并影响服务器性能[3]。
Oracle是以高级结构化查询语言(SQL)为基础的大型关系数据库,通俗地讲它是用方便逻辑管理的语言操纵大量有规律数据的集合,是目前最流行的客户/服务器(CLIENT/SERVER)体系结构的数据库之一,也是目前技术比较领先、应用非常广泛的一个商业数据库产品。所以我们选择Oracle来搭建所需的网络数据库。数据库管理大部分是对数据的查询、插入、修改和删除等操作的综合应用。
在运行LabVIEW程序的应用程序服务器上,假设已经安装了Oracle客户端,并连接数据库服务器上的远程数据库成功,通过Windows控制面板中管理工具里面的“数据源(ODBC)”来创建 ODBC数据源,设置系统DSN(数据源名称)为loginoracle,驱动程序选择Microsoft ODBC for Oracle。设置成功后我们就可以像访问本地数据库一样访问远程数据库了。
3 应用实例
以下,我们就结合一个具体的应用实例说明如何在LabVIEW环境中实现对远程Oracle数据库的访问。
我们建立了一个校园网虚拟实验室,将我校控制系的过程控制实验室的液位过程控制实验搬到了网站上,学生和老师在宿舍就可以远程监视并控制其运行状态,但是实验装置并不是随时打开的,我们需要将它的历史状态保存在数据库中,以便在未打开装置的情况下通过历史数据显示数据采集曲线,因此我们在数据库服务器上建了一个Wave-form表,将液位高度数据和控制器输出电压数据保存在其中,我们就对这个表进行相关的操作。
先简要介绍一下本实验装置的工作原理。
过程控制实验室引进英国FeedBack公司开发的PROCON(PROcess CONtroller)38系列综合实验装置,它是处理过程控制问题一个完整的组合程序。它包括相关的硬件过程控制装置,监视器和接口设备,一个工业标准控制器,并且附带指导手册和软件。在本课题中我们用LabVIEW7.0软件取代PROCON 38系列系统的工业标准控制器,搭建自己的控制平台。我们选用了一块I/V转换芯片RCV420,一块V/I转换芯片XTRll0,一块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工具包。具体程序设计如下面程序框图2所示。
访问数据库信息的第一步应该是与数据库建立连接,LabSQL中的Connection VIs就能够实现这个目的,首先利用ADO Connection Create.vi创建一个Connection对象,然后利用ADO Connection Open.vi建立与数据库的连接。但是ADO Connec tion Open.vi只能设置DSN,而网络数据库为了安全起见都设置有用户名和密码,所以要打开远程数据库不能使用LabsQL中的ADO Connection Open.vi,而要用ADO接口对象再开发。具体操作如下:
从控制模板的Application Control子模板中调用Invoke Node结点,在点右键弹出的菜单中选择 Select Class,再在顺次闪出的菜单里选择ActiveX,最后选定其中的ADODB.-Connection,然后选择其方法(Method)为Open,最终在程序框图中显示的图标如图1所示。
这样,通过在ConnectionString中设置DSN,在UserID中设置用户名,在Password中设置密码,就可对一个远程数据库进行象本地数据库一样的数据操作了。
接下来是执行SQL指令:LabSQL中的Con nection VIs里有一个ADO Connection Execute.vi,它可以执行SQL命令,检索数据库以及对数据库进行添加、更新、删除操作,它的CommandText端子传送的就是命令文本,通常是SQL语句,它返回的是一个记录集(Recorderset)对象。
如果需要处理相关数据,可利用sQL Fetch Data(GetString).vi获得查询结果,加以处理并送到前面板中的示波器或者其它仪器或表格加以显示。本例中只介绍数据的存储过程,所以没有涉及此步骤。
最后,用ADO Connection Close.vi关闭与数据库之间的连接。
整个实现数据采集和数据库操作的框图程序如图2所示。
这只是完整程序的一部分,其它部分还包括前面板上其它主要按钮的事件处理程序。这里就不一一列举了。
在前面板中的ConnectionString中输入“DSN=loginoracle”,在UserlD中输入远程数据库的登录用户名,在Password中输入密码,并设为默认值,然后将它们在前面板上隐藏。
设置了各个参数后点击“启动”按钮,程序的运行结果如图3所示。
在程序运行的时候,参数设置和其它无关的按钮都在前面板隐藏起来,停止采样后则将示波器隐藏,然后再将参数设置及复位等其它按钮显示出来。前面板显示如图3之结果的同时,在后台的程序中当前的两组波形数据已经由当前本地的应用程序服务器传递给了数据库服务器。
在装置未打开时,我们可通过访问Waveform数据表,将波形的数据取出,显示其历史工作状态,这样无论实验装置是否打开,学生都能看到如图3所示的装置运行时的波形图。
- 基于LabVIEW RT的自定义流程测控系统(10-30)
- 基于LabVIEW的语音分析平台的实现(10-30)
- 基于示波器卡和LabVIEW的马达编码器测试系统(11-06)
- 基于虚拟仪器的网络虚拟实验室构建(11-06)
- 运用LabView控制DS3900串口通信模块(02-02)
- 采用模块化仪器,对新兴音频和视频应用进行测试(02-19)