摘要:在利用基于LabVIEW的虚拟仪器开发平台设计测试系统时,不可避免地需要对大量数据进行存储、查询、处理分析,在此基础上提出LabVIEW中访问数据库的需求。在此结合油滴电量测试系统的功能需要,利用NI的附加数据库接口工具包LabVIEW SQL Toolkit进行编程,完成对数据库的访问,实现了数据存储、查询、更新、修改、删除等操作。并设计了人机交互界面,实时显示所有测试终端的总体进度和各测试终端的详细数据。
0 引言
随着测试技术与计算机技术日益紧密的结合,测试测量领域得到了空前的发展。尤其是基于LabVIEW的新一代虚拟仪器测试系统,充分利用了计算机数据处理速度快、控制能力强等优点,使测试系统在数据采集、传送、处理、显示及存储等方面突破了以往单一的仪器仪表的限制。LabVIEW 是一个划时代的图形化编程系统,提供一种全新的程序设计方法,它对被称为“虚拟仪器”的软件对象进行图形化的组合操作,其强大的数据分析功能可在数据采集、测试分析中起到至关重要的作用,这就涉及到对大量数据的存储、查询、调用等功能。
而大量数据的管理又需要通过数据库来实现,但是Lab-VIEW 本身并不具备数据库访问功能,因此需要其他辅助的方法来实现。本文以油滴电量测试系统的数据库为例,利用NI的LabVIEW Database Connectivity Toolkit进行编程,完成了对数据库的访问,实现了数据存储、查询、更新、修改、删除等各项功能。
1 LabVIEW访问数据库的多种实现方式
数据库访问方式有多种,种是利用Visual C++等多种语言编写DLL程序访问数据库,但这种方法需要从底层经过复杂的编程才能实现,开发难度大,本文不考虑这一方法;第二种方法是基于第三方软件通过编程来实现LabVIEW 对数据库的访问。比如,LabSQL工具包就是第三方开发的专门针对LabVIEW的一个开源附加工具包,对基本的数据库操作功能进行二次封装,能够完成一般的数据库操作,但兼容性相对较差;第三种是利用NI 的附加数据库接口工具包LabVIEW SQLToolkit进行编程来实现对数据库的访问。该工具包集成的模块中包含了大多数数据库操作和访问的功能,易于理解和编程。
LabVIEW SQL Toolkit 又称为LabVIEW DatabaseConnectivity Toolkit,是专门用于数据库访问的附加工具包,它涵盖了数据库操作的所有功能,集成了一系列功能模块,这些模块封装了数据库的大多数操作和一些的数据库访问功能。其主要的功能包括:
(1)支持ADO所支持的所有数据库引擎;
(2)支持所有与ODBC 或OLE DB 兼容的数据库驱动程序;
(3)与SQL兼容;
(4)可以将数据库中Column Values 的数据类型转换为标准LabVIEW Database Connectivity Toolset 的数据类型,进一步增强了它的可移植性。
基于LabVIEW SQL Toolkit 的丰富功能及诸多优点,本文选择使用LabVIEW SQL Toolkit 来实现对数据库的操作。
2 应用实例
本文以油滴电量测试系统作为基于LabVIEW的数据库访问的应用实例。油滴电量测试系统分为上位机和下位机2 部分,分别承担总控平台和测试终端的作用,总体结构见图1.该系统具有参数采集、存储和数据分析等功能。下位机采用的是油滴仪、计时器、喷雾器等仪器进行测量,测试数据通过无线通信模块将数据传送到上位机,上位机是采用LabVIEW 2010图形化编程平台设计,将下位机传送来的数据存储到数据库,通过数据库进行访问,实现对数据的分析与管理。
基于LabVIEW 的总控台由3部分组成:命令发送、总体进度显示、某一测试终端的详细数据显示。与第二和第三项功能相适应,需要对各个测试终端的数据进行数据库管理。
软件设计中,利用LabVIEW SQL Toolkit 对Micro-soft Access 数据库进行添加、修改、更新、删除、查询和分析,实现测试系统的数据管理功能。系统总体流程为:下位机采集数据并存储在FLASH中,待上位机发送“数据接收”命令,下位机将依次把数据传送到上位机,上位机将数据存储在名为“测试数据库”的Microsoft Ac-cess 的数据库中,操作人员通过“历史数据查询”或“图像显示历史数据”功能模块,查询或分析某一颗油滴的测试数据。而操作人员在进入此系统前需要注册或登录操作,在这里的登录系统中同样需要数据的存储、匹配操作,需要对数据库进行访问。图2为系统数据显示的程序前面板。
软件具体功能包括:一是将操作员编号、测试仪地址、测试电压、油滴运动时间等基本数据添加到Micro-soft Access数据库;二是对Microsoft Access 数据库进行查询、修改、更新、删除错误的数据,并对数据进行分析。
2.1 建立数据源
LabVIEW 数据库工具包只能操作数据库,不能创建数据库,所以必须借助第三方数据库管理系统,本文采用Access来创建数据库。因为文中的数据库范例是油滴电量测试实时监控系统(简称油滴电量测试系统),所以建立一个名为“测试数据库。 mdb”的数据库文件。
然后是建立于数据库的链接。在利用LabVIEW 数据库工具包操作数据库之前,需要先建立数据库链接。
链接数据库的方法有2 种:利用ODBC(Open DatabaseConnectivity)技术链接数据库和利用Active 数据对象ADO(ActiveX Data Objects)技术链接数据库。
使用ODBC API 函数时,需要创建数据源名DSN(Data Source Names)才能链接到实际数据库。因此需要考虑移植问题,当代码发布到其他机器上时,要手动为其重新建立一个DSN.此外,Microsoft设计的ODBC标准只能访问关系型数据库,对于非关系型数据库则无能为力。而ADO 是Microsoft 提出的应用程序接口(API),用以访问关系型或非关系型数据库中的数据。
ADO使用通用数据链接UDL(Universal Data Link)来获得数据库信息,即实现数据库的链接[6].
本文使用的是利用动态数据对象ADO(ActiveXData Objects)技术链接数据库。在“测试数据库。mdb”
所在的文件夹下点击鼠标右键→新建→Microsoft DataLink,并命名为“测试数据库链接。udl”.或者通过另一种方法来建立。udl文件,在测试数据库。mdb所在的文件夹下点击鼠标右键→新建→文本文档,并命名为“测试数据库链接。txt”,再将其后缀改为“.udl”即可。双击“测试数据库链接。udl”,打开数据链接属性对话框,在提供程序选项卡中选择Microsoft Jet 4.0 OLE DB Provide.
在接下来的链接选项卡中,选择已经建立好的数据库文件,然后单击“测试链接(T)”按钮,就会链接成功。
2.2 数据库操作
链接上数据库之后,就可以对数据库进行操作了。
对数据库的操作主要有创建表格、删除表格、添加记录、查询记录等。本文主要介绍添加记录、删除记录、查询记录和更新数据库数据信息。
2.2.1 添加记录
在使用本系统时,次使用的操作员需要注册,操作员的注册信息需要写入数据库以数据表的形式保存下来,以便操作员以后使用系统就可以直接登录,下面说明如何向数据库中写入数据。
与数据库以及记录集对象建立链接,获取“测试数据库链接。udl”文件的位置,使用DB Tools Open Connec-tion.vi创建链接。
选择写入数据的数据表“ 用户信息表”,利用DBTools Insert Data.vi获取数据表的列名字。
由DB Tools Insert Data.vi来实现添加记录,它有三个主要的参数:table(数据表名)告诉DB Tools InsertData.vi 向数据库里的哪个表格插入数据;data 告诉DBTools Insert Data.vi插入什么数据;column对应插入列的名字,其数据类型是一个字符串数组,而且它的数据来源于DB Tools Insert Data.vi获得并输出的数据。然后断开与数据库的链接。
图3是添加记录的程序框图。
2.2.2 删除记录
在测试过程中存在着很多不确定性因素会导致测试结果出现偏差,这就需要将不合格的测试数据删除,将符合要求的测试数据保存起来。
对于删除测试数据记录的操作,可以使用数据库操作,在LabVIEW 中执行SQL 语言来实现数据删除功能。删除一条记录的语法为:
DELETE FROM table_name
WHERE column_name = some_value
图4实现了删除一条记录的操作。
2.2.3 查询数据
实验操作人员需要通过下位机将获得的测试数据发送到PC 机的LabVIEW 测试系统中并通过LabVIEW保存到数据库中,以便以后查看数据和数据的存档。在本测试系统中,每个操作员的数据分为5组且每一组数据存放在一个数据表中,这样要获得某一个操作员的实验数据就需要从5个数据表中查询到该操作员的数据,再在LabVIEW前面板上显示查询结果。
此处同样需要首先建立链接,即利用DB Tools In-sert Data.vi获取数据表的列名,并利用DB Tools SelectData.vi 来读取指定数据表中的所有数据。因为从DBTools Select Data.vi 读出来的数据是动态数据类型,需要通过Database Variant To Data.vi 函数把动态数据类型转换成正确的数据类型。
通过以上步骤,已经完成将指定数据表中的数据全部数据读出并以正确的数据类型进行显示。
在完成某一特定操作员的测试数据查询工作时,本文采用双for循环嵌套,外部for循环的循环次数为5,再由内部for循环依次查询“测试数据1…5”表中的数据,根据外部索引输出数组的操作员编号列信息与前面板输入的信息匹配,再利用指定操作员编号的索引值查找数据表中对应的记录信息,并插入到的“指定操作员数据”数组中。
图5为完整的查询数据程序框图。
图6 为直接从数据库中读取到的未经过处理的数据显示。
图7为经过对数组数据进行变换、处理得到的通常情况下数据记录表格形式。
2.2.4 数据更新
以上过程已实现了数据的写入,但对于某些需要实时同步修改的数据,需要考虑数据更新问题。因为数据库要记录用户登录系统的时间,所以当用户每次登录系统,系统都要将其在数据库中的时间信息更改为当前时间。
这里同样使用的是数据库操作,在LabVIEW中执行SQL 语言来实现数据更新功能。SQL 中更新一条记录的语句是“update”,其语法为:
UPDATE table_name
SET column_name=new_value
WHERE column_name=some_value
图8为更新时间的框图程序。
3 结语
通过结合油滴电量测试系统的Access数据库操作,本文实现了在LabVIEW 平台下,利用Database Connec-tivity Toolkits 工具对Access 数据库进行实时操作,实现了数据的写入、删除、更新等实用功能,为类似的数据库开发提供了可予借鉴的方法。
免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。