基于Linux的嵌入式實時數據庫的設計
在現代化的工業生產現場,產生了大量的生產數據和控制數據,使得嵌入式環境下的數據管理成為工業控制系統中的重要部分,這就要求監控軟件必須具備強大的數據處理能力,為人們提供實時、可靠的數據,以反映現場運行的狀況,以便進行相應的控制操作。
嵌入式環境中數據的正確性不僅依賴于數據的邏輯結果,而且依賴于邏輯結果產生的時間。如何有效管理這些大量的、時效性強且有嚴格時序的數據,如何使之以高可靠性、高實時性和大吞吐量的方式進行處理是開發嵌入式系統必須解決的首要問題。
1 實時數據的處理過程

在監控系統中,需要對大量的實時數據進行處理,處理過程包括:現場數據的實時采集;對實時數據進行處理和存儲;對結果進行分析、判斷和報警;對歷史數據的處理等,如圖1。
將所有的實時數據集中進行處理,建立實時數據庫,是嵌入式系統的一個中心環節。實時數據庫中的很大一部分數據是從生產和測量現場實時采集到的數據,因此及時準確地采集數據是整個控制系統正常工作的基本前提。另外還有一些計算數據、控制數據和管理數據。
實時數據處理是在監控系統中對實時數據庫中變量的值進行的操作。包括對數據的顯示,存儲,報警,管理,提供控制參數等,同時它還可以根據需要把有關信息以事件的方式發送給系統的其它部分,以便觸發相關事件,進行實時處理。
歷史數據處理是對定時存儲到歷史數據庫中的數據進行處理,主要操作包括對原始數據的匯總、查詢,可以以曲線、報表等形式將數據形象地顯示出來。嵌入式設備存儲容量有限,系統中的大量數據將通過通信接口定期送入遠程關系數據庫中保存。
在嵌入式系統中,實時數據庫從本質上說不是一個真正意義上的數據庫系統,只是一個由應用程序管理的內存緩沖區,有時又稱為“內存數據庫”,是一個供多個實時任務共同使用的共享數據區,是嵌入在監控軟件中、與應用程序不可分割的部分,主要完成數據的存、取操作,不具有獨立性。一個完整的嵌入式實時數據庫系統除了內存數據庫外,還應包括歷史數據庫、數據庫管理等。因此在構建嵌入式實時數據庫時,應考慮系統的實時性、開銷大小、系統性能、可靠性,以及如何高效地利用嵌入式系統的有限資源、提高數據的存取速度、進行數據保護、數據交換、算法的優化、事務的優先級分派、事務調度等。
2 嵌入式組態軟件中的實時數據庫的開發
隨著DCS的發展,利用組態軟件來支持工業應用軟件的開發,隨著Linux在嵌入式技術領域應用的不斷推廣和深入,許多工控軟件都基于Linux開發。從結構上看,基于Linux的嵌入式圖形化組態軟件(LEGCS:Linux-based Embedded Graphic Configuration Software)由系統開發環境和系統運行環境兩部分組成。系統開發境是作為一個平臺開發工具運行在PC機上,主要完成畫面繪制、指定組態的具體對象和內容、完成設備屬性設定、設定控制策略、I/O管理等操作來對控制現場進行全面的描述與設置,所有設定的結果保存到實時數據庫中,供系統運行時使用。保存到實時數據庫中的信息主要包括:現場數據、開關量、儀表值、實時時鐘、設備屬性等。運行環境實際就是工業控制應用軟件,運行在嵌入式設備上,實時采集現場數據存入實時數據庫,讀取其中的數據并進行解析,在目標機上顯示組態內容,實現設備的組態控制和仿真。維系組態環境與運行環境的紐帶是實時數據庫,如圖 2。

數據庫生成模塊運行在開發環境,主要完成如全局變量、內存變量的數據定義,設置變量處理方式等,全局變量直接與工業現場設備狀態(如反應容器壓力、閥門開關狀態等)相關,這些數據在運行環境中由I/O 驅動模塊按組態要求實時采集;內存變量是組態軟件中用到的中間變量。實時數據生成模塊將組態信息存放到實時數據庫中。在運行環境,由實時數據庫運行模塊執行數據采集,響應用戶控制請求,維護圖形界面與實時數據庫、被控對象之間的數據流動。運行環境中的實時曲線顯示和趨勢模塊定時從實時數據庫中獲取數據,數據存儲模塊將實時數據庫中的數據存儲在磁盤上作為歷史數據。
3 LEGCS系統中實時數據庫的的設計
3.1 實時數據庫的結構設計
實時數據按其性質可分為模擬量、開關量、數字量、字符串等多種,根據現場數據類型和系統所用到的系統常量和中間變量,在LEGCS中定義了八種變量類型:內存離散型、I/O離散型、內存整數型、I/O整數型、內存實數型、I/O實數型、內存字符串型、I/O字符串型,其中內存變量類型用于創建系統常量和中間變量,I/O變量類型用于處理現場采集的數據。對各種類型的變量來說,均有其取值范圍:離散型變量只能取0和1,整型變量與一般程序設計語言中的有符號長整型變量類似,用于表示帶符號的整型數據。實型變量用于表示浮點數據。字符串變量用于記錄一些特定含義的字符串。每類變量一一對應于一類實時數據,它以結構的形式來管理,變量的數據結構RTVariant定義如表1。
linux操作系統文章專題:linux操作系統詳解(linux不再難懂)
評論