文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.189011
中文引用格式: 徐一鳳,,豐大軍,王皓,,等. 基于麒麟系統(tǒng)的SCADA狀態(tài)診斷系統(tǒng)的設計與實現[J].電子技術應用,,2018,44(5):134-136,,143.
英文引用格式: Xu Yifeng,,Feng Dajun,Wang Hao,,et al. The design and implementation of SCADA state diagnosis system on Kylin system[J]. Application of Electronic Technique,,2018,44(5):134-136,,143.
0 引言
現有的數據采集與監(jiān)視控制(SCADA)系統(tǒng)大多運行在Windows平臺上,,缺少國產化方面的考慮[1],。本文介紹的SCADA系統(tǒng)開發(fā)及運行環(huán)境實現了全國產化。作為工業(yè)級數據采集與監(jiān)視控制軟件,,對于系統(tǒng)的穩(wěn)定性和可靠性要求較高,。因此SCADA系統(tǒng)中需要有狀態(tài)診斷子系統(tǒng),,并且系統(tǒng)中的關鍵組件——服務器,必須實現冗余配置,,當主服務器發(fā)生故障時,,能夠及時診斷故障并切換到后備服務器,且切換過程中不能造成擾動,。由于狀態(tài)診斷系統(tǒng)與操作系統(tǒng)關系較為密切,,不同操作系統(tǒng)下的實現可能大不相同,,本文設計與實現了自主研發(fā)的基于國產麒麟操作系統(tǒng)的狀態(tài)診斷系統(tǒng),。
1 整體結構
數據采集與監(jiān)視控制系統(tǒng)采用跨平臺的軟件架構設計:硬件采用國產飛騰處理器的服務器和臺式機(或筆記本),操作系統(tǒng)采用國產中標麒麟,,開發(fā)工具采用可跨平臺的Qt,,支持在國產中標麒麟和Windows操作系統(tǒng)上跨平臺運行。系統(tǒng)整體結構如圖1所示,。
數據采集與監(jiān)視控制系統(tǒng)采用客戶端/服務器體系結構,,正常情況下歷史站即為系統(tǒng)的服務器,如果用戶有高可靠性要求,,會配置冗余歷史站,,歷史站負責與下位機進行數據交互,并記錄歷史數據,??蛻舳思锤鱾€操作員站,操作員站的數據從歷史站獲取,,且網絡僅傳輸每秒中發(fā)生變化的變更數據集,。操作員站用于人機交互,用文字,、動畫顯示現場的狀態(tài),,并可以對現場的開關、閥門進行操作,。根據用戶需要,,可以配置對外通信功能,通過網絡單向發(fā)布管理層用戶關心的數據和狀態(tài)[2],。
2 功能及實現
數據采集與監(jiān)視控制系統(tǒng)從功能上分為離線功能和在線功能:離線包括工程組態(tài),、離線查詢等,在線包括數據通信,、服務處理,、數據處理、畫面監(jiān)視等[3],。操作員站和歷史站的功能有所區(qū)別,,操作員站主要包括畫面監(jiān)視,、數據下發(fā)、打印等與用戶的圖形接口,,歷史站除包含操作員站的所有功能外,,還包含數據通信、服務處理,、數據處理等后臺任務,。狀態(tài)診斷是操作員站和歷史站都具有的后臺服務子系統(tǒng)。軟件結構如圖2所示,。
歷史站包含所有功能的設計優(yōu)點在于,,對于很小的項目,,可以只配置一臺歷史站,或者配置兩臺互為冗余的歷史站,,這樣可以有效降低成本。
2.1 狀態(tài)診斷子系統(tǒng)基本功能
(1)初始確定歷史站的主從機狀態(tài):先啟動的為主機,;同時啟動時,,A歷史站為主機,。
(2)周期自診斷:周期診斷本機各子任務的狀態(tài)及系統(tǒng)資源狀態(tài)。
(3)周期互診斷:實現主從機之間的心跳監(jiān)測,,通過周期性互發(fā)心跳值的方式實現。主機收不到從機的心跳信號時仍正常運行,,從機收不到主機的心跳信號則切換為主機。
(4)判斷數據站的狀態(tài):
①在線:任務管理,、數據通信、服務器狀態(tài)診斷,、校時、數據處理,、歷史數據收集,、數據采集,、報警、全記錄等,,全部正常運行。
②離線:除數據通信模塊,,需要在線的任務都沒有運行。
③故障:在線時需要在線的任務存在不正常運行的[4],。
2.2 自診斷方式
各子任務的狀態(tài)通過周期檢測心跳值的方式檢測。對于心跳超時的子任務,,可以根據任務配置,,對出錯的任務作不關閉不重啟,、關閉不重啟,、關閉并重啟等處理,如果出錯的子任務仍然不能正常運行,,從機只報故障,主機需要切換為從機,。
中標麒麟系統(tǒng)可以通過兩種方式獲取系統(tǒng)資源狀態(tài):
(1)讀取系統(tǒng)文件,例如可以通過讀取carrier文件,,獲取網絡狀態(tài),部分示例代碼參見函數void getNetState(),。
(2)調用shell命令,解析命令的返回值,,例如可以通過解析df命令的執(zhí)行結果,,獲取硬盤使用率,,部分示例代碼參見函數void getHardDiskOccupy(),。
針對大部分冗余歷史站容易出現的雙主問題,,本文制作了詳細的冗余切換表,,通過測試證明,可以避免雙主的出現,。部分冗余切換如表1所示。
為了保證系統(tǒng)穩(wěn)定可靠地運行,,SCADA的狀態(tài)診斷系統(tǒng)需要確定系統(tǒng)當前狀態(tài),并判斷何時滿足狀態(tài)切換的條件,。本文設計并實現的狀態(tài)診斷系統(tǒng)按照圖3所示狀態(tài)圖進行狀態(tài)判斷和切換[5]。
狀態(tài)診斷系統(tǒng)在工程運行前需要先檢測工程配置是否正確,,如果配置錯誤(如未配置歷史站、PC名字配置錯誤),,則提示錯誤,并結束工程,;如果配置正確,則啟動各子任務,,并運行工程,。
運行工程后進入在線狀態(tài),,檢測本機配置,如果配置為操作員站,,則不存在主從機的區(qū)別,以操作員站的狀態(tài)運行,,直到退出在線或退出工程;如果配置為歷史站,,則需要判斷主從狀態(tài),根據有故障不搶主、A機優(yōu)先的原則確定主從機狀態(tài),。
為了減少切換次數,主機無故障會一直保持主機狀態(tài),,從機周期檢測主機的狀態(tài),如果主機降從或退出,,則從機自檢無故障可以升主,。
主機和從機均可以退出在線或退出工程,。
3 實驗結果
實驗條件:歷史站A,、歷史站B均正常運行。實驗操作及實驗結果如表2所示,。
4 結論
實驗結果證明,本系統(tǒng)能夠按照預期的結果在國產麒麟系統(tǒng)上穩(wěn)定運行,。通過對任務的監(jiān)視、強制關閉與重啟任務,,能夠對出錯的子任務及時進行處理,,保證各子任務的正常運行;通過服務器冗余配置,,可以保證主歷史站出故障能夠迅速切換到從歷史站,使得從歷史站出故障時不影響主歷史站的正常運行,。
參考文獻
[1] 納學禮.SCADA系統(tǒng)的發(fā)展及應用[J].中小企業(yè)管理與科技(上旬刊),,2010(10):286-287.
[2] 王常力,,羅安.分布式控制系統(tǒng)設計與應用實例[M].北京:電子工業(yè)出版社,,2004.
[3] 馬旭東,陳永清,陳琛.基于PLC/SCADA結構的計算機綜合控制系統(tǒng)[J].工業(yè)儀表與自動化裝置,,2002(5):35-37.
[4] KRISHNA C M,SHIN K G.Real-time system[M].McGraw-Hill,,2001.
[5] Qiu Bin,GOOI H B,,Liu Yulu,et al.Internet-based SCADA display system[J].Computer Applications in Power.IEEE,,2002,,15(1):14-19.
作者信息:
徐一鳳,,豐大軍,,王 皓,陳俊凱,,范曉東
(華北計算機系統(tǒng)工程研究所,北京100083)