版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、數(shù)據(jù)庫與信息管理嵌入式數(shù)據(jù)庫SQLite在故障錄波中的應(yīng)用唐瑜,成樂祥,洪婧(東南大學(xué)電氣工程學(xué)院,江蘇南京210096摘要:介紹了SQLite的技術(shù)特點(diǎn)和體系結(jié)構(gòu);結(jié)合嵌入式軟硬件平臺提出在電力故障錄波裝置中使用SQLite數(shù)據(jù)庫實(shí)現(xiàn)故障錄波的解決方案;詳細(xì)說明了SQLite在Arm-Linux平臺上的應(yīng)用開發(fā)、交叉編譯和移植過程;最后通過一個(gè)應(yīng)用實(shí)例說明了SQLite的實(shí)現(xiàn)過程。關(guān)鍵詞:嵌入式數(shù)據(jù)庫;SQLite;電力故障錄波中圖分類號:TP311文獻(xiàn)標(biāo)識碼:A文章編號:1009-3044(200817-21373-02Application of Embedded Database SQ
2、Lite for Fault RecordingTANG Yu,CHENG Le-xiang,HONG Jing(Department of Electrical Engineering,Southeast University,Nanjing210096,ChinaAbstract:This article explained the technical characteristics and architecture of SQLite,and proposed an application of SQLite for Fault recording combination of embe
3、dded hardware and software platform.The application developing,cross compiling and porting in Arm-Linux platform are also introduced.finally,an example was given to illuminate the SQLite implementationKey words:embedded database;SQLite;power fault recording1引言故障錄波器是電力系統(tǒng)發(fā)生故障及振蕩時(shí)能自動記錄的一種裝置,在發(fā)生故障或振蕩時(shí)進(jìn)行
4、錄波。近年來,隨著電子技術(shù)的迅速發(fā)展,故障錄波器采用嵌入式系統(tǒng)設(shè)計(jì)是一個(gè)發(fā)展方向。由于故障錄波器需要采集的數(shù)據(jù)量大,科學(xué)的存儲和管理這些數(shù)據(jù)對于提高錄波器的性能起到重要的作用。目前,常用的實(shí)時(shí)數(shù)據(jù)存儲和管理的方法有3種:(1根據(jù)具體的存儲器硬件人為地設(shè)計(jì)存儲管理算法。這種方法簡單直接,但是軟件的可移植性差,對于復(fù)雜的算法很難達(dá)到高可靠性的要求;(2利用嵌入式操作系統(tǒng)提供的文件API,以文件的方式實(shí)現(xiàn)數(shù)據(jù)的存儲和管理。由于多數(shù)嵌入式操作系統(tǒng)(Windows CE、Linux等都以獨(dú)占的方式訪問文件,所以這種方法IO開銷大,訪問效率低,數(shù)據(jù)共享性較差;(3借助嵌入式數(shù)據(jù)庫實(shí)現(xiàn)數(shù)據(jù)存儲和管理。數(shù)據(jù)庫
5、通過事務(wù)來進(jìn)行調(diào)度與并發(fā)控制,可有效地對數(shù)據(jù)進(jìn)行存取、查詢等共享操作,同時(shí)借助數(shù)據(jù)庫所具有的安全性和完整性檢驗(yàn)等多種安全措施,可確保系統(tǒng)具有較好的整體性能。本文在分析了SQLite嵌入式數(shù)據(jù)庫內(nèi)部結(jié)構(gòu)和開發(fā)技術(shù)的基礎(chǔ)上,提出了基于嵌入式數(shù)據(jù)庫SQLite的故障錄波裝置的軟件設(shè)計(jì)方法。2SQLite體系結(jié)構(gòu)及開發(fā)技術(shù)嵌入式數(shù)據(jù)庫系統(tǒng)是指支持某種特定計(jì)算模式或移動計(jì)算的數(shù)據(jù)庫管理系統(tǒng),它通常與操作系統(tǒng)和具體應(yīng)用集成在一起,運(yùn)行在智能型嵌入式設(shè)備或移動設(shè)備上。嵌入式數(shù)據(jù)庫的使用是采用程序驅(qū)動,即由程序調(diào)用相應(yīng)的API來實(shí)現(xiàn)數(shù)據(jù)的存取。SQLite是D.Richard Hipp在2000年開發(fā)的一個(gè)小
6、型嵌入式數(shù)據(jù)庫。它是完全獨(dú)立的,不具有外部依賴性,可以較為方便地應(yīng)用于嵌入式系統(tǒng)中。其源代碼完全開放,可以免費(fèi)用于任何用途。2.1SQLite體系結(jié)構(gòu)SQLite體系結(jié)構(gòu)如圖1所示。主要由以下幾個(gè)主要的子系統(tǒng)組成:接口(Interface是一個(gè)C語言庫,即使使用的是不同語言的API,在底層執(zhí)行的都是C語言庫。從接口接收到命令后傳到SQL命令處理器(SQL Command Processor,SQL命令處理器是由三個(gè)獨(dú) 立的步驟組成:標(biāo)志處理器(Tokenizer、分析器(Parser、代碼生成器(Code Generator。虛擬機(jī)(Vir-tual M achine是為操作數(shù)據(jù)庫文件而執(zhí)行的
7、一個(gè)抽象的計(jì)算機(jī)引擎。在虛擬機(jī)和低層存儲、恢復(fù)程序之間,SQLite使用了一個(gè)抽象層執(zhí)行B-樹,頁面緩沖(Pager,和操作系統(tǒng)接口(OS Inter-face。B-樹結(jié)構(gòu),用于存儲數(shù)據(jù)庫到磁盤,這樣可以通過減少磁盤的查找來達(dá)到快速訪問數(shù)據(jù)的目的。頁面緩沖主要處理讀、寫以及B-樹存儲機(jī)制所需的數(shù)字緩沖,包括為了保證事務(wù)原子性的回退及提交操作所需的緩沖。操作系統(tǒng)接口主要是為了方便在不同平臺的操作而執(zhí)行的一個(gè)底層與操作系統(tǒng)有關(guān)的抽象層。2.2SQLite開發(fā)技術(shù)在SQLite數(shù)據(jù)庫中,可由程序直接調(diào)用相應(yīng)的API函數(shù)去實(shí)現(xiàn)對數(shù)據(jù)的存取操作。主要的函數(shù)有:(1打開數(shù)據(jù)庫int sqlite3_ope
8、n(const char*filename,/*數(shù)據(jù)庫文件名*/圖1SQLite的內(nèi)部結(jié)構(gòu)int mode,/*0777可讀寫0444只讀*/收稿日期:2008-04-17作者簡介:唐瑜(1982-,女,浙江杭州人,碩士研究生,研究方向:電力系統(tǒng)及其自動化;成樂祥(1984-,男,江蘇南京人,碩士研究生。sqlite3*ppDb/*輸出SQLite數(shù)據(jù)庫句柄/*;上述程序是指打開一個(gè)數(shù)據(jù)庫,如果不存在則自動創(chuàng)建。第一個(gè)參數(shù)指定文件名,第三個(gè)參數(shù)則是定義sqlite3*ppDb結(jié)構(gòu)體指針,相當(dāng)于一個(gè)數(shù)據(jù)庫句柄。(2關(guān)閉數(shù)據(jù)庫int sqlite3_close(sqlite3*/*參數(shù)就是打開時(shí)的
9、結(jié)構(gòu)體,也就是數(shù)據(jù)庫句柄。*/(3執(zhí)行SQLint sqlite3_exec(sqlite3*,/*已經(jīng)打開的數(shù)據(jù)庫句柄*/const char*sql,/*要執(zhí)行的sql語句*/sqlite_callback,/*回調(diào)函數(shù)*/void*,/*傳遞給回調(diào)函數(shù)的參數(shù)*/char*errmsg,/*保存錯(cuò)誤信息*/;也就是函數(shù)功能是執(zhí)行一條或者多條SQL語句,SQL語句之間用(;號隔開。建議在執(zhí)行一條或者多條SQL語句的時(shí)候,指定第三個(gè)參數(shù)回調(diào)函數(shù),在回調(diào)函數(shù)中可以獲得執(zhí)行SQL的詳細(xì)過程,如果所有SQL執(zhí)行完畢則返回0,否則,說明這次執(zhí)行并沒有完全成功。如果執(zhí)行失敗(沒有返回0則可以查看第五個(gè)參
10、數(shù)值來查看詳細(xì)錯(cuò)誤信息。3SQLite在ARM-Linux上的移植本文使用以32位的ARM微處理器S3C2410A為硬件的開發(fā)平臺,采用嵌入式Linux操作系統(tǒng)。要將SQLite3.3.6移植到ARM2410開發(fā)板上,除了要有底層操作系統(tǒng)的支持外,還必須要有相應(yīng)的交叉編譯工具鏈,因此需要首先安裝ARM-Linux工具鏈,具體過程如下。(1建立交叉編譯環(huán)境??截恈ross-2.95.3.tar.bz2到/usr/local目錄下并解壓縮。cp cross-2.95.3.tar.bz2/usr/local/armtar-jxvf cross-2.95.3.tar.bz2(2到http:/www.s
11、/的cvs中下載最新版本的源代碼包,解壓后生成sqlite目錄。tar-zxvf sqlite-3.3.6.tar.gz(3新建目錄。cd/sqlite-3.3.6mkdir buildcd build./configure-disable-tcl-host=arm-linux這樣在build目錄中就將生成M akefile和一個(gè)libtool腳本(4修改M akefile文件。cd buildvi M akefile將代碼行BCC=arm-linux-gcc-g-O2改成BCC=gcc-g-O2將下面的這行:sqlite3¥(TEXE:¥(TOP/src/shell.c.l
12、ibs/libsqlite3.la sqlite3.h改成:sqlite3¥(TEXE:¥(TOP/src/shell.c.libs/libsqlite3.a sqlite3.h我們是將sqlite放到arm-linux的硬件板子上運(yùn)行,所以一般將其編譯成靜態(tài)鏈接的形式。保存M akefile文件后退出。(5執(zhí)行make命令即可完成編譯。編譯完成后,在build目錄下生成許多.o和.lo文件。執(zhí)行命令arm-linux-strip sqlite3,去掉其中的調(diào)試信息,這樣文件將減少很多。這樣就可以得到在開發(fā)板上可以直接運(yùn)行的可執(zhí)行文件。(6在ARM板上運(yùn)行sqlite。通過nfs將這些文件下載
13、到開發(fā)板上。chmod777sqlite3./sqlite test.sqlite會出現(xiàn)sqlite>通過以上的操作sqlite已經(jīng)可以在ARM Linux下運(yùn)行,然后就可以基于此進(jìn)行進(jìn)一步的應(yīng)用開發(fā)了。4基于SQLite的電力故障錄波裝置軟件設(shè)計(jì)基于嵌入式操作系統(tǒng)和嵌入式數(shù)據(jù)庫SQLite構(gòu)建的錄波裝置的系統(tǒng)結(jié)構(gòu)如圖2所示。數(shù)據(jù)采集模塊低通濾波、采樣保持(S/H、多路轉(zhuǎn)換(M PX和模數(shù)轉(zhuǎn)換(A/D以及微機(jī)主系統(tǒng)幾個(gè)部分組成。在正常情況下,將采到的數(shù)據(jù)保存于緩存區(qū),并且不斷循環(huán)刷新,一旦計(jì)算的啟動量滿足啟動條件,就按照國家標(biāo)準(zhǔn)將故障前后各段的數(shù)據(jù)轉(zhuǎn)存到SQLite數(shù)據(jù)庫中,同時(shí)將故障發(fā)
14、生信號告知監(jiān)控模塊。電力故障錄波裝置的模擬量數(shù)據(jù)記錄格式是根據(jù)DL/T553-94國家標(biāo)準(zhǔn)采用分段記錄的方式,以滿足運(yùn)行部門故障分析和數(shù)據(jù)分析的需要。上位機(jī)錄波數(shù)據(jù)的記錄格式采用IEEE標(biāo)準(zhǔn)中的電力系統(tǒng)暫態(tài)數(shù)據(jù)轉(zhuǎn)換通用格式,即COM TRADE標(biāo)準(zhǔn),以便于裝置之間的數(shù)據(jù)共享和故障信息聯(lián)網(wǎng)。(下轉(zhuǎn)第1378頁(上接第1374頁通過以下生成數(shù)據(jù)庫datasave ,插入采集數(shù)據(jù)和查詢操作的程序模塊來實(shí)現(xiàn)電力故障錄波裝置中的嵌入式數(shù)據(jù)庫。sqlite3_open("datasave",0777,&zErrM sg;/打開一個(gè)數(shù)據(jù)庫,如果改數(shù)據(jù)庫不存在,則創(chuàng)建一個(gè)名字為da
15、tasave 的數(shù)據(jù)庫文件。sqlite3_exec(db,"create tableData (id integer primary key,time integer,Ia integer,Ib integer,Ic integer,Ua integer,Ub integer,Uc integer;",NULL,0,&zEr-rM sg;/建立采集表sprintf(value,"INSERT INTO Data(time,Ia,Ib,Ic,Ua,Ub,Uc n""VALUES(%d,%d",buf1,buf2,buf3,bu
16、f4,buf5,buf6,buf7;sqlite_exec(db,value,NULL,NULL,&zErrM sg;/插入采集的數(shù)據(jù)sqlite3_exec (db,"select *from Data;',callback,0,&zEr-rM sg ;/查詢記錄5結(jié)束語在嵌入式系統(tǒng)中,利用嵌入式數(shù)據(jù)庫對采集的數(shù)據(jù)進(jìn)行操作和管理是嵌入式系統(tǒng)應(yīng)用發(fā)展方向,它簡化了應(yīng)用程序的整體開發(fā)過程,提高了用戶存取記錄的效率,實(shí)現(xiàn)了多用戶數(shù)據(jù)的共享。SQLite 以它小巧的體積、快速高效、穩(wěn)定可靠、易移植等優(yōu)勢將成為嵌入式數(shù)據(jù)庫領(lǐng)域的首選。嵌入式數(shù)據(jù)庫SQLite 在電力故
17、障錄波裝置中的應(yīng)用,滿足了嵌入式錄波數(shù)據(jù)處理的需要,為故障錄波系統(tǒng)提供了有力的技術(shù)支持。參考文獻(xiàn):1唐濤,諸偉楠,楊儀松,等.發(fā)電廠與變電站自動化技術(shù)及其應(yīng)用M.北京:中國電力出版社,2005.558-560.2曾立勝.基于SQLite 嵌入式數(shù)據(jù)庫的射頻卡數(shù)據(jù)存儲J.電腦知識與技術(shù),2006,(8:3,29.3黃布毅,張曉華.基于ARM-Linux 的SQLite 嵌入式數(shù)據(jù)庫技術(shù)J.單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2005,(4:21-24.4王京謙,萬蒞新.開源嵌入式數(shù)據(jù)庫BerkeleyDB 和SQLite 的比較J.單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2005,(2:5- 7,49.End;/Sql&g
18、t;beginDbms_defer_sys.schedule_purge(next_date=>sysdate,interval=>sysdate+10/1440.delay_seconds=>0,rollback_segment=>End;/用repadmin 身份登陸dbserver 數(shù)據(jù)庫,運(yùn)行以上的類似命令通過以上配置HIS 系統(tǒng)數(shù)據(jù)庫與自費(fèi)藥房數(shù)據(jù)庫就可以實(shí)現(xiàn)同步復(fù)制功能,使用同樣的方法就可以對其他數(shù)據(jù)庫進(jìn)行同步復(fù)制功能。并可以通過設(shè)置根據(jù)實(shí)際需要時(shí)間間隔進(jìn)行自動數(shù)據(jù)庫復(fù)制。而對于外網(wǎng)與內(nèi)網(wǎng)由于不能進(jìn)行正常的物理連接,于是設(shè)置為每天晚上非工作時(shí)間為維護(hù)階段,由系統(tǒng)管理員將兩臺服務(wù)器直連,然后使用相同的方法將內(nèi)、外網(wǎng)數(shù)據(jù)同步。5結(jié)束語Oracle 分布式數(shù)據(jù)可以解決由于地域條件、業(yè)務(wù)關(guān)系等條件對應(yīng)用系統(tǒng)限制問題,而oracle 數(shù)據(jù)庫高級復(fù)制功能為分布式數(shù)據(jù)庫系統(tǒng)各中心數(shù)據(jù)同步的
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025展板制作合同
- 連帶共同擔(dān)保合同簽訂
- 建設(shè)圍墻施工合同
- 提高團(tuán)隊(duì)效能與績效改進(jìn)
- 2025建筑工程居間合同
- 聘用人才勞動合同
- 購銷擔(dān)保合同范本雙方
- 簡易工程裝修合同
- 2024年航空發(fā)動機(jī)技術(shù)研發(fā)合作合同
- 合同管理崗位職責(zé)
- 點(diǎn)亮生命-大學(xué)生職業(yè)生涯發(fā)展與就業(yè)指導(dǎo)全套教學(xué)課件
- 旅居管家策劃方案
- 車間消防安全知識培訓(xùn)課件
- 華為經(jīng)營管理-華為的研發(fā)管理(6版)
- 鋰離子電池生產(chǎn)工藝流程圖
- 平衡計(jì)分卡-化戰(zhàn)略為行動
- 幼兒園小班下學(xué)期期末家長會PPT模板
- 礦山安全培訓(xùn)課件-地下礦山開采安全技術(shù)
- GB/T 6417.1-2005金屬熔化焊接頭缺欠分類及說明
- 《社會主義市場經(jīng)濟(jì)理論(第三版)》第七章社會主義市場經(jīng)濟(jì)規(guī)則論
- 《腰椎間盤突出》課件
評論
0/150
提交評論