
最近做新能源并网侧的电压波动治理仿真我把三阶广义积分器、PFC和电气弹簧三个东西放到同一个Simulink模型里跑中间绕了不少弯也把几个关键参数调顺了。今天把这套建模与仿真过程完整拆开讲一遍希望正在搞电气弹簧或者PFC仿真的朋友少踩几个坑。这个项目解决的是一个很常见的问题新能源出力波动、负载突变时并网公共点电压容易忽高忽低。电气弹簧本质上是一个串联在非关键负载上的电力电子变流器通过主动改变非关键负载的端电压让关键负载电压保持稳定。可如果前级直接挂网整流网侧电流畸变会很严重等于把谐波扔回电网。所以前面要加PFC把输入电流整成和电网电压同相的正弦波而PFC电流环又需要稳定锁相和基波提取于是我选了抗谐波、抗直流偏移能力更好的三阶广义积分器来做正交信号与相位检测。要复现这套系统Simulink是最合适的平台建模与仿真既能验证控制逻辑又不用一开始就上硬件。这套内容适合三类人一是正在做电气弹簧、动态电压恢复、电能质量方向课题的研究生二是想把PFC和并网逆变器控制串起来跑通全流程的工程师三是Simulink入门但想直接看一个完整电力电子仿真项目的小白。全程我会把原理、参数、调试顺序和踩坑点都写出来照着搭基本能跑出结果。1. 项目整体设计思路1.1 为什么把三阶广义积分器、PFC、电气弹簧做成一套先讲清楚这三样东西各自是什么定位。PFC是前级功率变换解决“从电网取电时不能产生大量谐波和无功”的问题电气弹簧是后级电压调节解决“电网电压波动时关键负载电压不能跟着抖”的问题三阶广义积分器则是连接前后级的控制核心负责在电压畸变、频率偏移的恶劣工况下稳定提取基波相位和幅值。你可能会问PFC单独做已经很成熟了电气弹簧单独做也有很多论文为什么非要放在一起因为电气弹簧不是一台独立逆变器它挂在电网侧之后本身会向电网索取非正弦、非单位功率因数的电流。如果前级没有PFC或者PFC质量不行整个系统就从一个“电压治理装置”变成了“谐波污染源”治好了关键负载的电压却把网侧电流THD搞到百分之十几这在并网要求下根本过不了关。反过来如果只做PFC不做电气弹簧你的系统只是给直流负载供电完全没体现“把非关键负载当缓冲气囊”的价值。所以这套组合的本质是PFC负责让整个装置对电网友好电气弹簧负责让关键负载感受到的电压恒定三阶广义积分器负责让控制器在恶劣电网条件下仍然看得准、锁得住。三者合在一起才构成一个完整的、能落地到实际微电网或家居供电场景的功率调节链路。对于仿真项目来说这套组合也比单做PFC或单做ES要有信息量得多很多控制环耦合的问题只有在组合模型里才会暴露出来。1.2 系统架构与能量流动整个系统的单相结构可以理解成一条能量链交流电网进来经过PFC整流器建立直流母线母线后面接一个电气弹簧逆变桥逆变桥输出端通过LC滤波器和一个耦合电感串联在非关键负载支路上。关键负载直接挂在交流母线上和非关键负载支路并联。写成文字拓扑就是这样电网交流源220Vrms50HzPFC整流级Boost电感、开关管、输出母线电容控制目标是把直流母线稳定在400V附近直流母线电容承担前后两级功率解耦吸收PFC输出和ES逆变器输入之间的瞬时功率差ES逆变级单相H桥输出经过LC滤波再串入非关键负载支路关键负载对电压敏感的设备仿真中可以用固定阻抗非关键负载电热水器、空调、加热类负载允许电压在一定范围内波动仿真中用可调阻抗能量流动的大致逻辑是电网经PFC送入母线的有功功率一部分给关键负载一部分经ES逆变器送给非关键负载。当电网电压偏高时ES逆变器输出一个反向补偿电压降低非关键负载端电压让非关键负载少吸一点功率相当于把多余的能量挡在建压之前当电网电压偏低时ES逆变器输出一个同向补偿电压抬升非关键负载端电压让非关键负载多承担一点功率从而保证关键负载的端电压不往下掉。整个过程里非关键负载就是那个“弹簧缓冲器”。这里有一个很多初次做ES仿真的人容易搞混的点前级PFC只负责母线电压稳定它不直接控制关键负载电压。关键负载电压是否稳定完全取决于ES逆变器能不能快速、准确地改变非关键负载支路的电压分配。所以调试的时候千万不要把PFC对母线电压的调节带宽设置得很高否则母线电压的动态会和ES控制环抢时间系统很容易震荡。1.3 控制目标拆解我把整个系统的控制目标拆成三个独立的闭环分别定义动态时间尺度控制环被控对象参考值典型带宽PFC电压外环直流母线电压400V10Hz-20HzPFC电流内环输入电流与电网电压同相的正弦电流指令2kHz-5kHzES电压外环关键负载电压幅值220V有效值10Hz-100HzES逆变电流内环非关键负载支路电压或电感电流由外环生成的指令1kHz-2kHz先说明一下为什么PFC电压外环带宽只能给到10到20Hz。直流母线电容是一个储能元件母线电压的响应天然就慢如果硬要提高电压环带宽电流指令会跟着一阶一阶的扰动剧烈变化结果就是网侧电流畸变。工程上通常把电压环穿越频率设计在低于两倍工频以下的某个点给基波功率波动留出滤波空间。ES电压外环带宽不建议和PFC电压外环重叠。我在调试时发现如果两者都放在50Hz到100Hz母线电压波动和关键负载电压波动会形成正反馈仿真波形直接拍起来。稳妥的做法是让PFC电压环慢一些让ES电压环略快或者反过来总之两边错开一个数量级。在这个项目里我把PFC电压外环放到15Hz左右ES关键负载电压外环放到60Hz左右实践下来动态解耦效果还可以。2. 核心原理与关键模块实现2.1 三阶广义积分器从SOGI到TOGIPFC电流环需要知道电网电压的相位常规做法是过零检测或者锁相环。过零检测在电压畸变时有延迟和误触发的毛病标准二阶广义积分器SOGI虽然能生成正交信号并锁相但在输入电压里混入直流偏移或偶次谐波时输出正交信号会带有明显的误差。这个项目里我做的是并网前端电网电压并不是理想正弦于是采用三阶广义积分器TOGI来解决这个工程问题。TOGI的一个典型结构是在SOGI基础上把误差信号再通过一个积分修正项做前馈补偿最终等效传递函数可以写成[ H(s)\frac{k\omega_0^2 s}{s^32\xi\omega_0 s^2\omega_0^2 sk\omega_0^3} ]其中(\omega_0)是基波角频率(\xi)是阻尼比(k)是增益。分母是三次多项式所以叫三阶分子带一个s保证直流分量被完全抑制。相比SOGI的典型传递函数[ \frac{v}{v}(s)\frac{k\omega_0 s}{s^2k\omega_0 s\omega_0^2} ]TOGI在频率相对固定时对输入信号中的直流偏置和低频扰动有更强的抑制能力。原因也不难理解增加积分修正项以后系统的型别更高低频段增益更大稳态误差更小。实际操作中我一般把(\xi)取0.707左右(k)取1.2到1.5。(k)太小时锁相速度慢输入电压突变后要好几个周期才跟得上(k)太大时滤波效果变差谐波会直接串到相位里。这两个参数一个管动态、一个管稳态没有万能值必须扫描验证。在Simulink里搭TOGI我习惯不用MATLAB Function封装而是直接用积分器、增益、加法器搭反馈结构这样每个信号都能拉出来看。具体做法是一路做同相输出一路做正交输出再把误差信号接到积分修正项上形成三阶反馈闭环。搭建时注意积分器的初始值不要都设成0至少要让正交信号初始值有50到100V的偏置否则仿真前几个周期能看到明显的相位收敛过程对于快速验证控制策略来说不是好事。2.2 PFC双闭环控制电流内环和电压外环怎么设计PFC部分我采用经典Boost拓扑的双闭环控制这也是工程上最常用、最容易在Simulink里验证的结构。电压外环负责控制直流母线电压输出一个电流幅值指令电流内环负责让输入电流跟踪“电流指令幅值乘以归一化正弦”的参考波形。这个正弦波形直接取自TOGI生成的基波相位等于把锁相和电流控制串在了同一条信号链上。电流内环的被控对象是Boost电感电流对占空比的传递函数在忽略电感电阻和电压扰动的前提下可以近似为[ G_i(s)\frac{V_{dc}}{sL} ]也就是一个积分加一个增益。按穿越频率(f_c2kHz)设计电感L取1mH母线电压(V_{dc}400V)那么电流环比例系数估算为[ K_p2\pi f_c\frac{L}{V_{dc}}2\pi\times2000\times\frac{0.001}{400}\approx0.0314 ]PI零点放在穿越频率的四分之一到五分之一处也就是400到500Hz左右所以积分系数[ K_iK_p\cdot 2\pi\cdot500\approx98.7 ]后面实际仿真时我会把Kp调到0.03左右、Ki调到100附近再根据波形微调。需要提醒的是这个公式是基于连续域模型的粗略估算离散化以后尤其是开关频率只有20kHz时相位裕度会比连续域下降不少。如果你发现仿真中电流有高频振荡优先降低Kp而不是调Ki。电压外环更简单但更容易调崩。我把母线电容取1000μF额定功率1kW等效负载电阻是(R_LV_{dc}^2/P160\Omega)。电压外环近似对象是电容和负载并联的惯性环节时间常数(\tauR_L C0.16s)带宽自然很低。实际仿真时我从Kp0.01、Ki5开始往上调重点观察母线电压在负载突变后的恢复时间和超调量。Kp太大会让电流指令抖动进而把网侧电流波形拉花Ki太大则会让母线电压出现低频振荡。双环之间还有一个容易被忽略的问题电流环的带宽必须远高于电压环至少在10倍以上否则内外环会互相耦合。我在这个项目里电压环穿越频率压在15Hz左右电流环放到2kHz跨了两个数量级动态基本解耦。2.3 电气弹簧主电路与工作模式电气弹簧的主电路可以看成一台串联型电力电子电压源。我用的结构是直流母线给H桥供电H桥输出经过LC低通滤波再通过一个耦合电感串入非关键负载支路。逆变器输出的电压(v_{es})叠加在非关键负载支路上改变非关键负载的实际端电压(v_{nes})。简化分析时可以认为整个非关键负载支路满足[ v_s v_{crit} v_{es} ]或者从母线上看[ v_s v_{bus_ac} \approx v_{nes} v_{es} ]当电网电压抬升时ES逆变器输出一个与母线电压方向相反的补偿量让非关键负载端电压降低从而少吸收功率。当电网电压跌落时ES逆变器输出一个正向补偿量让非关键负载端电压升高从而多吸收功率。这个“反着补偿”的特性就是电气弹簧名字的由来它像机械弹簧一样对电压波动起到缓冲作用。控制策略上我在这个项目里用的是关键负载电压外环加非关键负载电压内环。关键负载电压的幅值经过TOGI提取后与220V参考作差通过PI生成非关键负载电压的幅值指令。内环对这个幅值指令做跟踪生成H桥的SPWM调制波。对于仿真验证来说这个结构比直接做功率控制更直观也更容易理解波形之间的关系。ES逆变侧滤波参数我取L2mH、C10μF截止频率大约在[ f_{LC}\frac{1}{2\pi\sqrt{2\times10^{-3}\times10\times10^{-6}}}\approx1125Hz ]这个截止频率落在ES电压环带宽之上又能有效滤掉20kHz开关纹波。如果你发现非关键负载电压波形上有明显的高频毛刺多半是这个LC滤波器参数和开关频率匹配得不好而不是控制环的问题。3. Simulink建模全流程实操3.1 顶层模型结构与模块划分Simulink模型我不建议画成一个大杂烩所有模块堆在一个画布上后期肯定改不动。我的习惯是分三个子系统PFC整流子系统、ES功率电路子系统、控制系统子系统。控制子系统再往下一层分成PFC双环控制、TOGI锁相、ES电压控制三块。功率电路部分如果用的是Simscape Electrical直接拖通用桥、IGBT、二极管、电感、电容、交流电压源和RLC负载。如果是想跑得快一点可以不用特别精细的开关模型先搭平均模型PFC用受控电压源和受控电流源等效ES逆变器用受控电压源代替控制逻辑完全保留。这样连续域验证控制策略的时候仿真速度非常快几分钟就能跑完好几秒工频波形。等控制逻辑通了再把平均模型替换成开关模型看THD和纹波这样能够明显减少调试时间。顶层模型里还需要几个关键测量模块电网电压、电网电流、母线电压、关键负载电压、非关键负载电压。这些信号全部归一到控制系统子系统里面统一用Goto/From标签传递避免信号线在模型里绕成大蜘蛛网。Simulink允许给信号打标签标签名和Scope的标题保持一致波形出了问题能很快定位到是哪一级。3.2 PLL、坐标变换与PWM生成单相系统的锁相和三相不一样。三相可以直接用Clarke变换得到(\alpha\beta)分量再进Park变换。单相没有天然的两相正交信号所以用TOGI生成一对正交通道一路是同相输出(v_\alpha)一路是滞后90度的正交输出(v_\beta)。相位角度可以直接计算[ \theta \arctan2(v_\beta, v_\alpha) ]这个角度再经过一个低通滤波器去掉谐波和噪声引起的抖动就得到PFC电流环需要的单位正弦信号。我测试下来TOGI输出加简单反正切锁相在畸变条件下的相位误差比过零检测小得多动态响应也够用。三相扩展时把三路电网电压做了Clarke之后得到(v_\alpha)和(v_\beta)同样可以用TOGI生成带正交特性的基波正序分量再做同步旋转坐标变换。这里先按单相把逻辑跑通三相只是通道数变多控制结构是一样的。PWM生成方面PFC侧我用三角波比较方式生成Boost开关管的驱动信号三角波频率就是开关频率20kHz。ES逆变侧用SPWM载波也是20kHz加上0.5μs的死区时间。仿真里死区直接用Simulink自带的On/Off Delay模块实现。如果你用的是Simscape Electrical死区也可以写在桥路参数里但这样会影响运行速度我建议在控制侧完成死区插入功率侧直接用逻辑信号驱动开关。3.3 核心参数配置参考表下面给出一组我在仿真中实际用过的初始参数照着填基本能跑通。注意是初始参数不是最优参数实际调整步骤见第2、4章。参数数值备注电网电压有效值220V50Hz关键负载400Ω约121W非关键负载100Ω约484WBoost电感1mH电流纹波约为峰值电流的15%直流母线电容1000μF耐压按450V以上选型直流母线参考电压400V启动时建议斜坡给定开关频率20kHzPFC和ES共用控制采样周期50μs与开关周期同步TOGI阻尼比0.707动态和滤波折中TOGI增益1.2可扫描1.0-2.0PFC电流环Kp0.03按穿越频率2kHz估算PFC电流环Ki100零点约500HzPFC电压环Kp0.05带宽约15HzPFC电压环Ki20从5开始微调ES电压环Kp0.1带宽约60HzES电压环Ki5太大会引起低频振荡ES滤波电感2mH截止频率约1.1kHzES滤波电容10μF与滤波电感配合电容纹波电流可以顺手算一下。母线电容在满载1000W、母线电压400V时纹波电流有效值大约按(P/(\sqrt{2}V_{dc}))估算也就是[ I_{C,rms}\approx\frac{1000}{1.414\times400}\approx1.77A ]这个值决定了你选电容时要留多少纹波电流裕量仿真里可以通过FFT频谱分析实际验证。3.4 仿真步长、求解器与离散化设置仿真步长是电力电子仿真里最影响成败的设置。开关模型下如果你用定步长步长至少要小于开关周期的十分之一20kHz对应50μs开关周期那么定步长最好小于5μs。我在实际调试时通常先用5μs把功能跑通再改成1μs做精细波形分析。如果模型比较大、跑不动可以先开变步长用ode23tb求解器相对容差设1e-4。变步长适合快速验证控制逻辑但波形峰值的细节不如定步长稳定。控制侧的离散化设置我建议独立于功率步长。控制器的采样周期固定为50μs也就是每个开关周期更新一次占空比。这样更接近DSP实现方式后续如果要生成代码或做硬件在环模型不需要大改。在Simulink里把PI调节器配置为离散域采样时间填1/20000功率电路用连续域求解器选定步长整体仿真步长取5μs或1μs。多速率的模型运行会慢一些但更接近真实系统。还要注意如果你用了powergui模块里面有一个“离散化”按钮可以把整个电路离散化。离散化之后仿真速度会显著提升但求解器步长和功率电路步长必须保持一致否则会出现数值振荡。我在做这个项目时先用连续域跑通了控制逻辑再点离散化按钮提速最后又把控制器单独改成离散域对比波形几乎一致才放心。4. 常见问题与排查技巧实录4.1 启动瞬间母线冲击电流太大怎么办这是PFC仿真最常遇到的问题。母线电容初始电压为0上电瞬间电容相当于短路输入电流峰值可以轻松冲到额定电流的十倍以上。在实际硬件里这个冲击会触发过流保护甚至炸管子在仿真里则表现为波形瞬间尖峰巨大后续控制器根本稳不住。处理办法有三个。最简单的是把母线电容的初始电压设到接近稳态值比如320V或者更接近400V的某个值。双击电容模块在初始电压参数里填一个值仿真启动就不再需要把电容从0充满。第二个办法是给母线电压参考加斜坡从300V在0.2s内斜坡上升到400V让PFC慢慢建压。第三个办法是在交流侧串联一个软启动电阻仿真时可以手动切换旁路接触器模拟实际预充电电路。我个人在调试控制策略时最常用第一个办法因为省时间。只有在最终验证“冷启动”工况时才把初始电压改回0完整观察启动过程。如果你是新手建议先跳过启动冲击直接进入稳态工作点把控制环调稳了再去处理启动动态否则两个问题叠在一起很难排查。4.2 电流环发散、占空比饱和的排查顺序电流环发散是PFC调试里最容易碰到的“劝退”问题。现象是输入电流波形乱跳、占空比顶到上下限甚至仿真直接报错。我的排查顺序是固定的先看开环再看闭环先在连续域再离散化。第一步断开电流环给开关管一个固定占空比比如0.4观察电感电流是否稳定、母线电压是否充电到合理值。这一步验证主电路参数和功率流向没有问题。第二步接上电压外环但把电流内环拆掉用纯电感电流单环去控制这步能排除内外环互相影响。第三步先让电压环输出恒定手动给电流指令观察电流内环跟踪是否收敛。最后才把双环接上。还有一个方向性错误需要注意单相Boost PFC本质是单向升压拓扑它只能把能量从交流侧送到直流侧不能回馈。如果电气弹簧控制策略要求非关键负载在某个时刻把功率返送回母线Boost PFC会顶不上表现为母线电压不降反升。这时候要检查ES控制目标是不是让母线电压超限或者考虑把PFC换成图腾柱无桥等能双向流动的结构。仿真里这个问题不明显但波形上能看出来母线电压在ES动作时突然抬高控制环跟不上。4.3 TOGI在频率偏移和电压畸变下表现不好怎么调TOGI参数是固定基波频率(\omega_0)设计的如果你只做额定频率仿真问题不大。但如果要模拟弱电网下频率波动固定(\omega_0)会让正交信号的幅值和相位都出现偏差关键负载电压提取也会跟着飘。解决办法是给TOGI加频率自适应。也就是把TOGI输出的误差信号送进一个PI调节器直接修正内部角频率(\omega_0)。本质上是把一个固定频率的正交信号发生器变成了一个三阶锁相环。误差信号为零时内部频率和输入基波一致输入频率偏移时PI会慢慢把频率拉回来。我测试下来PI参数Kp0.5、Ki20左右频率从49Hz跳到51Hz大概两个周期就能收敛相位误差能控制在1度以内。电压畸变的测试方法也分享一下。我在交流源里叠加5%的5次谐波和0.5V的直流偏移然后对比SOGI和TOGI的输出波形。TOGI的直流抑制效果明显更好锁相角度抖动也更小。如果你想验证自己的TOGI参数是否合适可以用这个畸变工况来做基准测试比只看纯正弦情况靠谱得多。4.4 仿真跑得慢、波形毛刺多怎么取舍这套系统包含两套功率变换器和两套控制环直接用开关模型跑仿真速度会比较感人。我的建议是做成两层模型一层是平均模型专门用来调控制参数和验证策略另一层是开关模型用来出波形、算THD、分析开关纹波。平时调试用平均模型只有最后出数据的时候用开关模型。如果只是想看稳态波形和THD可以在变步长模式下把仿真时间拉到3到5秒等系统进入稳态后再取最后两三个周期做FFT分析。Simulink里powergui自带FFT分析工具可以设置基波频率、窗口周期和最大频率直接看到各次谐波的幅值百分比。注意FFT分析必须等波形完全稳定后再取点否则前面动态过程会污染频域结果。模型里大量Scope也会拖慢速度尤其是仿真时间很长时。可以把Scope改成To Workspace模块仿真结束后再统一plot。跑参数扫描时更要用这种方式不然波形窗口刷新占据大量资源。加速模式和快速加速模式在Switch Model下能用但注意有些Simscape模块可能不支持遇到报错就切回普通模式。5. 后续还能往哪个方向扩展5.1 从单相系统扩展到三相系统单相模型验证结束以后向三相扩展是顺理成章的一步。三相PFC可以换成三相维也纳结构或者三相六开关Boost控制上从单相的正弦跟踪变成dq同步旋转坐标系下的解耦控制。这时TOGI的作用更明显三相电压不平衡时三路TOGI分别生成正交分量再用对称分量法提取正序基波PFC在母线电压控制的同时还能抑制负序影响。三相电气弹簧的拓扑比单相复杂主要体现在中性点电位、不平衡负载和三次谐波处理上。建议先按三相对称负载搭模型控制逻辑从单相移植确认正序控制稳定后再加入不平衡工况。我在实际中见过很多人一上来就做三相不平衡结果波形乱成一团其实问题出在锁相环节没有把正负序分开和ES控制本身没关系。5.2 从单台ES到多台ES协调多台电气弹簧并联时每台ES都串联着不同的非关键负载。如果没有协调控制各台ES会根据本地电压误差各自调节可能在某些工作点形成环流或者互相抢功率。仿真里可以做两到三台ES并联分别设置不同的非关键负载功率观察公共母线电压波动时每台ES的动作量。协调策略可以先从最原始的均分补偿量开始逐步过渡到按功率等级分配补偿电压。这个扩展方向做起来工程量不小但对职业发展很值钱。现在微电网、虚拟电厂、低压台区治理都有类似的协调控制需求一台设备的问题往往不难难的是多台设备怎么不打架、怎么按预定策略分担。模型里把这些逻辑验证清楚后面上实验台架会省很多功夫。我在实际做这套模型时最大的体会是Simulink建模的瓶颈从来不在搭电路本身而在于你如何把控制环的带宽、参数和逻辑理顺。三阶广义积分器给了你更高的锁相精度和抗扰能力但如果PFC电压环和ES电压环没有错开带宽再好的锁相也拉不住震荡出来的波形。建议所有刚接触这个方向的朋友先把单相Boost PFC加单相ES跑通控制参数按我上面的顺序去调再考虑三相和并联扩展。这个顺序虽然看起来慢却是最快能出稳定波形的路径。