郭書英,秦兆杰,胡雪松,李世杰,趙立勝
(河北電力裝備有限公司,河北 邯鄲 056000)
在一些重要的用電場合,配電系統(tǒng)須配備兩路進(jìn)線電源,并且要求進(jìn)線電源控制器具有自動(dòng)投切功能和數(shù)據(jù)采集、處理及傳輸功能,此進(jìn)線電源控制器即備自投控制器。備自投控制器一般通過控制兩段進(jìn)線斷路器及母聯(lián)斷路器實(shí)現(xiàn)電源的自動(dòng)投切,同時(shí)控制器還擔(dān)負(fù)著采集并處理兩段內(nèi)的饋線柜各饋線回路電量數(shù)據(jù)的任務(wù)[1]。
在典型配電系統(tǒng)中,一般每段配備有18臺(tái)柜子,每個(gè)柜子包含了9個(gè)饋線回路,每個(gè)饋線回路的電量數(shù)據(jù)包括三相電壓、三相電流、有功功率、無功功率、頻率、正向有功電能、正向無功電能等共計(jì)十余項(xiàng),以此計(jì)算,每個(gè)配電系統(tǒng)兩段母線共計(jì)會(huì)有三千五百余數(shù)據(jù)需要采集處理,以地鐵為例,全線所有配電場所用電累積會(huì)有六萬余數(shù)據(jù)需要采集處理。為實(shí)現(xiàn)控制功能和數(shù)據(jù)的批量處理功能,需要為此編寫大量程序。然而通過對控制器程序的詳細(xì)梳理,歸納并總結(jié)出控制器中的程序數(shù)量雖大,但有規(guī)律可循,這些完成特定功能的程序中用到了大量重復(fù)性語句,而重復(fù)性語句則可以通過設(shè)計(jì)一款簡易的軟件,編程人員只需根據(jù)配電系統(tǒng)圖在軟件接口界面對應(yīng)位置填入相關(guān)數(shù)據(jù),即可生產(chǎn)完成代碼的自動(dòng)生成。在非常有效地節(jié)省編程人員的工作量、提高編程效率的同時(shí),使控制器程序的編譯通過率也大大提高,程序的運(yùn)行效果更加完美。由軟件生成的代碼嚴(yán)格遵守編程相關(guān)規(guī)范,同時(shí)規(guī)范的程序代碼也會(huì)對后續(xù)的維護(hù)和升級提供良好的基礎(chǔ)[2]。
本軟件著力解決控制器開發(fā)人員對于編程過程中重復(fù)性語句的編寫,針對數(shù)據(jù)采集及處理功能塊中的程序語句編寫及運(yùn)行流程進(jìn)行梳理、歸納、總結(jié),對程序架構(gòu)做充分優(yōu)化,軟件的需求如下:
(1)要有輸入?yún)?shù)的界面,該界面可以允許使用者根據(jù)配電系統(tǒng)中饋線回路數(shù)量的不同,輸入不同參數(shù)的接口,界面要簡單易懂。
(2)具備根據(jù)配電系統(tǒng)中饋線回路的數(shù)據(jù)采集和處理的數(shù)量不同,自動(dòng)生成對應(yīng)功能模塊程序代碼的功能。
(3)提供針對控制器開發(fā)初學(xué)者的快捷生成代碼的方法,降低對控制器開發(fā)人員在程序編寫及調(diào)試方面的難度。
(4)移植性好,在不同類型電腦上使用方便,免安裝等特點(diǎn)。
大多數(shù)用戶的電腦中辦公軟件為office或者WPS,其中的Excel具備VBA編程開發(fā)的功能,Excel各表格可以通過VBA或者宏編程實(shí)現(xiàn)對不同Sheet中的Cells進(jìn)行填充。Excel中的控件類型豐富,VBA語法簡單,結(jié)構(gòu)清晰,編程功能強(qiáng)大,使用簡單方便。二者結(jié)合可以滿足大部分的開發(fā)需求,所開發(fā)出的軟件體量輕,功能強(qiáng),能夠方便的解決編程工作中的多種問題,極大提升編程開發(fā)效率。
通過總結(jié)需求,將備自投控制器中有關(guān)數(shù)據(jù)采集和處理的功能進(jìn)行分類匯總,分別建立相應(yīng)的sheet,利用VBA編程功能編寫代碼,實(shí)現(xiàn)對Sheet中Cells的數(shù)據(jù)讀取和填充,并結(jié)合Excel的按鈕控件,實(shí)現(xiàn)備自投控制器代碼的一鍵自動(dòng)生成。
在Excel的VBA編程環(huán)境下,針對需求精確設(shè)計(jì)了多個(gè)子函數(shù),并在主程序中進(jìn)行調(diào)用,以實(shí)現(xiàn)既定功能。子函數(shù)主要包括:饋線柜通訊狀態(tài)循環(huán)1、饋線柜通訊狀態(tài)循環(huán)2、饋線回路數(shù)據(jù)狀態(tài)循環(huán)1、饋線回路數(shù)據(jù)狀態(tài)循環(huán)2、饋線回路通訊狀態(tài)循環(huán)1、饋線回路通訊狀態(tài)循環(huán)2、操作報(bào)警記錄循環(huán)1、操作報(bào)警記錄循環(huán)2等。
參照配電系統(tǒng)圖,按照兩段配電,每段最多20臺(tái)柜子,每個(gè)柜子最多9個(gè)饋線回路,設(shè)計(jì)好通用的Excel接口表格,這個(gè)表格是本軟件的接口界面,通過將配電柜數(shù)量、饋線回路按順序固定下來,在加上三級負(fù)荷和計(jì)量回路的選型,并在頁面左上角添加生成代碼按鈕控件,用戶通過在接口界面的指定位置填入系統(tǒng)中的配電柜饋線回路數(shù)量、三級負(fù)荷開關(guān)、計(jì)量回路等關(guān)鍵參數(shù),然后點(diǎn)擊生成代碼按鈕即可完成操作[3]。接口界面如圖1所示。
圖1 接口界面
通過編寫?zhàn)伨€回路數(shù)據(jù)采集和處理的各子程序函數(shù),并在主程序函數(shù)中進(jìn)行調(diào)用,最終完成對控制器代碼的自動(dòng)生成工作,典型子程序函數(shù)聲明如下:
KuiXianGuiComStatus_loop1(GNum,LNum,THNum,MCNum, LNum)
該類型子函數(shù)主要通過內(nèi)部循環(huán)函數(shù)完成對控制器內(nèi)部程序代碼自動(dòng)編寫。首先將配電回路分為兩段,分段遍歷各饋線回路,根據(jù)饋線回路自動(dòng)生成相關(guān)代碼,并自動(dòng)添加代碼語句結(jié)束符,之后將代碼按照控制器編程規(guī)則填充到表格的對應(yīng)單元格中。
完成子函數(shù)的編寫后,在主函數(shù)中,通過For循環(huán)語句調(diào)用各功能塊子函數(shù),從而完成對接口表格中的饋線柜饋線回路數(shù)量、三級負(fù)荷所在回路號、計(jì)量回路所在回路號等變量的遍歷,同時(shí)通過Dim語句定義EasyComNum 、LoopNum、MeasurementCircutNum 、ThirdLoadNum、CodeLineNum、CodeColumnNum、CodeColumnNum1、bit 、bitNum、TelemeteringNum、ElectricalDegreeNum等多個(gè)接口變量,完成饋線回路數(shù)及程序中bit的位的自增與清零工作[4]。
典型For循環(huán)函數(shù)結(jié)構(gòu)體如下:
For m = 2 To LNum Step 1
If THNum = 1 Then
…
If MCNum = m Then
Else
…
End If
Else
…
If MCNum = m Then
Else
…
End If
End If
Next m
典型主函數(shù)結(jié)構(gòu)體如下:
Private Sub CommandButton1_Click()
Dim EasyComNum As Integer
Dim LoopNum As Integer
…
…
…
Dim ElectricalDegreeNum As Integer
For n = 1 To 38 Step 1
LoopNum = Sheet1.Cells(n +3, 4)
ThirdLoadNum = Sheet1.Cells(n + 3, 6)
MeasurementCircutNum = Sheet1.Cells(n + 3, 5)
If LoopNum <= 1 Then
Else
If n < 20 Then 'I段回路
Call KuiXianGuiComStatus_loop1(n, LoopNum, ThirdLoadNum, MeasurementCircutNum, CodeLineNum)
…
…
…
Call SwitchStateDate_loop1(n, LoopNum, ThirdLoadNum, MeasurementCircutNum, CodeColumnNum, CodeColumnNum1, bit, bitNum, TelemeteringNum, ElectricalDegreeNum)
End If
If n >= 20 Then 'II段回路
Call KuiXianGuiComStatus_loop2(n, LoopNum, ThirdLoadNum, MeasurementCircutNum, CodeLineNum)
…
…
…
End If
CodeLineNum = CodeLineNum + 1
CodeColumnNum = CodeColumnNum + LoopNum
CodeColumnNum1 = CodeColumnNum1 + (LoopNum * 2)
End If
Next n
End Sub
通過單擊接口界面的代碼生成按鈕控件,最終完成備自投控制器程序代碼的自動(dòng)編寫,控制器開發(fā)人員可以將各個(gè)Sheet中的代碼直接復(fù)制,粘貼到控制器編程軟件,編譯通過即可。表格代碼界面如圖2。備自投控制器編程軟件代碼界面如圖3。編譯通過的界面如圖4。
圖2 表格中自動(dòng)生成的代碼
圖3 移植備自投控制器編程軟件中的代碼
圖4 備自投控制器代碼編譯結(jié)果
本軟件利用Excel的VBA功能,并結(jié)合按鈕控件,一鍵生成配電系統(tǒng)控制器代碼,解決了降低控制器開發(fā)人員的工作量,提高工作效率和編程的準(zhǔn)確率的問題,并使得控制器的程序格式規(guī)范而統(tǒng)一,架構(gòu)清晰而簡潔。配電系統(tǒng)備自投控制器編程代碼自動(dòng)生成軟件從實(shí)戰(zhàn)出發(fā),立足初學(xué)者的角度,對需求進(jìn)行充分理解和論證,結(jié)合控制器架構(gòu)設(shè)計(jì),最終實(shí)現(xiàn)既定目標(biāo);同時(shí)軟件留出數(shù)據(jù)余量及擴(kuò)展接口,方便后續(xù)升級更新,為之后擴(kuò)展提供了技術(shù)方面的支持和保障;本軟件對于其他系統(tǒng)及部門的技術(shù)人員也有相當(dāng)大的借鑒和推廣作用。