1、UPS 蓄电池监控系统嵌入 SQLite 数据库技术研究提要 本文针对 UPS 蓄电池监控系统中存在的数据管理问题,提出一种在 UPS 蓄电池监控系统嵌入 SQLite 数据库管理系统的设计方案,并详细介绍方案开发平台、系统架构、工作原理及实现方法,最后以实验结果数据进行分析验证,说明方案可行和有效性。 关键词:UPS 蓄电池;在线监控系统;SQLite 数据库 中图分类号:TP311 文献标识码:A 收录时间:2014 年 5 月 12 日 一、引言 随着信息化社会的发展,能够提供持续、稳定、不间断的电源供应的 UPS 已广泛地应用于各个业务环节,UPS 可以在市电突然中断时还能持续一定时间
2、给各设备供电,使用户不致因停电而影响工作或丢失数据,其重要性随着信息应用重要性的日益提高而更加突显出来。 作为 UPS 系统重要组成部分的单体蓄电池组,其性能决定了 UPS 性能,要了解电池性能状况需实时跟踪蓄电池的变化特性,蓄电池监控设备是用来通过采集并分析电池特性数据,实现对电池进行有效的管理,其中电池特性数据的管理方式是决定系统性能的重要因素。传统的 UPS蓄电池在线监控设备中对采集的数据沿用的是早期数据管理,直接将数据存放在文件系统。由于简单的文件系统存在一些缺点,比如数据与程序独立性差;数据共享性差,冗余大;产品后续功能扩展差等问题导致系统性能低下。因此,蓄电池监控系统的数据管理水平
3、的提高是系统设计的一个重要目标。 基于此,本文提出一种有效解决方案:在蓄电池监控系统主机中嵌入 SQLite 数据库管理系统,主机实时采集的蓄电池各项特性参数管理工作交于 SQLite 数据库完成,程序和数据间相互独立,数据库管理系统提供应用程序和数据间的接口管理。本文第 2 节对相关知识进行介绍;第3 节介绍设计方案的开发平台,系统架构及实现方法;第 4 节给出方案结果验证;第 5 节对方案进行总结。 二、相关知识 SQLite 是一种开放源码的超轻量级嵌入式数据库引擎,SQLite 很小巧编译后的 SQLite3.0 的动态链接库只占用几百 K 的空间,管理的数据量可达 2TB,提供 B-
4、Tree 存储数据模式,数据以 ASCII 码形式存储,支持 SQL 快速查询,具有小、快、稳定、免费特点。 SQLite 支持跨平台,操作简单,提供 Windows/Linux/Unix 等各种操作系统接口,同时能够跟很多程序语言相结合,比如 Tcl、PHP、Java 等。同 Mysql、PostgreSQL 世界著名的开源数据库管理系统相比,它的处理速度甚至比他们还快。 三、方案设计 (一)方案平台。产品硬件开发平台使用了内核为 32 位工业级品质的 CPU ARM9 系列 AT91SAM9260,200MHZ 主频,32MB 系统内存,32MB FLASH 存储器。基于这个硬件平台预装了
5、微软的 Windows CE5.0 操作系统,Windows CE 操作系统是当前市场上最流行的实时多任务操作系统之一,微软针对 CE 的应用开发提供了相应的 SDK 开发包,包括各种接口驱动程序 API,以及推出一系列完善的开发工具,用户可在此基础上方便、快速的开发出各种工控产品。 (二)蓄电池在线监控系统架构。系统由在线监测主机、单体电池传感器模块(以下简称传感器模块) 、信号转接器组成。蓄电池在线监控系统原理示意图如图 1 所示,其中传感器模块是一种电子数字传感器,直接连接到单体电池组上,用于测量连接的单体电池组电压,温度及阻抗。模块之间通过标准通信线与在线监测主机以 RS485 或 R
6、S232 通信方式进行数据交换。监控主机端通过液晶显示屏来监测参数和设定报警阀值及通信参数。同时主机通过 TCP/IP 网络或者 RS485 接口,将采集的数据和告警事件信息实时上传给后台管理系统。 (图 1) (三)软件设计流程。系统整个实现流程为:在线监测主机通过RS485 或 RS232 端口定期向传感器模块发送测量单节电池的电压、电流、内阻和温度等电池参数的命令,然后等待接收传感器发回采集的特性数据,这些接收的特性数据一方面用于刷新监控主机的实时数据界面;另一方面被交给 SQLite 数据库管理系统,保存到嵌入在本机设备中的数据库,系统组成如图 2 所示。 (图 2) 此外,用户通过主
7、机界面接口从 SQLite 数据库中提取电池的历史特征参数,显示到主机的历史数据界面进行查询,主机端具有的智能分析功能可以根据设定的报警阀值自动判断电池的性能,发出告警信息。主机端采集的数据同时发给后台管理系统,通过后台管理界面进行远程集中监控系统,完成电池特性数据查询,性能分析等处理工作。 (四)SQLite 嵌入数据库实现。SQLite 3.0 提供了丰富的 API 接口函数,但简单的程序仍然使用三个函数就可以完成: sqlite3_open() ,sqlite3_exec() ,和 sqlite3_close() ,其中 int sqlite3_open()是打开指定的数据库,如果数据库
8、不存在,sqlite 会自动建立它。如果它存在,就尝试把它当数据库文件来打开;int sqlite3_close()是关闭数据库,一个数据库开启后,结尾时不要忘了用这个函数关闭数据库;sqlite3_exec()是使用回调来执行 select 操作。下面简单介绍蓄电池监控系统中嵌入 SQLite 数据库过程。 第一步:将编译好的 sqlite3.lib,sqlite3.h,sqlite3.dll 添加到项目工程文件夹中。 第二步:应用程序中加入头文件: #include “sqlite3.h“ #pragma comment(lib,“sqlite3.lib“) 第三步:程序中调用 API 函
9、数,实现数据库的创建,打开,查询,关闭等操作。 第四步:编译运行项目,系统文件中将生成保存电池的特性参数的数据库文件*.db3。 四、结果分析验证 使用 SQLite 数据库图形化管理工具将数据库文件导入到图形界面中,用户可以查询实时监测的电池各项特性参数,视图效果如图 3 和图4。 (图 3、图 4) 图 3 是蓄电池电压-温度数据表,记录了电池所在组号、节号,及被蓄电池传感器模块采集的电压、温度、内阻值和该数据采集的时间点。图 4 是蓄电池告警事件数据表,保存的是被系统监测到的告警事件及事件发生的时间点信息。 依据上述结果图表中得出结论:系统监测到的参数都交由 SQLite 数据库管理,解
10、决了程序独立性差的问题;数据库中的所有数据都是唯一有效地数据,不存在多余或重复的数据;依据两个基本表的关联操作能导出局部关系视图,方便产品的功能扩展。 五、总结 本文提出 UPS 蓄电池在线监测系统中嵌入 SQLite 数据库管理系统的方案,详细介绍了系统架构原理和实现流程,依据实验数据说明了将SQLite 数据库管理系统嵌入蓄电池在线监测系统中,能有效地提高电池特性参数管理的可靠性。 主要参考文献: 1王力坚.UPS 蓄电池监控J.应用实践,2010. 2彭艳.基于嵌入式数据库 SQLite 的智能导游系统J.计算机系统应用,2011. 3杨建华,黄宇东等.基于 ARM/Linux 的燃料电池温度监控系统 GUN设计J.信息化纵横,2009.