梁爽 任杰 四川工程職業(yè)技術(shù)學(xué)院
嵌入式數(shù)據(jù)庫(kù)Sqlite在油田監(jiān)控系統(tǒng)中的應(yīng)用
梁爽 任杰 四川工程職業(yè)技術(shù)學(xué)院
基于嵌入式數(shù)據(jù)庫(kù)Sqlite的油田監(jiān)控系統(tǒng)以B/S結(jié)構(gòu)為基礎(chǔ),以ASP.Net技術(shù)進(jìn)行開(kāi)發(fā)。該系統(tǒng)可以有效監(jiān)督管理并儲(chǔ)存現(xiàn)場(chǎng)產(chǎn)生的各種數(shù)據(jù),不同需求的用戶(hù)只需通過(guò)Web瀏覽器就可清晰地看到由遠(yuǎn)程攝像頭拍攝的石油作業(yè)現(xiàn)場(chǎng)的各種視頻,并及時(shí)調(diào)控各項(xiàng)監(jiān)控設(shè)備。在油田生產(chǎn)作業(yè)過(guò)程中,監(jiān)控系統(tǒng)主要借助遠(yuǎn)程攝像頭采集各種視頻數(shù)據(jù),同時(shí)可以對(duì)數(shù)據(jù)進(jìn)行及時(shí)的遠(yuǎn)程訪問(wèn),使其快速在以太網(wǎng)中輸送,并可壓縮采集到的視頻數(shù)據(jù),進(jìn)而減少數(shù)據(jù)冗余。
嵌入式數(shù)據(jù)庫(kù);油田監(jiān)控系統(tǒng);Sqlite;流程
基于嵌入式數(shù)據(jù)庫(kù)Sqlite的油田監(jiān)控系統(tǒng)以B/S結(jié)構(gòu)為基礎(chǔ),以ASP.Net技術(shù)進(jìn)行開(kāi)發(fā)。該系統(tǒng)可以有效監(jiān)督管理并儲(chǔ)存現(xiàn)場(chǎng)產(chǎn)生的各種數(shù)據(jù),不同需求的用戶(hù)只需通過(guò)Web瀏覽器就可清晰地看到由遠(yuǎn)程攝像頭拍攝的石油作業(yè)現(xiàn)場(chǎng)的各種視頻,并及時(shí)調(diào)控各項(xiàng)監(jiān)控設(shè)備。
Sqlite作為一種易于管理、使用、維護(hù)及配置的嵌入式數(shù)據(jù)庫(kù),不需實(shí)施安裝、管理,該數(shù)據(jù)庫(kù)儲(chǔ)存于單一文件系統(tǒng)中,可以支持多種計(jì)算機(jī)語(yǔ)言,并支持MaxOS,Linux,Windows,Unix等各種操作系統(tǒng)[1]。它的數(shù)據(jù)庫(kù)系統(tǒng)是免費(fèi)的,可以在任何一款商業(yè)化產(chǎn)品中廣泛使用,沒(méi)有嚴(yán)格的版權(quán)約束。當(dāng)不同需求的用戶(hù)在Sqlite官方網(wǎng)站上下載數(shù)據(jù)庫(kù)程序后,編譯包含應(yīng)用程序接口的dll文件,其支持多數(shù)編程語(yǔ)言綁定運(yùn)用,支持很多個(gè)系統(tǒng)平臺(tái)。
將Sqlite數(shù)據(jù)庫(kù)和目前常見(jiàn)的SQLServer與Or-acle數(shù)據(jù)庫(kù)進(jìn)行對(duì)比發(fā)現(xiàn),這種類(lèi)型的數(shù)據(jù)庫(kù)不需獨(dú)自運(yùn)行數(shù)據(jù)庫(kù)的驅(qū)動(dòng)系統(tǒng),可以靈活調(diào)用不同類(lèi)型的API數(shù)據(jù)存取流程。它的數(shù)據(jù)庫(kù)較小,但數(shù)據(jù)存儲(chǔ)性能佳,存取速度快,是Mysql的1~2倍,能夠存儲(chǔ)大量數(shù)據(jù),并支持2TB數(shù)據(jù)存儲(chǔ)??勺鳛锳SP.Net的服務(wù)器端口數(shù)據(jù)儲(chǔ)存方案,也可用于嵌入式移動(dòng)設(shè)備或者桌面應(yīng)用程序上的數(shù)據(jù)存儲(chǔ)。Sqlite的體積小、操作簡(jiǎn)單、運(yùn)行穩(wěn)定,與復(fù)雜的商業(yè)數(shù)據(jù)引擎相比,其更易于維護(hù)管理。
在油田生產(chǎn)作業(yè)流程中,監(jiān)控系統(tǒng)主要借助遠(yuǎn)程攝像頭采集各種視頻數(shù)據(jù),同時(shí)可以對(duì)數(shù)據(jù)進(jìn)行及時(shí)的遠(yuǎn)程訪問(wèn),使其快速在以太網(wǎng)中輸送,并可壓縮采集到的視頻數(shù)據(jù),進(jìn)而減少數(shù)據(jù)冗余。
用型號(hào)為ARM9下位機(jī)控制攝像頭來(lái)收集各種視頻數(shù)據(jù),然后對(duì)于采集到的不同數(shù)據(jù)實(shí)施一定程度的壓縮編碼,通過(guò)以太網(wǎng)將不同種類(lèi)的數(shù)據(jù)輸入油田監(jiān)控中心系統(tǒng)。在這個(gè)系統(tǒng)中快速地顯示出不同解碼,最后將監(jiān)控系統(tǒng)中的數(shù)據(jù)輸入Sqlite數(shù)據(jù)庫(kù)進(jìn)行儲(chǔ)存[2-3]。若遠(yuǎn)程用戶(hù)必須利用Web訪問(wèn)從而控制整個(gè)流程,那么各個(gè)服務(wù)器的端口則需要參照不同瀏覽器提交的相關(guān)信息,檢索出符合用戶(hù)要求的各種類(lèi)型數(shù)據(jù)信息,再通過(guò)TCP/IP協(xié)議將信息輸入客戶(hù)端的瀏覽器內(nèi)部。下位機(jī)包括一個(gè)以ARM9芯片為中心的微型數(shù)據(jù)處理器,而不同的下位機(jī)所對(duì)應(yīng)的端口、IP不同,在遠(yuǎn)程系統(tǒng)中由IP地址、端口控制下位機(jī)上面的資源。除此之外,油田監(jiān)控系統(tǒng)還包括IIS服務(wù)器,不同用戶(hù)終端瀏覽器,采集視頻的端攝像頭等。
3.1 組建Sqlite數(shù)據(jù)庫(kù)
這種類(lèi)型的數(shù)據(jù)庫(kù)系統(tǒng)內(nèi)部只帶有一個(gè)命令類(lèi)型工具,結(jié)構(gòu)簡(jiǎn)單,采用Sqlite3版本系統(tǒng)。借助Sqlite3版本可以手工輸入Sqlite數(shù)據(jù)庫(kù)所需數(shù)據(jù),然后操控SOL命令??砂凑找韵?種方法組建Sqlite數(shù)據(jù)庫(kù):①登錄互聯(lián)網(wǎng),在Sqlite官方網(wǎng)站中下載Sqlite最新發(fā)行的版本,通過(guò)解壓構(gòu)建數(shù)據(jù)庫(kù)系統(tǒng);②打開(kāi)互聯(lián)網(wǎng)cmd窗口,按照網(wǎng)絡(luò)提示要求轉(zhuǎn)移至Sqlite3.exe目錄體系中,按照Sqlite3版本系統(tǒng)的各種不同命令指示符號(hào),輸入abc.db3并回車(chē)構(gòu)建以此為名稱(chēng)的數(shù)據(jù)庫(kù)。創(chuàng)建數(shù)據(jù)表主要借助createtable命令進(jìn)行。
3.2 將Sqlite數(shù)據(jù)庫(kù)應(yīng)用于油田監(jiān)控系統(tǒng)
在油田監(jiān)控系統(tǒng)中,通常用2008版本的VisualC#作為整套編程程序的開(kāi)發(fā)工具。借助Sqlite官方系統(tǒng)提出的版本適合C語(yǔ)言及C++語(yǔ)言所用的動(dòng)態(tài)鏈接庫(kù),在具體開(kāi)發(fā)過(guò)程中添加相關(guān)引用,動(dòng)態(tài)鏈接庫(kù)中封裝函數(shù)以此為工具調(diào)試。
用已經(jīng)開(kāi)發(fā)好的VisualC#.Net網(wǎng)站系統(tǒng)把數(shù)據(jù)庫(kù)和IIS服務(wù)器對(duì)接,然后將不同類(lèi)型的虛擬目錄設(shè)計(jì)的網(wǎng)站名稱(chēng)加入其中,對(duì)于配置完好的網(wǎng)站需將其放入相關(guān)服務(wù)器的物理路徑系統(tǒng)中,確保安全訪問(wèn)。對(duì)MIME類(lèi)型進(jìn)行定義,并重新啟動(dòng)IIS服務(wù)器,用戶(hù)直接通過(guò)瀏覽器就能訪問(wèn)網(wǎng)站。
采集數(shù)據(jù)流程主要包括數(shù)據(jù)采集、處理模塊,數(shù)據(jù)保存模塊,LCD模塊以及鍵盤(pán)模塊。其中數(shù)據(jù)采集模塊主要依照用戶(hù)事先設(shè)定的控制參數(shù)采集外部信號(hào),然后將其送至處理模塊。數(shù)據(jù)處理模塊對(duì)采集到的所有數(shù)據(jù)實(shí)施數(shù)字濾波,并將濾波后的數(shù)據(jù)儲(chǔ)存到公共數(shù)據(jù)緩沖區(qū)域。LCD模塊將公共數(shù)據(jù)緩沖區(qū)域的各種數(shù)據(jù)遵照用戶(hù)所需格式顯示出來(lái),最后由保存模塊負(fù)責(zé)將緩沖區(qū)域的數(shù)據(jù)存放至Sqlite數(shù)據(jù)庫(kù)里。鍵盤(pán)模塊能夠便于不同類(lèi)型的用戶(hù)在現(xiàn)場(chǎng)控制設(shè)備,且合理設(shè)計(jì)采集到的各種參數(shù)。
網(wǎng)絡(luò)服務(wù)流程主要由WebServer與CGI程序兩部分組成,其中前者在后臺(tái)運(yùn)行過(guò)程中守護(hù)整個(gè)流程,并及時(shí)監(jiān)聽(tīng)來(lái)源于網(wǎng)絡(luò)系統(tǒng)的客戶(hù)需求。用戶(hù)利用IE瀏覽器向所在地系統(tǒng)發(fā)出相關(guān)請(qǐng)求,然后啟動(dòng)CGI流程,將相關(guān)請(qǐng)求轉(zhuǎn)變成服務(wù)器可以識(shí)別的形式,處理Sqlite數(shù)據(jù)庫(kù)中的各種數(shù)據(jù),利用Http應(yīng)答消息輸送至客戶(hù)端,實(shí)現(xiàn)客戶(hù)端和本次系統(tǒng)的相互操作。
將嵌入式數(shù)據(jù)庫(kù)Sqlite應(yīng)用于油田監(jiān)控系統(tǒng)中,解決了以往商業(yè)數(shù)據(jù)庫(kù)系統(tǒng)開(kāi)發(fā)存在較大難度、維護(hù)困難及價(jià)格貴的問(wèn)題。因?yàn)镾qlite數(shù)據(jù)庫(kù)用起來(lái)十分簡(jiǎn)單,不需專(zhuān)業(yè)化數(shù)據(jù)庫(kù)對(duì)引擎實(shí)施管理,并且整體性能平穩(wěn),運(yùn)行速度快,能夠滿足油田監(jiān)控體系對(duì)各種數(shù)據(jù)管理的需求。
[1]李原.嵌入式數(shù)據(jù)庫(kù)Sqlite在油田監(jiān)控系統(tǒng)中的應(yīng)用[J].武漢工業(yè)學(xué)院學(xué)報(bào),2011,8(12):168-170.
[2]陳曉東,曹奇英.嵌入式數(shù)據(jù)庫(kù)Sqlite的遠(yuǎn)程可視化維護(hù)管理工具的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用與軟件,2011,3(8):116-118.
[3]周洪義.油氣田地面工程事故控制體系的模糊綜合評(píng)價(jià)[J].油氣田地面工程,2013,32(8):7-8.
(欄目主持 楊軍)
10.3969/j.issn.1006-6896.2014.11.014