張佳楠


【摘 要】自動化主站系統升級時,需要把舊EMS系統數據庫的數據遷移到新OCS系統數據庫中,完成數據遷移工作后,為確保電網運行的安全性,同時減少新OCS系統建成后的遠動調試工作量,需要對新數據庫中的遠動點表與舊數據庫中的遠動點表做比對,確保新、舊遠動點表的一致性,但遠動點表的數據量巨大,人工核對需要耗費大量時間。研制遠動點表比對工具,實現新、舊遠動點表自動比對,提高遠動點表核對工作的效率與準確性。
本遠動點表比對工具基于Excel Visual Basic開發,使用該工具可以很方便、快捷地核對新、舊遠動點表的一致性,遠動調試時可避免重復調試工作,大大減輕遠動調試人員的工作量。
【關鍵詞】遠動點表;比對;Visual Basic
研究背景
目前湛江供電局正在進行新OCS系統建設,需要把舊EMS系統數據庫的數據遷移到新OCS系統數據庫中,完成數據遷移工作后,為確保電網運行的安全性,同時減少新OCS系統建成后的遠動調試工作量,需要對新數據庫中的遠動點表與舊數據庫中的遠動點表做比對,確保新、舊遠動點表的一致性,但遠動點表的數據量巨大,其中遙信有94587條記錄,遙測有30214條記錄。
如果采用人工方式進行對比,按照自動化人員現有核查速度,完成所有廠站遙信點表核查大約需要27天,工作進展十分緩慢。而且人工核查工作完成質量難以保證,很難保證沒有疏漏,導致廠站新舊點表中的差異遺留下來,對自動化系統安全穩定運行造成影響。因此,遠動點表比對工具應運而生。
算法原理
點表比對工具主要實現的功能是:比對兩張數據表是否一致,若一致,給出結論,若不一致,則需要通過顏色標注將不同之處明顯指出來,并輸出比對結果。
數據比對模塊
數據比對模塊實現的基本邏輯:(1)取出數據表1中一個主鍵;(2)在數據表2中使用find方法查找等值的主鍵;(3)若步驟(2)中找到該主鍵,則依次比較數據表1該行剩余單元格值和數據表2對應行對應單元格值是否一樣,若不一樣,則記錄;(4)若步驟(2)中未找到,則表示數據表1存在該主鍵,而數據表2不存在該主鍵,則記錄;(5)重復上述步驟(1)至(4),知道數據表1中所有數據被訪問。(6)執行完以上步驟后還需取出數據表2中編號,查找數據表1中不存在數據,即重復以上步驟(1)(2)(3)(4)(5)。
相關代碼如下:
shtResult.Range("A2:B"& Rows.Count).Clear
sht1.Range("A2:Z"& Rows.Count).Interior.Pattern = xlNone
sht2.Range("A2:Z"& Rows.Count).Interior.Pattern = xlNone
For row1 = 2 To sht1.Range("A1").CurrentRegion.Rows.Count
sNo = sht1.Cells(row1,1).Value
Set Rng = sht2.Range("A:A").Find(sNo,lookat:=xlWhole)
If Rng Is Nothing Then
shtResult.Cells(rowNew,1).Value = "'提示:表2沒有該值"& sNo
shtResult.Cells(rowNew,2).Value = "少第"& row1 &"行,已標橙色"
rowNew = rowNew + 1
sht1.Columns("A:Z").Rows(row1).Interior.Color = RGB(255,165,0)
Else
For column1 = 2 To sht1.Range("A1").CurrentRegion.Columns.Count
'獲取find的單元格的行
row_Rng = Rng.Row
sCell1 = sht1.Cells(row1,column1).Value
sCell2 = sht2.Cells(row_Rng,column1).Value
If sCell1 <> sCell2 Then
shtResult.Cells(rowNew,1).Value = "提示:表1中第"& row1 &"行,第"& column1 &"列值和表2中第"& row_Rng &"行,第"& column1 &"列不一樣,已標黃"
sht1.Cells(row1,column1).Interior.Color = RGB(255,255,0)
sht2.Cells(row_Rng,column1).Interior.Color = RGB(255,255,0)
rowNew = rowNew + 1
check_1 = check_1 + 1
End If
Next column1
End If
Next row1
For row1 = 2 To sht2.Range("A1").CurrentRegion.Rows.Count
sNo = sht2.Cells(row1,1).Value
Set Rng = sht1.Range("A:A").Find(sNo,lookat:=xlWhole)
If Rng Is Nothing Then
shtResult.Cells(rowNew,1).Value = "'提示:表1沒有該值"& sNo
shtResult.Cells(rowNew,2).Value = "少第"& row1 &"行,已標橙色"
rowNew = rowNew + 1
sht2.Columns("A:Z").Rows(row1).Interior.Color = RGB(255,165,0)
Else
For column1 = 2 To sht1.Range("A1").CurrentRegion.Columns.Count
row_Rng = Rng.Row
sCell1 = sht2.Cells(row1,column1).Value
sCell2 = sht1.Cells(row_Rng,column1).Value
If sCell1 <> sCell2 Then
shtResult.Cells(rowNew,1).Value = "提示:表2中第"& row1 &"行,第"& column1 &"列值和表1中第"& row_Rng &"行,第"& column1 &"列不一樣,已標黃"
sht1.Cells(row_Rng,column1).Interior.Color = RGB(255,255,0)
sht2.Cells(row1,column1).Interior.Color = RGB(255,255,0)
rowNew = rowNew + 1
check_1 = check_1 + 1
End If
Next column1
End If
Next row1
check_3 = check_1 + check_2
If check_3 >= 1 Then
shtResult.Cells(rowNew,1).Value = "結論:表一和表二不一致"
shtResult.Cells(rowNew,1).Interior.Color = RGB(255,0,0)
Else
shtResult.Cells(rowNew,1).Value = "結論:表一和表二一致"
shtResult.Cells(rowNew,1).Interior.Color = RGB(255,0,0)
End If
標注模塊
標注模塊實現的功能:
(1)將數據表1和數據表2中主鍵一樣,但其余單元格值不一樣,則該單元格標黃;
(2)若數據表1存在某主鍵,而數據表2不存在,則將數據表1該行標成橙色;若數據表2存在某主鍵,而數據表1不存在,則數據表2該行標成橙色。
相關代碼如下:
sht1.Cells(row1,column1).Interior.Color = RGB(255,255,0)
sht2.Cells(row_Rng,column1).Interior.Color = RGB(255,255,0)
sht1.Cells(row_Rng,column1).Interior.Color = RGB(255,255,0)
sht2.Cells(row1,column1).Interior.Color = RGB(255,255,0)
效果驗證
樣本點表為某變電站遠動遙信點表,數據量823條(大小約125k),每條數據含有兩列內容,其中A列信息為遙信點號,保證不重復,B列為中文描述。
1、表一表二內容完全相同
創建樣本點表副本作為表二,原樣本點表作為表一導入遠動點表比對工具。
點擊“校驗”按鈕后,出現“結論:表一和表二一致”,驗證結果正確,校驗用時1.96秒。
2、表一表二內容有差異
創建樣本點表副本作為表二,并將表二當中445行(點號559)數據” C13保護動作”修改為” C13保護動作”X,315行(點號372)“110kV母聯101210隔離刀閘合位”修改為“110kV母聯101210X隔離刀閘合位”,43行(點號52)“1#主變重瓦斯”修改為“X1#主變重瓦斯”,111行(點號131)“2651開關分位”修改為“20651開關分位”,173行(點號204)“220kV母聯2012開關一組出口跳閘”修改為“0220kV母聯2012開關一組出口跳閘”,382點號474)“F07保護動作”修改為“F07保護動作6”,498行(點號613)“2#主變高壓側控行(制回路斷線”修改為“錯誤2#主變高壓側控制回路斷線”,615行(點號736)“F15保護裝置異常”修改為“F15保護錯誤裝置異常”705行(點號837)“#2接地變保護動作”修改為“#2接地變保護動作錯誤”,778行(點號990)“蓄電池欠壓”修改為“;蓄電池欠壓”801行(點號1013)“220kV備自投直流消失”修改為“220kV備自投;直流消失”刪除813行(點號1025),刪除814行(點號1026)第二列遙信內容,增加825行,點號1037,內容“新增信號”,共14處差異,用以分別驗證英文字母、數字、漢字、標點符號分別出現在信號描述頭部、中部、尾部的差異是否能夠檢測,且是否支持1000條數據以上的點表信息量。原樣本點表作為表一,將表一表二導入遠動點表對比工具。
點擊“校驗”按鈕后,表一、表二差異數據標黃、標橙色,對比結果頁結果如下:
驗證結果完全正確,校驗用時1.55秒。
結論
遠動點表對比工具能夠準確判斷新舊點表差異并進行高亮顯示,提醒自動化人員進行后續處理,耗時較短,操作簡便易學,實用性強,能夠有效減少自動化人員工作量,尤其是對于正在進行升級的主站系統、綜合自動化改造的廠站調試,遠動點表比對工具能夠發揮出很大的作用。由于基于Excel開發,安裝環境要求低,幾乎全部能夠運行Excel的Windows操作系統均可使用,能夠很好地滿足自動化人員日常使用需求。
(作者單位:廣東電網有限責任公司湛江供電局)