設計:MATLAB增益分析與優(yōu)化實戰(zhàn))
1. 為什么CLLC不是又一個LLC如果你之前調過LLC諧振變換器第一次接觸CLLC的時候大概率會有一個疑問這不就是把LLC的諧振電容拆成兩個、再加個變壓器電感嗎看起來拓撲幾乎一樣憑什么單獨拎出來講我最初也是這么想的直到在一個雙向儲能項目里被LLC反著跑的效率曲線狠狠教育了一頓。正向工作時效率能到97%的LLC樣機反向運行時效率直接掉到88%左右諧振腔完全不在最佳工作點上原邊開關管還容易進入硬開關狀態(tài)。這個問題的根源在于LLC的諧振網(wǎng)絡天生不對稱——它只在一個方向上具備完整的諧振特性。CLLC的核心價值就在這里它在原邊和副邊各放了一個諧振電容讓整個諧振網(wǎng)絡在正反兩個方向上呈現(xiàn)對稱的阻抗特性。這意味著無論能量從哪邊流向哪邊變換器都能工作在相近的諧振狀態(tài)效率曲線不會出現(xiàn)一邊倒的情況。對于需要雙向充放電的儲能系統(tǒng)、車載充電機OBC、以及V2G場景來說這個特性幾乎是剛需。但對稱帶來的代價是參數(shù)設計空間從二維變成了三維甚至四維。LLC你調兩個參數(shù)電感比k和品質因數(shù)Q基本就能收斂CLLC你至少要面對原邊諧振電感Lr1、副邊諧振電感Lr2、原邊諧振電容Cr1、副邊諧振電容Cr2、勵磁電感Lm這五個量而且它們之間還存在對稱性約束。手動試湊基本等于大海撈針。所以這篇內容我會按我自己的實操路徑來走先用基波近似法FHA把增益特性算清楚再基于MATLAB把參數(shù)掃描和優(yōu)化跑通最后給出可以直接復現(xiàn)的仿真文件結構和調試要點。適合已經(jīng)了解LLC基本原理、想往雙向拓撲方向深入的電源工程師也適合正在做儲能或OBC項目、需要快速評估CLLC方案可行性的朋友。提示如果你連LLC的FHA分析都還沒跑過建議先把LLC的增益曲線推導過一遍再來否則CLLC的對稱約束會讓你更暈。2. 基波分析法在CLLC上的適配與修正2.1 FHA的基本假設在CLLC中還成立嗎基波近似法的核心思路是諧振腔的輸入是一個方波電壓但真正參與諧振能量傳輸?shù)闹饕欠讲ǖ幕ǚ至扛叽沃C波被諧振腔濾掉了。這個假設在LLC上已經(jīng)被驗證過很多次精度在諧振頻率附近足夠工程使用。搬到CLLC上FHA的基本框架是成立的但有兩個地方需要特別注意。第一個是副邊諧振電容Cr2的折算問題。在正向工作時Cr2在副邊諧振腔里你需要把它折算到原邊才能統(tǒng)一分析。折算系數(shù)是n2n為變壓器匝比折算后的等效電容是Cr2/n2。反向工作時則反過來Cr1折算到副邊。這個折算過程看起來簡單但很多人在寫MATLAB代碼時把折算方向搞反了導致正反向增益曲線對不上。第二個是勵磁電感Lm的對稱性問題。在LLC里Lm只參與原邊的諧振但在CLLC中Lm同時影響兩個方向的增益特性。如果你為了正向效率把Lm調得很大反向的增益范圍可能會被壓縮到不夠用。這就是為什么CLLC的參數(shù)設計不能只盯著一個方向看。2.2 增益公式的推導與關鍵變量定義我直接給出CLLC在正向工作時的歸一化增益表達式這是后面所有MATLAB計算的基礎定義歸一化頻率 ( f_n f_s / f_{r1} )其中 ( f_{r1} 1/(2\pi\sqrt{L_{r1} C_{r1}}) ) 是原邊諧振頻率。定義電感比 ( k L_m / L_{r1} )品質因數(shù) ( Q \sqrt{L_{r1}/C_{r1}} / (n^2 R_{ac}) )其中 ( R_{ac} 8n^2 R_L / \pi^2 ) 是交流等效負載。定義電容比 ( \alpha C_{r2} / (n^2 C_{r1}) )這個參數(shù)是CLLC特有的LLC里沒有。正向增益 ( M(f_n) ) 的表達式為[ M \frac{1}{\sqrt{\left[1 \frac{1}{k}\left(1 - \frac{1}{f_n^2}\right)\right]^2 Q^2\left(f_n - \frac{1}{f_n}\right)^2 \cdot \left(1 \frac{1}{\alpha f_n^2}\right)^2}} ]這個公式比LLC的增益公式多了一個 ( \alpha ) 相關的項。當 ( \alpha \to \infty )即Cr2非常大相當于短路時公式退化為標準LLC的增益表達式。你可以用這個退化關系來驗證你的MATLAB代碼寫得對不對。反向工作時你只需要把 ( f_n ) 換成 ( 1/f_n )把 ( Q ) 換成 ( Q/\alpha )把 ( k ) 保持不變就能得到反向增益曲線。這個對稱關系是CLLC設計中最有用的性質之一。2.3 用MATLAB畫出第一組增益曲線我建議你先把下面這段代碼跑一遍建立對CLLC增益特性的直覺% CLLC正向增益曲線 - 基礎版 clear; clc; k 5; % 電感比 Lm/Lr1 Q 0.4; % 品質因數(shù) alpha 1.0; % 電容比 Cr2/(n^2*Cr1) fn linspace(0.5, 2.0, 1000); M 1 ./ sqrt( (1 (1/k).*(1 - 1./fn.^2)).^2 ... Q^2 .* (fn - 1./fn).^2 .* (1 1./(alpha.*fn.^2)).^2 ); plot(fn, M, LineWidth, 1.5); xlabel(歸一化頻率 f_n); ylabel(電壓增益 M); title(sprintf(CLLC增益曲線 k%d, Q%.1f, alpha%.1f, k, Q, alpha)); grid on; yline(1, --r, M1);跑完之后你會看到幾個關鍵現(xiàn)象增益峰值出現(xiàn)在略低于諧振頻率的位置這和LLC一致但高頻段的增益下降速度比LLC更快因為那個 ( \alpha ) 相關項在高頻時貢獻了額外的衰減。這意味著CLLC在輕載高頻段的調壓能力比LLC弱一些設計時需要把最大工作頻率留夠余量。注意如果你把alpha設成0.5或2.0再跑一遍會發(fā)現(xiàn)增益曲線的形狀變化很明顯。alpha1時正反向增益最對稱這也是大多數(shù)設計取alpha≈1的原因。3. 參數(shù)掃描哪些組合能同時滿足正反向增益需求3.1 設計指標到參數(shù)約束的映射假設你手上有一個具體的項目需求輸入電壓范圍300V-400V輸出電壓400V額定功率3.3kW要求正向和反向的增益范圍都能覆蓋0.8到1.3。這個需求翻譯成參數(shù)約束就是正向最大增益 ( M_{fwd,max} \geq 1.3 )對應最低輸入電壓300V時正向最小增益 ( M_{fwd,min} \leq 0.8 )對應最高輸入電壓400V時如果輸出需要調壓反向增益范圍同樣要覆蓋0.8到1.3諧振頻率附近效率最優(yōu)所以額定工作點應落在 ( f_n \approx 1 ) 附近這些約束不是獨立的它們通過k、Q、alpha三個參數(shù)耦合在一起。我的做法是先固定alpha1保證對稱性然后在k-Q平面上做二維掃描找出滿足所有增益約束的區(qū)域。3.2 用MATLAB做k-Q平面掃描下面這段代碼是我常用的掃描框架你可以直接改成自己的指標% k-Q平面掃描找出滿足增益約束的參數(shù)區(qū)域 clear; clc; k_vec linspace(2, 10, 50); Q_vec linspace(0.1, 1.0, 50); alpha 1.0; fn linspace(0.4, 2.5, 2000); M_max_fwd zeros(length(k_vec), length(Q_vec)); M_min_fwd zeros(length(k_vec), length(Q_vec)); for i 1:length(k_vec) for j 1:length(Q_vec) k k_vec(i); Q Q_vec(j); M 1 ./ sqrt( (1 (1/k).*(1 - 1./fn.^2)).^2 ... Q^2 .* (fn - 1./fn).^2 .* (1 1./(alpha.*fn.^2)).^2 ); M_max_fwd(i,j) max(M); M_min_fwd(i,j) min(M(fn 1)); % 只取高頻段的最小增益 end end % 找滿足 M_max1.3 且 M_min0.8 的區(qū)域 valid (M_max_fwd 1.3) (M_min_fwd 0.8); [K_grid, Q_grid] meshgrid(k_vec, Q_vec); figure; scatter(K_grid(valid), Q_grid(valid), 20, filled); xlabel(電感比 k); ylabel(品質因數(shù) Q); title(滿足增益約束的參數(shù)區(qū)域 (alpha1)); grid on;跑完這張圖你會看到一個類似香蕉形狀的可行區(qū)域。k太小3時峰值增益很高但高頻段增益壓不下去k太大8時峰值增益不夠帶不動最低輸入電壓。Q太大時整個增益曲線被壓扁Q太小時峰值增益過高但調節(jié)線性度變差。我的經(jīng)驗是k取4到6之間、Q取0.3到0.5之間這個區(qū)域通常能同時滿足增益范圍和效率要求。如果你的指標更苛刻比如增益范圍要求0.6到1.5可行區(qū)域會明顯縮小這時候就需要考慮調整變壓器匝比n來分擔一部分增益壓力。3.3 alpha不等于1時會發(fā)生什么實際設計中由于變壓器漏感和外置諧振電感的分配問題alpha很難精確等于1。我做過一組對比掃描alpha從0.7到1.4變化時正向和反向增益曲線的對稱性會明顯惡化。具體來說alpha1時反向增益范圍被壓縮alpha1時正向增益范圍被壓縮。如果你的應用對某一個方向的增益要求更高比如放電模式需要更寬的調壓范圍可以故意把alpha往那個方向偏一點。但偏太多會導致另一個方向效率下降一般建議alpha控制在0.8到1.2之間。alpha值正向增益范圍反向增益范圍對稱性評價0.70.75-1.450.85-1.15反向偏窄0.90.78-1.380.82-1.25較好1.00.80-1.350.80-1.35最佳1.10.82-1.280.78-1.40較好1.30.85-1.180.75-1.48正向偏窄這張表是我在k5、Q0.4條件下掃出來的你的具體數(shù)值會不同但趨勢是一致的。4. 從增益曲線到實際元件參數(shù)4.1 諧振頻率與元件值的確定順序很多人卡在這一步增益曲線調好了但不知道怎么變成實際的L和C。我的推薦順序是第一步確定諧振頻率 ( f_r )。這個由你的開關頻率范圍和磁性元件尺寸決定。頻率越高磁芯和電容越小但開關損耗和驅動難度上升。3.3kW級別的CLLC我一般取 ( f_r ) 在100kHz到150kHz之間。取120kHz是個比較穩(wěn)妥的選擇。第二步確定變壓器匝比n。n由額定輸入輸出電壓比決定但要注意留出增益調節(jié)余量。如果額定輸入400V、輸出400V理論n1但實際我會取n0.9到0.95讓額定工作點落在增益略大于1的位置這樣正反向都有調節(jié)空間。第三步由Q和k反推Lr1、Cr1、Lm。這里有一個容易忽略的細節(jié)Q的定義里包含了負載R_L而R_L隨工況變化。所以Q應該按額定負載計算然后驗證輕載和重載下的增益是否仍然滿足要求。具體計算流程% 從設計指標反推元件參數(shù) P_rated 3300; % 額定功率 W V_in_nom 400; % 額定輸入 V V_out 400; % 輸出 V f_r 120e3; % 諧振頻率 Hz n 0.95; % 匝比 k 5; % 電感比 Q 0.4; % 額定負載下的品質因數(shù) R_L V_out^2 / P_rated; % 等效負載電阻 R_ac 8 * n^2 * R_L / pi^2; % 交流等效電阻 Z_r R_ac * Q; % 諧振腔特征阻抗 Lr1 Z_r / (2*pi*f_r); % 原邊諧振電感 Cr1 1 / (Z_r * 2*pi*f_r); % 原邊諧振電容 Lm k * Lr1; % 勵磁電感 Cr2 Cr1 * n^2; % 副邊諧振電容 (alpha1) fprintf(Lr1 %.2f uH\n, Lr1*1e6); fprintf(Cr1 %.2f nF\n, Cr1*1e9); fprintf(Lm %.2f uH\n, Lm*1e6); fprintf(Cr2 %.2f nF\n, Cr2*1e9);按這組參數(shù)跑出來Lr1大概在30-40μH量級Cr1在50-60nF量級Lm在150-200μH量級。這些值在實際中都是可實現(xiàn)的電容用薄膜電容并聯(lián)電感用鐵氧體磁芯繞制。4.2 死區(qū)時間與勵磁電感的耦合關系這一步是CLLC設計里最容易翻車的地方。死區(qū)時間必須足夠長讓勵磁電流在死區(qū)期間完成原邊開關管結電容的充放電實現(xiàn)ZVS。但死區(qū)太長又會增加體二極管導通損耗。死區(qū)時間的下限由這個公式估算[ t_{dead,min} \frac{2 C_{oss} V_{in}}{I_{Lm,pk}} ]其中 ( C_{oss} ) 是開關管輸出電容( I_{Lm,pk} ) 是勵磁電流峰值。而 ( I_{Lm,pk} \frac{V_{in}}{4 L_m f_s} )。把這兩個式子聯(lián)立你會發(fā)現(xiàn)Lm越大勵磁電流越小需要的死區(qū)時間越長。而Lm又由k和Lr1決定。所以k不能取太大否則死區(qū)時間會長到影響效率。我實測的經(jīng)驗是k5時120kHz開關頻率下死區(qū)時間取150-250ns比較合適。如果你把k調到8以上死區(qū)可能要超過400ns這時候體二極管導通損耗會明顯增加效率至少掉0.5個點。提示死區(qū)時間確定后一定要在仿真里看開關管漏源電壓波形確認在死區(qū)結束前Vds已經(jīng)降到零。如果沒降到位說明死區(qū)不夠或者Lm太大。4.3 諧振電容的電壓應力校核CLLC有兩個諧振電容它們的電壓應力不一樣需要分別校核。原邊諧振電容Cr1的電壓應力主要由原邊諧振電流和容抗決定。在諧振頻率附近Cr1上的電壓有效值大約是[ V_{Cr1,rms} \approx I_{Lr1,rms} / (2\pi f_r C_{r1}) ]副邊諧振電容Cr2的電壓應力則與副邊電流和Cr2的容抗有關。由于Cr2通常比Cr1大n2倍它的容抗更小電壓應力相對低一些但副邊電流通常更大所以不能簡單認為Cr2的應力一定比Cr1小。我在一個3.3kW樣機上實測過Cr1用兩個100nF/630V薄膜電容并聯(lián)Cr2用兩個220nF/400V薄膜電容并聯(lián)滿載運行兩小時后電容表面溫度在45度左右留夠了余量。如果你選的電容耐壓剛好卡在計算值上建議至少留1.5倍余量因為諧振腔里還有高次諧波分量。5. MATLAB仿真文件的結構與調試要點5.1 仿真模型的模塊劃分我習慣把CLLC仿真分成四個獨立模塊這樣調試的時候可以單獨替換某一塊而不影響其他部分模塊一開環(huán)增益驗證。用固定頻率和固定占空比驅動測量輸出電壓驗證FHA計算的增益曲線是否和仿真一致。這個模塊用來確認參數(shù)計算沒錯。模塊二閉環(huán)調頻控制。加入PI調節(jié)器通過調頻實現(xiàn)穩(wěn)壓。這個模塊用來驗證動態(tài)響應和穩(wěn)定性。模塊三正反向切換。用開關切換負載和源的位置驗證雙向工作的對稱性。這個模塊用來檢查alpha是否合理。模塊四損耗與熱模型。加入開關管導通損耗和開關損耗的估算粗略評估效率。這個模塊用來做參數(shù)微調。每個模塊我都建議單獨存成一個.slx文件用MATLAB腳本統(tǒng)一調用和參數(shù)傳遞。這樣你改一個參數(shù)四個模塊可以批量重跑。5.2 仿真步長與求解器設置CLLC的仿真對步長很敏感。諧振頻率120kHz意味著諧振周期約8.3μs仿真步長至少要小于周期的1/50也就是160ns以下。我一般設最大步長50ns求解器用ode23tb或ode15s。如果你用固定步長步長設20ns比較穩(wěn)妥但仿真速度會慢。變步長求解器在諧振點附近會自動縮小步長整體效率更高。我實測同一個模型變步長比固定步長快3到5倍精度還更好。注意如果你在仿真里看到諧振電流波形有明顯的鋸齒或毛刺八成是步長太大了。先把步長減半再跑一遍如果波形變光滑了說明之前的結果不可信。5.3 從仿真到實測的偏差來源仿真跑通了不代表實測就能對得上。我踩過的坑主要有這幾個第一個坑是變壓器漏感沒算準。仿真里你設的Lr1是理想值但實際變壓器的漏感可能只有你設計值的一半剩下的要靠外置電感補。我的做法是先繞一個變壓器用LCR表測出漏感然后反推需要外置多少電感再微調Cr1保持諧振頻率不變。第二個坑是開關管輸出電容的非線性。仿真里C_oss是個固定值但實際MOSFET的C_oss隨Vds變化很大。這會導致實際死區(qū)時間和仿真對不上。解決辦法是在仿真里用電壓相關的電容模型或者干脆在實測時用示波器看Vds波形來調死區(qū)。第三個坑是諧振電容的ESL。薄膜電容雖然ESL小但在100kHz以上仍然有影響。如果你發(fā)現(xiàn)實測諧振頻率比設計值偏高很可能是電容的ESL在作怪。換用疊層電容或者多個小電容并聯(lián)可以緩解。6. 參數(shù)優(yōu)化的幾個實戰(zhàn)方向6.1 效率最優(yōu) vs 增益范圍最優(yōu)的權衡這兩個目標在CLLC里往往是矛盾的。效率最優(yōu)通常要求k小、Q小這樣諧振電流小、環(huán)流損耗低但增益范圍最優(yōu)要求k大、Q適中這樣峰值增益夠高、調壓范圍夠寬。我的處理方式是先滿足增益范圍約束再在可行區(qū)域內找效率最優(yōu)點。具體做法是在第3節(jié)掃出來的可行區(qū)域里對每個(k,Q)組合估算諧振電流有效值和開關管損耗選總損耗最小的那個點。估算諧振電流有效值的簡化公式[ I_{Lr1,rms} \approx \frac{V_{out}}{n \cdot R_{ac}} \cdot \sqrt{1 \left(\frac{\pi^2}{8} \cdot \frac{1}{Q \cdot f_n}\right)^2} ]這個公式在諧振頻率附近精度還可以偏離諧振點越遠誤差越大。但用來做參數(shù)篩選足夠了。6.2 用優(yōu)化工具箱做自動尋優(yōu)如果你有MATLAB的Optimization Toolbox可以直接用fmincon做約束優(yōu)化。目標函數(shù)設為總損耗約束設為增益范圍、死區(qū)時間、電容電壓應力等。% 用fmincon做CLLC參數(shù)優(yōu)化 (需要Optimization Toolbox) % 變量: x [k, Q, alpha] x0 [5, 0.4, 1.0]; lb [3, 0.2, 0.8]; ub [8, 0.8, 1.2]; % 目標函數(shù): 估算總損耗 (簡化版) objfun (x) estimate_loss(x(1), x(2), x(3)); % 非線性約束: 增益范圍、死區(qū)時間等 nonlcon (x) gain_constraints(x(1), x(2), x(3)); options optimoptions(fmincon, Display, iter, ... Algorithm, sqp, MaxIterations, 100); [x_opt, fval] fmincon(objfun, x0, [], [], [], [], lb, ub, nonlcon, options); fprintf(最優(yōu)參數(shù): k%.2f, Q%.2f, alpha%.2f\n, x_opt(1), x_opt(2), x_opt(3));estimate_loss和gain_constraints這兩個函數(shù)需要你自己根據(jù)前面的公式寫。我建議先把目標函數(shù)寫簡單一點只考慮導通損耗和環(huán)流損耗跑通之后再逐步加入開關損耗和磁芯損耗。6.3 優(yōu)化結果的工程化修正優(yōu)化工具箱給出的結果往往是連續(xù)值比如k4.73、Q0.38。但實際元件只能取標準值所以你需要做工程化修正。我的修正原則是k往小取整Q往大取整。因為k小一點增益范圍更寬有余量Q大一點諧振電流更小效率更好。比如優(yōu)化結果k4.73我取k4.5Q0.38我取Q0.4。修正后再跑一遍增益驗證確認所有約束仍然滿足。修正后的參數(shù)還要做一輪蒙特卡洛分析考慮元件容差電感±10%、電容±5%對增益范圍的影響。如果最壞情況下增益仍然夠用這組參數(shù)就可以定稿了。7. 我踩過的三個典型坑7.1 正反向增益曲線對不上第一次做CLLC的時候我按正向增益算好參數(shù)仿真正向沒問題一切到反向就發(fā)現(xiàn)增益范圍完全不夠。排查了半天發(fā)現(xiàn)是副邊諧振電容折算方向搞反了。正向分析時Cr2要除以n2折算到原邊反向分析時Cr1要乘以n2折算到副邊。我在代碼里把兩個方向用了同一個折算系數(shù)導致反向增益算錯了。這個坑的教訓是每次切換方向都要重新檢查折算關系。最好在代碼里把正向和反向的折算寫成兩個獨立函數(shù)不要共用。7.2 輕載時增益失控有一版參數(shù)在滿載時表現(xiàn)很好但10%輕載時輸出電壓開始飄調頻調到最高頻率也壓不住。原因是輕載時Q很小增益曲線的峰值變得非常高而且峰值位置向低頻偏移。我的最大工作頻率設得不夠高導致輕載時進入了增益上升區(qū)。解決辦法有兩個一是提高最大工作頻率讓輕載時也能工作在增益下降區(qū)二是在輕載時切換到間歇模式burst mode跳過調頻控制。我最終選了第一種把最大頻率從1.5倍諧振頻率提高到2倍問題解決。7.3 死區(qū)時間與效率的矛盾前面提到死區(qū)時間要足夠長才能實現(xiàn)ZVS但死區(qū)太長會增加體二極管導通損耗。我在一個項目里為了確保ZVS把死區(qū)設到了350ns結果滿載效率比預期低了1.2個點。后來用示波器仔細看Vds波形發(fā)現(xiàn)250ns其實就夠了之前是仿真模型里C_oss設大了。這個坑的教訓是死區(qū)時間不要只靠仿真定一定要實測波形確認。仿真里的C_oss通常偏大導致算出來的死區(qū)偏保守。8. 仿真文件的使用說明與擴展方向我整理的MATLAB仿真文件包含四個部分增益計算腳本、參數(shù)掃描腳本、Simulink主模型、以及一個參數(shù)配置腳本。你拿到之后只需要改參數(shù)配置腳本里的設計指標其他三個部分會自動適配。使用順序建議是先跑增益計算腳本確認FHA公式?jīng)]問題再跑參數(shù)掃描腳本找到可行區(qū)域然后把選定的參數(shù)填入配置腳本最后打開Simulink模型跑閉環(huán)仿真。如果你只想快速驗證一組參數(shù)直接改配置腳本跑Simulink就行。這個模型后續(xù)還可以往幾個方向擴展加入磁集成變壓器模型來評估漏感分配的影響加入熱網(wǎng)絡模型來估算穩(wěn)態(tài)溫升把調頻控制換成移相調頻混合控制來拓寬軟開關范圍。我自己正在做的是把CLLC和三相交錯結構結合起來用三個CLLC單元錯相120度運行進一步降低輸入電流紋波。這個方向對中大功率儲能PCS很有吸引力等跑出完整結果再單獨整理一篇。