• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      嵌入式數(shù)據(jù)庫(kù)SQLite在準(zhǔn)在線故障診斷系統(tǒng)中的應(yīng)用*

      2011-10-21 11:30:38孫俊杰
      制造技術(shù)與機(jī)床 2011年9期
      關(guān)鍵詞:嵌入式故障診斷振動(dòng)

      徐 陽(yáng) 孫俊杰

      (鄭州大學(xué)振動(dòng)工程研究所,河南鄭州450001)

      準(zhǔn)在線故障診斷系統(tǒng)是一種可以對(duì)設(shè)備進(jìn)行精密診斷和故障監(jiān)測(cè)的便攜式故障診斷系統(tǒng),與傳統(tǒng)的故障診斷系統(tǒng)相比,既有離線系統(tǒng)的靈活方便和便攜的優(yōu)點(diǎn),又具有在線系統(tǒng)的強(qiáng)大分析功能和進(jìn)行較長(zhǎng)時(shí)間故障監(jiān)測(cè)的能力,主要用于大型設(shè)備的啟停機(jī)監(jiān)測(cè),以及設(shè)備的故障診斷分析等方面。由于準(zhǔn)在線故障診斷系統(tǒng)的這些特點(diǎn),其在數(shù)據(jù)的采集、存儲(chǔ)和分析方面都具有較高的要求,本文主要討論一種嵌入式數(shù)據(jù)庫(kù)SQLite在準(zhǔn)在線故障診斷系統(tǒng)中的應(yīng)用。

      1 嵌入式數(shù)據(jù)庫(kù)SQLite

      數(shù)據(jù)庫(kù)通常用來(lái)實(shí)現(xiàn)對(duì)大量數(shù)據(jù)的存儲(chǔ)、檢索等功能。早期的數(shù)據(jù)一般通過(guò)某種格式存儲(chǔ)在文件中,而后來(lái)逐漸發(fā)展成為復(fù)雜的大型關(guān)系數(shù)據(jù)庫(kù),如Oracle、MySQL 等。

      在嵌入式領(lǐng)域,早期的數(shù)據(jù)存儲(chǔ)也常常采用系統(tǒng)自定義的數(shù)據(jù)結(jié)構(gòu)和文件格式來(lái)進(jìn)行存取和查詢。但近年來(lái)隨著各種嵌入式應(yīng)用的飛速發(fā)展,嵌入式軟件中對(duì)數(shù)據(jù)存取和查詢功能的要求也越來(lái)越高,數(shù)據(jù)庫(kù)技術(shù)也開(kāi)始越來(lái)越多的應(yīng)用于各種嵌入式系統(tǒng)中。而嵌入式系統(tǒng)中很多的應(yīng)用,可能僅僅需要用到數(shù)據(jù)庫(kù)的一些特性。比如有時(shí)我們需要的可能只是一個(gè)簡(jiǎn)單的基于磁盤文件的數(shù)據(jù)庫(kù)系統(tǒng),這樣就不必安裝龐大的數(shù)據(jù)庫(kù)服務(wù)器,利用簡(jiǎn)單的嵌入式數(shù)據(jù)庫(kù)就可以了。另外嵌入式系統(tǒng)資源上的限制也決定了我們不可能采用大型的關(guān)系數(shù)據(jù)庫(kù)。

      SQLite是D.Richard Hipp在2000年開(kāi)發(fā)的一個(gè)小型嵌入式數(shù)據(jù)庫(kù)。它是完全獨(dú)立的,不具有外部依賴性,其源代碼完全開(kāi)源,可以免費(fèi)用于任何用途。除此之外SQLite還具有零配置、輕量級(jí)自包含、簡(jiǎn)單、靈活、可靠等特點(diǎn),非常適合應(yīng)用于嵌入式系統(tǒng)當(dāng)中。

      2 基于SQLite的準(zhǔn)在線故障診斷系統(tǒng)的軟件架構(gòu)

      系統(tǒng)采用OMAP5912作為處理器,其ARM端運(yùn)行Linux操作系統(tǒng),對(duì)系統(tǒng)的外圍模塊進(jìn)行管理控制;在DSP端運(yùn)行DSP/BIOS實(shí)時(shí)內(nèi)核,對(duì)采集的數(shù)據(jù)進(jìn)行復(fù)雜的處理。系統(tǒng)的軟件主要有6個(gè)功能模塊:數(shù)據(jù)采集模塊、存儲(chǔ)模塊、數(shù)據(jù)分析模塊、用戶管理操作模塊、顯示模塊和通訊模塊,如圖1所示。

      (1)數(shù)據(jù)采集模塊 主要是開(kāi)辟不同的線程來(lái)分別控制多個(gè)傳感器進(jìn)行振動(dòng)數(shù)據(jù)采集,并將采集到的數(shù)據(jù)送入指定的內(nèi)存中等待系統(tǒng)進(jìn)行處理。

      (2)存儲(chǔ)模塊 用來(lái)將用戶需要的數(shù)據(jù)存入指定的存儲(chǔ)介質(zhì)(FLASH、SD卡、硬盤等)中,主要包括用戶的系統(tǒng)配置信息、采集的源數(shù)據(jù)、處理過(guò)的數(shù)據(jù)以及各種分析診斷結(jié)果等。

      (3)數(shù)據(jù)分析模塊 對(duì)采集到的數(shù)據(jù)進(jìn)行實(shí)時(shí)分析,主要由系統(tǒng)控制DSP處理器來(lái)進(jìn)行。

      (4)用戶管理操作模塊 用來(lái)與用戶進(jìn)行交互,使用戶可以根據(jù)不同設(shè)備的需求來(lái)進(jìn)行各種參數(shù)的設(shè)定,同時(shí)可以使用戶自行選擇合適的診斷方法進(jìn)行診斷。

      (5)顯示模塊 主要是將設(shè)備的診斷信息通過(guò)LCD實(shí)時(shí)顯示出來(lái)。

      (6)通訊模塊 主要是通過(guò)USB或網(wǎng)絡(luò)來(lái)訪問(wèn)系統(tǒng),從而獲得系統(tǒng)的各種數(shù)據(jù),方便與企業(yè)的設(shè)備管理系統(tǒng)進(jìn)行對(duì)接。

      3 SQLite在準(zhǔn)在線故障診斷系統(tǒng)中的應(yīng)用

      3.1 SQLite的應(yīng)用程序接口API

      SQLite一共有80多個(gè)C/C++的API,另外還有很多數(shù)據(jù)結(jié)構(gòu)和預(yù)定義的宏等。1個(gè)簡(jiǎn)單的數(shù)據(jù)庫(kù)應(yīng)用程序只需要使用3個(gè)函數(shù)就可以:sqlite3_open()、sqlite3_exec()、sqlite3_close。

      sqlite3_open()表示在當(dāng)前目錄打開(kāi)數(shù)據(jù)庫(kù),如果數(shù)據(jù)庫(kù)不存在則自動(dòng)創(chuàng)建1個(gè)數(shù)據(jù)庫(kù)。其函數(shù)原型為:

      sqlite3_close()與sqlite3_open()對(duì)應(yīng),用來(lái)關(guān)閉打開(kāi)的數(shù)據(jù)庫(kù),在應(yīng)用程序中與sqlite3_open()一般都要成對(duì)出現(xiàn)。

      sqlite3_exec()函數(shù)則是用來(lái)執(zhí)行SQL語(yǔ)句。它的函數(shù)原型為

      其中第3和第4個(gè)參數(shù)用來(lái)指定回調(diào)函數(shù)和回調(diào)函數(shù)第一個(gè)參數(shù)。對(duì)于回調(diào)函數(shù)callback,是在執(zhí)行SQL語(yǔ)句的時(shí)候被回調(diào)。當(dāng)執(zhí)行查詢類型的SQL語(yǔ)句時(shí),每返回一行查詢記錄,就會(huì)調(diào)用一次定義的回調(diào)函數(shù)。

      3.2 系統(tǒng)SQLite數(shù)據(jù)庫(kù)設(shè)計(jì)

      由第二節(jié)所述系統(tǒng)的基本軟件架構(gòu)可以看出,系統(tǒng)的各個(gè)模塊都與數(shù)據(jù)有著密切的關(guān)系,整個(gè)系統(tǒng)實(shí)質(zhì)上就是對(duì)振動(dòng)數(shù)據(jù)的采集、處理和管理的過(guò)程。對(duì)此本系統(tǒng)采用SQLite以文件數(shù)據(jù)庫(kù)的形式來(lái)進(jìn)行對(duì)數(shù)據(jù)的管理和操作。SQLite在系統(tǒng)的不同模塊中有著不同的應(yīng)用,并且將各個(gè)不同的功能模塊有機(jī)地結(jié)合在一起。下面對(duì)這些具體的應(yīng)用進(jìn)行分別闡述:

      (1)在數(shù)據(jù)采集模塊中的應(yīng)用

      數(shù)據(jù)采集模塊有6個(gè)測(cè)振通道,用戶通過(guò)系統(tǒng)設(shè)定其各個(gè)通道工作與否,同時(shí)設(shè)定進(jìn)行數(shù)據(jù)采集或是監(jiān)測(cè)。在SQLite中建有6個(gè)表(source_data1——source_data6)來(lái)分別存儲(chǔ)對(duì)應(yīng)6個(gè)通道采集來(lái)的振動(dòng)數(shù)據(jù)。這6個(gè)表具有同樣的結(jié)構(gòu),其中源數(shù)據(jù)的結(jié)構(gòu)如圖2所示。

      在C語(yǔ)言中建立這種表的具體函數(shù)實(shí)現(xiàn)如下:

      在這6個(gè)振動(dòng)源數(shù)據(jù)表中,共有 ID、data、time、samsrc_info、freq、num、sensor_type 七個(gè)字段。振動(dòng)源數(shù)據(jù)是根據(jù)設(shè)定的采集點(diǎn)數(shù)以組為單位來(lái)進(jìn)行存儲(chǔ),設(shè)定的采集點(diǎn)數(shù)一般有512、1024、2048等選擇,因此對(duì)應(yīng)的一組振動(dòng)數(shù)據(jù)就分別由512、1024、2048個(gè)浮點(diǎn)數(shù)組成,在存儲(chǔ)時(shí)先將這些浮點(diǎn)數(shù)通過(guò)編碼轉(zhuǎn)換,然后以二進(jìn)制的形式存儲(chǔ)在表的data字段,而對(duì)應(yīng)的采集點(diǎn)數(shù)則存在num字段。另外因?yàn)樵诠收显\斷中有時(shí)需要用到各種信息融合的技術(shù),如全息譜技術(shù)、全矢譜技術(shù),而信息融合技術(shù)需要采集的信號(hào)是同源信號(hào),在數(shù)據(jù)表中samsrc_info字段則反映了這些信號(hào)的同源信息。根據(jù)samsrc_info字段的內(nèi)容系統(tǒng)即可判斷某一通道采集的信號(hào)與剩余哪個(gè)通道的哪組信號(hào)是同源的,從而能夠進(jìn)行信息融合。

      當(dāng)系統(tǒng)執(zhí)行較長(zhǎng)時(shí)間故障監(jiān)控功能時(shí),由于數(shù)據(jù)的采集頻率較高,因此表的膨脹速度很快,當(dāng)表過(guò)大時(shí)會(huì)影響系統(tǒng)的存取性能。對(duì)此系統(tǒng)啟動(dòng)時(shí)會(huì)自動(dòng)判斷表的大小,當(dāng)表的大小超過(guò)設(shè)定的大小后會(huì)提示用戶將數(shù)據(jù)轉(zhuǎn)存到另一個(gè)表中或另建一個(gè)關(guān)聯(lián)數(shù)據(jù)庫(kù)存放以往的數(shù)據(jù),從而保證系統(tǒng)的性能不受影響。

      (2)在操作管理模塊中的應(yīng)用

      系統(tǒng)的操作管理包括用戶管理、系統(tǒng)參數(shù)設(shè)定、采集參數(shù)設(shè)定、數(shù)據(jù)處理方式選擇、顯示模式選擇、存儲(chǔ)控制和通訊傳輸控制等。這些管理數(shù)據(jù)和配置信息存儲(chǔ)在數(shù)據(jù)庫(kù)中的一系列配置表中:user表、syscfg表和vibcfg表等。當(dāng)進(jìn)行參數(shù)設(shè)定時(shí),使用sqlite3_exec()函數(shù)執(zhí)行SQL語(yǔ)句中的INSERT命令,可以將各參數(shù)保存到對(duì)應(yīng)配置表中,如圖3所示。同樣,當(dāng)需要讀取參數(shù)時(shí),則執(zhí)行SQL語(yǔ)句中的SELECT命令來(lái)實(shí)現(xiàn)。在系統(tǒng)對(duì)SQLite進(jìn)行操作的過(guò)程中要注意:由于在系統(tǒng)運(yùn)行時(shí)要頻繁地對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作,而數(shù)據(jù)庫(kù)打開(kāi)函數(shù)sqlite3_open("sysdata.db",&db),比較占用資源,因此只在系統(tǒng)啟動(dòng)時(shí)打開(kāi)一次數(shù)據(jù)庫(kù),系統(tǒng)運(yùn)行時(shí)只進(jìn)行操作而不關(guān)閉數(shù)據(jù)庫(kù),所有操作只是對(duì)數(shù)據(jù)庫(kù)中的表進(jìn)行。但是SQLite不支持多線程同時(shí)對(duì)表進(jìn)行寫操作,因此系統(tǒng)必須對(duì)數(shù)據(jù)庫(kù)的寫操作進(jìn)行調(diào)度,防止發(fā)生阻塞。

      (3)在通訊模塊中的應(yīng)用

      當(dāng)系統(tǒng)采集的數(shù)據(jù)需要轉(zhuǎn)存或需要與企業(yè)的設(shè)備管理系統(tǒng)對(duì)接時(shí),系統(tǒng)可通過(guò)USB數(shù)據(jù)線或網(wǎng)線與PC機(jī)互聯(lián)。由于SQLite是文件型數(shù)據(jù)庫(kù),所有數(shù)據(jù)都存在一個(gè)sysdata.db文件中,并且SQLite的數(shù)據(jù)庫(kù)文件在Window系統(tǒng)下可以同樣簡(jiǎn)單地進(jìn)行解析,因此在傳輸時(shí)就可以直接將該sysdata.db文件進(jìn)行傳輸。另外也可以只傳輸系統(tǒng)產(chǎn)生的各種報(bào)表文件。

      (4)在顯示模塊中的應(yīng)用

      顯示模塊主要用來(lái)實(shí)時(shí)顯示波形頻譜圖、相位圖和各種故障分析方法產(chǎn)生的圖表,使用戶對(duì)振動(dòng)信息有更直觀的了解。顯示的波形數(shù)據(jù)主要來(lái)自數(shù)據(jù)庫(kù)中的六個(gè)源數(shù)據(jù)表,其他圖表則由分析模塊調(diào)用DSP內(nèi)核對(duì)源數(shù)據(jù)進(jìn)行處理獲得。

      系統(tǒng)采用MiniGUI來(lái)進(jìn)行圖形用戶界面的設(shè)計(jì),MiniGUI本身就是用 C語(yǔ)言開(kāi)發(fā)的,因此可以與SQLite很好地進(jìn)行結(jié)合,可以在MiniGUI中直接調(diào)用SQLite的各種 API函數(shù),只需要在頭文件中包含“sqlite3.h”文件即可。

      4 結(jié)語(yǔ)

      準(zhǔn)在線故障診斷系統(tǒng)是便攜式故障診斷系統(tǒng)中相對(duì)高端的產(chǎn)品,由于其在采集的同時(shí)還要能夠有較強(qiáng)的數(shù)據(jù)處理和分析能力,因此對(duì)系統(tǒng)的設(shè)計(jì)有較高的要求。本系統(tǒng)采用嵌入式數(shù)據(jù)庫(kù)SQLite來(lái)進(jìn)行數(shù)據(jù)的存儲(chǔ)和管理,避免了采用一般文件存儲(chǔ)時(shí)實(shí)時(shí)性和安全性差的問(wèn)題,也增強(qiáng)了系統(tǒng)的穩(wěn)定性和擴(kuò)展性。同時(shí)由于SQLite對(duì)多種編程語(yǔ)言的支持和較強(qiáng)的移植性,大大減少了系統(tǒng)開(kāi)發(fā)和維護(hù)中的工作量。

      [1]韓捷,張瑞林.旋轉(zhuǎn)機(jī)械故障機(jī)理及診斷技術(shù)[M].北京:機(jī)械工業(yè)出版社,1997.

      [2]歐文盛.ARM嵌入式Linux應(yīng)用實(shí)例開(kāi)發(fā)[M].北京:中國(guó)電力出版社,2008.

      [3]解輝,徐玉斌,李建偉,等.基于sqlite的嵌入式數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)與研究[J].計(jì)算機(jī)與數(shù)字工程,2008(6):91-94.

      [4]孫俊杰,李海龍.基于OMAP的準(zhǔn)在線故障診斷系統(tǒng)的硬件平臺(tái)研究[J].儀表技術(shù)與傳感器,2010(5):71-73.

      [5]倪天龍,張賢高,王培.數(shù)據(jù)庫(kù)SQLite在嵌入式系統(tǒng)中的應(yīng)用[J].微計(jì)算機(jī)信息,2005(10):35-37.

      [6]Chris Newman.SQLite[M].Indianapolis.Sams Publishing,2004.

      猜你喜歡
      嵌入式故障診斷振動(dòng)
      振動(dòng)的思考
      振動(dòng)與頻率
      搭建基于Qt的嵌入式開(kāi)發(fā)平臺(tái)
      中立型Emden-Fowler微分方程的振動(dòng)性
      嵌入式軟PLC在電鍍生產(chǎn)流程控制系統(tǒng)中的應(yīng)用
      因果圖定性分析法及其在故障診斷中的應(yīng)用
      UF6振動(dòng)激發(fā)態(tài)分子的振動(dòng)-振動(dòng)馳豫
      Altera加入嵌入式視覺(jué)聯(lián)盟
      基于LCD和排列熵的滾動(dòng)軸承故障診斷
      倍福 CX8091嵌入式控制器
      吉安县| 乌拉特中旗| 盈江县| 兴文县| 大埔县| 辽中县| 天门市| 通榆县| 神池县| 新田县| 武邑县| 西乡县| 潼南县| 达尔| 临夏市| 宜州市| 湘西| 疏勒县| 隆林| 仁寿县| 大田县| 英山县| 孝义市| 上犹县| 德清县| 牟定县| 清流县| 兴业县| 瑞安市| 原平市| 阳信县| 临夏县| 苗栗县| 沂水县| 延安市| 土默特右旗| 子长县| 乌恰县| 陇西县| 象山县| 安图县|