工控网首页
>

应用设计

>

嵌入式数据库SQLite在电梯B/S监控中的应用

嵌入式数据库SQLite在电梯B/S监控中的应用

2008/3/28 15:26:00
摘要:提出了在电梯嵌入式监控中使用SQLite数据库的方案。在介绍SQLite的特点及监控方案整体结构的基础上,以电梯B/S监控CGI程序访问数据库为例,着重介绍了SQLite的用法,最后介绍了基于三星2410的监控终端硬件平台。 关键词:嵌入式数据库SQLite B/S监控S3C2410 基于嵌入式的B/S监控方案由于其成本低、体积小、使用方便,越来越受到工程技术人员的关注。与此同时,在设备的嵌入式B/S远程监控、故障诊断中需交换的数据越来越多,对数据库的要求越来越高。传统的桌面数据库建立的开发模型是数据库控制应用程序,需要专九的管理和配置,使用复杂、体积大、不便于移植。因此,对适合嵌入式的数据库的研究已成为数据库领域一个新的研究方向。 在小区或楼宇的电梯监控中,大多是基于PC机的C/S或B/S监控。一种是利用CAN总线或电话阐络接入PC机,采用电梯监控采集卡向下通过CAN总线与电梯通信,向上通过RS232接口接入PC机。一种是采用以太网的SOCKET方式,由PC机实现B/S或C/S监控。这些方案运用传统的桌面数据库来实现基于PC机的C/S或B/S监控,功能相对强大,但成本较高。在智能下移、以太网应用到设备层的趋势下,研究嵌入式数据库在电梯B/S监控中的应用是非常有意义的。 1 SQLile数据库简介 SQLite是由D.Riehard Hipp于2000年编写的执行自容纳、可嵌入、零配置数据库引擎的小型C库。它支持多数SQL92标准,可以在所有主要的操作系统上运行,并且支持大多数计算机语言。其作为PHP V4.3中的一个选项引入,已构建在PHP V5中,比MySQL快2倍以上,且完全开放。SQLite虽然比Berkeley DB功能稍弱,但是Berkeley DB不支持SQL,体积比SQLite大,在某些商业应用上不是免费的,况且在开源社区的推动下SQLite的功能在增强,因此SQLite正在成为受欢迎的开源数据库之一。 嵌入式数据库来自于其嵌入式运行模式,它使用精简代码编写,零配置,直接在应用程序进程中运行,并且占用资源非常少。嵌入式数据库系统没有管理员,具有自调节和自适应能力,能够“无处不在”。SQLite是一个非常适合嵌入式应用的数据库,这可以从其设计的目的和独特的特点看出。SQLite设计的主要目的是简单:简单的管理、简单的操作、简单地嵌入、简单的维护。SQLite的特征如下: (1)零配置。SQLite在使用前不需要安装设置,不需要进程来启动、停止或配置,不需要管理员去创建新数据库或分配用户权限,在系统崩溃或失电之后自动恢复。 (2)无服务器。大多数SQL数据库引擎是作为一个单独的服务器进程被执行。访问数据库的程序使用某种内部进程通信(典型的是TCP/IP)与服务器通信,完成发送请求到服务器和接收查询结果的工作。SQLite不采用这种工作方式。使用SQLite时,访问数据库的程序直接从磁盘上的数据库文件读写,没有中间的服务器进程。 (3)精简性。当尺寸优化后,在不减少功能的情况下,整个SQLite库小于225KB。如果在编译时去掉一些不需要的特性,库的大小能被减小到170KB。IBM最新发行的CloudScape数据库引擎是2MB的罐文件,压缩后仍比SQLite大10倍;Firefox宣称其客户订制的库只有350KB,但是不包括数据库引擎;来自Sleepycat的Berkeley DB库是450KB,并且删去了SQL支持。通过比较可知:SQLite非常小。 (4)简单的访问。一个SQtjte数据库是一个单独的普通磁盘文件,能够被定位在路径层次的任何地方。如果SQLite能读写磁盘文件,则它也能访问数据库。大多数SOL数据库引擎趋向于把数据存为一个大的文件集合,通常这些文件在一个标准的定位中,只有数据库引擎本身能访问它。 (5)可变长度的记录。一般的SQL数据库引擎在表中为每一个记录分配一个固定的磁盘空间数,SQLite只使用一个记录中实际存储信息的磁盘空问数。显然,这会使数据库非常小,同时,由于在磁盘上移动的信息很少,也使数据库很快。 SQLite不仅小、快,而且简单、可靠,这是它受欢迎的主要原因。对于嵌入式场合,管理、执行、维护的简单化比企业数据库引擎提供的许多复杂应用更重要,因此SQLite数据库是一个很好的选择。 2 电梯嵌入式B/S监控系统的整体结构 本监控系统分为两层:嵌入式终端、远方楼宇中心或电梯公司的监测中心。监控软件的主要功能是:与电梯通信接口通信,采集电梯运行状态和故障数据并存入数据库;对故障报警优先处理,自动发短信至维保人员手机,并将现场数据实时存人数据库,以便进一步故障分析和统计。数据库成为连接前后台的中间件,存储状态数据供B/S远程监控和本地LCD显示,同时接收浏览器和本地键盘输入,由通信程序、CGI程序完成控制命令的下传及运行状态的上传;同时数据库还实现故障的分析统计和查询。软件程序主要分为四个模块:与电梯接口的CAN/RS485通信程序,GPRS故障报警程序,本地的人机交互程序,远程B/S监控程序。 3 嵌入式数据库SQLite的应用 3.1 SOtite的C语言API函数 嵌入式数据库SQLite的C语言API以下面三个核心函数为基础:
其中,前两个函数用于打开与关闭数据库,sqlite_exec函数用来处理SQL查询,它含有五个参数: (1)调用sqlite_open函数获得的数据库结构的指针。 (2)容纳了一个或更多SQL语句的字符串。 (3)指向Callback函数的指针,查询结果的每一条记录都调用该函数。 (4)成为Callback函数第一个参数的指针。 (5)指向错误串的指针。 其中,Callback函数由用户编写,用来接收查询结果,查询结果的每一条记录都会调用Callback函数一次,其原型为:
其中,第一个参数接收客户代码的任意信息;第二个参数是字段数;第三个参数是一个字符串数组,每一个串是记录的一个字段值;第四个参数是字段名。Callback函数是用户根据应用编写的,正常应返回0。如果Callback函数非0,则查询失败。 此外,一些扩展的API提供了有用的接口函数。这里着重介绍sqlite_exec_printf()。
它与sqlite_exe一样执行同样的查询功能,但采用printf-style格式的字符串代替完整的SQL语句。作为第二个参数,这个格式串产生SQL语句,并且在函数结尾可以绑定任意参数。使用sqlite_exec_printf函数的好处是:(1)sqlite_exec_printf为了容纳产生的SQL语句,通常会分配足够的缓存,因此不会产生静态缓存溢出的危险;(2)扩展了%Q和%q两个新格式以支持SQL中的串值。 3.2 SQLite在电梯监控中的应用 在电梯的B/S监控中,电梯的运行状态需要在浏览器端实时显示,实时记录故障信息,并能统计查询,同时通过客户浏览器进行一些控制和参数设置。因此对数据库的访问有上端的以太网通信程序和下端的CAN/RS485通信程序。这里着重讨论以太网通信程序。下面以电梯故障查询中CGI程序访问数据库为例说明SQLite数据库Callback函数、API函数的用法。Canback函数编写如下:
C语言编制的CGI程序中用SQLite的API函数调用Callback函数的关键语句为:
4 运行测试 本监控终端的硬件核心板采用华恒公司的HHARM2410-Kl,包括CPU模块、Flash、SDRAM存储部分。底板主要包括LCD及键盘、CAN/RS485通信模块、以太网控制芯片、GPRS模块等。核心板CPU采用三星公司2410芯片。2410芯片基于ARM920T内核,ARM920T核由ARM9TDMI、存储管理单元MMU和高速缓存三部分组成,运行频率可达203MHz。MMU管理虚拟内存,实现虚拟地址物理地址的转换。与μCLinux相比,在ARM-Linux下可简单地开发更强大的嵌入式程序。CAN总线通信芯片采用Microchip公司的MCP2510。它支持CAN2.OA、CAN2.OB两种模式,与CAN总线通信能力更强。与国内常用的SJAl000相比,MCP2510数据吞吐率高,使用简单。 从www.sqlite.org下载源代码包,本文选择sqlite2.8.16并移植到ARM平台。移植时采用army41unknown-linux编译工具。移植时,在环境变量中要加入工具链的路径,否则,即使Makefile文件指定绝对路径,make时也会报错。若采用静态链接,strip过的库,也可以使一个CGI程序达600KB,而采用动态链接只有十几KB。为了使CGI程序不太大,采用了动态链接。WebServer选用boa,它支持认证及CGi,源码开放易于移植,适合嵌入式应用。用CGI应用程序制作ramdisks映像,通过tftp下载烧写到板子上,设置目标板的静态IP为202.196.9.16,在宿主机上通过浏览器访问目标板,CGI程序能正常访问数据库,监控界面运行正常。调试时要注意几个问题:(1)库要烧写到板子上,否则即使调试好的程序在用nfs调试时,浏览器仍会报错;(2)要根据boa.conf文件放置好CGI程序和HTML文件路径;(3)调试时注意权限;(4)sqlite.so、sqlite.so.0、sqlite.so.0.8.6要放入板子/lib目录。 嵌入式数据库SQLite在电梯远程监控中的应用,实现了电梯的嵌入式B/S监控,符合监控系统e网到底、成本低廉、界面友好、升级维护方便的趋势,对于设备的嵌入式网络化远程监控和故障诊断具有重要的意义。同时为Web Services技术在工控领域的应用奠定了基础。
投诉建议

提交

查看更多评论
其他资讯

查看更多

助力企业恢复“战斗状态”:MyMRO我的万物集·固安捷升级开工场景方案

车规MOSFET技术确保功率开关管的可靠性和强电流处理能力

未来十年, 化工企业应如何提高资源效率及减少运营中的碳足迹?

2023年制造业“开门红”,抢滩大湾区市场锁定DMP工博会

2023钢铁展洽会4月全新起航 将在日照触发更多商机