徐继宁,李建芯
(北方工业大学 电气与控制工程学院, 北京 100144)
摘要:针对实验室资产设备品种繁多、报废周期不一、地址信息变更频繁、环境安全难保障的特点,提出了将轻量级数据库SQLite嵌入在一个资产管理与环境监测系统中,利用Qt实现对管理软件的应用设计开发,最终实现了对实验室资产设备数据的采集、存储、管理以及对实验室温湿度环境状态的监测和曲线显示。
0引言
随着工程实践教育的发展,高校的实验室设备资产数量日益增大,品种类型多样, 且创新、开放实验室活动的开展也使得设备的流动性更强,工作环境日益复杂。在新的教育形势下,如何灵活有效地管理和利用实验室的资产设备是所有实验室管理人员面临的问题。
当今高校实验室的设备资产管理有几个特点:每个品种数量不大但种类繁多;更换、报废物品周期不一;重要设备需有使用记录;需要定期进行资产清查;确定重要设备位置等。传统化的固定资产管理仍是当今高校普遍采用的方式,还是采用纸制标签,利用手工方式将设备相关信息分类编辑管理[1]。这种管理方式虽然能从一定程度上对资产进行统计管理,但还存在很多固有的缺陷。因为标签长时间的保存容易损坏,往往会造成信息具有不可追溯性;固定资产信息无法实时追踪记录,变更操作繁琐;实验室环境状态缺乏预警机制,更难以保证实验室环境状态的安全。 因此本文设计了一个结合RFID技术和嵌入式数据库的新型资产管理与环境监测系统。
1系统总体设计
本文设计的实验室资产管理与环境监测系统框图如图1所示。该系统主要分为数据采集端、核心控制器、远程控制端和报警设备4部分。所有实验室固定资产配备RFID卡片, 用于表示和记录设备信息。
数据采集端完成两部分任务:(1)由RFID扫描器获取实验室内的设备信息;(2)通过各传感器进行数据采集,进行必要的环境监控。数据最终都由ZigBee网络传输到核心控制器端。其中RFID芯片采用MFRC522,ZigBee芯片采用TI 公司的CC2530。
控制器基于Linux操作系统开发,其核心芯片是三星的S3C6410。控制器主要任务是完成前端采集的数据的存储、显示以及对整个系统的控制。接收前端采集数据,将数据存储到数据库中并显示在基于Qt 4开发的人机交互界面中,利用无线网络与远程控制端进行交互。手机、Pad等移动终端设备组成了远程控制端,它们通过无线WiFi实现与核心控制端通信,可以对核心控制端传来的数据完成显示和控制功能。
为保障重要设备的安全,本系统提供了防盗报警功能。由超高频RFID扫描器对重要物品进行扫描,当设备非法移出时启动报警器。超高频RFID扫描器和报警器组成的报警设备通过有线方式进行通信。
在该系统中数据库主要支持的功能有存储由ZigBee协调器传来的资产信息、温度信息和湿度信息等数据,并将数据显示在本地嵌入式端;同时实现对资产信息数据的添加、删除、查询、修改、报废和变更记录等功能,对温湿度信息实现数据曲线显示功能。
2嵌入式数据库的选择
传统的数据库通常要专门的管理以及配置,不仅体积大、不便移植,而且使用也复杂[2]。而嵌入式数据库不需要在客户机服务器上的配置服务,它嵌入到了应用程序进程中。轻量级嵌入式数据库在运行过程中只要比较少的内存,速度快,效果也更加理想。嵌入式数据库一般也都支持SQL,通过SQL来管理应用程序数据,而不依靠原始的文本文件。
当前支持多平台的轻量级嵌入式数据库主要有Empress、BerkeleyDB、SQLite[3],如表1所示。 表1常用嵌入式数据库对比数据库大小/KB特点是否支持SQLEmpress800稳定性强、高速性、多重访问性支持BerkeleyDB300执行速度快、调度API完成操作支持SQLite250零配置、执行速度快、简单易用的API支持
由表1对比可得,SQLite数据库占内存最小,仅为250 KB,同时提供简单易用的API接口供开发者使用,因此最适合在实验室资产管理与环境监测系统中开发使用。
对于开源的嵌入式SQLite数据库,它方便使用管理、维护和配置,无需安装。该数据库储存在单一文件系统中,内嵌到应用程序中,支持Mac OS、Linux、Windows、UNIX等各种操作系统[4]。比起目前常见的SQL Server和Oracle数据库来说,SQLite数据库不需独自运行数据库的驱动系统,数据存取速度很快,是MySQL的1~2倍;支持2 TB数据存储量。它具有简洁优化的结构,主要由SQL编译器、内核、后端3部分组成[5]。在SQLite数据库体系结构的上部进行编译查询语句,在中部执行它,低层处理操作系统的存储和接口。所有SQL语句通过分词器和分析器生成语法树,交由代码生成器生成可以在SQLite虚拟机中执行的程序集[3,6] 。SQLite凭借较小的体积、简单的操作以及运行稳定的优点,使之与复杂的商业数据引擎在开发维护方面更占优势。
3SQLite在资产管理与环境监测系统中的实现
在本设计系统中,资产信息存入到SQLite数据库,用于支持用户对资产信息的检索、添加、修改、删除、报废以及数据变更等功能, 同时实现对环境温湿度和报警信息的存储,并以表格、曲线等形式显示。
3.1数据库表的设计
数据库中创建了资产信息表、报废资产信息表、信息变更表、温度表、湿度表和报警记录表6张表。资产信息表包含了每条资产的详细信息,如表2所示,它包含了资产编号、资产名称等14个字段。由于要对报废的资产做一定时段的存档,还需要一张报废表,报废表的字段等同于资产信息表。为了方便对资产变动信息进行登记,单独建立了信息变更表,如表3所示。对环境信息,主要记录时间和温湿度值,如表4所示。 表2资产信息表字段名称数据类型约束可否为空说明资产编号inter主键NOT NULL资产编号资产名称text无NOT NULL资产名称分类号text无NOT NULL分类号
表3信息变更表字段名称数据类型约束可否为空说明变更编号inter主键NOT NULL变更编号资产编号inter无NOT NULL资产编号使用者text无NULL使用者存放地点text无NULL存放地点归属单位text无NULL归属单位改变时间timestamp无NOT NULL改变时间
表4温度表字段名称数据类型约束可否为空说明时间idtimestamp主键NOT NULL时间温度real无NOT NULL温度值实验室text无NOT NULL实验室归属单位text无NOT NULL归属单位
3.2Qt下的数据库的建立
该系统用Qt进行数据库的访问, 采用了QtSQL模块进行数据库的驱动,用一套独立于平台和数据库的调用接口进行通信[78]。
首先创建数据库链接,也就是创建一个QSqlDatabase类的实例,代码如下:
QSqlDatabase db= QSqlDatabase::addDatabase(“QSQLITE”);
db.setDatabaseName(“databasefile”);
链接好数据库后,要创建数据库表,代码如下:
void ConnDlg::creatDB
{QSqlQuery query;
query.exec(“create table asset(“//创建资产信息表
“assetid int primary key,”//插入主键
“other varchar(50))”));}
QSqlQuery类提供了一个接口,用于执行SQL语句。通过SQL语句实现了对数据库的查询、添加、删除和修改等操作。
3.3资产报废的数据实现
为了提高追溯能力和管理水平,实验室资产报废后需存档一段时间,因此需要单独形成一份报废资产信息表。资产报废操作先要将报废资产信息从资产信息表中复制到报废资产表中,然后从资产信息表中删除该信息,如图2所示。主要代码如下:
insert into scraptable(assetid,assetname,...)select assetid,assetname,... from assettable;//复制信息到报废表
removeAssetsFromDatabase(assetid);//在资产信息表中删除该资产信息
3.4变更记录的实现
实验室资产是实验室成员的公共财产,使用过程中部分资产的信息变动较大,尤其是“使用者”和“存放地点”这两条信息。为此建了一张变更信息表,专门存放每个资产的变更信息, 如图3所示。每当资产的使用者和存放地点变动时,可以在资产信息窗口中选中要变动的资产,直接添加变更信息到变更信息表中。变更记录时采用事务方式将变更信息插入到变更信息表中显示。主要代码如下:
QSqlDatabase::database.transaction ;//启动事务
scrapModel->insertRecord(-1,record);
QSqlDatabase::database.commit;//事务结束
3.5环境监测温度曲线显示的实现
大型贵重设备的环境监测已经成为实验室不可忽略的问题,该系统用无线传感网络方便地实现了实验室环境参数的监测,主要关注设备周边的温湿度变化。为提高可视性,系统采用高性能绘图图表Qt C++控件QCustomPlot,可以绘制曲线图、趋势图、柱状图。图4是对实验室一天中每两个小时采样一次数据的温度变化情况。
4结论
本文介绍了一款新型的面向高校实验室资产管理和环境监测嵌入式系统,文中主要就该系统中轻型数据库SQLite数据库的选型、设计和开发作了介绍。作为一个综合了ZigBee、RFID、嵌入式技术的实用系统,SQLite与Qt的联合开发对系统的性能完善和提高起到了不可替代的作用,也表明了SQLite数据库在嵌入式端的优越性,对相关系统的开发有着积极的借鉴意义。
参考文献
[1] 毛行标.RFID技术在高校实验室设备资产信息化管理系统中的应用[J].中国现代教育装备,2006(11):6970.
[2] 李强,曾国强,罗群,等.嵌入式数据库SQLite在核仪器数据管理中的应用[J].核电子学与探测技术,2014,34(8):921925.
[3] 王峰超,申萍,严翔,等.SQLite在机车故障诊断系统中的应用研究[J].铁道机车车辆,2012,32(4):9093.
[4] 梁爽,任杰.嵌入式数据库SQLite在油田监控系统中的应用[J].试验研究,2014,33(11):2930.
[5] 张颖,易金花,张晓玉,等.基于嵌入式Linux的上肢康复机器人用户系统研究[J].电子技术应用,2014,40(5):1417.
[6] 邓宗权,蒋向东,王继岷,等.基于嵌入式Linux汽车智能仪表系统的设计[J].微型机与应用,2014,33(4):2628.