易 驰,文小玲,李凤旭
(武汉工程大学 电气信息学院,湖北 武汉430205)
在工业制造和农业生产中,为了降低成本、提高生产率,常常要对温度、压力进行采集和分析。在很多环境比较恶劣的生产场合,不宜采用人工采集检测。所以设计一种可以对温度、压力进行自动采集的系统有着广泛的应用价值。而LabVIEW是目前应用最广、发展最快、功能最强大的图形化软件开发集成系统。它提供了丰富的图形界面组件和库函数,有大量可见的仪器控制面板所需的控制对象,如按扭、图表、示波器等,为用户设计各种专业软件提供方便,其在环境检测等领域有着广阔的应用前景[1-2]。与此同时,面对大量监测采集到的数据信息,无论是手工数据管理还是文件系统管理,都不便于各类数据的查询和管理。为了有效地管理和存储数据,基于数据库的虚拟仪器系统成为现代检测采集系统的发展趋势。本文基于LabVIEW数据采集系统主要包括:数据信号的模拟、MySQL数据库与LabVIEW的链接以及数据库的设计3个部分的设计。
温度、压力值都是随着时间的变化而实时的变化。整个系统都是依据时间为基准在运行,因此时间的模拟非常重要。图1所示为分钟模拟输出的程序框图。
图1 分钟模拟输出的程序框图
上面程序总体上是一个FOR循环结构,程序每运行一次,都要检查定时器时间是否超时,如果没有就产生等待,直到超时,然后再进入下次循环,如果已经超时可直接进入下次循环。上面的程序中还用到了一个通知操作,它的作用主要是使其他程序能与分钟输出保持同步。
图2所示为小时模拟输出的程序框图。
图2 小时模拟输出的程序框图
此程序首先一直处于等待状态,直到分钟通知器发送来的信号,小时等待通知器接收到信号以后就会使上面的FOR循环执行一次。通过这种通知器的操作就可以使分钟小时输出值达到同步。程序中通知器的另一个作用就是传递程序停止的信号,使系统停止工作。
为了能反映出一天的温度变化,则使温度信号值在4~14点之间缓慢上升,在14~次日4点之间缓慢下降,且温度范围在10~40℃之间。程序中还引入了随机数,这样会使每次模拟的温度值不一样,但温度变化曲线保持一致。
压力值是在一个基准压力值附近不断随机变化的值,其平均值基本稳定在基准压力值。其基准的压力值是可控的。
图3所示为温度、压力信号模拟输出的程序框图。
图3 模拟的温度压力设计框图
由于温度、压力信号变化是比较缓慢的一个过程,因此本系统设计的是每1小时输出1次温度、压力信号值。程序中的等待通知器保证了整个程序与分钟时间输出变化保持同步,与小时输出程序中的作用类似。
LabVIEW本身并不能直接访问数据库,但是由于LabVIEW提供了丰富的外部程序接口,例如ActiveX和.NET,因此在LabVIEW中可以通过ADO(ActiveX Data Object)、DAO(Data Access Object)或ADO.NET等方法与数据库连接。其中ADO是使用最为广泛的技术,因为Windows操作系统已经包含了ADO组件,而且ADO通过与ODBC连接能访问任何支持ODBC的数据库[3]。因此本设计采用ADO技术通过ODBC与数据库来连接。
ODBC是数据库与应用程序之间的一个公共接口,应用程序通过访问ODBC而不是直接访问具体数据库来与数据库通信。一个基于ODBC的应用程序对数据库的操作不依赖任何DBMS,所有的数据库操作由对应的DBMS的ODBC驱动程序完成。ODBC的最大优点是能以统一的方式处理所有的数据库[4]。利用ADO与ODBC访问数据库的过程示意图如图4所示。
实际的链接方法是首先安装MySQL数据库的ODBC驱动程序MySQL Connector/ODBC,然后在控制面板中的ODBC数据源中创建一个DSN(数据源名)文件,以保证LabVIEW通过DSN来调用设计好的MySQL数据库。可以通过以下方法来创建DSN:打开控制面板上的管理工具,选择数据源(ODBC),点击“文件DSN”选项卡,再点击“添加”,选择MySQL ODBC驱动,然后为DSN文件命名,这样就建立了一个DSN文件[5-6]。建立好DSN文件后需要对其进行配置才能使用,包括用户名、密码、设置本地服务器还是远程服务器以及选择哪个数据库,设置好之后点击“Test”看是否能连接成功,显示connection successful则表示链接成功。
图4 访问MySQL数据库的流程图
本设计中需要存储的数据有温度、压力值、小时、分钟和日期等。由于时间日期不是实际的时间日期值,实际模拟时有的时间可能会重复,所以不宜用做主键,因此还需单独增加一个num字段,设置为主键,并把其属性设置成为auto-increment。
根据前面的分析,MySQL数据库中需要建立一个表,其中表的关键字包括:date、hour、minute、temperature、pressure、num,分别对应日期、小时、分钟、温度、压力和序号值等。
数据库链接成功以后就可以在LabVIEW里面通过LabSQL对数据库直接进行操作。LabSQL的基本操作是先创建一个连接、打开此连接、执行SQL语句,最后关闭该连接。本设计中基本就是用这4步来实现对数据库的各种操作。数据存储的程序框图如图5所示。
程序的主体是上面所说的LabSQL执行一次SQL语句的基本操作。其中执行的SQL语句是一条数据插入语句,用到的数据是前面所阐述的信号模拟输出的日期、时间、温度和压力值等。因此程序每执行一次就相当于在数据库中存储一个当前信号模拟输出的日期、时间、温度和压力值,达到数据采集以及存储到数据库中的目的。
图5 数据存储界面框图
数据存储到数据库中以后,用上面类似的方法执行SQL语句,可以实现对数据库的查询和必要的管理操作[7]。图6所示为程序实现了按日期查询一段时间内所有存储在数据库中的温度、压力值。输出的数据通过一张表,还有一个波形图显示出来,供用户观察。
本设计具体设计了按日期段查询、按天查询和按温度、压力值范围的查询,并且还有SQL语句直接执行等。其他的查询与上面的按日期查询程序结构类似。各个查询用一个事件管理程序整合到一起,在操作界面上希望执行什么样的查询,直接触发相应的按钮即可。
图6 数据查询界面的面板设计框图
本设计的系统主要操做分两步完成,一是温度压力模拟采集以及数据存储,另外一个就是数据库的查询操作。如图7所示为温度压力模拟采集以及数据存储的操作界面。
图7 温度压力模拟采集界面
操作面板的左边是一些初始值的设定,设定好初始值以后就可以进行温度压力信号模拟以及数据的存储。中间的是输出数据的波形显示,右边是一些重要的输出参数的显示。
如图8所示为数据库数据查询操作部分的操作面板。
图8 温度压力数据查询界面
通过温度压力数据采集的控制面板把采集到的数据存储到数据库里面以后,就可以通过该面板对数据库里面的数据进行操作。面板的左边主要是一些查询的动作,可以选择不同的查询对数据库进行操作,还有直接用SQL语句对数据库的操作。中间是温度和压力数据输出的波形显示,右边是输出详细数据的显示。
本文在深入研究LabVIEW图形化编程软件和数据库原理基础上,把MySQL数据库应用到温度、压力采集系统中。通过ODBC驱动程序使LabVIEW应用程序与MySQL数据库进行了通信,在LabVIEW环境下实现了数据的采集,同时还实现了对历史数据的存储、查询等功能,使数据管理更加系统、科学,大大提高了软件系统的可维护性,实现了界面友好、操作方便、直观、易于扩展等功能。
[1]雷振山.LabVIEW 7 Express实用技术教程[M].北京:电子工业出版社,2004.
[2]杨乐平,李海涛.LabVIEW程序设计与应用 (第2版)[M].北京:电子工业出版社,2004.
[3]唐波,潘红兵,赵以顺,等.在LabVIEW环境下基于ADO技术和SQL语言的数据库系统实现[J].仪器仪表学报,2007,28(4):227-229.
[4]陈锡辉,张银鸿.LabVIEW8.2程序设计从入门到精通[M].北京:清华大学出版社,2007.
[5]LOAN G.Designing and interrogation a database by using MySQL,PHP and LabVIEW programmes[J].Metalurgia International,2008,13(6):32-36.
[6]朱后,彭宇宁.在LabVIEW中动态配置ODBC数据源的方法[J].工业控制计算机,2006,19(7):45-46.
[7]戴敬.LabVIEW基础教程[M].北京:科学出版社,2004.