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