嵌入式數(shù)據(jù)庫SQLite在故障錄波中的應用_第1頁
嵌入式數(shù)據(jù)庫SQLite在故障錄波中的應用_第2頁
嵌入式數(shù)據(jù)庫SQLite在故障錄波中的應用_第3頁
嵌入式數(shù)據(jù)庫SQLite在故障錄波中的應用_第4頁
嵌入式數(shù)據(jù)庫SQLite在故障錄波中的應用_第5頁
已閱讀5頁,還剩6頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、數(shù)據(jù)庫與信息管理嵌入式數(shù)據(jù)庫SQLite在故障錄波中的應用唐瑜,成樂祥,洪婧(東南大學電氣工程學院,江蘇南京210096摘要:介紹了SQLite的技術特點和體系結構;結合嵌入式軟硬件平臺提出在電力故障錄波裝置中使用SQLite數(shù)據(jù)庫實現(xiàn)故障錄波的解決方案;詳細說明了SQLite在Arm-Linux平臺上的應用開發(fā)、交叉編譯和移植過程;最后通過一個應用實例說明了SQLite的實現(xiàn)過程。關鍵詞:嵌入式數(shù)據(jù)庫;SQLite;電力故障錄波中圖分類號:TP311文獻標識碼: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ā)生故障及振蕩時能自動記錄的一種裝置,在發(fā)生故障或振蕩時進行

4、錄波。近年來,隨著電子技術的迅速發(fā)展,故障錄波器采用嵌入式系統(tǒng)設計是一個發(fā)展方向。由于故障錄波器需要采集的數(shù)據(jù)量大,科學的存儲和管理這些數(shù)據(jù)對于提高錄波器的性能起到重要的作用。目前,常用的實時數(shù)據(jù)存儲和管理的方法有3種:(1根據(jù)具體的存儲器硬件人為地設計存儲管理算法。這種方法簡單直接,但是軟件的可移植性差,對于復雜的算法很難達到高可靠性的要求;(2利用嵌入式操作系統(tǒng)提供的文件API,以文件的方式實現(xiàn)數(shù)據(jù)的存儲和管理。由于多數(shù)嵌入式操作系統(tǒng)(Windows CE、Linux等都以獨占的方式訪問文件,所以這種方法IO開銷大,訪問效率低,數(shù)據(jù)共享性較差;(3借助嵌入式數(shù)據(jù)庫實現(xiàn)數(shù)據(jù)存儲和管理。數(shù)據(jù)庫

5、通過事務來進行調(diào)度與并發(fā)控制,可有效地對數(shù)據(jù)進行存取、查詢等共享操作,同時借助數(shù)據(jù)庫所具有的安全性和完整性檢驗等多種安全措施,可確保系統(tǒng)具有較好的整體性能。本文在分析了SQLite嵌入式數(shù)據(jù)庫內(nèi)部結構和開發(fā)技術的基礎上,提出了基于嵌入式數(shù)據(jù)庫SQLite的故障錄波裝置的軟件設計方法。2SQLite體系結構及開發(fā)技術嵌入式數(shù)據(jù)庫系統(tǒng)是指支持某種特定計算模式或移動計算的數(shù)據(jù)庫管理系統(tǒng),它通常與操作系統(tǒng)和具體應用集成在一起,運行在智能型嵌入式設備或移動設備上。嵌入式數(shù)據(jù)庫的使用是采用程序驅動,即由程序調(diào)用相應的API來實現(xiàn)數(shù)據(jù)的存取。SQLite是D.Richard Hipp在2000年開發(fā)的一個小

6、型嵌入式數(shù)據(jù)庫。它是完全獨立的,不具有外部依賴性,可以較為方便地應用于嵌入式系統(tǒng)中。其源代碼完全開放,可以免費用于任何用途。2.1SQLite體系結構SQLite體系結構如圖1所示。主要由以下幾個主要的子系統(tǒng)組成:接口(Interface是一個C語言庫,即使使用的是不同語言的API,在底層執(zhí)行的都是C語言庫。從接口接收到命令后傳到SQL命令處理器(SQL Command Processor,SQL命令處理器是由三個獨 立的步驟組成:標志處理器(Tokenizer、分析器(Parser、代碼生成器(Code Generator。虛擬機(Vir-tual M achine是為操作數(shù)據(jù)庫文件而執(zhí)行的

7、一個抽象的計算機引擎。在虛擬機和低層存儲、恢復程序之間,SQLite使用了一個抽象層執(zhí)行B-樹,頁面緩沖(Pager,和操作系統(tǒng)接口(OS Inter-face。B-樹結構,用于存儲數(shù)據(jù)庫到磁盤,這樣可以通過減少磁盤的查找來達到快速訪問數(shù)據(jù)的目的。頁面緩沖主要處理讀、寫以及B-樹存儲機制所需的數(shù)字緩沖,包括為了保證事務原子性的回退及提交操作所需的緩沖。操作系統(tǒng)接口主要是為了方便在不同平臺的操作而執(zhí)行的一個底層與操作系統(tǒng)有關的抽象層。2.2SQLite開發(fā)技術在SQLite數(shù)據(jù)庫中,可由程序直接調(diào)用相應的API函數(shù)去實現(xiàn)對數(shù)據(jù)的存取操作。主要的函數(shù)有:(1打開數(shù)據(jù)庫int sqlite3_ope

8、n(const char*filename,/*數(shù)據(jù)庫文件名*/圖1SQLite的內(nèi)部結構int mode,/*0777可讀寫0444只讀*/收稿日期:2008-04-17作者簡介:唐瑜(1982-,女,浙江杭州人,碩士研究生,研究方向:電力系統(tǒng)及其自動化;成樂祥(1984-,男,江蘇南京人,碩士研究生。sqlite3*ppDb/*輸出SQLite數(shù)據(jù)庫句柄/*;上述程序是指打開一個數(shù)據(jù)庫,如果不存在則自動創(chuàng)建。第一個參數(shù)指定文件名,第三個參數(shù)則是定義sqlite3*ppDb結構體指針,相當于一個數(shù)據(jù)庫句柄。(2關閉數(shù)據(jù)庫int sqlite3_close(sqlite3*/*參數(shù)就是打開時的

9、結構體,也就是數(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,/*保存錯誤信息*/;也就是函數(shù)功能是執(zhí)行一條或者多條SQL語句,SQL語句之間用(;號隔開。建議在執(zhí)行一條或者多條SQL語句的時候,指定第三個參數(shù)回調(diào)函數(shù),在回調(diào)函數(shù)中可以獲得執(zhí)行SQL的詳細過程,如果所有SQL執(zhí)行完畢則返回0,否則,說明這次執(zhí)行并沒有完全成功。如果執(zhí)行失敗(沒有返回0則可以查看第五個參

10、數(shù)值來查看詳細錯誤信息。3SQLite在ARM-Linux上的移植本文使用以32位的ARM微處理器S3C2410A為硬件的開發(fā)平臺,采用嵌入式Linux操作系統(tǒng)。要將SQLite3.3.6移植到ARM2410開發(fā)板上,除了要有底層操作系統(tǒ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和一個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的硬件板子上運行,所以一般將其編譯成靜態(tài)鏈接的形式。保存M akefile文件后退出。(5執(zhí)行make命令即可完成編譯。編譯完成后,在build目錄下生成許多.o和.lo文件。執(zhí)行命令arm-linux-strip sqlite3,去掉其中的調(diào)試信息,這樣文件將減少很多。這樣就可以得到在開發(fā)板上可以直接運行的可執(zhí)行文件。(6在ARM板上運行sqlite。通過nfs將這些文件下載

13、到開發(fā)板上。chmod777sqlite3./sqlite test.sqlite會出現(xiàn)sqlite>通過以上的操作sqlite已經(jīng)可以在ARM Linux下運行,然后就可以基于此進行進一步的應用開發(fā)了。4基于SQLite的電力故障錄波裝置軟件設計基于嵌入式操作系統(tǒng)和嵌入式數(shù)據(jù)庫SQLite構建的錄波裝置的系統(tǒng)結構如圖2所示。數(shù)據(jù)采集模塊低通濾波、采樣保持(S/H、多路轉換(M PX和模數(shù)轉換(A/D以及微機主系統(tǒng)幾個部分組成。在正常情況下,將采到的數(shù)據(jù)保存于緩存區(qū),并且不斷循環(huán)刷新,一旦計算的啟動量滿足啟動條件,就按照國家標準將故障前后各段的數(shù)據(jù)轉存到SQLite數(shù)據(jù)庫中,同時將故障發(fā)

14、生信號告知監(jiān)控模塊。電力故障錄波裝置的模擬量數(shù)據(jù)記錄格式是根據(jù)DL/T553-94國家標準采用分段記錄的方式,以滿足運行部門故障分析和數(shù)據(jù)分析的需要。上位機錄波數(shù)據(jù)的記錄格式采用IEEE標準中的電力系統(tǒng)暫態(tài)數(shù)據(jù)轉換通用格式,即COM TRADE標準,以便于裝置之間的數(shù)據(jù)共享和故障信息聯(lián)網(wǎng)。(下轉第1378頁(上接第1374頁通過以下生成數(shù)據(jù)庫datasave ,插入采集數(shù)據(jù)和查詢操作的程序模塊來實現(xiàn)電力故障錄波裝置中的嵌入式數(shù)據(jù)庫。sqlite3_open("datasave",0777,&zErrM sg;/打開一個數(shù)據(jù)庫,如果改數(shù)據(jù)庫不存在,則創(chuàng)建一個名字為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結束語在嵌入式系統(tǒng)中,利用嵌入式數(shù)據(jù)庫對采集的數(shù)據(jù)進行操作和管理是嵌入式系統(tǒng)應用發(fā)展方向,它簡化了應用程序的整體開發(fā)過程,提高了用戶存取記錄的效率,實現(xiàn)了多用戶數(shù)據(jù)的共享。SQLite 以它小巧的體積、快速高效、穩(wěn)定可靠、易移植等優(yōu)勢將成為嵌入式數(shù)據(jù)庫領域的首選。嵌入式數(shù)據(jù)庫SQLite 在電力故

17、障錄波裝置中的應用,滿足了嵌入式錄波數(shù)據(jù)處理的需要,為故障錄波系統(tǒng)提供了有力的技術支持。參考文獻:1唐濤,諸偉楠,楊儀松,等.發(fā)電廠與變電站自動化技術及其應用M.北京:中國電力出版社,2005.558-560.2曾立勝.基于SQLite 嵌入式數(shù)據(jù)庫的射頻卡數(shù)據(jù)存儲J.電腦知識與技術,2006,(8:3,29.3黃布毅,張曉華.基于ARM-Linux 的SQLite 嵌入式數(shù)據(jù)庫技術J.單片機與嵌入式系統(tǒng)應用,2005,(4:21-24.4王京謙,萬蒞新.開源嵌入式數(shù)據(jù)庫BerkeleyDB 和SQLite 的比較J.單片機與嵌入式系統(tǒ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ù)庫,運行以上的類似命令通過以上配置HIS 系統(tǒng)數(shù)據(jù)庫與自費藥房數(shù)據(jù)庫就可以實現(xiàn)同步復制功能,使用同樣的方法就可以對其他數(shù)據(jù)庫進行同步復制功能。并可以通過設置根據(jù)實際需要時間間隔進行自動數(shù)據(jù)庫復制。而對于外網(wǎng)與內(nèi)網(wǎng)由于不能進行正常的物理連接,于是設置為每天晚上非工作時間為維護階段,由系統(tǒng)管理員將兩臺服務器直連,然后使用相同的方法將內(nèi)、外網(wǎng)數(shù)據(jù)同步。5結束語Oracle 分布式數(shù)據(jù)可以解決由于地域條件、業(yè)務關系等條件對應用系統(tǒng)限制問題,而oracle 數(shù)據(jù)庫高級復制功能為分布式數(shù)據(jù)庫系統(tǒng)各中心數(shù)據(jù)同步的

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論