第31卷第2期
2014年2月 计算机应用与软件
Computer Applications and Software V01.31 No.2
Feb.2014
嵌入式数据库在工业控制系统中的应用
包理群 吕登峰 侯志伟。
(兰州工业学院电子信息工程系甘肃兰州730050)
(甘肃省人民医院网络中心甘肃兰州730000)
(兰卅I交通大学电子信息工程学院甘肃兰州730070)
摘要 针对嵌入式工业控制系统中数据管理的需求,提出一种采用嵌入式数据库的解决方案,实现了SQLite 3.0在ARM—Linux
平台上的移植,完成了工业控制嵌入式数据库的设计与实现。测试表明,数据库性能稳定、可靠性高,增强了工业控制信息的完整
性,具有良好的共享性、可扩展性和可维护性,提高了嵌入式系统的数据处理能力和数据管理效率。
关键词 嵌入式数据库 工业控制 SQLite
中图分类号TP392 文献标识码A ARM Linux
DOI:10.3969/j.issn.1000-386x.2014.02.068
APPLICATIoN oF EMBEDDED DATABASE IN
INDUSTRIAL CoNTRoL SYSTEMS
Bao Liqun Lia Dengfeng Hou Zhiwei
(Department of Electronic and Information Engineering,Lanzhou Institute of Technology,Lanzhou 730050,Gansu,China)
(Network Center,Gansu Province People's Hospital,Lanzhou 730000,Gansu,China)
(SchD0l ofElectronic and Informatio儿Engineering, 砌ou Ji80 , 0"730070,Gansu,China)
Abstract Aiming at the data management requirement in embedded industrial control system,we put forward a solution using the embed—
ded database,it achieves the transplantation of SQLite3.0 on ARM—Linux platform,completes the design and realisation of industrial control
embedded database.Tests show that the database has stable performance and hJ【gh reliability,enhances the integrity of industrial control inf0r- mation,and has good sharing,scalability and maintainability,improves the data processing capacity and data management efficiency of the
embedded system.
Keywords Embedded database Industry control SQHte ARM—Linux
0 引 言
工业控制是嵌入式系统应用的一个重要方面,而基于ARM
的工业控制和数据采集系统是目前国内外研究的主流 I3 J。一
方面随着现代工业控制系统复杂度的提高,其中需要存储和管
理的数据量也高速增长。另一方面随着传输数据增多,数据类 型越来越复杂,传统的基于文件的数据管理方式存在数据共享
性差、对大量数据的查询和统计能力不足等诸多问题,远远满足
不了应用需求。嵌入式数据库内核小,可裁减,可嵌入于应用程
序和处理能力受限的硬件环境,主要针对传统数据库不能应用
于嵌入式系统的缺陷。刘钟情 探讨了基于Berkeley DB数据
库的机房环境监控系统,实现了将一个随机数存人嵌入式数据
库;赵晓群等 提出了嵌入式数据库在自助导游文件系统中的
应用;庄致等 将嵌入式数据库Berkeley DB应用在桥梁实时监
测系统中,然而将嵌入式数据库应用于工业控制系统中的,国内
未见报道。本文将嵌入式数据库应用于工业控制系统中,研究
SQ ̄te在ARM—Linux平台上的移植和工业控制系统中嵌入式数
据库设计与实现。 1嵌入式数据库SQLite
1.1 SQLite简介
SQLte【7l 是一种开源的易于管理、易于使用、易于维护和
配置的强有力的嵌入式数据库,是一个基于磁盘文件系统的关
系数据库,具有占用内存小、速度快、效率高及可移植性好等特
点,非常适合于硬件资源有限的嵌入式系统。SQLite有一个很
小的c语言链接库,完全包含数据引擎功能,不用额外的设定
就能嵌入到其他程序中,SQLi'te提供了对SQL92的大多数支
持,包括表、索引、触发器和视图等。数据库的文件格式跨平台,
可以在32位和64位系统之间移植。
1.2 SQLite C/C++接口
嵌入式数据库SQLite提供的API接口使得对数据库的操
收稿日期:2012—10—13。甘肃省科技支撑项目(1104GKCA032); 甘肃省高等学校科研项目资助(2013A一127);甘肃省自然科学研究基
金计划资助项目(1208RJZA186)。包理群,讲师,主研领域:智能信息处 理,嵌入式技术。吕登峰,工程师。侯志伟,硕士生。
254 计算机应用与软件 2014丘
作非常简便,主要功能接口函数如下 :
(1)int sqlite3一open(const char ,sqlite3 ); 该接口打开与一个SQLite数据库文件的连接并返回一个
数据库连接对象。
(2)int sqlite3一prepare(sqlite3 db,const char zSql,int
nByte,sqlite3stmt ppStmt,const char pzTail);
该接口把一个SQL语句文本转换成一个预处理语句对象 并返回一个指向该对象的指针。
(3)int sqlite3一step(sqlite3一stmt¥); 该接口用于解析一个由先前通过sqlite3一prepare()接口创
建的预处理语句,直至返回第一列结果为止。
(4)sqlite3一column();
该接FJ返回一个由sqlite3一step()解析的预处理语句结果
集中当前行的某一列数据,SQLite API中是一组用于从结果集
中查询出各个列项各种数据类型数据的函数接口。
(5)int sqlite3_finalize(sqlite3_stmt pStmt);
该接口销毁之前调用sqlite3_prepare()创建的预处理语句, 每一个预处理语句都必须调用这个接VI进行销毁以避免内存
泄漏。
(6)int sqlite3一close(sqlite3 );
该接口关闭一个由之前调用sqlite3一open()创建的数据库
连接。所有与该连接相关的预处理句都必须在关闭连接之前
销毁。
(7)int sqlite3一exec(sqlite3 ,const char¥sql,sqlite—call
back,void¥,char errmsg);
该接口第二个参数用来处理一条或多条SQL语句,语句问
必须用“;”号隔开。
1.3 SQLite在ARM・Linux平台上的移植
SOLite嵌入式数据库提供了源码发布的方式,本文根据三
星¥3C2410开发板硬件平台,对源码进行交叉编译,移植过程主
要有以下几个步骤 :
(1)交叉编译环境建立 安装army41一unknowu—linux—gcc交又编译器,修改配置文件
profile以便在任何目录下直接使用交叉编译器。
./Install vi/etc/profile 加入语句:pathmunge/opt/host/armv4l/bin。
下载SQLite 3源代码 sqlite—autoconf-3071 100.tar.gz,解压
SQLite 3.7.13 ̄ll/home/sqlite一3.7.13,并创建文件夹sqlite-arFa—
linux。
tar—zxvf sqlite—autoconf-3071 100.tar.gz/home/sqlite一3.7.13
cd/home/sqlite一3.7.13 ‘ mkdir sqlite—arn1..1inux export config TARGET—CC=army41一unknown。linux。gcc (4)编译并安装
make&&make install 成功后,在/home/sqlite一3.7.13/sqlite—arln—linux/lib目录下
生成库文件。
(5)移植
将库文件移植到ARM开发板的/usr/sqlite/lib目录下,至 此,SQLite在ARM.Linux平台上已经移植成功,应用程序在开发
板上运行时就可以使用SQLite提供的库函数,本文基于此进行
嵌入式数据库应用开发。
2工业控制系统中嵌入式数据库设计与实现
图1所示是一个典型的采用了嵌入式数据库的工业控制系
统结构图,将描述各相应控制点的数据记录存入嵌入式数据
库 ,包括预设参数信息、设备基本信息、实时测控信息和故障
信息等,其中预设参数信息和设备基本信息由用户设定和录入,
实时测控信息和故障信息由外部传感器采集并通过数据处理程
序(借助SQLite C/C++接口)存储到嵌入式数据库内,应用程
序通过对数据库记录的处理就可以实时获取和更新各控制点的
状态,发出命令,达到实时监测和控制的目的 。
(2)修改/home/sqlite。3・7・13目录下的configure文件 图1采用嵌入式数据库的工业控制系统结构图
cd/home/sqlite-3.7.13/sqlite—aim.1inux
./c。 gure..disable l__p x:/h。me/sqlite 3.7.13/sqlite.a丌n一 2・1 数据库设计与实现
linux/…host arm-linux 生成了Makefile文件,将在make时用到。
(3)设置交叉编译环境
设置config_TARGET—CC和config—BUILD—CC两个环境变
量。config_TARGET—CC是交叉编译器,config—BUILD—CC是主
机编译器:
export config—BUILD—CC=gcc 工业控制系统中需管理的数据主要包括预设参数信息、设
备基本信息、实时测控信息和故障信息,创建4个数据表:De—
faultparameters(parameter—ID,parameter—name,current—value,
modify,modifytime);device—infor(device—no,device—name,unit,
range—max,range—min);device—collector(ID,term—data,time,de—
vice—ID);fault—infor(fault—code,notice,mal—cause,project—
check)。