logo资料库

基于嵌入式数据库的实时数据采集方法.pdf

第1页 / 共3页
第2页 / 共3页
第3页 / 共3页
资料共3页,全文预览结束
基于嵌入式数据库的实时数据采集方法 基于嵌入式数据库的实时数据采集方法 Real-Time Data Collecting Based On Embedded Database Abstract: The paper was after analysing the real requirement of embedded remote real-time supervisory system , the application system architecture of putting forward baseds on embedded database, and realized the transplanting of embedded database Sqlite under S3C44B0X and µClinux,the paper also discusses the application of Sqlite in real-time data collection with a serial communication program. Key Words: embedded database µClinux Sqlite serial communication 摘要:本文在分析了嵌入式远程实时监控系统的实际需求之后,提出基于嵌入式数据库的应用系统架构方案,实现了嵌入式数 据库Sqlite在S3C44B0X和µClinux环境的移植;并以串口通讯程序为例,介绍了嵌入式数据库Sqlite在实时数据采集中的应 用。 关健词:嵌入式数据库 µClinux Sqlite 串口通讯 1引言 在嵌入式远程监控系统中,需对大量的实时数据进行采集和处理,而对数据的处理通常可采取两种方式。一种是基于文件方 式,另一种是基于数据库方式。对于文件方式,由用户直接对记录所在的文件进行操作,I/O开销较大,同时由于应用程序是 以独占方式打开数据文件的,因此,数据的共享性和应用软件的可重用性差,影响了系统的整体性能;对于数据库方式,由于 数据和程序相互独立,通过事务来进行调度与并发控制,可有效地对数据进行存取、查询等共享操作,同时借助于数据库所具 有的安全性检验、完整性检查等多种安全措施,可确保系统具有较好的整体性能。本文结合嵌入式数据库技术在机房环境设备 远程实时监控系统中的应用,对嵌入式数据库EDB(Embedded DataBase)的设计与实现方法进行讨论。 2嵌入式远程监控系统的需求分析 通过对机房环境设备特点的分析,可把机房环境监控系统的基本功能概括为:现场数据的实时采集、发送和显示;对采集到的 数据进行处理和存储;对数据处理的结果进行分析、判断和报警;提供多种业务支持等。实现上述监控功能的嵌入式Web远 程监控系统的体系结构如图1所示,其主体结构由三部分组成:现场数据采集、嵌入式Web服务器和远端监控主机。其中,嵌 入式Web服务器是远程监控系统的中心节点。其主要任务涉及两个方面:一方面Web服务器允许远端监控 主机通过浏览器远 程实时地监视现场信号的变化,从而实现远程监控的目标;另一方面是对现场数据的采集,即Web服务器通过现场总线 (RS232、RS485、USB等)与本地数据采集设备直接相连,以定时巡检的方式通过现场总线对传感器的信号进行实时采集 和处理。 在机房环境设备嵌入式远程实时监控系统中,需要实时采集的数据主要包括高低压配电系统及UPS电源的电压、电流、电源 开关状态等参数,以及机房内部的环境参数(如温度、湿度、水浸、烟感、门禁等)等。由于机房环境设备远程实时监控系统 具有高信息吞吐量、多用户数据共享、实时性强等需求特点,因此,对数据的存储与处理宜采用数据库方式,以达到对数据的 统一管理,增强应用程序的可移植性的目标。 3嵌入式系统的数据库设计 基于嵌入式操作系统和嵌入式数据库系统构建的嵌入式远程监控系统的系统结构如图2所示。嵌入式数据库系统是介于用户和 实时操作系统之间的一层软件,它由众多程序模块组成,其作用是对数据库中的共享数据进行有效的组织、管理和存取。 从嵌入式数据库的应用方式来看,通常可以将其分为两种类型,一种是通用的嵌入式数据库系统,如具有分布式数据管理功能 的嵌入式数据库Solid、开放源码的免费嵌入式数据库Berkeley DB和Sqlite等;另一种是针对具体的应用对象而自行设计开发 的专用嵌入式数据库系统,这种方式一般是把数据库嵌入到应用软件中作为应用程序的一部分,不具有独立性。
一般情况下,嵌入式数据库无须独立运行的数据库引擎,它由程序直接调用相应的API函数去实现对数据的存取操作。或者 说,嵌入式数据库是一种具备了基本数据库特性的数据文件。嵌入式数据库与其它数据库产品的区别是,前者是程序驱动式, 而后者是引擎响应式。由于嵌入式实时数据库系统在运行环境和运行方式上与常见的企业级数据库管理系统有很大差别,传统 的企业数据库如Oracle、Sybase等在实时嵌入式环境下很难发挥作用。因此,在机房环境设备远程监控系统中,选用了通用 型的免费嵌入式数据库Sqlite,构造了一个基于S3C44B0X+µClinux+Boa+Sqlite的嵌入式Web Server。 3.1 Sqlite简介 Sqlite是一个轻量级别的关系数据库,具有三级模式的结构体系,即用户模式、逻辑模式和存储模式。相对于传统数据 库,Sqlite具有更好的的实时性、系统开销小、底层控制能力强。Sqlite能够高效地利用嵌入式系统的有限资源,提高数据的存 取速度,增强系统的安全性,并具有如下特点: (1)微小的内核结构 整个系统代码少于3万行,运行时占用的内存少于250KB,在满足应用的前提下紧缩了其系统结构。 (2)对标准SQL的支持 Sqlite虽然简单,但其内嵌的SQL在很大程度上实现了ANSI SQL92标准。特别是Sqlite支持视图,触发器,支持嵌套SQL,充 分满足了嵌入式应用开发的需求。 (3)支持事务ACID特性 Sqlite具有事务处理功能,自动维护事务的完整性、原子性等特性;支持实体完整性和参照完整性。 (4)简单的API函数 Sqlite源代码用C编写,提供了C语言编程接口,具有简单的API函数,可由程序直接调用相应的API函数去实现对数据库中数 据的存取操作。为编写数据库程序提供了方便。 3.2 Sqlite在µClinux下的移植 Sqlite是一个通用的免费嵌入式数据库,为了将Sqlite应用到S3C44B0X+µClinux环境中,首先需把Sqlite移植到µClinux平台 上,然后再将Sqlite编译成µClinux下的一个的普通应用程序。移植的主要步骤如下: (1)将下载的Sqlite软件包解压缩到µClinux-dist/user目录。 (2)完成用户应用程序的如下几项设置: ①在µClinux-dist/user/Makefile、µClinux-dist/config/Configure.help、µClinux-dist/config /config.in三个文件中查找“cpu”有关 选项,然后在它的下面,加上Sqlite项,把Sqlite添加为µClinux的一个新UserSettings项。 ②在µClinux中修改sqlite/main.mk、sqlite/src/os.c、sqlite/src/shell.c三个文件和添加sqlite/Makefile 文件,从而按照µClinux- dist/Documentation/Adding-User-Apps-HOWTO的说明把Sqlite作为一个用户应用程序,将其做成一个Shell。 ③通过make dep、make lib_only、make user_only、makeromfs、make image等操作编译µClinux的Kernel,并在µClinux- dist/images下生成包含有Sqlit的romfs文件系统。 (3)把含有Sqlite应用程序的romfs下载到S3C44B0X-µClinux板上的/tmp目录(此目录须是可读写的),运行Sqlite即可。 4 基于Sqlite的实时数据采集举例 基于嵌入式数据库的远程监控系统结构如图3所示。在嵌入式监控系统启动后,加载程序负责在加电后对微处理器进行必要的 硬件设置并初始化内存,然后把µClinux内核映像从Flash复制到内存,再把控制权交给内核,使内核运行,最终使应用程序运 行。µClinux内核作为应用程序控制系统硬件的接口,提供应用程序对硬件的间接访问。在具体设计中,对微处理器 S3C44B0X中内置A/D转换器的操作、对键盘的操作以及对LCD的操作,均由在µClinux下编写的设备驱动程序来完成,这些驱 动被编译进µClinux的内核。 在机房环境设备远程监控系统中,系统的主要任务由两个不同的程序(进程)来完成,即实时数据的采集处理程序和网络服务 程序。 网络服务程序由两部分构成:嵌入式Web Server和CGI程序。嵌入式Web Server作为在后台运行的守护进程,负责监听来自 网络的客户请求,当用户通过IE浏览器向本地系统发出请求时,启动相应的CGI程序,将请求转化为服务器能够识别的格式, 从公共缓冲区或Sqlit数据库中读取数据并进行处理后,再由CGI将结果转化为Web浏览器能够识别的格式,作为Http应答消息 回送到客户端,从而完成客户端与本地系统的交互操作。 实时数据采集程序由如下模块构成:数据采集模块,数据处理模块,LCD模块,数据保存模块,键盘模块。数据采集模块负责 按照用户设定的控制参数(如A/D通道、采集频率),对外部信号进行采集,并将采集的数据送到数据处理模块。数据处理模 块对采集的数据进行数字滤波,数据处理模块将滤波后的数据存入公共的数据缓冲区。LCD模块负责将公共数据缓冲区的数据 按照用户要求的格式进行显示。数据保存模块负责将公共缓冲区的数据保存到Sqlite数据库中。键盘模块提供用户在现场对设 备进行控制的手段,用于设定采集的参数。串口通讯程序的主要代码如下: int insertdb(int d1, int d2, int d3, int d4) { int ret; char *errmsg; sqlite db=sqlite_open("mydata", 0777, &errmsg); /*打开数据库*/ if (db==0){fprintf(stderr, "Could not open database: %s\n", errmsg); sqlite_freemem(errmsg); exit(1); } ret=sqlite_exec_printf(db,"insert into mytable(localhost, root, broot, mytest)\n"
"values('%d','%d','%d','%d')",null,null,&errmsg,d1,d2,d3,d4); /*插入数据*/ if (ret!=SQLITE_OK) fprintf(stderr, "SQL error: %s\n", errmsg); sqlite_close(db);} int main( ) { int fd, res_w, res_r, i, j, k;struct termios oldtio,newtio; char inbuf[255],char cbuf[4], int buf[4]; res_w = 0,res_r = 0; /*开启设备用于读写,非控制 tty 模式*/ fd = open(DEVICE, O_RDWR | O_NOCTTY ); if(fd < 0) {perror(DEVICE); exit(-1);}tcgetattr(fd, &oldtio);/*储存当前的串口设置*/ bzero(&newtio,sizeof(struct termios)); /*清空新的串口设置结构体*/ …………………/*控制串口数据接收方式, 效验位和停止位的设置, 设置波特率(9600) ,设置控制模式*/ tcsetattr(fd, TCSANOW, &newtio); /*设置端口新属性*/ tcflush(fd, TCIFLUSH); cbuf[0] = 0x00; j = 0; for(k = 0; k < 4; k++) { switch (j) { case 0: default:cbuf[1] = 0x00;j = 2; break; case 2:cbuf[1] = 0x02;j = 0;break; } res_w = write(fd, cbuf, 2);res_r = read(fd, &inbuf, 255); /*读写数据*/ if(res_r != -1) { for(i = 0; i < res_r; i++) {buf[i] = (int)inbuf[i];buf[i] = buf[i] & 0xff; } printf("\n"); if(insertdb(buf[0], buf[1], buf[2], buf[3])) printf("insert into db success!");} /*读串口数据写入数据库*/ else { perror("read fail"); exit(-1);} } tcsetattr(fd, TCSANOW, &oldtio); /*恢复端口属性*/ close(fd); exit(0); } 5 结束语 在嵌入式系统中,利用嵌入式数据库对数据进行操作和管理是嵌入式系统应用发展方向,它简化了应用程序的整体开发过程, 提高了用户存取记录的效率,实现了多用户数据的共享,可满足嵌入式远程监控系统的数据管理要求。经实践证明,基于 Sqlite的实时数据采集与处理方案取得了较为理想的效果。 参考文献 [1] Olson,M.A,Selecting and Implementing an Embedded Database System, IEEE Computer,2000.33(9):27-34 [2]卢炎生,潘怡等,一个内存数据库管理系统的数据组织,华中理工大学学报,1999,27(10):64-66 [3]杨进才,刘云生等,嵌入式实时数据库系统的存储管理,小型微型计算机系统,2002,24(1):42-45 [4]冯玉才,李东等,一种移动数据库管理系统的体系结构[J],计算机研究与发展,2001,5:620-624 作者简介:班建民(1966-),男,汉族,硕士,计算机专业。主要研究领域:网络与智能控制,嵌入式技术。 通信方式:苏州新区滨河路1701号苏州科技学院电子与信息工程系; 邮编:215011 Email:banjm@sina.com banjm@mail.usts.edu.cn
分享到:
收藏