仿真實戰(zhàn):柴油機+光伏+儲能的Simulink建模與并離網(wǎng)切換)
做微電網(wǎng)仿真這行當繞不開一個場景孤島運行時誰來撐住電壓和頻率。很多人一上來就搭光伏、配儲能但真正在工程里兜底的往往是那臺不起眼的柴油發(fā)電機。去年我做了一個帶柴油發(fā)電機、光伏和儲能的微電網(wǎng)Matlab Simulink仿真項目前后折騰了快兩個月把從建模到并離網(wǎng)切換的坑基本都踩了一遍。這篇就聊聊整個搭建過程以及那些文檔上看不到的細節(jié)希望能幫到正在用Matlab/Simulink做電力仿真的朋友。這個項目解決的問題很實際一個偏遠獨立供電系統(tǒng)白天光伏出力高、晚上只有柴油機撐著還要應付大負荷突投突切。直接拿實物試成本高、風險大所以先建一套完整的Simulink仿真平臺把柴油發(fā)電機組、光伏陣列、儲能電池和負荷管理全塞進去跑通各種工況。無論你是寫畢業(yè)論文、做課題預研還是在工程現(xiàn)場想驗證控制策略這套思路都能直接套用。1. 項目整體設計與仿真方案選型1.1 仿真對象一個典型的“柴油機光伏儲能”微電網(wǎng)我搭的仿真系統(tǒng)拓撲很經(jīng)典母線電壓取400V頻率50Hz容量按一個獨立臺區(qū)級別設計。柴油發(fā)電機是主電源額定功率180kW。光伏陣列接了100kW因為當?shù)厝照諚l件不錯白天主要靠它帶負荷。儲能系統(tǒng)配了200kWh的磷酸鐵鋰電池通過雙向DC-DC和雙向逆變器掛到交流母線上主要做削峰填谷和模式切換時的緩沖。負荷側分兩塊一塊是固定基礎負荷大概80kW另一塊是可變負荷用來模擬生產(chǎn)設備啟停、照明分區(qū)投切這些。為什么這么配因為微電網(wǎng)仿真的核心矛盾是電源的響應速度差異。柴油機有機械慣性調速器響應要幾百毫秒到一秒光伏是電力電子器件毫秒級就能出變化但隨機性大儲能介于兩者之間既能吸能也能放能但容量有限。把這三類特性完全不同的電源放在一個母線上仿真的難點就不是“各自怎么工作”而是“它們協(xié)同工作時母線電壓和頻率怎么保持穩(wěn)定”。所以在設計階段我就定了一個原則仿真平臺必須支持兩種典型工況一是并網(wǎng)運行外面有大電網(wǎng)撐著電源們按指令出力二是孤島運行柴油機做V/f主站光伏和儲能做P/Q從站。這兩種工況的控制目標完全不同切換邏輯也是后面最容易出bug的地方。1.2 選型邏輯為什么Simulink是干這活的最優(yōu)解很多人會問這種系統(tǒng)能不能用PSCAD、DIgSILENT或者純Python寫答案是都能但我最后還是選了Simulink原因有幾個很實際。首先是電氣模型底子厚。Simulink里的Simscape Electrical Specialized Power Systems庫老版本叫SimPowerSystems直接提供了同步電機、電力電子變換器、光伏陣列、電池等大量現(xiàn)成模型。柴油發(fā)電機的核心——同步發(fā)電機不需要自己推派克方程選好參數(shù)直接拖出來用省了非常多時間。其次是控制邏輯好搭。微電網(wǎng)仿真里最花時間的其實是控制部分比如調速器的PID、儲能的恒壓恒頻控制、模式切換的狀態(tài)機。Simulink里既可以用連續(xù)模塊搭也可以用Stateflow做邏輯跳轉調試時還能隨時停在哪一拍看中間量這對排查問題來說太重要了。第三是數(shù)據(jù)后處理順手。仿真完的波形直接在Scope里看也可以導出到工作區(qū)用腳本畫圖、算THD總諧波畸變率。我習慣用腳本跑批量工況比如負荷從50%突增到110%光伏從100kW驟降到20kW這些場景寫個循環(huán)自動跑輸出指標匯總表比在圖形界面里手動點效率高得多。當然Simulink也有煩人的地方最典型的就是仿真速度和收斂性。模型一大、開關一多仿真步長一掉到微秒級跑一個10秒的工況可能要吃一頓飯。這個后面專門講。但綜合來看對一個以控制策略驗證為主、需要反復調參的項目Simulink仍然是最順手的工具。2. 柴油發(fā)電機組的模型搭建與參數(shù)整定2.1 柴油機原動機模型調速器是關鍵柴油發(fā)電機在微電網(wǎng)里的角色說白了就一句話在孤島模式下當“定海神針”母線電壓和頻率全靠它穩(wěn)住。這就要從兩個層面建模第一層是原動機柴油機本體第二層是同步發(fā)電機。柴油機本體的Simulink模型不用搞得太復雜。我見過有些人非要建多缸燃燒模型、曲軸扭矩脈動模型說實話在微電網(wǎng)這個尺度下純屬給自己找麻煩。我們關心的是軸上輸出機械功率怎么隨轉速和油門變化所以用一個帶慣性的轉速閉環(huán)就夠了。標準做法是參考轉速50Hz對應1500rpm如果是4極電機減去實際轉速誤差進調速器調速器輸出油門開度油門開度決定機械扭矩扭矩作用在慣性環(huán)節(jié)上產(chǎn)生轉速變化。調速器模型我用的Simulink里現(xiàn)成的PID Controller再加一階慣性限幅核心參數(shù)是比例系數(shù)和積分時間常數(shù)。這里有個參數(shù)整定的經(jīng)驗柴油機調速器的比例系數(shù)不能調太大。我一開始圖省事直接把Kp放到8結果轉速響應是快了但系統(tǒng)出現(xiàn)了持續(xù)振蕩母線頻率在49.8Hz到50.2Hz之間來回抖怎么都穩(wěn)不下來。后來把Kp降到2.5Ki設成1.2微分項干脆不用振蕩才消掉。道理也簡單柴油機本身的機械慣性大執(zhí)行機構油門也有響應延遲你把比例放大相當于讓一個腿腳不利索的人跑得特別快必然摔倒。2.2 同步發(fā)電機與勵磁系統(tǒng)電網(wǎng)電壓的“定海神針”同步發(fā)電機這一塊Simscape庫里提供了好幾檔模型。最精確的是全階模型能看到定子三相磁鏈、轉子阻尼繞組的詳細響應但仿真速度慢。我做能量管理層面的研究用的是“Simplified Synchronous Machine”模型它把電氣部分等效成一個受控電壓源加內部阻抗參數(shù)少仿真快電壓調節(jié)特性足夠真實。關鍵是勵磁系統(tǒng)必須配上。同步機的輸出電壓不是自動穩(wěn)定的負載一加重電樞反應會把電壓往下拉。勵磁系統(tǒng)的作用就是感知端電壓偏差調節(jié)勵磁電流把電壓頂回去。我在模型里用了一個帶電壓閉環(huán)的簡化勵磁器參考電壓設為400V輸出電壓經(jīng)過一階慣性反饋PI控制器計算勵磁電壓。這里容易踩的坑是初始電壓對不齊。同步電機模型初始化時如果端電壓和母線其他部分的電壓相位、幅值不一致仿真一開始就會“哐”一下來個巨大的電流沖擊甚至直接報錯。解決辦法是在Simulink的Powergui模塊里做load flow初始化或者在Configuration Parameters里把“Start simulation from steady state”選項勾上。這個我后面在調試章節(jié)還會展開。2.3 關鍵參數(shù)計算從銘牌到仿真模型很多人拿到一臺真實的柴油發(fā)電機組銘牌不知道如何轉成模型參數(shù)。我總結了一套最簡單可行的路線。先看額定參數(shù)額定功率180kW線電壓400V頻率50Hz功率因數(shù)0.8滯后。同步電機模型里要填額定視在功率所以要用P除以功率因數(shù)得到225kVA。極對數(shù)按1500rpm算是2對極。再算電機內部阻抗參數(shù)直軸同步電抗Xd、交軸同步電抗Xq、直軸暫態(tài)電抗Xd、直軸次暫態(tài)電抗Xd。這些參數(shù)如果在銘牌上找不到最簡單的做法是參考同容量等級柴油發(fā)電機的典型值Xd一般在1.5~2.0puXd在0.2~0.3puXd在0.12~0.18pu。我用的是Xd1.8Xd0.25Xd0.15效果很好。時間常數(shù)方面Tdo直軸開路暫態(tài)時間常數(shù)取2.5秒Tdo取0.03秒這些值決定了短路電流衰減速度對故障仿真比較重要。發(fā)電機原動力的轉動慣量是決定頻率動態(tài)響應的核心參數(shù)。這個最好按實際查表查不到的情況下可以估算。我用的經(jīng)驗公式是慣性時間常數(shù)H2秒左右換算到Simulink模型里就是轉動慣量J單位是kg·m2公式是J2H·S_base/ω_base2。算下來大約6.5kg·m2。這個參數(shù)如果給太小負荷一突變頻率就像跳水一樣掉下去給太大頻率響應慢吞吞調頻策略驗證就沒意義。3. 光伏與儲能子系統(tǒng)的接入細節(jié)3.1 光伏陣列與MPPT控制光伏陣列模型我直接用Simulink自帶的PV Array模塊它基于單二極管五參數(shù)模型只需要填組串配置和組件參數(shù)。我選了某款常見250W組件開路電壓37.5V短路電流8.85A最大功率點電壓30.2V最大功率點電流8.28A。串并聯(lián)方式是16串、25并算下來直流側額定電壓約483V額定功率100kW正好接一個Boost電路升壓后再逆變。MPPT控制用的最經(jīng)典的擾動觀察法PO。實現(xiàn)起來不復雜每隔一個固定周期給占空比加一個小擾動比較擾動前后功率大小功率變大就繼續(xù)同方向功率變小就反向。這里有一個仿真參數(shù)需要注意——擾動周期。我是用離散控制做的采樣周期設成0.01秒擾動步長0.005。如果采樣周期太短系統(tǒng)還沒響應完就又擾動一次直流電壓會上下亂竄太長則跟蹤速度慢光照突變時光伏反應不過來。光照突變這個場景特別值得測。我故意在仿真第5秒時把光照從1000W/m2瞬間降到400W/m2PV陣列輸出功率直接從100kW跌到接近40kW。這時候如果柴油機沒有足夠的備用容量頂上母線頻率就會往下掉。MPPT本身只管讓光伏工作在最大功率點它不會考慮系統(tǒng)頻率所以后面必須靠儲能或者柴油機去補功率缺口。3.2 儲能PCS的雙向控制儲能系統(tǒng)是整個微電網(wǎng)里的“萬能膠”充電、放電、調頻、調壓都能干但前提是PCS儲能變流器控制策略得寫對。儲能電池模型我用了Simulink的Battery模塊選鋰離子類型額定電壓480V額定容量200Ah。注意電池模型需要設置初始SOC荷電狀態(tài)我設為80%這樣放電能撐久一點充電也不會很快頂?shù)?00%觸發(fā)保護。電池接雙向DC-DC變換器再經(jīng)過三相逆變器并網(wǎng)。雙向DC-DC的控制分兩套Buck模式充電和Boost模式放電用PI控制器管電流電流參考值由上層能量管理模塊下發(fā)給。這個電流方向控制必須跟SOC配合好——我踩過的一個坑就是SOC已經(jīng)低于20%儲能還在傻乎乎地放電結果母線電壓崩了。后來我在控制回路里加了SOC限值邏輯低于20%禁止放高于90%禁止充。三相逆變器這一層控制策略取決于系統(tǒng)在什么模式下運行。并網(wǎng)模式下用PQ控制給定有功無功參考值孤島模式下如果儲能作為主站就要切到V/f控制目的是把母線電壓和頻率拉回額定值。在Simulink里做這種模式切換我推薦用Stateflow寫個簡單的模式狀態(tài)機別用一堆Switch模塊堆否則邏輯混亂起來你根本查不清。4. 多能源協(xié)調控制策略的實現(xiàn)4.1 主從控制柴油機定頻定壓我仿真里設定的孤島運行主策略是主從控制。柴油發(fā)電機組作為主電源承擔V/f控制也就是把母線電壓穩(wěn)定在400V、頻率穩(wěn)定在50Hz。其它電源——光伏和儲能——作為從電源根據(jù)調度指令輸出指定的有功和無功。這種策略的好處是控制邏輯清晰系統(tǒng)穩(wěn)定性好非常適合中小容量微電網(wǎng)。主從控制的關鍵在于柴油機的備用容量。我設定柴油機額定180kW正常工作時帶基礎負荷加一部分可變負荷大概在120kW左右留了60kW左右的裕量。這60kW就是為了應對光伏出力突然下降或負荷突增的。仿真時我專門跑了一個場景光伏100kW滿發(fā)時柴油機只出30kW下一秒光伏降到40kW柴油機調速器檢測到頻率下跌在1秒內把出力拉到了90kW。那個過渡過程很能說明問題——母線頻率最低掉到了49.2Hz持續(xù)了大約0.5秒但最終穩(wěn)定在49.8Hz以上線路沒跳閘。這說明調速器參數(shù)和備用容量的匹配是合理的。4.2 下垂控制多機并聯(lián)不掉鏈子如果整個微電網(wǎng)里有兩臺及以上的柴油發(fā)電機并聯(lián)或者想讓儲能也參與頻率調節(jié)就不能再用單一主從控制得上下垂控制。下垂控制的基本思想非常樸素——模仿同步發(fā)電機的靜態(tài)調頻特性系統(tǒng)頻率下降說明有功功率缺額各臺機組按比例自動多出力系統(tǒng)電壓下降說明無功缺額各臺機組按比例多出無功。用公式寫就是f f0 - m×(P - P0)U U0 - n×(Q - Q0)。下垂系數(shù)的設計有明確方法我給出一個實際算例。設兩套柴油發(fā)電機組每組額定有功100kW。假設允許系統(tǒng)頻率在空載到滿載之間變化0.5Hz那么有功下垂系數(shù)m Δf/P_max 0.5Hz/100kW 0.005Hz/kW。同理如果允許電壓變化5%20V無功下垂系數(shù)n 20V/50kvar 0.4V/kvar。這兩個系數(shù)直接填到控制模塊的下垂特性里。在Simulink里實現(xiàn)下垂控制時我建議先把需要的有功P和無功Q算出來用瞬時功率經(jīng)過低通濾波器得到平均值再疊加到電壓和頻率參考值上。低通濾波器的截止頻率一般取10~20Hz既濾掉了紋波又保留了功率調節(jié)的動態(tài)信息。下垂直觀地理解就是多臺機組之間通過頻率自然分配負荷負荷重的機組頻率低一點負荷輕的機組頻率高一點最終穩(wěn)定在一個公共頻率上誰也不搶功。4.3 并離網(wǎng)切換與負荷投切邏輯微電網(wǎng)最危險的過渡過程就是并網(wǎng)轉孤島因為大電網(wǎng)突然斷開母線有功功率出現(xiàn)巨大缺額如果不快速切除負荷或讓儲能頂上整個系統(tǒng)就崩潰了。仿真里我做了一個簡化的大電網(wǎng)模型一個三相理想電壓源串聯(lián)線路阻抗通過一個斷路器Three-Phase Breaker接到微電網(wǎng)母線。并網(wǎng)狀態(tài)時斷路器閉合微電網(wǎng)母線電壓被電網(wǎng)鉗住柴油機和儲能都按PQ控制出力。斷網(wǎng)時刻我把斷路器設置成在t8秒斷開。這里控制策略的切換必須提前考慮。我的做法是用Stateflow做狀態(tài)機檢測到斷路器狀態(tài)變位后立即給柴油機發(fā)切換指令從PQ控制切到V/f控制。理論上需要同時讓儲能也從PQ切到V/f或者保持PQ并繼續(xù)支撐功率。但我在實際仿真中發(fā)現(xiàn)如果柴油機切V/f的時間稍微滯后比如100毫秒以上母線電壓就會有個明顯的凹陷負荷重的區(qū)域可能觸發(fā)欠壓保護。解決辦法是讓儲能永遠保持電壓源模式V/f而柴油機用電壓-頻率下垂跟它并聯(lián)這樣電網(wǎng)斷開時不需要任何通訊和切換時間儲能一瞬間就接管了電壓。這個方案我用一個場景驗證過并網(wǎng)運行光伏100kW、負荷150kW功率差額由電網(wǎng)補。t8秒電網(wǎng)斷開儲能瞬時由充電轉為放電把母線電壓拉回398V以上頻率最低49.5Hz后恢復到49.9Hz整個過程不到1秒鐘比切換法平滑得多。負荷投切邏輯也值得單獨說。我設計了四級非重要負荷當系統(tǒng)頻率低于49.5Hz時按輪次切除高于50.2Hz時按輪次恢復。頻率測量用的是PLL鎖相環(huán)加低通濾波測量延遲大概30ms對于秒級的負荷投切控制完全夠用。這套低頻減載邏輯用代碼寫也行但用Stateflow畫狀態(tài)圖更直觀調試的時候還能一步步看狀態(tài)跳轉條件有沒有滿足。5. 調試中的常見問題與排查實錄5.1 仿真一步都跑不起來不收斂怎么破Simulink電力電子仿真最氣人的不是結果不對而是第一步就報“Simulation stopped because the model is not converging”或者“Derivative of state is infinite”。這類問題我總結下來按出現(xiàn)頻率排序有四個原因。第一代數(shù)環(huán)??刂齐娐防锶绻敵鲋苯臃答伒捷斎霙]有經(jīng)過任何延遲Simulink解算時會形成代數(shù)環(huán)。解決辦法很簡單在反饋路徑上加一個Memory模塊或者用離散采樣器把連續(xù)信號離散化。我系統(tǒng)的逆變器電流環(huán)一開始就出現(xiàn)過代數(shù)環(huán)警告加了Memory后立刻消失。第二微分時間步長太大。我跑低壓微電網(wǎng)時電力電子開關頻率是10kHz如果用變步長求解器還給一個特別松的誤差容限仿真會在PWM開關時刻反復試步。我的經(jīng)驗是把誤差容限設成1e-4最大步長限制在20微秒雖然慢一點但基本能收斂。第三理想開關模型導致的高頻振蕩。Simulink里的理想開關在切換瞬間di/dt模型很夸張容易引發(fā)數(shù)值振蕩。建議把IGBT和二極管換成帶內阻的詳細模型或者給開關并一個很小的RC緩沖電路比如1微法電容加10歐姆電阻代價是仿真速度慢一點點但穩(wěn)定性提升明顯。第四初始條件不一致。同步電機模型初始化不對開機瞬間直接飛車。解決方法是先用Powergui里的“Load Flow”工具設置好初始電壓和功率流向再跑仿真。這個操作對于含多臺電機的模型幾乎是必須的。5.2 波形畸變與振蕩參數(shù)整定經(jīng)驗仿真能跑起來只是第一步波形好不好看才是真正考驗功夫的地方。我調試過程中印象最深的是兩個問題。第一個是直流母線電壓振蕩。光伏Boost輸出的直流母線設定是800V但仿真剛開始的幾秒內直流電壓在760V到840V之間來回沖后續(xù)慢慢衰減到正常。原因是Boost啟動時MPPT初始占空比太激進直接把功率從零拉到最大。后來我在MPPT輸出端加了一個速率限制器讓功率參考值按每秒50kW的速率爬升啟動電流峰值就變得非常平緩了。第二個是逆變器輸出電流THD超標。我用FFT分析工具看電流諧波發(fā)現(xiàn)5次和7次諧波明顯偏高。根源是LCL濾波器的諧振峰沒有被阻尼。我最開始只用了純電感和電容沒有裝阻尼電阻結果在諧振頻率附近放大作用明顯。加了一個串在電容支路的2歐姆阻尼電阻后THD從8%降到了3%以內。當然你會說阻尼電阻增加損耗在仿真里我們主要看動態(tài)特性這個損耗可以接受如果做效率分析再換有源阻尼。5.3 模型跑得慢、還想做快速迭代優(yōu)化方向仿真精度和仿真速度是一對永遠的矛盾。我的經(jīng)驗是在做不同目標的研究時采用分檔建模的策略。如果搞策略驗證比如能量管理、模式切換、負荷減載把詳細的同步電機模型降級為帶功頻特性的受控電壓源模型把光伏逆變器的開關細節(jié)去掉用平均值模型替代。這樣仿真速度能提升一個數(shù)量級跑一個30秒的工況只需要幾十秒。如果搞諧波分析、故障電流計算那就必須保留詳細開關模型和完整電機模型哪怕一個1秒的故障過程要跑20分鐘也認了。如果還想進一步加速可以考慮把整個模型離散化設置一個固定的仿真步長比如50微秒并且把PWM載波頻率同步成步長的整數(shù)倍。這樣雖然變步長求解器的自適應能力沒了但仿真穩(wěn)定、可預測還能配合Simulink Coder生成C代碼。這是我個人比較推薦的一個方向——模型不只是用來出波形后面要部署到硬件在環(huán)HIL平臺或者做成半實物仿真的時候離散化和代碼生成能力是硬門檻。說到代碼生成還有一個實用場景把整定好的控制算法比如儲能PCS的電流環(huán)、MPPT算法轉成C代碼燒到DSP或者FPGA里。Simulink Coder和Embedded Coder都支持。我自己試過把一條控制鏈路的離散模型生成嵌入式代碼只要在配置里選好目標硬件和求解器類型必須用離散生成的代碼是可讀的配合手寫的外設驅動就能跑起來。但要注意不是所有Simulink模塊都支持代碼生成特別是一些畫圖框、數(shù)據(jù)示波相關模塊要及時移除。調試中的另外一個實用小工具是External Mode外部模式。如果你的Target支持它可以在PC上實時調整模型參數(shù)然后把數(shù)據(jù)通過串口或以太網(wǎng)傳回來。我在調硬件在環(huán)平臺時用過一次在線調PID參數(shù)比改代碼燒錄方便太多。雖然這個功能多用于嵌入式硬件但提前建模時就保留好接口會讓后續(xù)工作省很多事。最后再分享一個我在實際調試過程中的體會做微電網(wǎng)仿真狀態(tài)太多、環(huán)節(jié)太多不要指望一次搭完就能一次跑通。我的習慣是先把每個子系統(tǒng)單獨跑瞬態(tài)確認各電源獨立工作正常后再串起來做協(xié)調運行。這就像拼積木一塊沒拼牢后續(xù)查問題的時間會成倍增加。建議你也把模型版本管理起來每個階段跑通的版本存快照調壞了能回退。仿真這件事最怕的不是模型復雜而是你連問題是從哪一圈開始出的都說不清。