《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 基于跨平臺的實時數(shù)據處理系統(tǒng)的設計
基于跨平臺的實時數(shù)據處理系統(tǒng)的設計
2017年電子技術應用第9期
徐一鳳,豐大軍,張瀚文,張 灣,趙德政
華北計算機系統(tǒng)工程研究所,北京100083
摘要: 設計實現(xiàn)了一款實時數(shù)據處理系統(tǒng),是SCADA(數(shù)據采集與監(jiān)視控制系統(tǒng))的數(shù)據核心。在基于國產軟硬件平臺的基礎上,采用跨平臺的架構設計,介紹了實時數(shù)據處理系統(tǒng)的功能及設計實現(xiàn)。該實時數(shù)據處理系統(tǒng)采用在共享內存中創(chuàng)建多個隊列的方式存放輸入和輸出的數(shù)據,既方便多個進程同時存取數(shù)據,又保證了數(shù)據處理的實時性。
中圖分類號: TP277
文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.179011
中文引用格式: 徐一鳳,豐大軍,張瀚文,等. 基于跨平臺的實時數(shù)據處理系統(tǒng)的設計[J].電子技術應用,2017,43(9):98-100,105.
英文引用格式: Xu Yifeng,F(xiàn)eng Dajun,Zhang Hanwen,et al. The design of the real-time data processing system based on multi-platform[J].Application of Electronic Technique,2017,43(9):98-100,105.
The design of the real-time data processing system based on multi-platform
Xu Yifeng,F(xiàn)eng Dajun,Zhang Hanwen,Zhang Wan,Zhao Dezheng
National Computer System Engineering Research Institute of China,Beijing 100083,China
Abstract: The real-time data processing system of this paper designed and implemented is the core of SCADA data. Under the background of localization for industrial control products, this paper introduces the function and the design of the real-time data processing system, which is based on domestic software and hardware platform and multi-platform architecture. In this paper, the method of creating multiple queue in the shared memory ensures that multiple processes can access data at the same time conveniently and the real-time of data processing.
Key words : multi-platform;supervisory control and data acquisition;real-time data processing

0 引言

    數(shù)據采集與監(jiān)視控制系統(tǒng)(SCADA)是以計算機為基礎的生產過程控制與調度自動化系統(tǒng),可以對現(xiàn)場的運行設備進行監(jiān)視和控制。雖然SCADA系統(tǒng)從上世紀70年代誕生之初到現(xiàn)在已經經歷了幾代的發(fā)展,其與計算機硬件與操作系統(tǒng)的關系始終比較密切。在Windows上開發(fā)的SCADA系統(tǒng)不能運行于UNIX和LINUX操作系統(tǒng)上,反之亦然。在工控安全日益嚴峻的今天,對能夠運行于國產計算機和國產操作系統(tǒng)的自主可控SCADA系統(tǒng)的需求迫在眉睫[1]。本文設計的實時數(shù)據處理系統(tǒng)是SCADA系統(tǒng)的核心,采用跨平臺的軟件架構設計:硬件采用國產飛騰處理器的服務器和臺式機(或筆記本),操作系統(tǒng)采用國產中標麒麟,開發(fā)工具采用可跨平臺的Qt,支持在國產中標麒麟和Windows操作系統(tǒng)上跨平臺運行。

1 整體結構

    數(shù)據采集與監(jiān)視控制系統(tǒng)按照數(shù)據處理流程可分為四個層次:數(shù)據采集、實時數(shù)據處理、數(shù)據通信、數(shù)據顯示[2],如圖1所示。

tx2-t1.gif

    數(shù)據采集子系統(tǒng)是SCADA系統(tǒng)與PLC控制器的接口部分,分為上行、下發(fā)兩個方向。上行方向通過實現(xiàn)PLC原始數(shù)據的獲取、協(xié)議解析,對現(xiàn)場測控設備的實時運行信息進行采集。下發(fā)方向通過實現(xiàn)協(xié)議封包和數(shù)據輸出,對現(xiàn)場測控設備進行調控。數(shù)據采集子系統(tǒng)作為SCADA系統(tǒng)的內部數(shù)據源,要求常年不間斷連續(xù)運行,必須具有高度的可靠性、穩(wěn)定性、擴展性和強大的數(shù)據采集能力。

    數(shù)據處理子系統(tǒng)負責對數(shù)據采集子系統(tǒng)采集的數(shù)據進行復雜的實時加工和處理,目的是將數(shù)據采集子系統(tǒng)的“生數(shù)據”加工成“熟數(shù)據”,即將采集的數(shù)據轉化為滿足上位機系統(tǒng)需要的、便于使用的數(shù)據結構,并且將數(shù)據存儲到實時數(shù)據表和歷史數(shù)據庫中。同時,上位機下發(fā)的控制指令也要經過數(shù)據處理子系統(tǒng)后才能下發(fā)至對應控制器,完成對測控設備的調控。數(shù)據處理子系統(tǒng)是SCADA系統(tǒng)的數(shù)據核心,同樣要求不間斷連續(xù)運行,必須具有高度的可靠性、實時性、魯棒性和強大的數(shù)據處理能力[3]。

    數(shù)據通信子系統(tǒng)根據系統(tǒng)配置信息,通過以太網完成系統(tǒng)中各個站點之間的狀態(tài)監(jiān)控、組態(tài)同步、進程控制、文件維護等工作,實時數(shù)據表的站間一致性和歷史數(shù)據訪問也需要借助數(shù)據通信子系統(tǒng)的數(shù)據傳輸功能。所有數(shù)據通信功能以API方式提供給各個上層應用調用,實現(xiàn)將底層的網絡功能和上層應用程序分離。

    數(shù)據顯示子系統(tǒng)通過圖形界面的方式將現(xiàn)場設備的運行信息展現(xiàn)給用戶。通過圖形組態(tài)工具提供的圖元可以組成系統(tǒng)圖、流程圖、工藝圖、監(jiān)控圖、趨勢圖、餅圖、棒圖、報表等各種形式,實現(xiàn)操作員和SCADA系統(tǒng)之間的友好交互。

2 功能及實現(xiàn)

2.1 功能結構

    實時數(shù)據處理子系統(tǒng)負責對進入數(shù)據站的各種數(shù)據進行統(tǒng)一管理,將統(tǒng)一處理后的數(shù)據寫入SCADA系統(tǒng)的各個數(shù)據隊列,供系統(tǒng)內部的對應模塊使用。它的工作方式是事件驅動周期保護方式,實現(xiàn)方式是將Qt提供的消息機制和定時器相結合。采用Qt的實現(xiàn)方式使系統(tǒng)能夠跨平臺運行。當收到PLC通信驅動模塊的通知消息,或收到通信管理模塊的通知消息,或到了保護周期還沒有被驅動時,實時數(shù)據處理子系統(tǒng)開始讀取接口隊列中的數(shù)據,處理各個狀態(tài)點的數(shù)值和狀態(tài),并將處理過的數(shù)據輸出到各個輸出內存中[4]。

    系統(tǒng)中的數(shù)據采用集中收集、全網同步的處理方法,保證系統(tǒng)內部各種數(shù)據收集時間一致性。在主歷史站上,實時數(shù)據處理子系統(tǒng)讀取各個數(shù)據隊列中的數(shù)據,根據組態(tài)信息,處理系統(tǒng)數(shù)據的報警信息和狀態(tài)變位信息,并將處理結果寫入報警數(shù)據緩存和數(shù)字量狀態(tài)變位緩存,同時將所有數(shù)據的數(shù)值和狀態(tài)寫入實時表,如圖2所示。在非主歷史站(從歷史站、操作員站)上,實時數(shù)據處理子系統(tǒng)只需要管理本機的實時數(shù)據表,如圖3所示。

tx2-t2.gif

tx2-t3.gif

    實時數(shù)據處理子系統(tǒng)的工作流程如圖4所示,數(shù)據采集子系統(tǒng)上傳的PLC數(shù)據經過數(shù)據處理模塊的處理后,分別產生報警和變位等數(shù)據狀態(tài),報警點被報警處理模塊處理后寫入報警隊列中,同時寫入全記錄隊列,變位點直接寫入全記錄隊列中。所有上傳的數(shù)據都要經過實時處理模塊,產生其對應的狀態(tài),并寫入實時數(shù)據表中。如果數(shù)據點的變化超過了歷史數(shù)據的死區(qū)設定,則寫入歷史數(shù)據隊列中。操作員的下發(fā)指令除了立即下發(fā)到指定控制器外,還要記錄到全記錄隊列中,同時進入實時數(shù)據處理,寫入實時數(shù)據表。

tx2-t4.gif

    其中時間戳處理模塊在校時子系統(tǒng)保證下,為待處理的數(shù)據批量打上時標。模擬量處理模塊具有工程量程轉換、線性/非線性變換、零漂修正算法、數(shù)值死區(qū)處理等功能,每個功能可以采用模塊化設計。數(shù)字量處理具備取反功能。操作員指令處理模塊包含人工置數(shù)、遙調、遙控、在線修改數(shù)據點屬性等功能。人工置數(shù)、遙調、遙控支持對批量指令的處理,例如群控、順控處理。數(shù)據通信子系統(tǒng)對實時數(shù)據進行站間的同步處理,使得歷史主站和從站及操作員站上的數(shù)據和時間都能保證一致,避免系統(tǒng)數(shù)據的重復處理,提高系統(tǒng)性能[5]。

2.2 實現(xiàn)方式

    實時數(shù)據處理子系統(tǒng)接收數(shù)據采集子系統(tǒng)采集數(shù)據的最快速率為50 ms,為了提高實時數(shù)據處理的速度,采用在共享內存中創(chuàng)建多個輸入與輸出隊列的方式。為了保證系統(tǒng)可以跨平臺運行,共享內存的實現(xiàn)采用Qt提供的QSharedMemory類。創(chuàng)建的隊列如下所示:

    (1)采集數(shù)據隊列

    數(shù)據采集子系統(tǒng)采集到的PLC控制器的數(shù)據寫入該隊列。

    (2)操作數(shù)據隊列

    SCADA的用戶操作和狀態(tài)的更新數(shù)據都寫入該隊列。

    (3)報警數(shù)據隊列

    實時數(shù)據處理模塊逐一處理接口隊列中報警點的報警信息,并將報警信息寫入報警數(shù)據隊列。寫入該隊列中的信息包括:報警發(fā)生信息、報警恢復信息、壞點報警。

    (4)全記錄隊列

    實時數(shù)據處理模塊在處理各個輸入接口隊列中的數(shù)據時,將需要記入全記錄中的信息寫入該隊列。

    (5)歷史數(shù)據隊列

    在歷史站主站上,實時數(shù)據處理模塊在處理采集接口隊列中的數(shù)據時,對于滿足收集條件的歷史點的數(shù)值和狀態(tài)寫入歷史數(shù)據隊列,該隊列將作為歷史數(shù)據收集模塊的輸入數(shù)據。歷史數(shù)據的收集條件為:①模擬量變化超過死區(qū);②數(shù)字量變化滿足定義條件;③數(shù)值未變,但狀態(tài)發(fā)生了變化(這里的狀態(tài)是指任何一個系統(tǒng)定義狀態(tài))。

    隊列的實現(xiàn)方式相同,均采用循環(huán)隊列的方式,每個隊列都存放一個共享內存中。隊列的結構如圖5所示。

tx2-t5.gif

    在對隊列的的操作過程中共有3種狀態(tài),分別為:空狀態(tài)、正常讀寫狀態(tài)和溢出狀態(tài),說明如下:

    (1)空狀態(tài):當隊列的讀指針等于寫指針時,則認為隊列為空。例如SCADA系統(tǒng)剛啟動時,沒有讀寫時隊列為空;或者SCADA系統(tǒng)運行時,數(shù)據處理速度快于寫入速度,導致隊列被讀空等情況,如圖6所示。

tx2-t6.gif

    (2)正常讀寫狀態(tài):讀指針追著寫指針,如圖7所示。

tx2-t7.gif

    (3)溢出狀態(tài):寫指針寫滿整個隊列,重頭開始寫,并追上了讀指針。

    當要寫入的新包的長度將要覆蓋未處理或處理中的數(shù)據包,則隊列寫入模塊將新來的數(shù)據包丟棄,對該丟棄事件做報警記錄,并在下一次符合寫入條件時寫入一個全點包。如果要寫入數(shù)據包的長度需要覆蓋多個隊列中的數(shù)據包,則這多個數(shù)據包中只要有一個處于處理狀態(tài),就屬于這種情況。如果此時數(shù)據處理啟動,則它連續(xù)處理未處理包,直到讀指針等于寫指針,如圖8所示。

tx2-t8.gif

3 結論

    本文設計實現(xiàn)的實時數(shù)據處理系統(tǒng)的工作原理采用Qt的消息機制,當接收到數(shù)據采集子系統(tǒng)發(fā)送的數(shù)據消息后,進行采集數(shù)據的處理,當收到操作員指令消息后,進行下發(fā)數(shù)據的處理。數(shù)據的處理采用在共享內存中創(chuàng)建多個隊列的方式,使多個進程能夠方便快速地對隊列中的數(shù)據進行讀寫。Qt的實現(xiàn)方式使系統(tǒng)可以跨平臺運行。

參考文獻

[1] 陳曦,周峰,郝鑫,等.我國SCADA系統(tǒng)發(fā)展現(xiàn)狀、挑戰(zhàn)與建議[J].工業(yè)技術創(chuàng)新,2015(1):103-114.

[2] 宋新航.SCADA系統(tǒng)設計和實現(xiàn)[D].天津:天津大學,2009.

[3] ABBOTT R,GARCIA-MOLINA H.Scheduling real-time transactions:A performance evaluation[J].ACM Transactions on Database Systems,1992,2(3):513-560.

[4] OZDEMIR E,KARACOR M.Mobile phone based SCADA for industrial automation[J].Isa Transactions,2006,45(1):67-75.

[5] 呂炳潮,楊揚,伍民友.實時信息的理論研究及應用[J].計算機工程與設計,2010,31(18):4012-4014,4043.



作者信息:

徐一鳳,豐大軍,張瀚文,張  灣,趙德政

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

此內容為AET網站原創(chuàng),未經授權禁止轉載。