算:基于前推回代與互阻抗模型的Matlab實(shí)現(xiàn))
三相不平衡潮流計(jì)算在配電網(wǎng)分析里是個(gè)繞不開(kāi)的話題。最近我把自己一直在用的那套基于前推回代法與互阻抗模型的Matlab程序重新整理了一遍順手把容易出錯(cuò)的細(xì)節(jié)和調(diào)試心得也記錄了下來(lái)。這篇文章適合正在做配電網(wǎng)三相潮流仿真、或者打算自己寫(xiě)三相不平衡分析程序的同學(xué)它不只是一份代碼說(shuō)明更是一份從物理模型到代碼實(shí)現(xiàn)的完整施工記錄。為什么繞不開(kāi)實(shí)際臺(tái)區(qū)里單相負(fù)荷大量存在A相和C相可能掛幾十戶B相卻幾乎沒(méi)有負(fù)載線路也因?yàn)椴粨Q位而參數(shù)不對(duì)稱A相電流的變化會(huì)通過(guò)相間互感傳遞到其他兩相。用簡(jiǎn)化單相模型去估算出來(lái)的末端電壓和中性點(diǎn)偏移經(jīng)常和現(xiàn)場(chǎng)實(shí)測(cè)對(duì)不上。我最早就是用單相前推回代后來(lái)?yè)Q到三相互阻抗模型誤差才真正降下來(lái)。這套程序的核心邏輯是把三相節(jié)點(diǎn)阻抗、前推回代迭代和收斂處理完整串起來(lái)最后能輸出各相電壓、支路電流和線損方便后續(xù)做低電壓治理和三相不平衡度評(píng)估。文章里所有思路都基于Matlab環(huán)境實(shí)現(xiàn)代碼塊里的函數(shù)我盡量做了命名和注釋可以按需裁剪。1. 三相不平衡問(wèn)題為什么必須單獨(dú)建模1.1 配電網(wǎng)的三相不平衡都從哪來(lái)配電系統(tǒng)的三相不平衡從來(lái)不是假設(shè)出來(lái)的而是實(shí)測(cè)得出來(lái)的。輸電網(wǎng)講究三相換位線路參數(shù)對(duì)稱負(fù)荷也是三相對(duì)稱所以經(jīng)典潮流算法里可以直接用正序網(wǎng)絡(luò)替代。配電網(wǎng)完全不是這回事低壓臺(tái)區(qū)從母線出來(lái)就是四線制或三線制饋線大量支路是單相兩線用戶接在哪一相基本看施工習(xí)慣。臺(tái)區(qū)負(fù)荷越細(xì)單相比例越高三相不平衡度就越明顯。除了負(fù)荷分布還有幾個(gè)容易被忽略的來(lái)源。單相光伏逆變器、電動(dòng)自行車充電樁這類設(shè)備本質(zhì)上都是單相負(fù)荷接入相位如果沒(méi)人管理很容易出現(xiàn)A相滿負(fù)荷、C相接近空載的局面。我再舉個(gè)實(shí)際現(xiàn)象晚上7點(diǎn)高峰時(shí)段某臺(tái)區(qū)三相電流可能分別是180A、60A、150A中性線電流能到40A以上。這個(gè)電流在中性線上會(huì)產(chǎn)生電壓降直接抬高中性點(diǎn)電位導(dǎo)致某一相電壓偏低、另一相電壓偏高。低電壓用戶投訴往往就是這么來(lái)的。1.2 單相等值模型在哪些場(chǎng)景下會(huì)失效單相模型通常的做法是把三相總負(fù)荷平均到一相上或者用總功率除以三只計(jì)算一相的電壓降。它隱含了兩個(gè)關(guān)鍵假設(shè)三相完全對(duì)稱、相與相之間沒(méi)有電磁耦合、中性點(diǎn)電位始終為零。實(shí)際配電線路這三條基本都不成立。拿一個(gè)典型場(chǎng)景說(shuō)某條四線制饋線A相重載B相輕載。用單相模型看B相電壓得到的結(jié)論是“很健康”但實(shí)際中A相重載電流流過(guò)線路時(shí)會(huì)在B相導(dǎo)線上感應(yīng)出互感電壓如果這個(gè)感應(yīng)電壓的方向與B相自身電流產(chǎn)生的電壓降方向一致B相電壓會(huì)被明顯拉低甚至出現(xiàn)三相電壓不平衡度超標(biāo)。這種相間耦合效應(yīng)單相模型完全看不到。中性線電流引起的中性點(diǎn)偏移也只有在三相模型中才會(huì)顯現(xiàn)。單相模型天然認(rèn)為中性點(diǎn)就是大地的零電位但實(shí)際中性線有阻抗、有電流中性點(diǎn)電位會(huì)漂移幾伏甚至十幾伏。研究單相接地、缺相運(yùn)行、零序電流分布時(shí)單相模型給出的結(jié)果基本沒(méi)有參考價(jià)值。1.3 哪些分析場(chǎng)景必須上三相模型我自己的經(jīng)驗(yàn)是只要工作目標(biāo)里出現(xiàn)下面任意一個(gè)關(guān)鍵詞就必須換用三相模型電壓不平衡度評(píng)估。國(guó)標(biāo)要求電網(wǎng)公共連接點(diǎn)電壓不平衡度不超過(guò)2%多數(shù)低壓臺(tái)區(qū)在高峰期早超了這個(gè)指標(biāo)單相模型算不出來(lái)。中性線電流分析。校驗(yàn)中性線載流量、設(shè)計(jì)無(wú)功補(bǔ)償和三相負(fù)荷調(diào)整方案時(shí)需要知道每一段中性線上的電流單相模型會(huì)直接無(wú)視它。單相分布式光伏接入評(píng)估。接了哪些相、每相多少容量都會(huì)影響三相電壓只有三相潮流能給到每相的結(jié)果。低電壓治理方案設(shè)計(jì)。如果只看單相結(jié)果會(huì)低估A相的電壓跌落治理措施自然也會(huì)偏保守或選錯(cuò)相位。臺(tái)區(qū)線損精細(xì)分?jǐn)?。單相模型算出?lái)的網(wǎng)損會(huì)漏掉中性線損耗換三相模型后往往發(fā)現(xiàn)實(shí)際損耗比原來(lái)估算高8%以上。如果只是粗略估算變壓器低壓側(cè)總電流單相模型還能頂一陣一旦涉及逐節(jié)點(diǎn)、逐相的電壓和損耗分析單相模型得出的結(jié)論幾乎沒(méi)法用于現(xiàn)場(chǎng)決策。這也是我堅(jiān)持把互阻抗模型寫(xiě)進(jìn)程序的原因。2. 前推回代法在配電網(wǎng)潮流中的定位與核心思路2.1 為什么用前推回代而不是牛頓法配電網(wǎng)潮流計(jì)算最常用的兩類算法一類是牛頓類一類是前推回代。我優(yōu)先選前推回代原因有三個(gè)。第一配電網(wǎng)輻射狀結(jié)構(gòu)為主支路多、深度大而且R/X比普遍偏高。傳統(tǒng)牛頓法需要反復(fù)求解雅可比矩陣在R/X比大時(shí)矩陣病態(tài)嚴(yán)重迭代容易震蕩或者直接發(fā)散。前推回代不需要構(gòu)造雅可比矩陣也不做任何矩陣求逆只做兩次網(wǎng)絡(luò)遍歷數(shù)值穩(wěn)定性要好得多。第二前推回代的物理意義非常直白。從末端負(fù)荷倒推支路電流再用支路電流從首端往前推電壓整個(gè)過(guò)程和實(shí)際功率流動(dòng)方向一致。出現(xiàn)收斂問(wèn)題時(shí)可以很直觀地判斷是哪個(gè)節(jié)點(diǎn)、哪條支路的數(shù)據(jù)出了問(wèn)題。第三三相模型下每個(gè)節(jié)點(diǎn)有三個(gè)相電壓雅可比矩陣規(guī)模直接翻三倍。前推回代雖然也需要處理3×1復(fù)電壓向量和3×3阻抗矩陣但沒(méi)有雅可比矩陣的構(gòu)造和分解內(nèi)存開(kāi)銷和計(jì)算量都小一個(gè)量級(jí)。不過(guò)要注意前推回代只適用于輻射狀網(wǎng)絡(luò)或者少量合環(huán)經(jīng)過(guò)破環(huán)處理的網(wǎng)絡(luò)。如果網(wǎng)絡(luò)里有明顯的環(huán)網(wǎng)就需要改用牛頓法或者在斷開(kāi)處疊加補(bǔ)償電流不能硬套前推回代。2.2 前推回代的計(jì)算順序與公式前推回代的基本流程可以拆成三塊網(wǎng)絡(luò)分層。把根節(jié)點(diǎn)作為第0層按照父節(jié)點(diǎn)關(guān)系給每個(gè)節(jié)點(diǎn)確定層號(hào)同時(shí)記錄每個(gè)節(jié)點(diǎn)的父子關(guān)系和分支編號(hào)。前推。從最深層節(jié)點(diǎn)開(kāi)始逐層向上先計(jì)算當(dāng)前節(jié)點(diǎn)的三相注入電流再累加其所有下層子支路的電流得到離開(kāi)本節(jié)點(diǎn)往根方向流動(dòng)的支路電流?;卮牡?層根節(jié)點(diǎn)開(kāi)始逐層向下用已經(jīng)算好的支路電流和對(duì)應(yīng)支路的三相阻抗矩陣計(jì)算電壓降落更新子節(jié)點(diǎn)電壓。核心公式不復(fù)雜。恒功率負(fù)荷在第k個(gè)節(jié)點(diǎn)的三相注入電流為I_inj_abc conj(S_abc ./ V_abc)其中S_abc是節(jié)點(diǎn)三相復(fù)功率向量V_abc是當(dāng)前迭代的三相復(fù)電壓向量?jī)烧叨际?×1。注意這里必須按相做復(fù)數(shù)除法如果某一相沒(méi)有負(fù)荷S對(duì)應(yīng)為0電流自然就是0。支路電流的前推公式I_branch(k) I_inj_abc(k) sum(I_branch(children(k)))也就是說(shuō)父節(jié)點(diǎn)往根方向流過(guò)的電流等于本節(jié)點(diǎn)自身負(fù)荷電流加上所有子支路電流之和。電壓回代公式V_child V_parent - Z_abc_branch * I_branch這里的Z_abc_branch是父節(jié)點(diǎn)到子節(jié)點(diǎn)這一段線路的3×3相分量阻抗矩陣乘以3×1支路電流向量得到三相電壓降落向量。由于互阻抗的存在A相的電壓降落不只由A相電流決定還要疊加B相和C相電流通過(guò)互阻抗產(chǎn)生的貢獻(xiàn)所以必須用矩陣乘法拆成三個(gè)單相獨(dú)立計(jì)算就前功盡棄了。2.3 三相場(chǎng)景下幾個(gè)容易被忽略的變量前推回代切到三相后有幾個(gè)點(diǎn)特別容易踩空。第一是負(fù)荷的相別。寫(xiě)程序時(shí)我習(xí)慣把Sload存成n×3的復(fù)數(shù)矩陣每一行對(duì)應(yīng)一個(gè)節(jié)點(diǎn)列對(duì)應(yīng)A/B/C相。這樣B相沒(méi)有負(fù)荷時(shí)S0計(jì)算電流自動(dòng)就是0邏輯非常清晰。千萬(wàn)不能把三相負(fù)荷壓縮成一個(gè)總功率再按平均值分配到各相那就又退回單相模型了。第二是平衡節(jié)點(diǎn)。通常取配電變壓器低壓側(cè)母線作為平衡節(jié)點(diǎn)三相電壓設(shè)定為額定相電壓的正序值也就是幅值相同、相位互差120度。但實(shí)際現(xiàn)場(chǎng)變壓器低壓出口三相電壓往往已經(jīng)存在一定偏移所以我的程序允許直接用實(shí)測(cè)電壓作為初值。第三是初值問(wèn)題。所有非電源節(jié)點(diǎn)初始電壓都取額定電壓三相各自帶120度相位差。這個(gè)初值對(duì)常規(guī)輻射狀網(wǎng)絡(luò)是夠用的但如果系統(tǒng)比較重載前幾次迭代會(huì)出現(xiàn)比較明顯的震蕩后面我會(huì)專門講怎么處理。3. 互阻抗模型如何落地從物理矩陣到程序數(shù)據(jù)3.1 三相線路阻抗矩陣的物理意義三相線路的參數(shù)不能只用一組正序、零序阻抗來(lái)代替。三相導(dǎo)線之間存在電磁耦合A相流過(guò)的電流不僅在本相產(chǎn)生電壓降還會(huì)通過(guò)互感在B相、C相上產(chǎn)生電壓降。要精確描述這種耦合最自然的方式就是用3×3復(fù)阻抗矩陣Zabc [ Zaa Zab Zac Zba Zbb Zbc Zca Zcb Zcc ]對(duì)角線上的Zaa、Zbb、Zcc是各相導(dǎo)線的自阻抗包括導(dǎo)線內(nèi)阻抗和大地回路的返回阻抗。非對(duì)角線上的Zab、Zbc、Zca是相間互阻抗主要由導(dǎo)線之間的幾何均距決定。由于配電線路一般不做換位三相導(dǎo)線布置不對(duì)稱對(duì)角線元素并不相等互阻抗之間也有差異矩陣不能簡(jiǎn)化成完全對(duì)稱的循環(huán)矩陣。這里面還有一層容易混淆的地方?;プ杩贡举|(zhì)上是互易的所以物理上Zab應(yīng)該等于Zba。但我們用Carson公式或者其他電磁參數(shù)計(jì)算工具得到的原始矩陣可能因?yàn)榇蟮鼗芈诽幚矸绞?、分相段編?hào)等細(xì)節(jié)出現(xiàn)微小數(shù)值不對(duì)稱。遇到這種情況程序里最好取上下三角平均避免后面疊代時(shí)出現(xiàn)電壓結(jié)果不對(duì)稱。3.2 是否包含中性線Kron化簡(jiǎn)是捷徑三相四線制低壓臺(tái)區(qū)實(shí)際上有四根導(dǎo)線嚴(yán)格的相分量模型應(yīng)該是4×4矩陣包含三相導(dǎo)線和中性線。如果直接把中性線作為獨(dú)立變量每個(gè)節(jié)點(diǎn)就有A/B/C/N四個(gè)電位程序結(jié)構(gòu)和數(shù)據(jù)規(guī)模都會(huì)復(fù)雜不少而且中性線的接地方式、重復(fù)接地等問(wèn)題處理起來(lái)特別容易出錯(cuò)。我的做法是優(yōu)先采用Kron歸減法把中性線消去只保留三相導(dǎo)線的等效阻抗矩陣。思路很簡(jiǎn)單先把4×4阻抗矩陣按三相導(dǎo)線和中性線分塊Z_full [ Z_abc_self Z_an Z_na Z_nn ]其中Z_abc_self是3×3的相導(dǎo)線自互阻抗分塊Z_an是3×1的中性線互阻抗列向量Z_na是它的轉(zhuǎn)置Z_nn是中性線自阻抗。消去中性線后三相導(dǎo)線的等效阻抗矩陣為Zabc_eq Z_abc_self - Z_an * inv(Z_nn) * Z_na這個(gè)公式的物理解釋很直觀中性線電流并不是零但它流經(jīng)中性線阻抗而后又通過(guò)互阻抗耦合回相導(dǎo)線最終效果可以折算成相導(dǎo)線之間的一個(gè)等效互阻抗。把中性線“吞”進(jìn)3×3矩陣后程序就不再需要單獨(dú)算中性線電壓但中性線電流引起的電壓降影響已經(jīng)被包含進(jìn)去了。不過(guò)要記住Kron化簡(jiǎn)成立的前提是中性線回路唯一。如果一條饋線有多個(gè)重復(fù)接地或多段中性線通過(guò)大地并聯(lián)簡(jiǎn)單消去中性線就不夠準(zhǔn)確了。這種情況我建議顯式建模中性線節(jié)點(diǎn)保留4×4矩陣直接把中性線也納入前推回代的計(jì)算范圍。3.3 程序里的數(shù)據(jù)組織與生成方式在Matlab里每個(gè)分支的三相阻抗矩陣我習(xí)慣用cell數(shù)組存儲(chǔ)例如Zabc_branch就是一個(gè)3×3復(fù)數(shù)矩陣對(duì)應(yīng)第b條支路的等效相分量阻抗。手頭沒(méi)有精確的Carson計(jì)算工具時(shí)可以按典型參數(shù)近似。比如一段LGJ-120導(dǎo)線參數(shù)大致如下Zaa 0.27 j0.347 Ω/km Zbb 0.27 j0.347 Ω/km Zcc 0.27 j0.35 Ω/km Zab 0.08 j0.17 Ω/km Zbc 0.08 j0.18 Ω/km Zca 0.08 j0.17 Ω/km然后根據(jù)線路長(zhǎng)度直接相乘function Zabc build_Zabc(r_self, x_self, r_mut, x_mut, length_km) Zabc diag(r_self 1j*x_self); Zabc(1,2) r_mut(1) 1j*x_mut(1); Zabc(2,1) Zabc(1,2); Zabc(2,3) r_mut(2) 1j*x_mut(2); Zabc(3,2) Zabc(2,3); Zabc(1,3) r_mut(3) 1j*x_mut(3); Zabc(3,1) Zabc(1,3); Zabc Zabc * length_km; end這里只放了一個(gè)簡(jiǎn)化版本實(shí)際工程里互阻抗最好用導(dǎo)線幾何參數(shù)計(jì)算否則算出來(lái)的中性點(diǎn)偏移和實(shí)測(cè)偏差會(huì)很明顯。但我先用典型參數(shù)把程序跑通再逐步替換精確數(shù)據(jù)這個(gè)路徑是可行的。4. Matlab程序?qū)崿F(xiàn)拓?fù)?、迭代與收斂控制4.1 拓?fù)漭斎肱c分層處理寫(xiě)前推回代程序第一步不是寫(xiě)迭代公式而是把網(wǎng)絡(luò)的父子關(guān)系理清楚。我用兩個(gè)核心數(shù)組parent(k)節(jié)點(diǎn)k的父節(jié)點(diǎn)編號(hào)根節(jié)點(diǎn)父節(jié)點(diǎn)設(shè)為0。children{k}節(jié)點(diǎn)k的所有子節(jié)點(diǎn)編號(hào)的cell數(shù)組。有這兩個(gè)結(jié)構(gòu)就可以從根節(jié)點(diǎn)做廣度優(yōu)先遍歷得到節(jié)點(diǎn)深度。示例函數(shù)如下function depth getDepth(parent, root) n length(parent); depth zeros(1, n); children cell(1, n); for k 1:n if parent(k) 0 children{parent(k)} [children{parent(k)}, k]; end end queue root; while ~isempty(queue) cur queue(1); queue(1) []; for ch children{cur} depth(ch) depth(cur) 1; queue [queue, ch]; end end end注意這里用隊(duì)列做BFS不要用find(parentcur)逐次掃描整個(gè)數(shù)組節(jié)點(diǎn)一多會(huì)非常慢。我最早寫(xiě)第一版程序就是吃了這個(gè)虧30個(gè)節(jié)點(diǎn)還能忍到100個(gè)節(jié)點(diǎn)的臺(tái)區(qū)就明顯卡頓。在迭代過(guò)程中還需要一個(gè)按深度分層的節(jié)點(diǎn)列表。簡(jiǎn)單做法是用nodesByDepthgv5xshg9wyt來(lái)存第d層的所有節(jié)點(diǎn)這樣前推和回代都可以按層遍歷邏輯清楚也不會(huì)漏節(jié)點(diǎn)。4.2 前推回代主循環(huán)核心迭代代碼我精簡(jiǎn)成一個(gè)可以對(duì)照實(shí)現(xiàn)的結(jié)構(gòu)V repmat(Vbase, n, 1); V V .* (ones(n,1) * [1 exp(-1j*2*pi/3) exp(1j*2*pi/3)]); Ibranch zeros(n, 3); for iter 1:maxIter % 前推從最深一層往上 for d maxDepth:-1:1 for k nodesByDepthgv5xshg9wyt if parent(k) 0 continue; end Iinj conj(Sload(k, :) ./ V(k, :)); Ibranch(k, :) Iinj; for ch children{k} Ibranch(k, :) Ibranch(k, :) Ibranch(ch, :); end end end % 回代從根節(jié)點(diǎn)往下 V_old V; for d 1:maxDepth for k nodesByDepthgv5xshg9wyt for ch children{k} dV (Zabc_branch{ch} * Ibranch(ch, :).).; V(ch, :) V_old(k, :) - dV; end end end % 收斂判斷 if max(abs(V(:) - V_old(:))) tol break; end end里面有幾個(gè)細(xì)節(jié)要特別說(shuō)明。Sload(k,:)是節(jié)點(diǎn)k的三相復(fù)功率向量B相沒(méi)有負(fù)荷就置0。conj(Sload ./ V)是恒功率負(fù)荷電流公式。電壓初值我用了一個(gè)1×3的復(fù)數(shù)向量A相為1∠0°B相為1∠-120°C相為1∠120°再乘到每一行。這樣比直接設(shè)成1∠0更接近真實(shí)工況迭代能少跑好幾輪?;卮臅r(shí)候子節(jié)點(diǎn)電壓更新用的是父節(jié)點(diǎn)上一輪的值V_old不是本輪已經(jīng)更新的值。這一點(diǎn)很關(guān)鍵否則網(wǎng)絡(luò)順序會(huì)讓某些節(jié)點(diǎn)的更新路徑受同一輪內(nèi)其他節(jié)點(diǎn)影響產(chǎn)生不必要的耦合誤差。雖然最終都能收斂但會(huì)降低穩(wěn)定性尤其是重載網(wǎng)絡(luò)下容易出現(xiàn)振蕩。4.3 收斂判據(jù)與迭代加速收斂判據(jù)我習(xí)慣用電壓幅值偏差最大值小于1e-6標(biāo)幺值。三相系統(tǒng)里三個(gè)相電壓都要檢查所以直接用max(abs(V(:)-V_old(:)))取全局最大值簡(jiǎn)單可靠。如果發(fā)現(xiàn)迭代很慢或震蕩可以用阻尼因子V alpha * V (1 - alpha) * V_old;alpha可以設(shè)成0.5到0.9具體數(shù)值看網(wǎng)絡(luò)重載程度。重載網(wǎng)絡(luò)alpha取小一點(diǎn)反而穩(wěn)。我一般先用0.8跑不收斂再降到0.5。另一個(gè)實(shí)用技巧是不要每次迭代都從初始平坦啟動(dòng)??梢韵扔蒙弦惠喪諗侩妷鹤鳛槌踔抵蛔鲆淮吻巴苹卮嗟鷰纵?。實(shí)際測(cè)試下來(lái)對(duì)同一網(wǎng)絡(luò)這種熱啟動(dòng)可以減少約30%的迭代次數(shù)。4.4 代碼效率與Matlab實(shí)現(xiàn)細(xì)節(jié)三相前推回代看起來(lái)簡(jiǎn)單但如果不注意實(shí)現(xiàn)細(xì)節(jié)數(shù)據(jù)一多還是會(huì)慢。預(yù)先構(gòu)建children和nodesByDepth避免在循環(huán)里用find。Ibranch和V都預(yù)先分配為zeros(n,3)不要在循環(huán)里動(dòng)態(tài)擴(kuò)展矩陣。矩陣乘法Zabc_branch{ch} * Ibranch(ch,:)會(huì)構(gòu)造臨時(shí)向量如果節(jié)點(diǎn)非常多可以考慮用循環(huán)嵌套計(jì)算三相電壓降雖然代碼長(zhǎng)一點(diǎn)但內(nèi)存訪問(wèn)更友好。用parfor并行化不同饋線時(shí)要注意Matlab的parfor里訪問(wèn)cell數(shù)組容易報(bào)錯(cuò)最好把線路阻抗矩陣改成普通三維數(shù)組或拆分變量。這些優(yōu)化點(diǎn)在前推回代里屬于“錦上添花”但如果程序要反復(fù)批量跑幾個(gè)百節(jié)點(diǎn)的臺(tái)區(qū)性能差距會(huì)非常明顯。5. 算例驗(yàn)證典型三相不平衡饋線的結(jié)果對(duì)比5.1 測(cè)試算例參數(shù)我拿一個(gè)10節(jié)點(diǎn)低壓臺(tái)區(qū)做驗(yàn)證。變壓器容量400kVA額定電壓10/0.4kV低壓側(cè)線電壓400V相電壓230V。線路全部采用LGJ-120導(dǎo)線單位長(zhǎng)度參數(shù)按上面3.3節(jié)給的數(shù)據(jù)。第1節(jié)點(diǎn)是電源節(jié)點(diǎn)后面9個(gè)節(jié)點(diǎn)帶負(fù)荷。負(fù)荷分配刻意設(shè)計(jì)成嚴(yán)重不平衡A相重載B相基本空載C相中等負(fù)載。節(jié)點(diǎn)2到10的單相負(fù)荷數(shù)據(jù)如下節(jié)點(diǎn)A相(kVA)B相(kVA)C相(kVA)225j10020j8320j8015j6418j7012j5522j9014j6615j6010j4716j6012j5812j508j3910j406j2108j305j2各段線路長(zhǎng)度依次為40m、50m、45m、55m、50m、40m、60m、45m、50m全部按低壓四線制敷設(shè)中性線重復(fù)接地一次這個(gè)算例我按Kron化簡(jiǎn)后的三相四線模型計(jì)算。5.2 三相模型與單相模型的結(jié)果對(duì)比把同一個(gè)負(fù)荷數(shù)據(jù)折算成三相總功率后用單相前推回代算一遍得到的是統(tǒng)一的“平均電壓”。三相互阻抗模型則會(huì)輸出三個(gè)相電壓。取幾個(gè)代表節(jié)點(diǎn)作對(duì)比節(jié)點(diǎn)三相模型Va(pu)三相模型Vb(pu)三相模型Vc(pu)單相模型V(pu)20.9780.9950.9880.98750.9480.9820.9690.97380.9190.9720.9480.952100.8920.9650.9370.946很明顯單相模型給出的末端電壓0.946pu看起來(lái)“勉強(qiáng)可以接受”但三相模型顯示A相末端電壓只有0.892pu這已經(jīng)是比較嚴(yán)重的低電壓?jiǎn)栴}。如果治理方案只按單相模型來(lái)設(shè)計(jì)補(bǔ)償容量和調(diào)整相別都會(huì)偏離實(shí)際需求。同時(shí)注意B相電壓也比單相模型低雖然B相本身沒(méi)有掛負(fù)荷。這就是互阻抗耦合的作用A相重載電流通過(guò)互阻抗在B相導(dǎo)線上產(chǎn)生了額外的電壓降單相模型完全無(wú)視了這個(gè)物理過(guò)程。5.3 不平衡度和網(wǎng)損分析用對(duì)稱分量法把末端節(jié)點(diǎn)三相電壓分解得到負(fù)序分量和正序分量之比約為3.1%超過(guò)GB/T 15543規(guī)定的2%限值。也就是說(shuō)這個(gè)臺(tái)區(qū)在高峰期不僅低電壓而且三相不平衡已經(jīng)超標(biāo)治理時(shí)必須做三相調(diào)補(bǔ)不能簡(jiǎn)單單相補(bǔ)無(wú)功。網(wǎng)損方面三相模型算出來(lái)的總損耗除了三根相線損耗外還包含中性線損耗。因?yàn)橹行跃€電流比較大這部分損耗并不小。單相模型因?yàn)橹挥?jì)算一相且假設(shè)三相平衡算出來(lái)的總網(wǎng)損明顯偏低。本例中三相模型總網(wǎng)損比單相模型高約9%這個(gè)差值主要就是中性線電流和互阻抗附加損耗貢獻(xiàn)的。這個(gè)結(jié)果也說(shuō)明一個(gè)道理只做單相潮流不只是電壓結(jié)果偏差連線損分析都會(huì)低估。臺(tái)區(qū)線損治理項(xiàng)目如果拿單相模型做基線很容易在改造后覺(jué)得“效果不明顯”因?yàn)榛€本身就不準(zhǔn)確。6. 調(diào)試過(guò)程中踩過(guò)的坑與經(jīng)驗(yàn)總結(jié)6.1 相別錯(cuò)位和負(fù)荷數(shù)據(jù)格式我最早調(diào)試程序時(shí)犯過(guò)最蠢的一個(gè)錯(cuò)是把負(fù)荷表里的A、B、C列順序讀反結(jié)果算出來(lái)某節(jié)點(diǎn)負(fù)序電壓特別大。排查了半天才發(fā)現(xiàn)是列沒(méi)對(duì)齊。這里給個(gè)建議程序入口處統(tǒng)一用n×3復(fù)數(shù)矩陣存儲(chǔ)負(fù)荷并且把相別標(biāo)清楚。如果輸入數(shù)據(jù)來(lái)自Excel讀進(jìn)來(lái)后先打印前幾行人工核對(duì)一遍。看似多花一分鐘實(shí)際上能省掉后面好幾個(gè)小時(shí)的排查。6.2 變壓器低壓側(cè)電壓初值不要教條前推回代并不強(qiáng)制要求根節(jié)點(diǎn)三相電壓嚴(yán)格正序。實(shí)際臺(tái)區(qū)里負(fù)序電流流過(guò)配電變壓器時(shí)低壓側(cè)出口三相電壓已經(jīng)有不小的偏移。如果把根節(jié)點(diǎn)電壓硬設(shè)成完全對(duì)稱程序前幾次迭代會(huì)強(qiáng)行把電壓“拉回對(duì)稱”這就跟現(xiàn)場(chǎng)實(shí)測(cè)對(duì)不上了。我的做法是增加一個(gè)開(kāi)關(guān)允許手動(dòng)輸入根節(jié)點(diǎn)三相電壓初值。如果現(xiàn)場(chǎng)有測(cè)量數(shù)據(jù)直接用實(shí)測(cè)值迭代很快且結(jié)果更符合實(shí)際。沒(méi)有實(shí)測(cè)數(shù)據(jù)時(shí)再退回到標(biāo)準(zhǔn)正序初值。6.3 Kron化簡(jiǎn)在重復(fù)接地場(chǎng)景下會(huì)失真前面提到過(guò)Kron化簡(jiǎn)的前提是中性線電流只走過(guò)一條明確路徑。但低壓臺(tái)區(qū)經(jīng)常有多處重復(fù)接地比如變壓器中性點(diǎn)接地、末端重復(fù)接地、用戶側(cè)保護(hù)接地。這種情況下中性線電流會(huì)分流到大地簡(jiǎn)單消去中性線的等效3×3矩陣會(huì)低估中性線回路阻抗進(jìn)而導(dǎo)致中性點(diǎn)偏移算得偏小。碰到這種臺(tái)區(qū)我建議別省事直接顯式建模中性線節(jié)點(diǎn)。程序要額外增加一層電壓變量前推回代中把中性線也當(dāng)作一根“相”來(lái)處理雖然復(fù)雜但結(jié)果更可信。6.4 不收斂時(shí)的排查順序三相前推回代不收斂原因往往比單相版本更多。我一般按這個(gè)順序排查拓?fù)涫欠穹謱诱_。重點(diǎn)看parent數(shù)組是否有環(huán)根節(jié)點(diǎn)是否唯一有沒(méi)有孤立節(jié)點(diǎn)。線路長(zhǎng)度單位是否一致。單位長(zhǎng)度阻抗是Ω/km長(zhǎng)度如果寫(xiě)成米電壓降會(huì)被放大1000倍程序必然發(fā)散。負(fù)荷功率符號(hào)是否搞反。我的算例里所有負(fù)荷都為正但程序里加了光伏后光伏節(jié)點(diǎn)可能作為負(fù)負(fù)荷處理。如果光伏注入功率大于負(fù)荷支路電流方向會(huì)翻轉(zhuǎn)再疊加互阻抗迭代曲線會(huì)來(lái)回跳。線路阻抗矩陣是否合理。曾遇到過(guò)互阻抗參數(shù)填得比自阻抗還大程序算出正的自損耗為負(fù)這種網(wǎng)絡(luò)在物理上就不成立。還有一個(gè)經(jīng)驗(yàn)把迭代過(guò)程中的最大電壓偏差打印出來(lái)觀察它是單調(diào)下降還是振蕩。如果是振蕩多半是阻尼因子太大或者初值太差如果是快速單調(diào)下降后突然反彈往往是某個(gè)節(jié)點(diǎn)負(fù)荷超過(guò)了線路傳輸極限這時(shí)候要從負(fù)荷數(shù)據(jù)找問(wèn)題。6.5 第二層級(jí)的擴(kuò)展建議前面所有討論都集中在純輻射狀低壓饋線。如果要把程序擴(kuò)展到含配電變壓器的中壓系統(tǒng)或者接入多臺(tái)分布式光伏還需要在三相潮流基礎(chǔ)上增加變壓器繞組模型和逆變器控制模型。變壓器三相不平衡時(shí)Yyn0和Dyn11繞組的中性點(diǎn)電壓處理方式不同不能只靠修改線路阻抗矩陣解決光伏逆變器通常按PQ節(jié)點(diǎn)建模仿但電壓越限時(shí)可能切換成恒電壓或恒無(wú)功模式這些都需要針對(duì)不同控制策略單獨(dú)處理。我自己目前的做法是先保證基礎(chǔ)三相前推回代程序足夠可靠把所有線路和負(fù)荷數(shù)據(jù)管理好再逐步往后端功能擴(kuò)展。主程序保持接口清晰方便把變壓器和分布式電源模型作為獨(dú)立模塊加進(jìn)去。最后再說(shuō)說(shuō)個(gè)人體會(huì)。三相不平衡潮流計(jì)算真正難的不是迭代公式而是模型細(xì)節(jié)——互阻抗歸算是否準(zhǔn)確、負(fù)荷相別是否對(duì)齊、變壓器中性點(diǎn)怎么處理。程序本身幾行代碼就能搭起來(lái)但要讓算例和現(xiàn)場(chǎng)數(shù)據(jù)對(duì)得上功夫全在線路參數(shù)和負(fù)荷獲取上。如果你打算自己復(fù)現(xiàn)建議先從一個(gè)小臺(tái)區(qū)開(kāi)始核對(duì)每個(gè)分段的三相阻抗矩陣再逐步擴(kuò)大到幾十個(gè)節(jié)點(diǎn)在沒(méi)驗(yàn)證之前盡量別直接用單相模型評(píng)估低電壓?jiǎn)栴}。我還會(huì)繼續(xù)在配電三相潮流這個(gè)方向上做一些整理后面有機(jī)會(huì)再單獨(dú)寫(xiě)一篇關(guān)于配電變壓器三相建模和含光伏接入的擴(kuò)展內(nèi)容。