简介:面向电力系统储能逆变器研究者的改进虚拟同步发电机(VSG)控制专题资料。针对高比例新能源电网中多机并联储能系统的协调控制难题,重点解决线路阻抗差异导致的无功分配不均,以及电池SOC差异造成的有功分配不均与寿命衰减问题。资料提出自适应虚拟阻抗与SOC均衡控制相结合的改进策略,通过动态调整虚拟阻抗补偿线路差异、依据SOC偏差调节有功下垂系数,使各逆变器按容量合理分配功率,并以MATLAB/Simulink仿真验证了改善效果。内容共1个PDF文件,包体仅848KB,却涵盖完整的控制原理框图、关键模块实现方法、Simulink模型搭建步骤及详细可运行代码注解,便于快速复现研究结果;同时附有参考文献梳理,为深入拓展提供路线。已有119人学习下载,适合具备电力电子与控制理论基础、从事储能系统、逆变器控制及并网稳定性研究的研发人员和学者参考。
1. 构网型储能逆变器为什么卡在“无功分配不均”和“SOC失衡”这两道坎上
一个 10kV 工商业储能项目,6 台 500kW 储能变流器并联接入弱配电网,调试当天就出现 3 号机无功出力异常偏低、5 号机几乎承担了全部无功;下午 2 号机直流侧电池 SOC 触底,整组被迫退出运行。这种场景在构网型储能项目里并不少见:每台逆变器都在努力维持电压和频率,但彼此之间缺少显式的功率协调,偏差在并联环流里不断累积,最终表现为无功分配比例失控和电池过放/过充。
构网型(grid-forming)控制的本质是让逆变器对外呈现“电压源”特性,在控制层面模仿同步发电机的惯量与阻尼,这本身并不复杂。可一旦并联规模上来,两个问题就会立刻浮出水面:第一,无功功率按线路阻抗和下垂系数分配,而不是按容量比例分配;第二,直流侧电池 SOC 不一致时,有功指令没有与储能状态联动,电芯循环寿命被严重拉低。本文从“为什么失配”讲起,给出一个可复现的改进虚拟同步发电机(VSG)控制方案,附带能直接在 Simulink 中跑通的核心代码与参数,适合做构网型储电并网仿真的研究生,以及正在现场调并联变流器的工程师。
2. 虚拟同步发电机的控制原理与并联构网型逆变器的功率分配机制
2.1 VSG 模仿的不是输出电压,而是同步发电机的惯性与阻尼
同步发电机的转子运动方程是 VSG 控制的理论源头。传统逆变器控制只输出一个固定的电压幅值和相位,而 VSG 控制器把有功功率差值通过转子运动方程积分出相位,把无功功率差值通过励磁调节折算成电压幅值偏移,从而让逆变器对外表现出“转子惯性”和“阻尼”这两个特征量。
转子运动方程写为:
$$J\frac{d\omega}{dt} = P_m - P_e - D(\omega - \omega_n)$$
其中 $J$ 是虚拟转动惯量,$D$ 是阻尼系数,$P_m$ 是虚拟机械功率(由有功指令给定),$P_e$ 是实测电磁功率,$\omega_n$ 是额定角频率。频率偏差对时间的积分就是逆变器输出的相位:
$$\theta = \int \omega , dt$$
无功-电压环节则模拟发电机的励磁调压过程:
$$E = E_0 + n(Q_{ref} - Q)$$
$E_0$ 是空载电压幅值,$n$ 是无功下垂系数,$Q_{ref}$ 是无功指令。把这个 $E$ 和 $\theta$ 合起来构成三相参考电压,经过电压电流双闭环和 PWM 调制后驱动主电路,就得到了一个“虚拟同步发电机模型”。构网型与控制型(跟网型)的关键区别在这里已经体现:跟网型逆变器把自己当电流源,锁相环跟踪电网相位;构网型则自己建立电压和频率参考,外部电网对它而言只是一个负载。
2.2 并联模型下无功功率分配偏差的数学来源
两台逆变器并联向同一个交流母线供电时,可以简化成两个电压源通过线路阻抗并联的模型。忽略线路电阻(高压场景近似成立),从第 $i$ 台逆变器流向公共母线的无功功率可以近似为:
$$Q_i \approx \frac{E_i V_{PCC}}{X_i} \cos\delta_i - \frac{V_{PCC}^2}{X_i} \approx \frac{V_{PCC}(E_i - V_{PCC})}{X_i}$$
其中 $E_i$ 是第 $i$ 台逆变器内电势幅值,$X_i$ 是它到公共母线的等效线路感抗,$V_{PCC}$ 是公共母线电压。这个公式说明一个被很多人忽略的事实:无功功率的分配不仅取决于下垂系数,还取决于线路阻抗 $X_i$。
把 Q-V 下垂方程代入并联关系式,解出两台机的无功分配比:
$$\frac{Q_1}{Q_2} \approx \frac{n_2 X_2}{n_1 X_1}$$
也就是说,只要两台逆变器到公共母线的线路长度不同、变压器漏抗不同,即使下垂系数整定成一样,无功出力也会按阻抗反比走,而不是按额定容量走。现场经常遇到的情况是:1 号机离母线近、电缆短,2 号机离母线远、电缆长,结果近端那台无功出力总是偏大,甚至逼近限幅。
除线路阻抗差异外,还有两个次要误差源:一是电压互感器测量误差,反馈电压偏差 1%,在无功下垂系数很小的情况下就会产生可观的无功偏差;二是各逆变器空载电压 $E_0$ 不一致,这来自出厂参数分散性和温度漂移。三者叠加,就出现了标题里说的“无功分配不均”问题。
2.3 传统下垂控制在储能场景为什么不够用
传统下垂控制的设计目标是让同步发电机在并联运行时能自动分摊负荷,它本身不关心“发电机的燃料还剩多少”。但在储能系统中,“燃料”就是电池 SOC,两台电池的可用能量很可能相差很大——一台接近满电,一台逼近下限。
如果把传统 VSG 直接搬到储能逆变器上,会出现这样一个恶性循环:SOC 较低的那台电池,其输出电压会在重载时跌落更多,VSG 控制的电压外环为了维持交流侧电压幅值会拉大内电势,导致这台低 SOC 逆变器输出更多的无功电流,而电池侧直流电流进一步增大,SOC 下降更快。与此同时,有功功率按照频率下垂平均分摊,低 SOC 单元仍然被迫输出额定有功,最终在系统高负荷时段被保护切除。这就解释了为什么单纯叠加一个“SOC 均衡环”会在工程上调不通:SOC 均衡需要改变有功分配,而有功分配又通过频率和功角耦合到无功回路。把二者分开设计,是改进 VSG 控制成功的关键。
3. 改进 VSG 控制策略:无功自适应校正与 SOC 均衡协同设计
3.1 改进策略的分层框架
解决并联构网型逆变器两大问题,第一原则是分层处理。把控制分成三层:
| 层级 | 作用对象 | 控制变量 | 带宽要求 |
|---|---|---|---|
| 底层 | VSG 核心算法 | $P_m$、$E_0$ | 快,10~20 Hz |
| 中间层 | 虚拟阻抗与自适应无功下垂 | $n_i$、$X_{vir}$ | 中,1~5 Hz |
| 上层 | SOC 均衡协调 | $\omega^*i$、$P{ref,i}$ | 慢,0.05~0.2 Hz |
三层之间时间尺度拉开至少一个数量级,是避免环路之间负耦合的基本保障。SOC 均衡环如果动作太快,会直接干扰 VSG 的固有频率响应;无功校正环如果动作太快,又会与电压外环发生谐振。下面分别给出各层的具体设计。
3.2 无功分配不均的自适应校正算法
针对线路阻抗和测量误差导致的稳态无功偏差,可以给每台逆变器增加一个基于“平均无功功率”的校正环节。这里采用有通信的方式,各台逆变器通过 RS485 或以太网以 100~500ms 周期广播自己的无功功率 $Q_i$,控制器内部计算并联系统的平均无功 $Q_{avg}$,然后对电压幅值参考做闭环补偿:
$$E_{i}^* = E_{0,i} + n_i(Q_{ref,i} - Q_i) + \Delta E_{comp,i}$$
$$\Delta E_{comp,i} = k_{pq}(Q_{avg} - Q_i) + k_{iq}\int (Q_{avg} - Q_i) dt$$
这个补偿器的物理意义很直接:某台逆变器的无功出力高于系统平均值,说明它承担了过多的无功,通过负反馈压低它的电压幅值参考,让它少发无功;反之则抬高电压参考多发无功。比例系数 $k_{pq}$ 负责快速响应,积分系数 $k_{iq}$ 负责消除稳态残差。
参数选取上,我一般把 $k_{iq}$ 对应的积分时间常数设为 0.5~2s,至少是 VSG 虚拟惯量时间常数的 5 倍。这样才能避免无功补偿环与 VSG 的功率外环之间出现“你追我赶”的振荡。同时要加限幅,$\Delta E_{comp}$ 的上下限取额定电压幅值的 ±5%,防止某台机因通信抖动一直推高电压。
3.3 SOC 均衡:把电池状态写入虚拟频率修正量
SOC 均衡的核心是让高 SOC 的逆变器多输出有功、低 SOC 的少输出有功,直到系统各单元 SOC 趋向一致。实现方式是修正 VSG 的虚拟频率参考值,而不是直接修改有功指令,后者会破坏 VSG 的频率下垂特性。
设计如下频率修正项:
$$\omega_i^* = \omega_n + m_i(P_{rated,i} - P_{e,i}) + k_{soc}(SOC_i - SOC_{avg})$$
其中 $m_i$ 是有功下垂系数,$k_{soc}$ 是 SOC 均衡系数,$SOC_{avg}$ 是各台逆变器广播得到的平均 SOC。当第 $i$ 台电池 SOC 高于平均值时,修正项为正,虚拟频率略微抬高,该逆变器输出电压相位相对超前,根据功角关系 $P \propto \frac{E V}{X}\delta$,输出有功增大,SOC 下降;反之则相位滞后,输出有功减小,SOC 上升。这个闭环的稳态结果是:系统有功由所有单元分担,但 SOC 高的单元承担比例更高,SOC 低的单元承担比例更低,随着时间推移两者收敛到同一水平。
实际实现时需要注意三点。第一,$k_{soc}$ 不能太大,否则并联系统频率会偏移额定值过多,一般折算到频率偏移不超过 ±0.3Hz。单位制上,如果频率用 rad/s,SOC 用百分数,典型值可以取 $k_{soc} = 0.1 \sim 0.5$。第二,SOC 测量值必须经过低通滤波和迟滞处理,避免电池电压测量噪声引起频率抖动。第三,校正环输出的频率修正量必须以慢变方式叠加,SOC 均衡环的带宽设为 0.1Hz 左右是安全做法。
这里要特别说明 SOC 均衡环与无功校正环的协同问题。频率修正会改变功角差,进而通过 $P-\delta$ 耦合影响到无功电压的敏感度。为避免耦合,无功校正环的采样周期可以与 SOC 均衡环同步,但积分系数按上面“时间尺度”原则拉开。工程上先用纯阻性负载验证 SOC 均衡能收敛,再接入感性负荷验证无功校正,最后同时投入,这个顺序能大幅压缩调试时间。
3.4 虚拟阻抗:一条必须补上的“中间件”
即使加了上述两个校正环,传统 VSG 还有一个固有弱点:系统阻尼偏低,尤其是当线路阻抗中的电阻分量为零、纯电感时,功率解耦不彻底。常用做法是在 VSG 输出电压参考中串入虚拟阻抗:
$$E_{ref} = E^* - Z_{vir}(s) \cdot I_o$$
$Z_{vir}(s)$ 通常设计为感性,$Z_{vir} = R_{vir} + jX_{vir}$,取值约为实际线路阻抗的 1~3 倍。虚拟阻抗的作用是让每台逆变器看向负载的等效阻抗由程序统一设定,从而压低线路阻抗离散性带来的分配误差。加上虚拟阻抗后,前面的无功分配表达式变成:
$$\frac{Q_1}{Q_2} \approx \frac{n_2 (X_{vir,1} + X_1)}{n_1 (X_{vir,2} + X_2)}$$
当 $X_{vir} \gg X$ 时,分母中的实际线路阻抗差异被稀释,无功分配精度得到显著改善。代价是输出端电压会有小幅跌落,需要用 3.2 节的无功校正积分项补回来。
4. Simulink 仿真建模与核心代码实现
4.1 系统拓扑与主电路参数
仿真模型建议搭建两台并联构网型储能逆变器,经 LC 滤波器和线路阻抗接入公共交流母线,母线带一个可投切的三相负载。直流侧用受控电压源简化电池特性,SOC 变化通过 Simulink 的积分模块完成,避免引入完整的电化学电池模型增加仿真复杂度。
一个能稳定复现“无功不均”和“SOC 失衡”现象的参考参数表如下:
| 参数 | 1号逆变器 | 2号逆变器 |
|---|---|---|
| 额定容量 / kVA | 100 | 100 |
| 直流侧电压 / V | 700 | 700 |
| 交流额定电压 / V | 380 | 380 |
| 滤波电感 / mH | 0.8 | 0.8 |
| 滤波电容 / μF | 30 | 30 |
| 线路阻抗 / Ω | 0.05+j0.15 | 0.10+j0.30 |
| 虚拟转动惯量 J / kg·m² | 0.5 | 0.5 |
| 阻尼系数 D | 20 | 20 |
| 有功下垂系数 m | 1e-5 | 1e-5 |
| 无功下垂系数 n | 2e-4 | 2e-4 |
| 初始 SOC / % | 80 | 60 |
| 开关频率 / kHz | 10 | 10 |
两个逆变器的线路阻抗差异设置为 2 倍,初始 SOC 差 20%,这足以让传统 VSG 控制下无功分配偏差超过 15%,SOC 均衡环的收敛过程也能清晰观察到。
4.2 VSG 核心算法的 MATLAB Function 实现
在 Simulink 中用 MATLAB Function 模块实现 VSG 核心算法,输入为有功指令、无功指令、输出有功、输出无功、电网角频率和 SOC,输出为参考电压幅值和相位。核心代码:
function [E_amp, theta_ref] = VSG_Core(P_ref, Q_ref, P_meas, Q_meas, w_grid, SOC, param) % 参数解包 J = param.J; % 虚拟转动惯量 D = param.D; % 阻尼系数 wn = param.wn; % 额定角频率(rad/s) E0 = param.E0; % 空载电压幅值 nq = param.nq; % 无功下垂系数 k_soc = param.k_soc; % SOC均衡系数 SOC_avg = param.SOC_avg; % 系统平均SOC(通信获得) % 1. 有功-频率环:转子运动方程 dw = (P_ref - P_meas) / J / wn - D * (w_grid - wn) / J; w = wn + dw; % 简化的频率迭代,实际模型建议用积分状态量 % 2. SOC校正频率修正量 delta_w_soc = k_soc * (SOC - SOC_avg); w_modified = w + delta_w_soc; % 3. 角度积分 theta_ref = theta_ref + w_modified * param.Ts; theta_ref = mod(theta_ref, 2*pi); % 4. 无功-电压环 E_amp = E0 + nq * (Q_ref - Q_meas); E_amp = max(param.Emin, min(param.Emax, E_amp)); end代码逻辑分四步走:有功差经转子运动方程折算成频率偏差,SOC 修正量叠加到虚拟频率上,相位通过对频率积分得到,无功差经下垂得到电压幅值。其中有几个参数需要重点说明:J决定惯量响应快慢,越大频率变化越平缓但恢复时间越长;D决定振荡衰减速度,过小会出现频率振荡;k_soc的极性必须是“SOC 高则频率高”,写反了会加速两极分化。这个函数中的dw用了简化的代数关系,严格建模时w应作为持久变量在函数内保存状态并积分,避免在单次调用中丢失动态特性。
4.3 无功自适应校正与 SOC 均衡的完整实现
把 3.2 和 3.3 的控制逻辑组合进一个函数,输出修正后的电压幅值和频率。完整的联立实现如下:
function [E_final, w_final] = ImprovedVSG_Ctrl(P_ref, Q_ref, P_meas, Q_meas, ... w_meas, SOC, SOC_avg, Q_avg, param) % 无功分均校正(慢环) err_Q = Q_avg - Q_meas; persistent int_Q; if isempty(int_Q) int_Q = 0; end int_Q = int_Q + param.kq_i * err_Q; % 积分补偿 int_Q = max(-param.Vcap, min(param.Vcap, int_Q)); % 限幅 dE_Q = param.kq_p * err_Q + int_Q; % 底层VSG电压幅值 E_vsg = param.E0 + param.nq * (Q_ref - Q_meas) - param.Xvir * Q_meas / param.Vnom; E_final = E_vsg + dE_Q; E_final = max(0.9*param.Vnom, min(1.1*param.Vnom, E_final)); % SOC均衡修正频率 w_soc = param.k_soc * (SOC - SOC_avg); % 有功-频率下垂 w_droop = param.wn + param.mq * (P_ref - P_meas) + w_soc; w_final = w_droop; end这里的persistent int_Q在 Simulink 的 MATLAB Function 模块中会保持调用间的状态,等价于一个积分器模块。param.Xvir是虚拟阻抗的实现参数,这里采用把“虚拟阻抗压降”直接折算到电压幅值的方式,省去复杂的电流反馈坐标变换,适用于中高压配电级仿真。Q_avg来自通信层,在 Simulink 中可以搭建一个简单的 mean 计算模块对所有逆变器的 Q 求平均,然后将平均值返回到每台控制模块中。
4.4 仿真连接结构与负载投切验证
模型总体连接顺序如下:逆变器主电路(三相全桥) → LC 滤波器 → 线路阻抗 → 公共母线 → 负载。控制部分从输出端采样三相电压电流,经 abc/dq 变换得到有功无功功率,送入改进 VSG 控制器。PWM 发生器使用 Simulink 内置的三相调制模块,载波频率设为 10kHz。
验证无功分配校正,在母线侧用三相断路器接入一组感性负载(模拟滞后功率因数负荷),持续 1 秒后切除;验证 SOC 均衡,在 2 秒时给两台逆变器分别输入 80% 和 60% 的初始 SOC,观察有功输出曲线和 SOC 曲线。需要把两个验证场景分开做,不要同时投切,否则波形上分不清哪个控制环在起作用。
5. 仿真调试:从发散到收敛的排错路径
5.1 仿真发散的第一现场:数值步长与 PWM 载波频率
Simulink 仿真 VSG 最常见的问题是“仿真发散”,表现是功率波形在几个毫秒内飙到天文数字。第一步先检查求解器设置。VSG 的功率外环时间常数在毫秒级,PWM 载波在 10kHz,如果用变步长求解器,误差容限设置太宽会在 PWM 切换点引入数值尖峰。我一般固定用ode23tb或ode15s,最大步长设为 50μs(载波周期的二分之一),相对误差 1e-4。如果模型里包含理想开关的 PWM 桥,建议改用 Simscape Electrical 的均值模型,剔除高频开关纹波,只保留控制所需的基波分量,仿直速度可以提升一个量级。
5.2 三个高频踩坑点:虚拟惯量过大、补偿环过强、滤波器时间常数过短
虚拟转动惯量 $J$ 过大会导致频率振荡发散。J 的物理意义是从有功扰动到频率变化之间的“惯性延迟”,J 越大,频率积分后的相位超调越大,在并联系统中表现为功率振荡。调试时 J 从 0.1 开始逐步增大,每次翻倍,观察频率曲线首次振荡峰值,保证阻尼比约在 0.6~0.8 之间。
补偿环强度过高的特征更隐蔽:单独运行每台逆变器稳态都正常,一旦并联就出现持续的低频功率波动(周期 2~5 秒)。这是无功校正环或 SOC 均衡环带宽超过了 VSG 功率外环的动态响应能力。处理办法是把补偿环的低通滤波器截止频率压低,或用积分时间常数控制:
$$\tau_{comp} \geq 5 \cdot \left( \frac{J}{D} \right)$$
如果 $J = 0.5, D = 20$,那么 VSG 的固有时间常数约为 25ms,补偿环的积分时间常数至少设为 125ms,对应的补偿环带宽约 1.3Hz。比这个值高,振荡风险剧增。
第三个踩坑点是 SOC 均衡环的滤波器时间常数设置过短。SOC 本身变化非常慢(分钟级),如果滤波器时间常数只有几十毫秒,SOC 测量中的噪声会被直接放大成频率偏移,在负载波形上表现为细小的毛刺。低通滤波器时间常数据经验设为 5~10 秒。
5.3 验证结果指标与波形判读
仿真收敛后,用两个指标衡量控制效果。
无功分配不均率:
$$\Delta Q% = \frac{Q_{max} - Q_{min}}{Q_{rated}} \times 100%$$
改进前 2 倍线路阻抗差异下,$\Delta Q%$ 通常超过 15%;投入无功自适应校正后,应控制在 5% 以内。SOC 均衡收敛时间定义为从初始偏差 20% 收敛到 2% 偏差以内所需时间,在 $k_{soc}=0.2$ 时典型收敛时间约 30~60 秒(仿真时可用加速倍率缩短观察期)。
波形判读顺序:先看公共母线电压幅值是否稳定在额定值 ±5%,再看两台逆变器输出有功是否按容量等比分配,最后看无功功率曲线是否在负载投切后 3~5 个工频周期内恢复稳态。如果无功曲线出现周期振荡而 SOC 曲线光滑,问题大概率在无功校正环参数;如果 SOC 曲线出现锯齿状跳变,问题在 SOC 滤波时间常数。
6. 从仿真到工程:并联调试中最容易被忽略的四个细节
仿真跑通只是第一关,构网型并联储能逆变器在现场调试时还有一批“模型里不存在”的坑。按我自己的经验,有四个细节最值得提前设防。
第一,并联台数的投切顺序必须严格递增。不要一上来就 6 台同时并。正确做法是先单台建压空载运行,确认电压幅值、频率和相位正常;然后两台并联,用钳形功率表核对无功分配;再逐台增加。每增加一台,观察系统频率振荡周期是否改变。这个顺序能精准定位是哪一台的虚拟阻抗参数有偏差。
第二,给定信号用斜坡而非阶跃。仿真里可以直接给负载加阶跃,现场如果直接投切大容量负载,构网型逆变器的功率外环很可能被触发过流保护。把负载投入过程拆成 5~10 级梯度,每级间隔 2~3 秒,这样可以观察 SOC 均衡环是否跟得上。
第三,检查通信延迟的影响。本文设计的 SOC 均衡环依赖各台逆变器之间的 SOC 和 Q 广播,现场的 RS485 通信周期可能是 100ms 甚至更长。可以用 Simulink 里的 memory 模块模拟固定延迟,强行把通信周期从 10ms 改到 200ms,看 SOC 均衡是否仍然稳定。仿真里验证过的最大通信延迟就是现场允许的最大周期。
第四,不要忽略直流侧电压纹波对 SOC 估算的影响。现场电池端电压在充放电切换时会有明显的电压突变,如果用开路电压法估算 SOC,会在 SOC 均衡环输入侧叠加巨大跳变。加一个 30 秒时间常数的惯性环节或者改用安时积分法,能省掉大半调试时间。所有这些细节都指向同一个原则:构网型控制的改进,重点不在算法本身,而在时间尺度的解耦。把快环留给 VSG,把慢环留给无功补偿,把更慢的环留给 SOC 均衡,三层各司其职,并联系统自然稳定。
本文还有配套的精品资源,点击获取