嵌入式数据库SQLite在准在线故障诊断系统中的应用*

2011-10-21 11:30孙俊杰
制造技术与机床 2011年9期
关键词:嵌入式故障诊断振动

徐 阳 孙俊杰

(郑州大学振动工程研究所,河南郑州450001)

准在线故障诊断系统是一种可以对设备进行精密诊断和故障监测的便携式故障诊断系统,与传统的故障诊断系统相比,既有离线系统的灵活方便和便携的优点,又具有在线系统的强大分析功能和进行较长时间故障监测的能力,主要用于大型设备的启停机监测,以及设备的故障诊断分析等方面。由于准在线故障诊断系统的这些特点,其在数据的采集、存储和分析方面都具有较高的要求,本文主要讨论一种嵌入式数据库SQLite在准在线故障诊断系统中的应用。

1 嵌入式数据库SQLite

数据库通常用来实现对大量数据的存储、检索等功能。早期的数据一般通过某种格式存储在文件中,而后来逐渐发展成为复杂的大型关系数据库,如Oracle、MySQL 等。

在嵌入式领域,早期的数据存储也常常采用系统自定义的数据结构和文件格式来进行存取和查询。但近年来随着各种嵌入式应用的飞速发展,嵌入式软件中对数据存取和查询功能的要求也越来越高,数据库技术也开始越来越多的应用于各种嵌入式系统中。而嵌入式系统中很多的应用,可能仅仅需要用到数据库的一些特性。比如有时我们需要的可能只是一个简单的基于磁盘文件的数据库系统,这样就不必安装庞大的数据库服务器,利用简单的嵌入式数据库就可以了。另外嵌入式系统资源上的限制也决定了我们不可能采用大型的关系数据库。

SQLite是D.Richard Hipp在2000年开发的一个小型嵌入式数据库。它是完全独立的,不具有外部依赖性,其源代码完全开源,可以免费用于任何用途。除此之外SQLite还具有零配置、轻量级自包含、简单、灵活、可靠等特点,非常适合应用于嵌入式系统当中。

2 基于SQLite的准在线故障诊断系统的软件架构

系统采用OMAP5912作为处理器,其ARM端运行Linux操作系统,对系统的外围模块进行管理控制;在DSP端运行DSP/BIOS实时内核,对采集的数据进行复杂的处理。系统的软件主要有6个功能模块:数据采集模块、存储模块、数据分析模块、用户管理操作模块、显示模块和通讯模块,如图1所示。

(1)数据采集模块 主要是开辟不同的线程来分别控制多个传感器进行振动数据采集,并将采集到的数据送入指定的内存中等待系统进行处理。

(2)存储模块 用来将用户需要的数据存入指定的存储介质(FLASH、SD卡、硬盘等)中,主要包括用户的系统配置信息、采集的源数据、处理过的数据以及各种分析诊断结果等。

(3)数据分析模块 对采集到的数据进行实时分析,主要由系统控制DSP处理器来进行。

(4)用户管理操作模块 用来与用户进行交互,使用户可以根据不同设备的需求来进行各种参数的设定,同时可以使用户自行选择合适的诊断方法进行诊断。

(5)显示模块 主要是将设备的诊断信息通过LCD实时显示出来。

(6)通讯模块 主要是通过USB或网络来访问系统,从而获得系统的各种数据,方便与企业的设备管理系统进行对接。

3 SQLite在准在线故障诊断系统中的应用

3.1 SQLite的应用程序接口API

SQLite一共有80多个C/C++的API,另外还有很多数据结构和预定义的宏等。1个简单的数据库应用程序只需要使用3个函数就可以:sqlite3_open()、sqlite3_exec()、sqlite3_close。

sqlite3_open()表示在当前目录打开数据库,如果数据库不存在则自动创建1个数据库。其函数原型为:

sqlite3_close()与sqlite3_open()对应,用来关闭打开的数据库,在应用程序中与sqlite3_open()一般都要成对出现。

sqlite3_exec()函数则是用来执行SQL语句。它的函数原型为

其中第3和第4个参数用来指定回调函数和回调函数第一个参数。对于回调函数callback,是在执行SQL语句的时候被回调。当执行查询类型的SQL语句时,每返回一行查询记录,就会调用一次定义的回调函数。

3.2 系统SQLite数据库设计

由第二节所述系统的基本软件架构可以看出,系统的各个模块都与数据有着密切的关系,整个系统实质上就是对振动数据的采集、处理和管理的过程。对此本系统采用SQLite以文件数据库的形式来进行对数据的管理和操作。SQLite在系统的不同模块中有着不同的应用,并且将各个不同的功能模块有机地结合在一起。下面对这些具体的应用进行分别阐述:

(1)在数据采集模块中的应用

数据采集模块有6个测振通道,用户通过系统设定其各个通道工作与否,同时设定进行数据采集或是监测。在SQLite中建有6个表(source_data1——source_data6)来分别存储对应6个通道采集来的振动数据。这6个表具有同样的结构,其中源数据的结构如图2所示。

在C语言中建立这种表的具体函数实现如下:

在这6个振动源数据表中,共有 ID、data、time、samsrc_info、freq、num、sensor_type 七个字段。振动源数据是根据设定的采集点数以组为单位来进行存储,设定的采集点数一般有512、1024、2048等选择,因此对应的一组振动数据就分别由512、1024、2048个浮点数组成,在存储时先将这些浮点数通过编码转换,然后以二进制的形式存储在表的data字段,而对应的采集点数则存在num字段。另外因为在故障诊断中有时需要用到各种信息融合的技术,如全息谱技术、全矢谱技术,而信息融合技术需要采集的信号是同源信号,在数据表中samsrc_info字段则反映了这些信号的同源信息。根据samsrc_info字段的内容系统即可判断某一通道采集的信号与剩余哪个通道的哪组信号是同源的,从而能够进行信息融合。

当系统执行较长时间故障监控功能时,由于数据的采集频率较高,因此表的膨胀速度很快,当表过大时会影响系统的存取性能。对此系统启动时会自动判断表的大小,当表的大小超过设定的大小后会提示用户将数据转存到另一个表中或另建一个关联数据库存放以往的数据,从而保证系统的性能不受影响。

(2)在操作管理模块中的应用

系统的操作管理包括用户管理、系统参数设定、采集参数设定、数据处理方式选择、显示模式选择、存储控制和通讯传输控制等。这些管理数据和配置信息存储在数据库中的一系列配置表中:user表、syscfg表和vibcfg表等。当进行参数设定时,使用sqlite3_exec()函数执行SQL语句中的INSERT命令,可以将各参数保存到对应配置表中,如图3所示。同样,当需要读取参数时,则执行SQL语句中的SELECT命令来实现。在系统对SQLite进行操作的过程中要注意:由于在系统运行时要频繁地对数据库进行操作,而数据库打开函数sqlite3_open("sysdata.db",&db),比较占用资源,因此只在系统启动时打开一次数据库,系统运行时只进行操作而不关闭数据库,所有操作只是对数据库中的表进行。但是SQLite不支持多线程同时对表进行写操作,因此系统必须对数据库的写操作进行调度,防止发生阻塞。

(3)在通讯模块中的应用

当系统采集的数据需要转存或需要与企业的设备管理系统对接时,系统可通过USB数据线或网线与PC机互联。由于SQLite是文件型数据库,所有数据都存在一个sysdata.db文件中,并且SQLite的数据库文件在Window系统下可以同样简单地进行解析,因此在传输时就可以直接将该sysdata.db文件进行传输。另外也可以只传输系统产生的各种报表文件。

(4)在显示模块中的应用

显示模块主要用来实时显示波形频谱图、相位图和各种故障分析方法产生的图表,使用户对振动信息有更直观的了解。显示的波形数据主要来自数据库中的六个源数据表,其他图表则由分析模块调用DSP内核对源数据进行处理获得。

系统采用MiniGUI来进行图形用户界面的设计,MiniGUI本身就是用 C语言开发的,因此可以与SQLite很好地进行结合,可以在MiniGUI中直接调用SQLite的各种 API函数,只需要在头文件中包含“sqlite3.h”文件即可。

4 结语

准在线故障诊断系统是便携式故障诊断系统中相对高端的产品,由于其在采集的同时还要能够有较强的数据处理和分析能力,因此对系统的设计有较高的要求。本系统采用嵌入式数据库SQLite来进行数据的存储和管理,避免了采用一般文件存储时实时性和安全性差的问题,也增强了系统的稳定性和扩展性。同时由于SQLite对多种编程语言的支持和较强的移植性,大大减少了系统开发和维护中的工作量。

[1]韩捷,张瑞林.旋转机械故障机理及诊断技术[M].北京:机械工业出版社,1997.

[2]欧文盛.ARM嵌入式Linux应用实例开发[M].北京:中国电力出版社,2008.

[3]解辉,徐玉斌,李建伟,等.基于sqlite的嵌入式数据采集系统的设计与研究[J].计算机与数字工程,2008(6):91-94.

[4]孙俊杰,李海龙.基于OMAP的准在线故障诊断系统的硬件平台研究[J].仪表技术与传感器,2010(5):71-73.

[5]倪天龙,张贤高,王培.数据库SQLite在嵌入式系统中的应用[J].微计算机信息,2005(10):35-37.

[6]Chris Newman.SQLite[M].Indianapolis.Sams Publishing,2004.

猜你喜欢
嵌入式故障诊断振动
某调相机振动异常诊断分析与处理
基于包络解调原理的低转速滚动轴承故障诊断
Focal&Naim同框发布1000系列嵌入式扬声器及全新Uniti Atmos流媒体一体机
振动与频率
This “Singing Highway”plays music
TS系列红外传感器在嵌入式控制系统中的应用
数控机床电气系统的故障诊断与维修
搭建基于Qt的嵌入式开发平台
基于ANSYS的高速艇艉轴架轴系振动响应分析
基于LCD和排列熵的滚动轴承故障诊断