《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 跨平臺SCADA的歷史數據收集與存儲設計
跨平臺SCADA的歷史數據收集與存儲設計
2018年電子技術應用第12期
鐘洋洋,王毅璇,王 皓,傅一帆
華北計算機系統工程研究所,北京100083
摘要: 歷史數據是工業生產中設備運行產生的實時數據記錄。針對國產PLC上位機監控系統的數據收集和存儲過程中數據量過大、效率低等問題,設計出一種跨平臺的、滿足工業生產要求、利于問題回溯的收集存儲方式。通過關鍵幀和變更集的方式進行數據壓縮和收集。劃分多個內存緩沖區并利用時間戳的變化實現自動切換,提升數據的讀寫效率。同時采用Qt的信號和槽機制觸發線程進行數據存儲操作,實現數據收集和存儲同時進行。在Windows和Linux操作系統平臺上運行,其功能和性能皆達到設計要求。
關鍵詞: 歷史數據 收集 存儲
中圖分類號: TP311
文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.180960
中文引用格式: 鐘洋洋,王毅璇,王皓,等. 跨平臺SCADA的歷史數據收集與存儲設計[J].電子技術應用,2018,44(12):111-114.
英文引用格式: Zhong Yangyang,Wang Yixuan,Wang Hao,et al. Historical data collection and storage design of cross-platform SCADA[J]. Application of Electronic Technique,2018,44(12):111-114.
Historical data collection and storage design of cross-platform SCADA
Zhong Yangyang,Wang Yixuan,Wang Hao,Fu Yifan
National Computer System Engineering Research Institute of China,Beijing 100083,China
Abstract: Historical data is the real-time data record generated by the operation of equipment in industrial production. Aiming at the problems such as oversize of data, low efficiency in the process of data collection and storage of domestic PLC monitor and control system, a cross-platform, meeting the requirements of industrial production, facilitating the backtracking of problem collection and storage method is proposed. Data is compressed and collected by using the way of key frames and change sets. This design divides multiple memory buffers and uses timestamp change to achieve automatic switching so as to enhance data read and write efficiency. Meanwhile, the signal and slot mechanism of Qt are used to trigger the thread for data storage operation, which implements data collection and storage at the same time. Running on Windows and Linux operating system platforms, both function and performance of the design meet the requirements.
Key words : historical data;collection;storage

0 引言

    隨著現代化工業的不斷發展,生產企業的規模越來越大,對生產過程中的安全性和穩定性要求越來越高。因此,需要對整個生產過程進行監控。將分散使用的儀器、儀表、控制器等集中起來管理,于是就產生了數據采集與監視控制系統,又稱工業組態軟件(Supervisory Control And Data Acquisition,SCADA)。跨平臺SCADA的著重點在于系統在不同的操作系統平臺之間進行移植,都能夠穩定正常地運行。

    組態軟件是用于數據采集與過程控制的專用軟件[1],是位于自動控制系統監控層一級的軟件平臺和開發環境中,一般由數據采集與控制信息發送、歷史數據記錄與趨勢顯示、報警記錄及事件處理、報表生成和打印等部分組成。其中,歷史數據的收集存儲是工業組態軟件不可或缺的一部分,用于記錄SCADA系統中各個控制器數據及狀態值,為控制系統的故障診斷與數據分析等提供數據依據。它主要服務于設備性能的維護、故障原因的診斷以及工藝流程的改進。

    理論上,歷史數據是系統定時從實時數據庫中采樣,保存到歷史數據庫中的數據,用戶需要時可隨時從歷史數據庫中訪問歷史數據[2]。歷史數據存儲具有歷史數據量龐大、歷史數據存儲的格式相對簡單固定以及數據保存的時間間隔相差很大等特點[3-4]。

    目前,組態軟件實時數據庫系統的一些主流產品一般都提供歷史數據收集和存儲功能,能夠較長時間地保存、備份現場生產運行的過程數據。但是由于工業生產現場的采集點多、采集種類多樣以及采集時間周期較短,因而要保存的歷史數據量非常大。就客觀而言,如果將這些數據直接存儲,不僅會占用大量的系統存儲空間,而且會降低數據庫中數據的實時性,使數據的傳輸、查詢變得困難。因此需要改良目前歷史數據的收集和存儲方式,不僅可以節省磁盤開銷,同時也保證對歷史數據訪問的快捷性[5]

    本文研究著重點在于如何將大量的實時數據有效地存入本地SQLite數據庫中,采用關鍵幀和變更集的兩種方式進行數據收集,在數據的質量和存量方面找到平衡點,優化現有的歷史數據收集存儲方式。在Qt開發平臺上編寫程序,并且在Windows和Linux操作系統平臺上進行實際驗證。

1 總體設計

    設計整體分為歷史數據收集設計和歷史數據存儲設計。歷史數據收集主要負責從國產可編程邏輯控制器(Programmable Logic Controller,PLC)中采集到數據并存入內存塊中。歷史數據存儲主要負責將內存塊中的數據經過一定處理加工后存入本地SQLite數據庫中,以便日后查詢所需??傮w設計框圖如圖1所示。

jsj2-t1.gif

    本設計采用的數據庫是SQLite數據庫。SQLite是微型關系型嵌入式數據庫,可獨立運行且無需安裝和配置,運行速度塊,內存占用小,API易用性強,支持大部分SQL-92標準,支持事物的ACID特性(持久性、隔離性、一致性和原子性),并且使用一個數據庫文件來存儲整個數據庫,同一個數據庫文件可以在不同應用平臺上使用,代碼完全開源[6]。

2 歷史數據收集設計

    歷史數據收集部分是上位機監控軟件(SCADA)所具有功能的一部分,是位于上位機軟件與國產PLC接口部分的上行方向,實現對PLC原始數據的獲取、協議解析,然后將數據存入內存塊中。其中,采用的數據收集方法是對死區限值壓縮算法的優化,衍生出關鍵幀和變更集兩種數據記錄方式。

2.1 系統設計

    歷史數據收集子系統與PLC設備的數據通信方式采用有線方式,使用100 Mb/s(含)以上的以太網通過國產控制器實現對現場測控設備實時運行信息的采集,將實時協議數據解析后存儲在內存塊中,再提交給上位機數據處理子系統處理。

    歷史數據收集子系統作為上位機監控軟件的內部數據源提供者,要求常年不間斷運行,實時獲取PLC設備運行數據,所以必須具有高度的可靠性、穩定性和擴展性,同時依據工業生產狀況,也要具有強大的數據采集能力,其大致流程如圖2所示。

jsj2-t2.gif

    功能說明如下:

    (1)數據采集:通常采集工業生產運行設備的模擬量輸入、數字量輸入、脈沖量;如有需要也可以采集模擬量輸出值和數字量輸出值。且同時支持多個控制器、大數據量的采集。采集的數據僅僅是數值,沒有狀態和時間戳。采用定時機制采集數據,最小請求周期可設置為100 ms(或其整數倍)~1 s(由控制器傳輸量的多少決定)。

    (2)協議解析:采用庫方式支持各種通信協議的解析,例如自有協議、Modbus協議、OPC協議等[7],每種協議或者規約采用獨立的庫,實現設計要求中的擴展性需求。

    (3)變更數據轉發:解析后的采集數據臨時被放置于數據緩沖區,一旦數據緩沖區中的數據發生了變化,即達到存儲數組的最大下標值,則將變更的數據集提交給數據存儲子系統,由數據存儲子系統進一步對數據進行加工處理,加入狀態和時間戳[8]等操作。

    (4)診斷統計:診斷功能是指周期性檢測控制器的主從狀態(PLC有主從冗余模式:存在兩個CPU模塊,主CPU運行時,副CPU進行備份),采集數據和下發指令僅面向主控制器。另外診斷功能還負責與任務管理進程通信,告知其當前進程的運行狀態;監察對應的通信接口工作狀態,在發生故障時發出報警。統計功能指通信過程的調試記錄、通信速率、傳輸字節數等附加功能。

2.2 數據記錄

2.2.1 收集算法

    收集子系統采用的算法原型是死區限值壓縮算法,在其基礎上進行優化設計。

    死區限值壓縮算法的原理是通過判斷當前值偏離最后一個記錄的范圍是否大于死區限值,來決定是否記錄此數據。如果大于死區限值,則記錄該數據并以此數據為新的起點進行死區限制壓縮[9]。算法圖如圖3所示。

jsj2-t3.gif

    設算法的門限值是T,起點A的值為V,那么點A的死區范圍為區間(V-T,V+T)。點A之后的點值只要沒有超出死區范圍就直接放棄,直到F超出死區范圍,成為新的起點[10]

    死區限值壓縮算法雖然能夠得到不錯的壓縮率,但是屬于有損壓縮,在工業生產中,如果長期缺少某一點的數據信息是不合適的,不利于后期分析問題。所以為了確保穩定記錄工業設備運行時的數據,在數據收集算法設計上,對死區限值壓縮算法進行優化,在保持原有算法思想不變的基礎上,增加獲取關鍵幀的數據收集方式,定時收集全部采集點的數據信息,形成關鍵幀和變更集兩種數據收集方式。

2.2.2 收集方式

    在數據收集子系統中,為了保證數據的準確性,同時確保收集的數據量也不至于過大,系統采用兩種數據收集方式:關鍵幀和變更集。兩種方式在系統運行時,同時進行操作,互不干擾。

    (1)關鍵幀:操作員可以設定一定時間間隔(一般是15 min),系統會每隔該時間值對所有要求收集的點信息全部記錄一遍。

    (2)變更集:系統內會自動識別每一時刻采集點信息的數據值是否存在變化(系統設計時,將數據變化的閾值默認設計為0)。數據如果存在變化,系統會將該點信息記錄在內存緩沖區中;反之,系統將不會收集該點此時間點的信息數據值,即系統只會收集此時間點變化的采集點信息數據值。

    關鍵幀的優勢在于保證采集點信息的完整性,不會存在長時間缺失某一點信息的情況。同時,變更集的優勢在于優化存儲采集點信息的數據量。兩種方式共同作用,優勢互補,提高歷史數據收集效率,將收集的數據量控制在合適的范圍內。

    在Qt開發平臺上,采用設計原理,編寫程序將兩種方式結合在一起,具體流程圖如圖4所示。

jsj2-t4.gif

3 歷史數據存儲設計

    歷史數據存儲子系統負責對數據收集子系統收集的數據進行實時的處理和存儲,目的是將數據收集子系統的“生數據”加工成“熟數據”,即轉化為滿足上位機系統真正需要的數據結構,并且將數據存儲到歷史庫中,便于以后查詢。

3.1 工作方式

    當接收到數據收集子系統的轉發模塊發送來的消息通知后,系統會對數據進行處理和存儲操作,大致流程如圖5所示。

jsj2-t5.gif

    關鍵模塊說明:

    (1)時間戳處理:在校時子系統保證下,為待處理的數據批量打上時標,標明該批數據采集的時刻,為后來操作提供幫助。

    (2)模擬量處理:具備工程量程轉換、線性/非線性變換、零漂修正算法、數值死區處理等功能,每個功能可以采用模塊化設計。

    (3)數字量處理:具備取反功能。

    (4)報警處理:檢查收集的數據是否存在異常,如有異常即報警提示工作人員。

3.2 關鍵環節

    歷史數據存儲系統的關鍵環節分為實時數據存儲至內存緩沖區中和數據從內存緩沖區中轉存至本地SQLite數據庫兩部分。

    (1)第一部分

    當收集子系統運行并有數據到來時,數據存儲子系統會自動識別并在本地磁盤固定位置新建數據庫文件。數據庫文件是以此刻設備時間值為起始,以數據庫文件記錄結束時間值為終止的方式進行命名。在存儲系統運行時,一般是以10 min的時間跨度來新建一個數據庫文件。如果數據記錄時間跨度不等于10 min,系統會以當時結束時間值來替換新建該數據庫文件時的結束時間值。文件命名形式例如RECORD_20180130014305_20180130014510。數據庫文件新建完成后,并不會立刻寫入數據,而是等到有內存切換的情況,才進行寫入操作。

    同時,系統開辟兩個內存緩沖區memA和memB,用于臨時存儲從收集子系統到來的數據。為了使該子系統存儲和轉存能夠不停地進行,故生成兩塊內存區域:當memA存滿時,系統就會自動切換到memB繼續進行存儲,而memA就會進行數據轉存至本地數據文件的過程。對于單個點信息數據,系統采用結構體數組的形式進行存儲,數組的下標是根據當前時間值經過一定數學變化來確定的,部分代碼如下所示:

    pst=(tsmp/(m_isMsec ?1 :1000) )/m_secCount ;

    index=(tsmp/(m_isMsec?1:1000) ) %m_secCount ;

    該結構體數組就是位于當前內存塊的空間中,系統會設定數組的大小,當數組下標值達到設定值后,系統就會發送信號,觸發響應函數,自動切換到另一塊內存緩沖區中。

    (2)第二部分

    當存在一塊內存空間存滿后,系統會自動切換內存塊,并利用Qt的信號和槽機制對存滿的內存塊進行轉存至數據庫操作,對另一個內存塊會繼續進行數據收集操作。實現的部分代碼如下所示:

if(mem== memA)

{

        mem= memB;

}

else

    {

        mem= memB;

    }

    cleanCache(mem);

    m_pst.position = 0;

    m_pst.index = 0;

    對于當前進行數據轉存至數據庫操作的內存塊,因為其中存在模擬量和數字量數據,所以系統會進行轉存哈希表、區分數據和存入數據庫等處理,最后形成完整的數據文件,存在本地磁盤中。

    數據庫中存在兩種數據文件表:模擬量和數字量,對兩種數據分別進行存儲,利于后期對數據庫查詢操作。

4 結束語

    本文主要介紹關于歷史數據收集和存儲設計的思想、關鍵方法以及實現。編寫的數據收集和存儲系統在基于Windows和Linux操作平臺的實際運行中對國產PLC的數據采集和存儲操作都能正常穩定進行,性能指標都達到設計要求。

參考文獻

[1] 嵇月強.工業歷史數據庫的研究[D].杭州:浙江大學,2007.

[2] 徐國風.實時數據庫關鍵技術研究[D].西安:西安建筑科技大學,2006.

[3] 江勇,王文海,張龍旗.組態軟件中歷史數據存儲與查詢的一種新方法[J].江南大學學報(自然科學版),2005,4(6):579-583.

[4] 張云.組態軟件中的歷史數據處理過程[J].福建電腦,2010(9):81-82.

[5] 任寶強.監控組態軟件實時數據庫系統的設計與實現[D].保定:華北電力大學,2009.

[6] 張欣.嵌入式數據庫在嵌入式設備中的研究和應用[D].成都:電子科技大學,2012.

[7] 陳騫,劍強,汪鐳,等.關于OPC UA的歷史數據獲取[J].微型電腦應用,2010,26(2):35-37.

[8] 王凌峰,吳海鑫,陳彥彪,等.工控組態軟件中數據處理的設計和實現[J].微計算機信息,2000,16(2):33-35.

[9] 陳騫.基于工業實時數據的壓縮算法研究[J].科協論壇,2009(9):106-108.

[10] 金陳武.基于WoT的傳感器數據管理技術[D].北京:北京郵電大學,2014.



作者信息:

鐘洋洋,王毅璇,王  皓,傅一帆

(華北計算機系統工程研究所,北京100083)

此內容為AET網站原創,未經授權禁止轉載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
一区二区三区高清视频在线观看| 久久视频精品在线| 久久99在线观看| 亚洲天堂网在线观看| 99精品视频网| 99国产精品久久久久久久久久 | 亚洲一区二区视频在线| 99国产精品久久久久老师| 日韩视频在线观看一区二区| 亚洲精品影院在线观看| 亚洲欧洲一区| 亚洲精品一区在线观看香蕉| 日韩午夜激情av| 一区二区三区日韩在线观看| 亚洲午夜高清视频| 亚洲一区激情| 午夜视频久久久| 亚洲国产99| 亚洲精品老司机| 亚洲美女在线看| 亚洲一区二区影院| 欧美在线观看一区二区三区| 久久久欧美精品sm网站| 女生裸体视频一区二区三区| 欧美激情久久久久| 欧美色精品在线视频| 国产精品久久一卡二卡| 国产亚洲欧美在线| 伊人久久综合97精品| 亚洲三级免费电影| 亚洲视频网站在线观看| 欧美亚洲视频在线观看| 亚洲国产婷婷香蕉久久久久久| 亚洲精品一区二区三区婷婷月| 在线视频精品一| 欧美一区二区女人| 快播亚洲色图| 欧美日本国产一区| 国产麻豆精品theporn| 精品1区2区3区4区| 99视频有精品| 欧美亚洲一区二区三区| 亚洲国产日本| 亚洲毛片av| 欧美一区二区三区啪啪| 久久最新视频| 欧美色播在线播放| 国语自产精品视频在线看8查询8| 亚洲三级色网| 先锋影音网一区二区| 亚洲区第一页| 午夜精品影院| 男人的天堂成人在线| 国产精品激情av在线播放| 国产亚洲欧美另类中文| 亚洲日本欧美天堂| 香蕉乱码成人久久天堂爱免费 | 亚洲欧美成人一区二区三区| 亚洲国产一区二区三区高清| 亚洲图片欧洲图片av| 久久久五月天| 欧美午夜精品一区二区三区| 黄色日韩网站视频| 一区二区成人精品| 亚洲国产欧美一区二区三区同亚洲 | 一本大道久久精品懂色aⅴ| 欧美在线电影| 欧美日韩国产探花| 韩日欧美一区二区| 中文国产一区| 亚洲人成网站色ww在线| 欧美在线综合| 欧美三区在线观看| 亚洲国产另类久久精品| 午夜老司机精品| 亚洲影视综合| 欧美精品一区二区蜜臀亚洲 | 久久精品视频免费播放| 亚洲欧美日韩国产精品| 欧美www在线| 国产视频一区三区| 一区二区三区精密机械公司| 亚洲毛片网站| 开心色5月久久精品| 国产日韩精品一区观看 | 欧美一级久久久| 欧美理论在线| 在线观看欧美日本| 性色av香蕉一区二区| 亚洲自拍偷拍麻豆| 欧美日韩精品一区二区在线播放| 雨宫琴音一区二区在线| 亚欧成人在线| 欧美一二三区精品| 欧美日韩在线看| 亚洲欧洲日本在线| 亚洲日本中文字幕免费在线不卡| 久久免费视频这里只有精品| 国产乱肥老妇国产一区二| 亚洲色图在线视频| 亚洲网在线观看| 欧美日韩精品一区| 亚洲精品一级| 一区二区三区成人| 欧美日韩高清在线观看| 亚洲激情中文1区| 亚洲区中文字幕| 农夫在线精品视频免费观看| 一区二区视频免费在线观看| 久久精品免费| 久久亚洲私人国产精品va媚药 | 亚洲女人av| 先锋亚洲精品| 国产精品人成在线观看免费 | 亚洲国产另类久久久精品极度| 久久精品人人做人人爽电影蜜月| 欧美在线一区二区三区| 国产精品亚洲综合色区韩国| 亚洲一区二区三区三| 亚洲欧美成人一区二区在线电影 | 西瓜成人精品人成网站| 香蕉乱码成人久久天堂爱免费| 国产精品福利在线| 亚洲深夜福利网站| 亚洲免费网站| 国产日韩精品视频一区二区三区| 欧美亚洲三级| 久久亚洲春色中文字幕| 伊人精品成人久久综合软件| 亚洲国产精品热久久| 女同性一区二区三区人了人一| 在线成人h网| 99国产一区| 欧美视频在线观看免费| 亚洲小说区图片区| 欧美在线观看视频| 好吊视频一区二区三区四区| 亚洲人成人一区二区在线观看| 欧美精品亚洲| 亚洲天堂成人在线观看| 欧美自拍偷拍午夜视频| 黄色亚洲网站| 亚洲蜜桃精久久久久久久| 欧美另类69精品久久久久9999| 一本一本久久a久久精品综合麻豆| 亚洲尤物视频网| 国产一区二区三区在线观看免费视频 | 免费一区二区三区| 亚洲精品在线视频| 亚洲欧美视频在线观看| 国产在线欧美日韩| 亚洲久久一区| 国产精品久久久一本精品| 欧美亚洲免费在线| 欧美电影电视剧在线观看| 一区二区三欧美| 久久久精品一区| 亚洲伦伦在线| 欧美怡红院视频| 亚洲二区在线观看| 亚洲一区二区三区色| 狠狠入ady亚洲精品经典电影| 日韩一本二本av| 国产日产欧美一区| 亚洲啪啪91| 国产欧美日韩视频一区二区三区| 亚洲国产老妈| 国产精品久久久久一区| 亚洲激情成人在线| 国产精品黄页免费高清在线观看| 亚洲动漫精品| 国产精品久久久久久久电影| 亚洲国产精品一区在线观看不卡| 欧美日韩一二三区| 亚洲国产成人久久综合一区| 欧美视频免费| 亚洲欧洲一区二区在线播放| 国产精品久久二区| 亚洲精品视频在线| 国产午夜精品一区二区三区视频| 日韩视频在线永久播放| 国产一区二区在线免费观看| 制服丝袜亚洲播放| 在线观看视频一区二区| 亚洲欧美在线免费| 亚洲韩日在线| 久久久水蜜桃| 亚洲影视九九影院在线观看| 欧美电影免费观看高清| 性欧美超级视频| 国产精品夫妻自拍| 亚洲精品老司机| 国内精品免费在线观看| 亚洲欧美精品suv| 亚洲精品视频在线播放| 另类综合日韩欧美亚洲| 性欧美xxxx视频在线观看| 国产精品vvv| 一本一道久久综合狠狠老精东影业 | 夜夜爽夜夜爽精品视频|