李楊,鄧有緯
(南京南自科林系統(tǒng)工程有限公司,江蘇 南京 210032)
隨著人們安全生產(chǎn)意識的增強,國家對安全生產(chǎn)日益重視,現(xiàn)代化電廠在自動化生產(chǎn)過程中,對于事故根源確定、事故原因確認的要求也越來越急迫。iFIX組態(tài)軟件作為目前國內(nèi)常用的生產(chǎn)過程監(jiān)控軟件已在國內(nèi)大部分現(xiàn)代化電廠中使用。操作記錄作為可能與事故有關(guān)的重要信息,已被越來越多的自動化電廠所重視。為了在事故發(fā)生后準確地找出事故根源,清楚地判定是否由于誤操作或其他因素造成的事故,操作員操作記錄應(yīng)準確地記錄每臺操作員站發(fā)出的操作指令信息,操作指令信息應(yīng)包括指令發(fā)出時間、操作對象、操作指令及操作員等具體內(nèi)容。
iFIX組態(tài)軟件因集成了大量的向?qū)Ш蛯<?,使得用戶不需要進行任何編程就可自動完成多種功能。以往在實現(xiàn)操作記錄時,大家也充分利用了這些專家和向?qū)В趯崿F(xiàn)過程中大部分采用以下4種方法。
(1)在iFIX組態(tài)軟件中,啟用報警開放數(shù)據(jù)庫互聯(lián)ODBC(Open Database Connectivity),利用了報警記錄設(shè)備狀態(tài)的改變。該方法在實現(xiàn)的過程中會比較頻繁地打開、關(guān)閉數(shù)據(jù)庫,生產(chǎn)系統(tǒng)負荷會越來越大。
(2)在iFIX組態(tài)軟件中,啟用報警文件記錄,在每天生成的報警文件(.alm)中篩選操作記錄。該方法需將過程數(shù)據(jù)庫中的標簽名中文描述提前設(shè)置好,這樣,造成標簽名的中文描述與實際意義不完全相符。
(3)在動作的按鈕腳本中添加 SendOperatorMessage,然后在報警ODBC中進行查詢。該方法能比較真實地反映操作員的操作指令,但同樣需要頻繁地打開關(guān)閉數(shù)據(jù)庫,造成系統(tǒng)負荷越來越大。
(4)利用事件調(diào)度將操作記錄寫入數(shù)據(jù)庫中。該方法能比較真實地反映操作員的操作指令,但實現(xiàn)起來工作量大,而且會造成系統(tǒng)負荷增大。
在這些實現(xiàn)方法中,大部分都利用了iFIX組態(tài)軟件對消息事件進行了處理,而消息事件不僅包括操作記錄,還包括所有的報警信息,這就決定了操作記錄文件中不僅有操作員的操作記錄,還有所有的報警信息。另外,消息事件是基于過程數(shù)據(jù)庫中數(shù)據(jù)值的變化,而數(shù)據(jù)值的變化除了可由操作產(chǎn)生外,還可在設(shè)備聯(lián)鎖控制或設(shè)備自動控制時產(chǎn)生。因此,上述大部分實現(xiàn)方法都不能準確、真實地反映出操作員的操作狀況,而是記錄設(shè)備的運行情況。而事件調(diào)度雖然可以準確、真實地反映操作員的操作,但實現(xiàn)工作量大,在實際工程應(yīng)用中使用也比較少。
在iFIX組態(tài)軟件中,雖然有眾多的專家和向?qū)?,但對于操作記錄而言,iFIX組態(tài)軟件自身并未提供專家式或向?qū)焦ぞ?。在這種情況下,可通過自主編程來完成,自主編程在iFIX組態(tài)軟件中也顯得非常輕松,這主要得益于iFIX組態(tài)軟件在內(nèi)部集成了微軟(Microsoft)的VBA開發(fā)環(huán)境,它與微軟的操作系統(tǒng)的兼容性非常好。
通過iFIX組態(tài)軟件內(nèi)部集成的微軟VBA開發(fā)環(huán)境,開發(fā)一個自定義的操作記錄工具。該操作記錄工具應(yīng)該能夠有效地記錄操作員的每次操作指令信息。根據(jù)國內(nèi)現(xiàn)代化電廠的運行習慣,經(jīng)過需求分析可以得出,需要完成的操作記錄應(yīng)具有如下功能:
(1)確定操作記錄的存貯位置。作為現(xiàn)代化電廠的管理者,非常希望在事故發(fā)生后能夠方便、迅速地查詢操作記錄。在需要對事故進行詳細分析時可將最近的操作記錄導(dǎo)出并保存。因此,需要快速定位操作記錄并將所需的操作記錄置于統(tǒng)一位置,以便導(dǎo)出保存。
(2)確定操作記錄的存貯文件。當管理人員或事故分析人員需要查詢操作記錄時,可根據(jù)查詢規(guī)則快速地查詢所需要的記錄。一般來說,以時間順序來記錄操作員的操作指令信息符合人們的認知習慣,最好是將一定時間段內(nèi)的操作指令信息記錄在同一個文件中,以自然天為單位的時間段能夠方便地幫助管理人員或事故分析人員確定他們所需要的操作記錄。
(3)操作時間。操作時間是操作指令信息的重要組成部分,它指示了操作指令發(fā)出的具體時間,是事故分析時必不可少的重要因素,一般操作時間應(yīng)精確到秒。
(4)操作對象。操作對象是操作指令信息的重要組成部分,它指示了操作指令所針對的設(shè)備。對于生產(chǎn)系統(tǒng)中所有可程控操作設(shè)備被操作時都應(yīng)在操作記錄中生成相應(yīng)的記錄。
(5)操作指令。操作指令是操作指令信息的重要組成部分,它指示了操作員對設(shè)備發(fā)出的指令。對于生產(chǎn)系統(tǒng)中所有可程控操作設(shè)備的所有操作,都應(yīng)在操作記錄中生成相應(yīng)的記錄。
(6)操作員。操作員是操作指令信息的重要組成部分,它指示了發(fā)出操作指令的操作人,是操作設(shè)備的責任人。
根據(jù)上述功能描述,可以得出操作記錄應(yīng)是一個文件夾的結(jié)論,該文件夾包含了若干文件,每個文件都以時間順序記錄了當天時間段內(nèi)的某一時刻,某個設(shè)備被如何操作,操作人是誰。文件形成的內(nèi)容見表1。
表1 操作記錄(2012-03-01)
對于上述功能的實現(xiàn),在iFIX組態(tài)軟件中可以創(chuàng)建一個全局的VBA子程序,該VBA子程序可以被生產(chǎn)過程中的任一操作調(diào)用,調(diào)用完成后,自動生成相應(yīng)的操作信息記錄。在調(diào)用該VBA子程序時,首先應(yīng)檢查所需的存貯位置和存貯文件是否存在,存在則生成操作記錄。否則,應(yīng)先創(chuàng)建存貯空間和存貯文件。
在自動生成操作指令信息時,對于操作時間可以獲取生產(chǎn)系統(tǒng)當前的日期和時間;對于操作員則可以獲取生產(chǎn)系統(tǒng)當前登錄的用戶。
操作對象和操作指令可在iFIX組態(tài)軟件組態(tài)時,由組態(tài)人員根據(jù)設(shè)備和指令編寫在相應(yīng)的動作腳本下。當組態(tài)完成后,運行人員在生產(chǎn)系統(tǒng)上操作設(shè)備,則可自動生成如表1所示的操作記錄。
考慮到操作記錄主要是為了事故發(fā)生后準確地找出事故根源,清楚地判定是否由于誤操作或其他因素造成事故的發(fā)生。因此,對于操作記錄不需要保存很長的時間,這樣,也可大大地節(jié)約操作員站的存貯空間。對此可對操作記錄采用循環(huán)存貯的方式來實現(xiàn),亦即若需保存n天的操作記錄,則第n+1天的操作記錄覆蓋第1天的操作記錄。其操作記錄子程序OperateRecord具體實現(xiàn)過程如下:
操作記錄子程序作為一個自定義的全局子函數(shù),應(yīng)置于iFIX組態(tài)軟件VBA編輯器的Project_User中,這樣,可保證在iFIX組態(tài)軟件的任一位置都可調(diào)用。為了確保操作記錄的完整性,在畫面上的任何一次有效操作(包括有效地操作按鈕,修改數(shù)據(jù)等),都應(yīng)可通過操作記錄子程序OperateRecord的調(diào)用而自動地記錄到當天的文件中。
下面以某電廠輸煤程控系統(tǒng)中皮帶機的操作記錄實現(xiàn)來具體說明操作記錄子程序的調(diào)用。
皮帶操作畫面如圖1所示。從圖1中可以看出,對于#3B皮帶機的操作總共為12種指令,分別為啟動、停止、鳴警鈴、置聯(lián)鎖、解聯(lián)鎖、置自動、解自動、置檢修位、置工作位、解除撕裂保護、投入撕裂保護、解除打滑保護、投入打滑保護、解除重跑偏保護和投入重跑偏保護。
圖1 皮帶操作畫面
因此,在畫面上對于按鈕的每次有效點擊之后,在按鈕的點擊腳本下調(diào)用操作記錄子程序OperateRecord,將定義好的操作指令信息自動生成到相應(yīng)的文件中。由于iFIX組態(tài)軟件中采用了標簽組,即多個相同類型的設(shè)備可以使用同一控制畫面,當打開一個畫面或切換當前畫面時,系統(tǒng)可以讀取標簽組文件,并且使用其中所定義的過程值替代控制畫面中的標記。因此在operaterecord"程控手動啟動"&Text1.Caption ,user.UserName_SM.CurrentValue語句中并沒有出現(xiàn)設(shè)備名稱#3B皮帶機,而是在運行時由對應(yīng)設(shè)備的標簽組的內(nèi)容來替換Text1.Captionuser.UserName_SM.Current_Value則是生產(chǎn)系統(tǒng)當前的登錄用戶名。
下面分別以啟動按鈕和聯(lián)鎖按鈕的操作為例來說明操作記錄子程序的調(diào)用過程。程序4啟動按鈕腳本如下:
程序5聯(lián)鎖按鈕腳本如下:
在聯(lián)鎖按鈕腳本中,增加了對聯(lián)鎖按鈕內(nèi)容值的判斷,根據(jù)判斷可以自由地寫入操作指令是置聯(lián)鎖或是解聯(lián)鎖。
由于操作記錄寫入到了記事本文件中,在查詢時為了防止人員隨意修改已經(jīng)生成的操作記錄,同時也為了保證iFIX的安全性,可以在iFIX組態(tài)軟件中新建一個畫面,利用WebBrowser控件來調(diào)用用戶需求的操作記錄。其調(diào)用效果如圖2所示。
圖2 操作記錄
WebBrowser控件調(diào)用腳本如下:
對操作記錄的功能需求進行了分析,給出了操作記錄子程序、操作記錄子程序調(diào)用、操作記錄查詢的實例。通過在河南豐鶴電廠輸煤程控系統(tǒng)及廣東云浮電廠C廠輸煤程控系統(tǒng)的實際應(yīng)用,該操作記錄子程序能夠準確、詳實、完整地記錄每一用戶的任一操作信息。為事故發(fā)生后準確地找出了事故根源,清楚地判定是否由于誤操作或其他因素造成事故的而提供了有力的證據(jù)。
[1]沈大林.中文 Visual Basic 6.0案例教程[M].北京:人民郵電出版社,2005.
[2]劉炳文.Visual Basic程序設(shè)計教程[M].3版.北京:清華大學出版社,2006.
[3]胡靜,方彥軍.基于ODBC的iFIX工控組態(tài)軟件與關(guān)系數(shù)據(jù)庫通訊探討[J].微計算機信息,2003,19(2):19 -20.