《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 嵌入式Linux組態軟件實時數據庫的設計
嵌入式Linux組態軟件實時數據庫的設計
摘要: 本文主要提出了一種可應用于監控組態軟件的實時數據庫的實現方法。通過對實時數據庫在組態軟件中的地位與作用的分析,結合嵌入式Linux在實時多任務方面的特性,設計并實現了利用多種存儲介質構造實時數據庫存儲結構,并給出了描述實時數據模型的數據結構與訪問數據庫的通用函數接口。
Abstract:
Key words :

1 引言

實時數據庫(real-time database, RTDB)作為組態軟件設計與實現的核心內容解決了其所 應對的現代工業生產現場環境中生產數據與控制數據類型復雜多樣,數據處理與事件調度時 間約束嚴格等難題[1]。目前,國內外已經有多種基于Windows 操作系統平臺的實時數據庫 產品在自動化過程控制領域中得到應用[2],隨著Linux 操作系統的出現,這種開發平臺單一 的局面有望得到改觀。Linux 操作系統具有很多優秀的特性適于組態軟件實時數據庫系統的 開發,特別是其完善的進程線程管理,進程間通信機制與并發控制,可靠的內存管理系統[3], 更是為時間約束嚴格的實時數據庫的開發提供了有力的支持。因此,本文結合Linux 系統實 時多任務方面的特性,采取能夠滿足數據實時響應要求的多級存儲結構,研究并提出了一種 基于嵌入式Linux 系統平臺并可應用于監控組態軟件的實時數據庫實現方案。

2 實時數據庫存儲結構的分析與設計

實時數據庫是監控組態軟件數據處理,事務調度,各應用程序間通信的中心。圖1 即示 出了組態軟件實時數據庫的數據處理流程。

2.1 實時數據庫的數據流分析

組態軟件運行環境分為實時數據庫管理系統(RTDBMS)和實時監控界面程序(real-time supervisory control interface, RTSCI)。實時數據庫管理系統需要把工業現場中復雜多樣的過 程和控制數據抽象為合理高效的數據結構,實時監控界面程序則利用實時過程數據為現場監 控人員提供一個反映實際生產過程的可視化圖形界面,在實際運行中二者構成客戶端/服務 器計算模式。RTDBMS 作為數據服務的提供者,需要滿足RTSCI 種類多樣的數據需求。

為了形象的描繪工業現場的實際生產過程,RTSCI 由多種圖形對象構成,根據不同的數 據類型需求可分為實時顯示,實時趨勢,歷史趨勢,實時報警等。而應用于現代工業生產現 場環境的實時數據庫還需要滿足嚴格的數據存取與事件響應的定時限制。所以,傳統的數據 庫管理系統所采用的數據表示方法,存儲模式已不能滿足工控組態軟件所要求的響應速度 [4]。為此,在設計實時數據庫時,為了兼顧RTSCI 所要求的數據圖形表現多樣性與工業生產 環境時間約束的嚴格性,需要采用多種存儲介質合理組合的多層級數據存儲結構。

在工業生產過程中實時產生的過程量,是需要組態軟件在每個采樣周期中及時更新的動 態數據,為了保證實時數據庫的及時響應,須將其存儲在內存中;對于RTSCI 的某些數據 需求,如歷史趨勢顯示,實時數據庫應為之提供相比內存更大的存儲空間,這類數據需求不 需要很高的響應速度,可將之命名為靜態數據,其所服務的圖形對象要求可按時間翻頁瀏覽, 這類靜態數據適于存儲在文件系統中;而需要長期保存的生產過程量數據,即歷史數據,它 們是今后進行生產效能分析的依據,這些數據可以保存在通用數據庫中。這樣,由內存數據 庫,外存文件系統以及通用數據庫的三級存儲結構,便構成了既可滿足實時數據定時限制又 兼顧數據需求多樣性的可應用于監控組態軟件的實時數據庫的存儲架構。

2.2 利用共享內存與命名管道技術實現實時數據庫存儲結構

Linux 提供了一組由AT&T System V.2 版本的UNIX 引入的進程間通信(Inter-Process CommunicatiON, IPC)機制,其中的共享內存技術允許兩個不相關的進程訪問同一段邏輯內 存,是在兩個運行中的進程間傳遞數據的一種非常高效的數據訪問機制[5],可為RTDBMS 與RTSCI 間的動態數據交互提供有力的支持。但共享內存技術本身并未提供任何同步機制, 因此還需要配合IPC 的信號量機制來保證二者間數據訪問控制。Linux 提供的另一組在不相 關的進程間進行數據交互的函數是命名管道FIFO。它是將數據存儲在文件系統中實現進程 間共享的一種通信方式。命名管道適用于數據存取響應時間要求相對寬松且數據交互總量較 大的應用場合。同時,FIFO 中實現數據讀寫的read 和write 調用的阻塞機制,還可以提供 進程間的同步控制。

由上述對其特點的分析,FIFO 技術是實現RTDBMS 與RTSCI 間靜態數據交互較好的 選擇。上圖即示出了由共享內存,命名管道,ODBC 接口等多種進程間通信機制構建的實時 數據庫存儲結構。值得注意的是,為了實現實時數據庫與通用數據庫的雙向數據交換,需要編寫特定的通用數據庫接口(ODBC 接口)例程。Linux 提供了一組豐富的接口函數用來訪問 MySQL 數據庫。通過對通用數據庫MySQL 的數據連接進行組態,實時數據庫便可按照預 先指定的采樣周期,對規定時間區段內的歷史數據與MySQL 數據庫建立數據連接。

3 實時數據庫系統的實現

3.1 數據模型的分析與構建

傳統數據模型包括三個部分:一組數據對象及其結構,一組數據操作,關于數據對象與 操作的完整性約束[6]。而對于工業生產中所產生的實時數據,還必須約束于嚴格的定時限制。

在應用于工業現場控制的組態軟件中不僅包括實時產生的過程量數據,還存在著描述系 統運行狀況的系統數據,在利用采集到的過程量數據的基礎上,經處理后提取出的計算數據, 以及涉及控制測量組態或從工控軟件輸出到輸出裝置上的數據等。由此,可將實時數據模型 抽象為:模擬量,開關量,字符串量三種數據類型。

3.2 數據類型的實現

上述用于構建實時數據過程量的三類數據模型,對應于具體的實現分別可用:浮點型, 布爾型,字符數組來表示。實時數據可由結構類型實現,以其中的實時數據類型字段來區分 不同的過程量類型。實時數據結構類型的實現如下。

  /*枚舉類型標記實時數據過程量類型 */

  typedef enum {

  double_t = 1,

  bool_t

  } pv_type_set;

  /* 聯合類型實現實時數據過程量值 */

  typedef union {

  double dPV;

  bool swhPV;

  } pv_data_set;

  /* 實時數據的數據類型 */

  #define name_LEN 20

  #define DESC_LEN 50

  typedef STruct {

  char nAME[NAME_LEN + 1];//數據點名稱

  pv_type_set type;//數據點類型

  char desc[DESC_LEN + 1];//數據點描述信息

  pv_data_set pv;//數據點過程量值

  char domain[3];//數據點所在域號

  char eu[DESC_LEN + 1];//數據點工程單位描述

  double euLow;//數據點工程單位下限

  double euHigh;//數據點工程單位上限

  double pvRaw;//現場測量裸數據

  bool IsRanCon;//是否進行量程變換

  double pvRawLow;//裸數據量程下限

  double pvRawHigh;//裸數據量程上限

  bool static;//靜態數據歷史數據存儲至文件系統

  int storecyc;//備份周期

  bool IsAlarm;//是否報警

  int AlarmPriority;//報警優先級

  … …

  } tag_node;

3.3 實時數據在數據庫中的組織形式及相關數據結構

為了充分地利用 Linux 平臺對實時多任務操作的支持,實時數據庫的數據采集與處理等任務應以多進程的形式并發執行。而Linux 操作系統IPC 機制中的共享內存技術可以根據需 要離散地分配內存空間,從而可將所有數據點的共享內存地址構成索引并建表。在實際應用 中,經常會將若干在生產工藝上有關聯的數據點劃分為一個數據域,所以地址索引表為兩級 結構:第一級為域表,其中的數據項存儲特定數據域的地址;第二級為數據點表,數據項存 儲某一數據域中的每個數據點的內存地址。域表與數據點表中存儲的數據點所在的域號字段 與數據點號字段組合構成數據點ID。包括所有實時數據點的地址索引由一張域表與多張數 據點表構成。根據存儲域表結構的內存地址,便可訪問所有數據點的共享內存地址。下面給 出域表與數據點表用到的數據結構。

  /* 描述域表數據項的數據結構 */

  typedef struct {

  char domIndex[3];//域號

  tbTag_item *tbTag_ptr;//該域的數據點表地址

  } tbDom_item;

  /*描述數據點表數據項的數據結構*/

  typedef struct {

  char tagIndex[3];//數據點號

  tag_node *tag_ptr;//指向數據點的指針

  int shmid;//存儲該數據點的共享內存標號

  char name[NAME_LEN + 1];//數據點名稱

  } tbTag_item;

  域表與數據點表的數據項內容與關系結構示意見圖 3。

3.4 一組訪問實時數據庫的通用編程接口

作為投入現場運行的監控組態軟件的核心部件,實時數據庫需要為現場操作人員提供類 似傳統數據庫管理系統的實時數據查詢與更新等功能。另外出于設備無關性的考慮,也需要 為監控組態軟件的其他應用程序提供一組用來直接訪問實時數據庫的接口函數。這樣,對于 其他工控設備與實時數據庫進行數據交換的需求,只要利用這樣一組接口函數開發不同的驅 動程序便可得到滿足,從而增強了實時數據庫系統的通用性與開放性。下面列出了一些較為 常用的數據訪問接口函數。

  int CreatTag();//創建數據點

  char *GetNameByID(char *tagID);//通過數據點ID 取得數據點名

  char *GetIDByName(char *tagName);//通過數據點名得到數據點ID

  pv_type_set GetPVType(char *tagName);//通過數據點名得到數據點過程量值類型

  int GetPVByName(char *tagName, pv_data_set *pv);//根據數據點名獲取數據點過程量值

  int SetPVByName(char *tagName, pv_data_set *pv);//根據數據點名寫入數據點過程量值

5 結語

實時數據庫作為監控組態軟件的核心部分,其組織結構是否高效直接影響到與底層 I/O 過程設備的數據交換,與實時監控界面程序的數據傳遞,與組態軟件中其它運行程序的實時 通信等多項技術指標。所以,其設計要求結構精簡,存儲高效,并且具備相當的可靠性與穩 定性。經實際應用證明,由本文提出的利用共享內存,文件系統,通用數據庫多層級存儲介 質相結合的實時數據庫存儲結構,能較充分地利用Linux 操作系統實時多任務方面的特性, 較好地滿足工業生產現場環境的實時響應要求。另外,實時數據庫的開發是一個有著廣闊前景的研究領域,其還包括諸如I/O 調度與緩沖管理,恢復與超載管理等多項實現內容[7]。

本文作者創新點:本文利用Linux 操作系統對多任務并發處理操作的良好支持,采用二 級地址索引為數據點獨立分配共享內存空間,以多進程調度的方式實現了數據采集與處理從 而提高了系統吞吐量和數據存取效率。同時,多層級的實時數據庫存儲結構能較好地兼顧工 業生產環境的時間約束與數據圖形表現多樣性的要求。

此內容為AET網站原創,未經授權禁止轉載。
热re99久久精品国产66热_欧美小视频在线观看_日韩成人激情影院_庆余年2免费日韩剧观看大牛_91久久久久久国产精品_国产原创欧美精品_美女999久久久精品视频_欧美大成色www永久网站婷_国产色婷婷国产综合在线理论片a_国产精品电影在线观看_日韩精品视频在线观看网址_97在线观看免费_性欧美亚洲xxxx乳在线观看_久久精品美女视频网站_777国产偷窥盗摄精品视频_在线日韩第一页
  • <strike id="ygamy"></strike>
  • 
    
      • <del id="ygamy"></del>
        <tfoot id="ygamy"></tfoot>
          <strike id="ygamy"></strike>
          亚洲另类在线视频| 国产精品久久综合| 制服丝袜亚洲播放| 欧美国产乱视频| 久久激情综合网| 欧美一区二区三区喷汁尤物| 久久国产一区| 99在线精品免费视频九九视| 国产亚洲欧美aaaa| 国内久久精品| 欧美激情第一页xxx| 亚洲午夜高清视频| 欧美精品 日韩| a4yy欧美一区二区三区| 欧美视频在线免费看| 欧美精品一区二区在线观看| 欧美激情国产日韩精品一区18| 欧美综合国产精品久久丁香| 鲁大师成人一区二区三区| 欧美日韩午夜在线视频| 在线欧美一区| 久久精品最新地址| 亚洲欧美另类久久久精品2019| 欧美国内亚洲| 欧美日韩你懂的| 亚洲国产专区| 最新国产乱人伦偷精品免费网站| 一区二区三区四区蜜桃| 欧美午夜精品久久久久免费视| 国产精品一区免费视频| 欧美性猛交99久久久久99按摩| 在线观看精品一区| 一区二区三区在线视频免费观看| 亚洲精品乱码视频| 国产精品丝袜久久久久久app| 最新高清无码专区| 亚洲视频一区二区免费在线观看| 亚洲国产精选| 久久蜜桃香蕉精品一区二区三区| 国产精品夜夜夜一区二区三区尤| 久久久久国产一区二区| 亚洲四色影视在线观看| 久久精品在这里| 亚洲天堂av高清| 亚洲日本免费电影| 欧美成人按摩| 欧美三级日韩三级国产三级| 欧美大尺度在线| 欧美亚州在线观看| 久久亚洲精品中文字幕冲田杏梨| 国内精品久久久久久久影视蜜臀| 伊人久久噜噜噜躁狠狠躁| 欧美日韩亚洲国产精品| 久久久久久午夜| 欧美激情亚洲| 夜夜爽99久久国产综合精品女不卡| 亚洲人在线视频| 欧美日韩成人精品| 亚洲一区美女视频在线观看免费| 在线观看视频免费一区二区三区| 久久婷婷人人澡人人喊人人爽| 欧美一级理论性理论a| 99re66热这里只有精品3直播| 亚洲免费观看高清在线观看| 欧美日韩国产片| 亚洲精品资源美女情侣酒店| 欧美一区二视频| 老司机免费视频一区二区三区| 国产精品久久久久久久久久直播| 亚洲人成啪啪网站| 一色屋精品视频免费看| 亚洲精品五月天| 国产精品五区| 国产免费成人| 久久狠狠久久综合桃花| 亚洲高清视频在线观看| 久久精品道一区二区三区| 亚洲欧美国产制服动漫| 欧美在线观看日本一区| 欧美jizzhd精品欧美喷水| 亚洲欧美激情一区二区| 亚洲欧美国产精品专区久久| 夜夜夜精品看看| 一区二区三区久久网| 欧美a级片网站| 欧美三级特黄| 欧美一级视频免费在线观看| 欧美精品18| 国产精品理论片在线观看| 曰本成人黄色| 最新国产拍偷乱拍精品| 久久综合久久综合久久| 亚洲日本在线观看| 国产精品欧美日韩久久| 99re66热这里只有精品3直播| 欧美在线观看你懂的| 欧美日韩亚洲天堂| 久久精品电影| 最新日韩精品| 国产日韩欧美电影在线观看| 亚洲精选中文字幕| 巨胸喷奶水www久久久免费动漫| 欧美日韩国产三区| 国产色综合网| 国产精品久久777777毛茸茸| 欧美精品色综合| 久久精品首页| 亚洲国产精品精华液2区45| 性欧美精品高清| 欧美成年人视频网站| 好看的日韩av电影| 免费中文字幕日韩欧美| 国产精品久久久久久福利一牛影视| 一本色道久久综合亚洲二区三区| 亚洲成人在线免费| 在线观看欧美成人| 欧美日本在线观看| 国产日韩亚洲欧美| 国产欧美视频在线观看| 亚洲大胆人体在线| 欧美日韩一级大片网址| 最新成人在线| 亚洲国产精品ⅴa在线观看| 国产日韩欧美亚洲| 欧美日韩一区二区三区| 另类欧美日韩国产在线| 国产精品av免费在线观看| 亚洲第一福利在线观看| 激情成人av在线| 亚洲视频在线观看网站| 国产亚洲女人久久久久毛片| 国产欧美日韩免费看aⅴ视频| 一本色道久久精品| 国产自产在线视频一区| 美女爽到呻吟久久久久| 亚洲高清成人| 欧美国产视频在线观看| 亚洲美女视频在线观看| 99在线热播精品免费| 国产精品一区2区| 久久av一区二区三区| 狠狠色丁香久久婷婷综合丁香| 亚洲精品在线免费观看视频| 国产精品激情偷乱一区二区∴| 午夜一级久久| 欧美日韩一区在线观看| 国产乱码精品一区二区三| 欧美日本不卡视频| 亚洲网友自拍| 久久精品国产久精国产思思| 欧美va亚洲va日韩∨a综合色| 国产精品久久久久久久久| 亚洲激情另类| 国产视频一区二区在线观看| 国模精品娜娜一二三区| 久久综合国产精品| 亚洲精品一区二区三区四区高清| 午夜精品一区二区三区电影天堂| 国产乱码精品一区二区三区不卡| 亚洲婷婷综合色高清在线| 久久久久国产一区二区三区四区| 国产欧美va欧美va香蕉在| 久久精品中文字幕一区| 亚洲黄色片网站| 欧美韩国日本综合| 噜噜噜91成人网| 国产精品麻豆成人av电影艾秋| 欧美日韩精品综合| 亚洲黑丝在线| 国产精品一区二区在线观看网站| 国产精品h在线观看| 欧美 日韩 国产在线| 亚洲国产精品t66y| 欧美一区二区三区在线播放| 欧美成在线视频| 欧美精品精品一区| 欧美日韩黄色一区二区| 国产欧美在线观看| 欧美日韩国产综合视频在线| 99国内精品久久| 久久久国产精品一区二区三区| 久久精品网址| 亚洲精品在线看| 欧美日韩国产色综合一二三四| 欧美激情综合色| 欧美电影在线免费观看网站| 亚洲盗摄视频| 中文一区二区| 亚洲国产福利在线| 久久精品视频在线免费观看| 欧美色网在线| 国内精品伊人久久久久av影院| 国产精品久久久久一区| 亚洲欧美在线播放| 亚洲欧美在线一区二区| 亚洲欧美国产一区二区三区| 亚洲国产精品高清久久久| 国产精品乱码一区二区三区| 欧美性感一类影片在线播放| 欧美午夜不卡视频| 99国产麻豆精品| 久久久www成人免费精品| 91久久精品国产91久久性色| 黄色成人免费观看| 国产精品久久久久一区| 欧美精品久久一区二区| 亚洲免费观看高清在线观看| 国产亚洲欧美另类中文| 国产精品日韩精品欧美在线| 国产精品日韩久久久| 久久免费国产精品| 国产嫩草影院久久久久| 99视频精品全部免费在线| 鲁大师影院一区二区三区| 亚洲三级免费观看| 亚洲欧美日韩成人高清在线一区| 久久久久一区二区三区四区| 亚洲午夜av| 伊人久久综合97精品| 99re66热这里只有精品4| 精品99一区二区| 国产在线一区二区三区四区| 亚洲丰满少妇videoshd| 在线午夜精品自拍| 亚洲第一在线视频| 欧美日韩成人在线播放| 欧美日韩国产精品自在自线| 亚洲一区二区精品在线| 国产美女精品在线| 99天天综合性| 国产精品r级在线| 欧美激情一二区| 欧美另类极品videosbest最新版本| 欧美日韩免费观看一区三区| 一区二区在线观看视频在线观看| 亚洲激情视频在线观看| 国产精品美女主播在线观看纯欲| 欧美在线观看一区二区三区| 久久久国产一区二区三区| 在线电影一区| 亚洲风情亚aⅴ在线发布| 亚洲人成艺术| 亚洲精品免费一二三区| 国产在线高清精品| 亚洲女同精品视频| 久久成人精品无人区| 亚洲国内高清视频| 国产精品久久综合| 国产人成精品一区二区三| 国产在线播精品第三| 久久久久国产一区二区三区四区| 亚洲国产成人在线视频| 免费日本视频一区| 影音先锋日韩精品| 欧美不卡一卡二卡免费版| 国产欧美一区二区在线观看| 一区二区福利| 欧美综合国产| 国产精品v欧美精品∨日韩| 国产美女精品| 国产精品日韩在线播放| 欧美深夜影院| 日韩午夜电影在线观看| 亚洲国产精品激情在线观看| 国产精品久久久久久久久免费樱桃| 中文成人激情娱乐网| 亚洲欧美日韩在线不卡| 欧美成人在线免费观看| 一本一道久久综合狠狠老精东影业| 国产婷婷色一区二区三区在线| 欧美日韩国产成人在线| 国产欧美精品久久| 亚洲综合第一页| 樱桃视频在线观看一区| 久久国产精品99精品国产| 欧美—级在线免费片| 欧美freesex8一10精品| 在线日韩av片| 亚洲午夜影视影院在线观看| 欧美日韩一区二区三| 欧美激情aaaa| 亚洲在线观看视频| 欧美伦理影院| 两个人的视频www国产精品| 欧美一级在线视频| 国产深夜精品福利| 欧美美女bbbb| 在线观看欧美一区| 久久免费观看视频| 欧美精品一区二区视频| 欧美日韩国产a| 久久久久久香蕉网| 欧美专区一区二区三区| 久久免费高清视频| 国产在线视频不卡二| 欧美三级在线视频| 欧美综合二区| 午夜电影亚洲| 欧美精品在欧美一区二区少妇| 欧美经典一区二区| 欧美日韩另类一区| 久久精品国产99精品国产亚洲性色| 亚洲欧美日韩成人高清在线一区| 国产一区二区无遮挡| 欧美成人精品在线| 免费成人在线视频网站| 一区二区三区视频在线播放| 欧美亚韩一区| 国产精品国产福利国产秒拍| 亚洲国产精品ⅴa在线观看| 亚洲免费av观看| 国产一区二区三区在线观看免费视频| 中文高清一区| 欧美成人精品h版在线观看| 在线免费观看一区二区三区| 亚洲综合精品四区| 亚洲国产欧美精品| 136国产福利精品导航网址| 中文精品99久久国产香蕉| 国产精品第一页第二页第三页| 国产亚洲观看| 日韩系列在线| 欧美激情一区二区三区成人| 国内精品久久久久久久97牛牛| 国产人妖伪娘一区91| 黄色综合网站| 老鸭窝亚洲一区二区三区| 亚洲第一中文字幕在线观看|