陳 挺,毛 杰
(貴州電網(wǎng)有限責任公司遵義供電局,貴州 遵義 563000)
變電站監(jiān)控系統(tǒng)與主站之間傳遞的信息包括遙信、遙測、遙控及遙調(diào)。遙信包括開關(guān)刀閘位置信號、本體信號、控制回路信號、保護裝置的保護動作信號、公用信號及智能站有光纜的斷鏈信號等;遙測包括間隔電流、功率、母線電壓及頻率等;遙控包括開關(guān)刀閘的遠方遙控分合,遙調(diào)主要是主變的有載調(diào)壓,常歸到遙控中。在通道正常的情況下,這些信息的準確無誤傳遞依賴于完全正確的四遙點表,如果點表錯誤,將會造成信息錯誤,甚至誤控的風險。點表存在于遠動裝置和主站,具有相同的點號和數(shù)據(jù)描述,點表在調(diào)度自動化系統(tǒng)中充當了字典的角色,是信息正確出傳遞的保障。
在實際工作中,隨著變電站的升級改造、新間隔的投運等變化,監(jiān)控裝置的點表也是變化的。點表修改流程為先修改遠動裝置點表并下裝到裝置,然后修改主站中對應變電站的點表。修改應保證遠動裝置點表和主站點表的點號和數(shù)據(jù)描述對應關(guān)系完全正確。通常情況下,一般是由人工根據(jù)實際變化的記憶進行修改,或者逐行比對并進行修改,當實際變化較大時,這種人工的修改行為將會耗費大量的時間精力,人員疲憊至極,嚴重影響工作人員身體健康的同時也給電網(wǎng)運行帶來很大的安全及質(zhì)量隱患。
在修改前,如果能夠知道點表變化前和變化后的差別并進行標記,將有效降低修改的勞動強度,顯著提高修改的正確性。點表的變化主要有3種情況:
(1)添加新點;
(2)刪除原有點;
(3)修改原有點。
從修改流程可見,最后下裝到遠動裝置的點表即為變化后的點表,主站的修改前點表則是變化前的點表,這兩張表都可以借助相關(guān)軟件進行導出。
顯然,對點表進行比對并進行標記是一項繁瑣的工作,依托目前廣泛采用的編程技術(shù)編寫一個點表比對程序來完成這一工作自然成為一個解決問題的手段。
面向?qū)ο笫侵敢环N程序設(shè)計范型,同時也是一種程序開發(fā)的方法,是對現(xiàn)實世界理解和抽象的方法,是計算機編程技術(shù)發(fā)展到一定階段后的產(chǎn)物。早期,計算機被運用于簡單問題的求解,只要設(shè)計出求解流程,便能解決問題,這一程序設(shè)計方法稱之為面向過程的方法,是一種以“過程”為中心的思想。隨著計算機技術(shù)的不斷發(fā)展,計算機被用于解決越來越復雜的問題,便產(chǎn)生了以“事物”為中心的面向?qū)ο蟮姆椒?。面向?qū)ο蟮姆椒▽⒁磺惺挛锞暈閷ο螅寄軌蚪邮軘?shù)據(jù)、處理數(shù)據(jù)并將數(shù)據(jù)傳達給其他對象,是程序的基本單元。面向?qū)ο蟪绦虻目刂屏鞒逃蛇\行時各種事件的實際發(fā)生來觸發(fā),而不再由預定順序來決定,更符合實際。
通過面向?qū)ο蟮姆绞剑瑢F(xiàn)實世界的事物抽象成對象,將現(xiàn)實世界中的關(guān)系抽象成類、繼承,幫助人們實現(xiàn)對現(xiàn)實世界的抽象與數(shù)字建模,更利于用人理解的方式對復雜系統(tǒng)進行分析、設(shè)計與編程。面向過程的編程語言包括C、Pascal及Fortran等,面向?qū)ο蟮木幊陶Z言則包含Java、C++及C#等。
C#是微軟于2000年6月發(fā)布的一種面向?qū)ο蟮木幊陶Z言,主要由安德斯·海爾斯伯格主持開發(fā),它是第一個面向組件(COM)的編程語言,運行于.NET Framework上。C#由C和C++衍生而來,在繼承C和C++強大功能的同時去掉了一些復雜特性,還綜合了VB簡單的可視化操作和C++的高運行效率。
C#所開發(fā)的程序源代碼并不是編譯成能夠直接在操作系統(tǒng)上執(zhí)行的二進制本地代碼,而是被編譯成為中間代碼,然后通過.NET Framework的虛擬機(通用語言運行庫CLR)執(zhí)行,類似于java語言的JVM虛擬機。所有用C#編寫的源代碼都被編譯成中間代碼,因此雖然最終的程序在表面上仍然與傳統(tǒng)意義上的可執(zhí)行文件都具有“.exe”的后綴名,實際上,如果計算機上沒有安裝.Net Framework,那么這些程序?qū)⒉荒軌虮粓?zhí)行。在程序執(zhí)行時,.Net Framework將中間代碼翻譯成為二進制機器碼,從而使它得到正確的運行。
針對引言中描述的需求,需要編寫一個Windows桌面應用軟件。通過相關(guān)技術(shù)的介紹可知,Windows Forms應用程序開發(fā)接口能夠滿足需求,該接口能夠快捷有效地開發(fā)出一些功能相對簡單的應用程序。結(jié)合變電站點表比對的實際應用場景,可知輸入是有固定格式的文本文檔,因此希望輸出的是一個標記了新增、刪除及更改等屬性的表格文檔,其功能如圖1所示。
圖1 程序功能圖示
由圖1可知,該應用程序的設(shè)計需要涉及到文件的讀寫和創(chuàng)建,在讀取階段借助C#語言的Stream Reader類,創(chuàng)建并讀寫excel輸出文檔時,使用office的COM組件進行控制。對于輸入的文本文檔,其格式如圖2所示,可提取點號(轉(zhuǎn)發(fā)序號)及數(shù)據(jù)描述作為有效輸入,中間的兩列對于主站來說沒有意義,故不做比較。
圖2 輸入文件的數(shù)據(jù)格式
對于輸出的excel文檔,用紅色標記改動的點,綠色標記刪除的點,藍色標記為新加的點;為了便于主站維護人員修改主站點表,輸出時,將點號按增序排列。
實現(xiàn)點表比對的原理是:建立兩個字符串數(shù)組A和B分別用于存儲改動前點表和改動后點表,點表的點號是非負唯一的整數(shù),這一特性使得點號能被用于作為A、B字符串數(shù)組的索引;將兩張點表都讀入之后,按照點號進行索引將數(shù)據(jù)描述進行存儲;然后逐個比對兩個A、B數(shù)組中的所有元素(數(shù)據(jù)描述),根據(jù)每個元素的情況進行標記輸出。程序流程如圖3所示。
在程序運行的過程中,為了便于實時了解比對進度,程序會在相應區(qū)域顯示比對結(jié)果,如圖4所示。
測試階段,將對廠站點表分別進行刪除、新增及改動等操作,為了測試程序的魯棒性,還將點號順序進行了調(diào)整,測試輸入的改動如下:
(1)改動點號為 5、16、24、51、72、112、135;
(2)刪除點號為12~15;
(3)新加的點為174~198;
(4)點號順序調(diào)整的點為8?9、12?13、87?69。
圖3 程序流程圖
圖4 程序運行時界面
運行程序之后,導出了輸出excel文件,查驗該文檔,發(fā)現(xiàn)軟件已經(jīng)正確地標記出了上述改動,且輸出的點號是按增序排列的,便于人員對照主站點表進行修改。可見,該軟件實現(xiàn)了最初的功能設(shè)定。
軟件編寫完成后,還將該軟件運用于9月底海龍變電站2號主變驗收過程中,檢驗了軟件的實際應用效果。
本文介紹了點表比對在實際工作中的重要性,指出了常規(guī)做法的弊端。為了解決這些弊端,可將面向?qū)ο蟮木幊碳夹g(shù)應用于實踐,開發(fā)了基于C#的點表比對助手軟件并測試驗證了軟件的實用性,降低了人工比對、修改點表的勞動強度,提高了點表修改的正確率,一定程度上保障了變電站和主站間信息的正確傳遞,對于提高生產(chǎn)效率有一定積極意義。