新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于Linux的嵌入式實時數據庫的設計

        基于Linux的嵌入式實時數據庫的設計

        作者: 時間:2012-05-21 來源:網絡 收藏

        表1 的結構

        域名

        作用

        類型

        長度

        VariantName

        變量名

        string

        50

        VariantType

        變量類型

        string

        30

        VariantDesc

        變量描述

        string

        50

        ChangeLmd

        變量變化靈敏度,變化幅度大于該值才被記錄

        float

        InitValue

        軟件開始運行時非離散型變量的初始值

        float

        InitBoolValue

        軟件開始運行時離散型變量的初始值

        int

        1

        MinValue

        變量在的最小值

        float

        MaxValue

        變量在的最大值

        float

        InitMinValue

        變量所對應的設備的數值的下限

        float

        InitMaxValue

        變量所對應的設備的數值的上限

        float

        DeviceName

        I/O類型的變量對應的設備名稱

        string

        50

        Register

        I/O類型的變量對應的設備寄存器

        string

        50

        DataType

        該變量的數據類型,為上述8種類型之一

        string

        20

        ReadWrite

        I/O變量的讀寫特性,只讀、只寫或讀寫

        string

        10

        TimeScan

        讀寫外部設備的時間頻率

        float

        RunMode

        獲取變量值的模式:仿真方式、直接采集

        string

        50

        SoftMode

        定義仿真獲取數據時是否隨機產生

        string

        50

        FltValue

        變量的當前值

        float

        3.2 實時數據庫生成模塊設計

        實時數據庫生成模塊運行在組態開發環境,為了方便對應用程序中的數據管理,將所有的實時變量用單向鏈表定形式來實現管理,用以完成對數據庫的操作,鏈表定義如下:

        typedef struct ClsRTVariantSet//實時數據庫結構定義

        { int count; //鏈表中所有實時數據變量的個數

        Position currentpos; //標記鏈表中的當前元素所處的位置

        RTVariant * head; //指向鏈表的第一個元素,類型為RTVariant

        RTVariant * current; //標記鏈表中的當前元素

        }RTVariantSet;

        再定義一組與該鏈表相關的操作來實現數據的管理,如數據的初始化、插入數據、更新、獲取、設置實時數據庫對象的值等操作,操作原型定義如下:

        Status InitRTVariantSet(RTVariantSet* mlist, char* mstrFileName,

        char* mstrFilter, int mintFiltered); //鏈表的初始化

        void FreeRTVariantSet(RTVariantSet* mlist); //清空鏈表

        void InsertRTVariantList(Position p, RTVariant* mObjItem, RTVariantSet* mlist);//插入數據對象

        Status UpdateRTValue(RTVariantSet* mlist,char* FldNameAndValue);//更新數據

        float GetRTValueByName(RTVariantSet* mlist,char* FldName);//獲取變量的值

        Status SetRTValueByName(RTVariantSet* mlist,char* FldName,float mfltValue);

        // 設置變量的值

        3.3.實時數據庫運行模塊的設計

        實時數據庫運行模塊運行在仿真環境或者嵌入式設備上,主要完成實時數據的采集以及實時數據的分析處理,依據功能的不同編寫不同的處理函數。如實時曲線分析(RealCurve)就是用于觀察外部變量或表達式的值隨時間變化的趨勢的一個模塊。實時曲線的X軸代表時間、Y軸代表變量值,運行時曲線可以自動卷動,以快速反映變量隨時間的變化。在設計實時曲線時主要用到如下的變量屬性:

        域名

        作用

        類型

        FltValue

        變量的當前值

        float

        Count

        顯示數據的個數

        int

        FltModel

        實時曲線中設定的參照曲線的數值,一維數組,在開發環境中設置

        float*

        FltRealValue

        當前值之前的時間段的實際值數組

        float*

        FltRealValue是一個一維數組,其中存放了實時曲線實際顯示的數值,存放的數據是自動卷動的,當由外部設備采集到一個當前時刻的數值后,存放在數組中的采集時間最老的一個數據將被丟棄,而加入當前新采集到的數據,數組中有效數據的總數保持不變。實時趨勢曲線就是根據這個的數據結構來滾動顯示的。

        4 小結

        嵌入式應用系統的運行要處理大量的實時數據,這就要求開發嵌入式應用系統的具有處理大量實時數據的功能。實時數據庫模塊分為開發環境和運行環境分別設計,在組態開發環境中完成實時數據庫結構、數據來源、數據連接、數據類型及相關的各種參數的定義,生成目標實時數據庫,然后在系統運行環境中,將從外部設備采集來的實時數據送入實時數據庫,讀取目標實時數據庫中的數據進行解析,自動完成顯示、報警、存盤等操作,同時把有關信息發送給系統的其它部分,以便觸發相關事件,進行實時處理。

        參考文獻:

        [1] 周東球,杜殿林等.先進控制軟件系統實時數據庫的設計[J].微計算機信息,2003

        [2] 沙寶良,陳云飛,周正林.工業控制系統的實時數據庫設計[J].信息技術,2003

        [3] Olson,M.A. Selecting and Implementing an Embedded Database System. IEEE Computer.2000,33(9):27-34

        [4] J Stankovic,et al. Misconceptions about Real-Time Databases. IEEE Computer,1999,
        32(6):29-36

        [5] 劉震 羅欣. 嵌入式實時數據庫技術研究.電子產品世界.2005.2

        [6]錢笑宇,張彥武. 工業實時數據庫的研究和設計. 計算機工程. 2005年1月

        創新觀點

        對實時數據的處理是工控系統的核心,主要用于開發嵌入式工控軟件,實時數據庫的設計和實現是的重要組成部分。將實時數據庫的設計分為開發環境和運行環境分別設計,在系統開發環境就可以只定義數據庫結構和數據字典,在運行環境中完成數據和變量的綁定,實時獲取或處理數據,并完成了兩部分軟件的分析和設計。

        linux操作系統文章專題:linux操作系統詳解(linux不再難懂)

        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 桂阳县| 酉阳| 厦门市| 上思县| 波密县| 闽侯县| 南昌县| 大邑县| 玛纳斯县| 金山区| 沂水县| 邵东县| 广州市| 紫金县| 琼海市| 合川市| 合江县| 崇阳县| 沈丘县| 安阳县| 龙海市| 庄河市| 泽库县| 永顺县| 海林市| 贵南县| 新余市| 馆陶县| 平乐县| 和平区| 石棉县| 盖州市| 平昌县| 娱乐| 富平县| 苗栗县| 泾阳县| 太湖县| 福泉市| 板桥市| 汾阳市|