胡東林,馬潤(rùn)松,張中仁,王 娟
(云南電網(wǎng)有限責(zé)任公司昆明供電局,云南 昆明650011)
調(diào)控一體化實(shí)施后,調(diào)控中心收到的遙信量顯著增加,監(jiān)視人員面臨的壓力隨之增大。正常情況下,遙信抑制能夠減少大量無(wú)關(guān)信號(hào)的上送,確保監(jiān)盤(pán)質(zhì)量。同時(shí)會(huì)在檢修工作完工等滿足條件要求后,恢復(fù)遙信抑制使遙信正常發(fā)出;但若未及時(shí)恢復(fù),將會(huì)導(dǎo)致漏監(jiān)信號(hào)以至于造成設(shè)備故障,影響電網(wǎng)的安全穩(wěn)定運(yùn)行。
目前防止遙信抑制未及時(shí)恢復(fù)的途徑主要為:途徑一,通過(guò)監(jiān)盤(pán)系統(tǒng)本身具有的遙信抑制查詢功能查看遙信抑制的情況[1-2];途徑二,通過(guò)管理手段開(kāi)展,即在遙信抑制時(shí)進(jìn)行相關(guān)記錄,遙信恢復(fù)后對(duì)記錄閉環(huán),按值移交。通過(guò)途徑一查詢?nèi)Q于系統(tǒng)開(kāi)發(fā)時(shí)的功能完善情況,由于系統(tǒng)本身原因,處于遙信抑制查看界面時(shí),監(jiān)視系統(tǒng)反應(yīng)變慢,界面可能會(huì)非正常關(guān)閉。通過(guò)途徑二能從本質(zhì)上杜絕遙信抑制后未及時(shí)恢復(fù)的情況,具體情況要看執(zhí)行的剛性,但管理人員依然無(wú)法就遙信抑制及恢復(fù)情況進(jìn)行抽查,缺乏分析評(píng)估的依據(jù)。
現(xiàn)研究一種基于Python 的遙信抑制分析系統(tǒng),系統(tǒng)采用Python 語(yǔ)言進(jìn)行程序編寫(xiě),使用PyQt5 庫(kù)進(jìn)行系統(tǒng)界面開(kāi)發(fā),首先通過(guò)cx_Oracle 庫(kù),連接OP_YX、OP_BAY 數(shù)據(jù)表并讀取數(shù)據(jù);其次尋找被抑制的廠站、間隔、遙信信號(hào),通過(guò)三者之間的邏輯關(guān)系處理,從而判斷該廠站、間隔、遙信是否被抑制;然后將相應(yīng)的數(shù)據(jù)內(nèi)容通過(guò)界面展示或文檔下載兩種方式進(jìn)行導(dǎo)出,供使用者查詢分析,最終通過(guò)PyInstaller 庫(kù)打包為可執(zhí)行文件,以便該系統(tǒng)能夠快速?gòu)?fù)制到其他電腦操作使用。系統(tǒng)總體設(shè)計(jì)如圖1所示。
圖1 系統(tǒng)設(shè)計(jì)圖
本系統(tǒng)程序開(kāi)發(fā)時(shí)采用的cx_Oracle、PyQt5、PyInstaller庫(kù)均為Python語(yǔ)言的第三方庫(kù),在開(kāi)發(fā)時(shí)需要單獨(dú)安裝。采用cx_Oracle庫(kù)訪問(wèn)Oracle數(shù)據(jù)庫(kù)API 來(lái)實(shí)現(xiàn)數(shù)據(jù)的查詢工作;使用PyQt5庫(kù)[3],能夠?qū)⒋a指令以人機(jī)交互界面的方式呈現(xiàn),使用者點(diǎn)擊軟件按鈕即可開(kāi)始查詢,降低了使用門(mén)檻;同時(shí)為了方便使用;通過(guò)openpyxl 庫(kù)將查詢得到的文本導(dǎo)出為Excel文檔格式,且支持一鍵導(dǎo)出;為了保證在其他電腦上進(jìn)行使用時(shí)不需要再安裝Python 及其相關(guān)的第三方庫(kù),采用PyInstaller 庫(kù)將Python 編寫(xiě)后的程序進(jìn)行封裝,打包生成綠色安裝包或者單個(gè)可執(zhí)行文件,方便將系統(tǒng)安裝到其他辦公電腦進(jìn)行操作。
當(dāng)前調(diào)控一體化系統(tǒng)采用OPEN3000 系統(tǒng),相關(guān)四遙量信息均實(shí)時(shí)存儲(chǔ)于電力自動(dòng)化系統(tǒng)二次系統(tǒng)安全Ⅰ區(qū)中,且根據(jù)調(diào)控要求會(huì)定時(shí)下發(fā)至安全Ⅲ區(qū)。為確保操作及數(shù)據(jù)安全,只能從安全Ⅲ區(qū)讀取數(shù)據(jù),通過(guò)識(shí)別,遙信抑制與恢復(fù)、廠站抑制與恢復(fù)、遙信封鎖與解除操作相關(guān)數(shù)據(jù)存儲(chǔ)在OP_YX數(shù)據(jù)表中,間隔抑制與恢復(fù)操作相關(guān)數(shù)據(jù)存儲(chǔ)在OP_BAY數(shù)據(jù)表中。
如表1 所示,OP_YX 中存儲(chǔ)著大量的其他無(wú)關(guān)信號(hào),故通過(guò)數(shù)據(jù)表中STATUS 列屬性剔除無(wú)效數(shù)據(jù)(遙信確認(rèn)、光字牌確認(rèn)、信息不全),只保留有效數(shù)據(jù)進(jìn)行讀取,提升系統(tǒng)運(yùn)行速度。
表1 2020年08月OP_YX數(shù)據(jù)量分析表
如表2 所示,OP_BAY 中數(shù)據(jù)量相對(duì)較少,只涉及到間隔的抑制與恢復(fù)、掛牌與摘牌,同樣通過(guò)數(shù)據(jù)表中STATUS 列屬性剔除無(wú)效數(shù)據(jù)(掛牌、摘牌),只保留有效數(shù)據(jù)進(jìn)行讀取。
表2 2020年08月OP_BAY數(shù)據(jù)量分析表
為了能方便地從Oracle數(shù)據(jù)庫(kù)中讀取相關(guān)數(shù)據(jù),在安裝好Oracle 用戶端以及cx_Oracle 庫(kù),設(shè)置好cx_Oracle.makedsn、cx_Oracle.connect條件后,系統(tǒng)通過(guò)Python 調(diào)用cx_Oracle 函數(shù),cx_Oracle 動(dòng)態(tài)加載Oracle用戶端來(lái)讀取數(shù)據(jù)庫(kù)。
在OP_YX 數(shù)據(jù)表中,遙信封鎖分、遙信封鎖合、解除封鎖信號(hào)分別對(duì)應(yīng)STATUS 列值1、2、3,遙信置數(shù)分、遙信置數(shù)合信號(hào)分別對(duì)應(yīng)STATUS 列值4、5,告警抑制、告警恢復(fù)信號(hào)均對(duì)應(yīng)STAUS列值7,廠站告警抑制、廠站告警恢復(fù)信號(hào)分別對(duì)應(yīng)STATUS 列值19、20。在OP_BAY 數(shù)據(jù)表中,間隔告警抑制、間隔告警恢復(fù)信號(hào)分別對(duì)應(yīng)STATUS 列值1、2。由于遙信置數(shù)分、合信號(hào)只會(huì)暫時(shí)將遙測(cè)用某個(gè)值代替,實(shí)際數(shù)據(jù)更新后自動(dòng)解封并恢復(fù),所以不在遙信抑制查找之列。
就信號(hào)本身而言,若要信號(hào)恢復(fù)正常,遙信封鎖分、合信號(hào)后,須有解除封鎖信號(hào),告警抑制信號(hào)后須有告警恢復(fù)信號(hào),間隔告警抑制信號(hào)須有間隔告警恢復(fù)信號(hào),廠站告警抑制信號(hào)后須有廠站告警恢復(fù)鎖信號(hào)。遙信抑制方面,單條遙信告警抑制、間隔告警抑制、廠站遙信封鎖之間也存在從屬關(guān)系,若廠站告警抑制,則其包含的所有間隔、遙信均無(wú)法發(fā)出信號(hào),若間隔遙信抑制,則其包含的所有遙信無(wú)法發(fā)出信號(hào);遙信恢復(fù)方面,間隔告警恢復(fù)與單條遙信恢復(fù)存在一定控制關(guān)系,如間隔恢復(fù)時(shí)間晚于間隔中遙信抑制時(shí)間,則遙信將一起恢復(fù),但不會(huì)有遙信恢復(fù)操作的信號(hào);如間隔恢復(fù)時(shí)間早于間隔中遙信抑制時(shí)間,則遙信仍將處于抑制狀態(tài);由于在OPEN3000 系統(tǒng)中,廠站告警恢復(fù)與間隔恢復(fù)、遙信恢復(fù)屬于不同的域,故無(wú)相關(guān)的控制關(guān)系。
首先用distinct 函數(shù)從Oracle 數(shù)據(jù)庫(kù)中取出去重后的列表,即從OP_BAY、OP_YX 中分別取出以BAY_ID、 YX_ID 為 關(guān) 鍵 字 的 列 表bay_id_list、yx_id_list;其次從兩個(gè)數(shù)據(jù)表中分別導(dǎo)出間隔操作記錄bay_rec、遙信操作記錄yx_rec,并按時(shí)間從近到遠(yuǎn)的順序排列,然后建立op_bay_list、op_yx_list,以分別代表間隔、遙信處于抑制狀態(tài)的清單,初始狀態(tài)為空列表,最后開(kāi)始開(kāi)關(guān)間隔恢復(fù)與遙信告警恢復(fù)的邏輯關(guān)系,用來(lái)判斷遙信和間隔是否處于抑制狀態(tài)。
在判斷完某個(gè)遙信處于抑制狀態(tài)后,還需要判斷之后的時(shí)間段內(nèi)其所屬間隔是否有間隔告警恢復(fù)的操作,若有則應(yīng)將此遙信抑制從op_yx_list列表中刪除。
通過(guò)上述邏輯處理,最終得到的op_yx_list 與op_bay_list 即為符合實(shí)際情況的遙信抑制信號(hào)與間隔抑制信號(hào)列表。
為方便管理人員或監(jiān)視人員等使用者進(jìn)行數(shù)據(jù)的追溯、分析等操作,分析系統(tǒng)提供了文檔導(dǎo)出功能,Python處理Excel的第三方庫(kù)主要有xlwt、xlrd、openpyxl等,xlwt庫(kù)支持對(duì)xls等Excel文件的寫(xiě)入,xlrd庫(kù)支持對(duì)xls等Excel文件的讀取,openpyxl庫(kù)支持對(duì)xlsm、xlsx 等Excel 文件的讀寫(xiě)。系統(tǒng)采用openpyxl 庫(kù),通過(guò)建立Workbook,對(duì)Excel 進(jìn)行數(shù)據(jù)寫(xiě)入操作。反映在系統(tǒng)界面中,用戶通過(guò)點(diǎn)擊“直接生成文檔”按鈕,可將查詢數(shù)據(jù)直接導(dǎo)出為Excel文檔。
軟件系統(tǒng)運(yùn)行所需的系統(tǒng)配置:Windows7(32/64 位)或Windows10,電腦需安裝Oralce Database Client,以保證驅(qū)動(dòng)正確安裝,軟件能夠正確調(diào)用用戶端并連接數(shù)據(jù)庫(kù)讀取數(shù)據(jù)。
系統(tǒng)主要包含2種抑制查詢功能,主界面如圖2所示。
“當(dāng)前抑制查詢”功能,此種方式下,只展示查詢時(shí)間段內(nèi),哪些遙信、間隔、廠站處于告警抑制或封鎖狀態(tài),以及相關(guān)的匯總情況,便于監(jiān)視人員快速查看當(dāng)前信息,判斷是否有誤抑制的信號(hào)并采取措施。
“恢復(fù)與抑制查詢”功能,此種方式下,會(huì)展示查詢時(shí)間段內(nèi),遙信、間隔、廠站告警抑制與恢復(fù)情況、遙信封鎖與解封情況,便于管理人員或監(jiān)視人員進(jìn)行追溯、統(tǒng)計(jì)或分析。
圖2 主界面圖
系統(tǒng)支持直接導(dǎo)出到文檔,選好查詢內(nèi)容后,點(diǎn)擊主界面上“直接生成文檔”按鈕,將直接生成Excel 文檔到本地,其內(nèi)容與界面展示內(nèi)容完全一致,便于根據(jù)分析情況開(kāi)展下一步的風(fēng)險(xiǎn)管控工作。
通過(guò)該系統(tǒng),一是提供了當(dāng)前處于抑制狀態(tài)的遙信,提醒監(jiān)視人員及時(shí)進(jìn)行告警抑制的恢復(fù)操作,防止信號(hào)無(wú)法上傳導(dǎo)致的信號(hào)漏監(jiān)視;二是實(shí)現(xiàn)了遙信抑制與恢復(fù)操作的詳情展示,提供了遙信抑制的追溯功能;三是辦公區(qū)電腦操作,解決了占用生產(chǎn)區(qū)監(jiān)控資源導(dǎo)致系統(tǒng)緩慢或非正常關(guān)閉的問(wèn)題。
遙信抑制是調(diào)控工作中的一個(gè)正常環(huán)節(jié),但如果沒(méi)有及時(shí)恢復(fù)抑制或未發(fā)現(xiàn)哪些遙信處于抑制狀態(tài),則可能導(dǎo)致嚴(yán)重的電網(wǎng)或設(shè)備問(wèn)題,該遙信抑制分析系統(tǒng)應(yīng)用于調(diào)控中心監(jiān)視人員或管理人員,可防止誤抑制遙信,有效降低遙信漏發(fā)導(dǎo)致漏監(jiān)視從而引發(fā)的安全風(fēng)險(xiǎn)。