陳 挺,毛 杰
(貴州電網有限責任公司遵義供電局,貴州 遵義 563000)
變電站監控系統與主站之間傳遞的信息包括遙信、遙測、遙控及遙調。遙信包括開關刀閘位置信號、本體信號、控制回路信號、保護裝置的保護動作信號、公用信號及智能站有光纜的斷鏈信號等;遙測包括間隔電流、功率、母線電壓及頻率等;遙控包括開關刀閘的遠方遙控分合,遙調主要是主變的有載調壓,常歸到遙控中。在通道正常的情況下,這些信息的準確無誤傳遞依賴于完全正確的四遙點表,如果點表錯誤,將會造成信息錯誤,甚至誤控的風險。點表存在于遠動裝置和主站,具有相同的點號和數據描述,點表在調度自動化系統中充當了字典的角色,是信息正確出傳遞的保障。
在實際工作中,隨著變電站的升級改造、新間隔的投運等變化,監控裝置的點表也是變化的。點表修改流程為先修改遠動裝置點表并下裝到裝置,然后修改主站中對應變電站的點表。修改應保證遠動裝置點表和主站點表的點號和數據描述對應關系完全正確。通常情況下,一般是由人工根據實際變化的記憶進行修改,或者逐行比對并進行修改,當實際變化較大時,這種人工的修改行為將會耗費大量的時間精力,人員疲憊至極,嚴重影響工作人員身體健康的同時也給電網運行帶來很大的安全及質量隱患。
在修改前,如果能夠知道點表變化前和變化后的差別并進行標記,將有效降低修改的勞動強度,顯著提高修改的正確性。點表的變化主要有3種情況:
(1)添加新點;
(2)刪除原有點;
(3)修改原有點。
從修改流程可見,最后下裝到遠動裝置的點表即為變化后的點表,主站的修改前點表則是變化前的點表,這兩張表都可以借助相關軟件進行導出。
顯然,對點表進行比對并進行標記是一項繁瑣的工作,依托目前廣泛采用的編程技術編寫一個點表比對程序來完成這一工作自然成為一個解決問題的手段。
面向對象是指一種程序設計范型,同時也是一種程序開發的方法,是對現實世界理解和抽象的方法,是計算機編程技術發展到一定階段后的產物。早期,計算機被運用于簡單問題的求解,只要設計出求解流程,便能解決問題,這一程序設計方法稱之為面向過程的方法,是一種以“過程”為中心的思想。隨著計算機技術的不斷發展,計算機被用于解決越來越復雜的問題,便產生了以“事物”為中心的面向對象的方法。面向對象的方法將一切事物均視為對象,都能夠接受數據、處理數據并將數據傳達給其他對象,是程序的基本單元。面向對象程序的控制流程由運行時各種事件的實際發生來觸發,而不再由預定順序來決定,更符合實際。
通過面向對象的方式,將現實世界的事物抽象成對象,將現實世界中的關系抽象成類、繼承,幫助人們實現對現實世界的抽象與數字建模,更利于用人理解的方式對復雜系統進行分析、設計與編程。面向過程的編程語言包括C、Pascal及Fortran等,面向對象的編程語言則包含Java、C++及C#等。
C#是微軟于2000年6月發布的一種面向對象的編程語言,主要由安德斯·海爾斯伯格主持開發,它是第一個面向組件(COM)的編程語言,運行于.NET Framework上。C#由C和C++衍生而來,在繼承C和C++強大功能的同時去掉了一些復雜特性,還綜合了VB簡單的可視化操作和C++的高運行效率。
C#所開發的程序源代碼并不是編譯成能夠直接在操作系統上執行的二進制本地代碼,而是被編譯成為中間代碼,然后通過.NET Framework的虛擬機(通用語言運行庫CLR)執行,類似于java語言的JVM虛擬機。所有用C#編寫的源代碼都被編譯成中間代碼,因此雖然最終的程序在表面上仍然與傳統意義上的可執行文件都具有“.exe”的后綴名,實際上,如果計算機上沒有安裝.Net Framework,那么這些程序將不能夠被執行。在程序執行時,.Net Framework將中間代碼翻譯成為二進制機器碼,從而使它得到正確的運行。
針對引言中描述的需求,需要編寫一個Windows桌面應用軟件。通過相關技術的介紹可知,Windows Forms應用程序開發接口能夠滿足需求,該接口能夠快捷有效地開發出一些功能相對簡單的應用程序。結合變電站點表比對的實際應用場景,可知輸入是有固定格式的文本文檔,因此希望輸出的是一個標記了新增、刪除及更改等屬性的表格文檔,其功能如圖1所示。

圖1 程序功能圖示
由圖1可知,該應用程序的設計需要涉及到文件的讀寫和創建,在讀取階段借助C#語言的Stream Reader類,創建并讀寫excel輸出文檔時,使用office的COM組件進行控制。對于輸入的文本文檔,其格式如圖2所示,可提取點號(轉發序號)及數據描述作為有效輸入,中間的兩列對于主站來說沒有意義,故不做比較。

圖2 輸入文件的數據格式
對于輸出的excel文檔,用紅色標記改動的點,綠色標記刪除的點,藍色標記為新加的點;為了便于主站維護人員修改主站點表,輸出時,將點號按增序排列。
實現點表比對的原理是:建立兩個字符串數組A和B分別用于存儲改動前點表和改動后點表,點表的點號是非負唯一的整數,這一特性使得點號能被用于作為A、B字符串數組的索引;將兩張點表都讀入之后,按照點號進行索引將數據描述進行存儲;然后逐個比對兩個A、B數組中的所有元素(數據描述),根據每個元素的情況進行標記輸出。程序流程如圖3所示。
在程序運行的過程中,為了便于實時了解比對進度,程序會在相應區域顯示比對結果,如圖4所示。
測試階段,將對廠站點表分別進行刪除、新增及改動等操作,為了測試程序的魯棒性,還將點號順序進行了調整,測試輸入的改動如下:
(1)改動點號為 5、16、24、51、72、112、135;
(2)刪除點號為12~15;
(3)新加的點為174~198;
(4)點號順序調整的點為8?9、12?13、87?69。

圖3 程序流程圖

圖4 程序運行時界面
運行程序之后,導出了輸出excel文件,查驗該文檔,發現軟件已經正確地標記出了上述改動,且輸出的點號是按增序排列的,便于人員對照主站點表進行修改。可見,該軟件實現了最初的功能設定。
軟件編寫完成后,還將該軟件運用于9月底海龍變電站2號主變驗收過程中,檢驗了軟件的實際應用效果。
本文介紹了點表比對在實際工作中的重要性,指出了常規做法的弊端。為了解決這些弊端,可將面向對象的編程技術應用于實踐,開發了基于C#的點表比對助手軟件并測試驗證了軟件的實用性,降低了人工比對、修改點表的勞動強度,提高了點表修改的正確率,一定程度上保障了變電站和主站間信息的正確傳遞,對于提高生產效率有一定積極意義。