司大軍,張學(xué)華
(1.云南電網(wǎng)有限責(zé)任公司電網(wǎng)規(guī)劃建設(shè)研究中心,昆明 650000;2.昆明能訊科技有限責(zé)任公司,昆明 650217)
某大電網(wǎng)穩(wěn)定智能仿真分析平臺(tái)(以下簡(jiǎn)稱分析平臺(tái)),該平臺(tái)能夠進(jìn)行電力系統(tǒng)安穩(wěn)策略的仿真。在實(shí)際電力系統(tǒng)中,相鄰區(qū)域的安穩(wěn)策略在適應(yīng)運(yùn)行方式、切機(jī)與切負(fù)荷對(duì)象等方面存在一定的重復(fù)。當(dāng)在分析平臺(tái)中修改或設(shè)置相關(guān)策略時(shí),需要重復(fù)進(jìn)行相關(guān)設(shè)置,易出錯(cuò)或遺漏[1-3]。為解決這一問(wèn)題,本文提出了通過(guò)使用“宏”表示重復(fù)部分,在不同位置引用定義的宏,當(dāng)需要重新設(shè)置或修改時(shí)只修改宏的定義部分即可,在引用宏的位置自動(dòng)展開宏。
分析平臺(tái)能夠?qū)﹄娏ο到y(tǒng)安穩(wěn)策略進(jìn)行仿真,安穩(wěn)策略由“安穩(wěn)策略文件”定義?!鞍卜€(wěn)策略文件”中可以包含多個(gè)安穩(wěn)策略,每個(gè)安穩(wěn)策略含有策略名稱、策略類型(切機(jī)或切負(fù)荷)、策略對(duì)應(yīng)運(yùn)行方式、策略對(duì)應(yīng)故障、各切機(jī)/負(fù)荷輪級(jí)、切機(jī)/負(fù)荷計(jì)算曲線等。
使用“.strategy=
“.mode”用于指定安穩(wěn)策略適用的運(yùn)行方式。其格式為:
“.Fault”用于指定安穩(wěn)策略適用的故障形式。其格式為:
“.curve”用于指定安穩(wěn)策略切機(jī)或切負(fù)荷曲線。其格式為:
曲線類型有“stair”、“l(fā)ine”可選,“stair”表示階梯狀切機(jī)或切負(fù)荷曲線,如下圖1 所示。從(0,0)點(diǎn)開始,需要指定(x1, y1)、(x2, y2)、……等值。需要輸入?yún)?shù)的個(gè)數(shù)為偶數(shù)個(gè)。
“l(fā)ine” 表示線性切機(jī)或切負(fù)荷曲線,需要輸入?yún)?shù)的個(gè)數(shù)為2,即a, b 兩個(gè)參數(shù),使用y=a*x+b 計(jì)算切機(jī)或切負(fù)荷量值,其中,x 表示潮流值,y 表示切機(jī)或切負(fù)荷量值。
使用“.stage”指定安穩(wěn)策略切機(jī)輪級(jí),對(duì)于一個(gè)策略可以指定任意數(shù)目的輪級(jí),分析平臺(tái)將按輪級(jí)先后順序,從前到后切機(jī)/切負(fù)荷。一個(gè)輪級(jí)可以切除多個(gè)機(jī)組與負(fù)荷。使用“.Gen”指定本輪級(jí)可切機(jī)組,使用“.Load”指定本輪級(jí)可切負(fù)荷。
使用“.Gen S 廠站名 n reserve=m”指定?!癝”(Station 的首字母)表示切除指定“廠站名”發(fā)電機(jī);“n”正整數(shù),表示切該廠站的n 臺(tái)機(jī);“m”為0 或正整數(shù),表示取該廠站需要保留m臺(tái)機(jī)。
使用“.Load S 廠站名, percent”指定?!癝”(Station 的首字母)表示切除指定“廠站名”負(fù)荷,“percent”為浮點(diǎn)數(shù),表示切該廠站負(fù)荷的百分比。
如某區(qū)域電網(wǎng),無(wú)檢修方式下,A 站至B站220 kV 雙回線路N-2 的安穩(wěn)策略如下:
A 站至C 站220 kV 線路檢修方式下,A 站至B 站220 kV 雙回線路N-2 的安穩(wěn)策略如下:
對(duì)比兩個(gè)安穩(wěn)策略,大部分內(nèi)容相同,主要差別在運(yùn)行方式與切機(jī)曲線。本文使用“宏”表示不同安穩(wěn)策略的相同部分,從而簡(jiǎn)化安穩(wěn)策略設(shè)置以及后續(xù)的維護(hù),下面將給出宏的定義與使用方法。
分析平臺(tái)通過(guò)在安穩(wěn)策略定義中使用“宏”,簡(jiǎn)化安穩(wěn)策略設(shè)置以及維護(hù)。
在安穩(wěn)策略定義文件或?qū)iT的宏定義文件中可以定義宏。宏的定義以“.define”關(guān)鍵字開始,以“.end”關(guān)鍵字結(jié)束,定義示例如下所示:
其中“.define”表示宏定義的起始,<宏名稱> 為宏對(duì)應(yīng)的名稱,不能重復(fù),宏內(nèi)容可以為多行,也可以為單行,“.end”表示宏定義的結(jié)束。
宏文件的導(dǎo)入。宏可以聲明在安穩(wěn)策略定義文件,也可聲明在單獨(dú)創(chuàng)建的宏文件里,安穩(wěn)策略定義文件可以通過(guò)“包含”的方式使用宏文件中定義的宏,即通過(guò)“.include”關(guān)鍵字,在目標(biāo)文件的頭部導(dǎo)入宏文件,具體示例代碼如下所示:
“.include”作為宏文引入的關(guān)鍵詞,< 文件名>為需要引入的宏文件名稱。
宏程使用。在安穩(wěn)策略定義文件中可以使用已定義的宏,使用方式為在宏名稱前后加入百分號(hào)“%”,即通過(guò)“% 宏名稱%”的方式對(duì)宏進(jìn)行引用,表示分析平臺(tái)在解析到“% 宏名稱%”對(duì)應(yīng)的位置時(shí),使用宏內(nèi)容進(jìn)行替換。
宏的讀取與解析。分析平臺(tái)提供編輯界面對(duì)安穩(wěn)策略定義文件數(shù)據(jù)進(jìn)行可視化的設(shè)置與編輯。分析平臺(tái)在讀取可編輯安穩(wěn)生客定義文件時(shí),以逐行的方式讀取文件內(nèi)容。當(dāng)數(shù)據(jù)行中包含“% 宏名稱%”格式的標(biāo)識(shí)符時(shí),需要對(duì)宏標(biāo)識(shí)符進(jìn)行解析,解析程序提取該字符串中的宏名稱,調(diào)用宏內(nèi)容查找函數(shù),查找函數(shù)首先在定義文件中以“.define 宏名稱”格式檢索,如果檢索不到與之匹配的字符串,則進(jìn)入宏文件定義文件繼續(xù)檢索,直到找到匹配的字符串,否則函數(shù)返回“宏未定義”的提示信息。檢索到指定格式的字符串,也就查找到宏定義的起始位置,查找函數(shù)以此為起點(diǎn),查找其后臨近的“.end”宏結(jié)束關(guān)鍵字位置,通過(guò)截取起始位置到結(jié)束位置的字符串,解析程序就得到宏的完整定義內(nèi)容,去掉“.define 宏名稱”和“.end”字符后,即得到宏的內(nèi)容。最后,用宏內(nèi)容替換定義文件中的宏標(biāo)識(shí)符。
在獲得宏的內(nèi)容后,將根據(jù)安穩(wěn)策略定義文件的格式逐行對(duì)宏內(nèi)容進(jìn)行解析并在分析平臺(tái)界面上進(jìn)行顯示與編輯。當(dāng)完成對(duì)宏的編輯后,需要對(duì)被編輯的宏進(jìn)行回寫,使得其它對(duì)宏的引用可以同步更新。由于安穩(wěn)策略定義文件每一行表示特定的含義,因此,在界面顯示與編輯時(shí)以行為單位進(jìn)行。對(duì)于宏文件也是如此,在顯示宏時(shí),記錄顯示宏的名稱與所在宏內(nèi)容中的行號(hào)。當(dāng)宏在界面上被編輯后,可以通過(guò)宏名稱與所在宏的行號(hào)對(duì)宏定義進(jìn)行更新。
宏展開與編輯的流程如下所示:
圖2 宏展開與編輯的流程圖
以“安穩(wěn)策略設(shè)置簡(jiǎn)介”章節(jié)中給出的某區(qū)域電網(wǎng)的安穩(wěn)策略定義為例,將“無(wú)檢修,A站-B 站N-2”與“A 站至C 站檢修,A 站-B 站N-2”安穩(wěn)策略的切機(jī)輪級(jí)部分進(jìn)行宏定義,以簡(jiǎn)化策略的設(shè)置與維護(hù)。即,將切機(jī)輪級(jí)部分通過(guò)宏“公共切機(jī)部分”進(jìn)行定義,在安穩(wěn)策略設(shè)置中進(jìn)行引用,如下所示:
為宏“A 站至B 站公共部分”,在兩種方式的安穩(wěn)策略定義時(shí),采用“%A 站至B 站公共部分%”格式引用宏,編寫示例如下所示:
在分析平臺(tái)中可以對(duì)以上設(shè)置進(jìn)行顯示與編輯,宏展開界面為宏展開后的內(nèi)容。
在分析平臺(tái)中修改或設(shè)置相關(guān)策略時(shí),將需要多次使用到的內(nèi)容定義為宏,使用時(shí)僅以宏標(biāo)識(shí)符的形式進(jìn)行調(diào)用,可進(jìn)行多層級(jí)編輯,使用方便、效率高,不易出錯(cuò)或遺漏,實(shí)現(xiàn)傳統(tǒng)方式不能達(dá)到的效果,并且代碼執(zhí)行效率優(yōu)異,拓寬了電網(wǎng)潮流穩(wěn)定仿真分析策略定義文件數(shù)據(jù)編寫的能力。