十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

光伏VSG并网逆变器Simulink仿真:从原理到模型搭建全流程解析

光伏VSG并网逆变器Simulink仿真:从原理到模型搭建全流程解析 做光伏并网逆变器仿真的人这两年最绕不开的一个词就是 VSG。只要提到虚拟同步发电机很多人的第一反应是储能变流器或者是风电变流器其实光伏并网逆变器同样可以做成电压源型控制。项目标题写得很直白——光伏VSG也就是基于虚拟同步发电机的光伏并网逆变器系统用 Simulink 把它完整搭出来、跑起来、调稳定。这个项目真正要解决的问题是光伏系统通过电力电子变换器并网后硬件上几乎没有旋转惯量大面积替代同步发电机之后电网的频率支撑能力会明显下降。VSG 的思路就是用控制算法“造”出一台虚拟同步机让光伏逆变器对外呈现类似同步发电机的转动惯量和阻尼特性。这篇文章我会从系统架构、核心控制算法、Simulink 建模过程、常见坑位排查这几个维度完整复盘适合正在做电力电子毕业设计、光伏并网仿真复现以及准备从 PQ 控制转向 VSG 控制的同学参考照着这个思路能把模型一步一步拼起来。1. 项目整体设计与系统架构拆解1.1 为什么光伏逆变器要用 VSG 而不是传统下垂控制传统光伏并网逆变器通常工作在电流源模式也就是我们最常见的 PQ 控制用一个锁相环锁定电网电压相位然后控制输出电流跟踪给定的有功和无功指令。这种控制对外表现出高阻抗电流源特性电网频率跌落时它不会主动释放有功来支撑频率对电网来说就是“没有惯量”。在光伏渗透率不高的时候这个问题不明显但光伏占比一旦上来频率扰动会变多、波动幅度也会变大。下垂控制比 PQ 控制好一些它能让逆变器按照频率偏差自动调整有功输出类似同步发电机的一次调频。但下垂控制本质上还是一个静态方程它完全没有模拟转动惯量也就是说频率变化瞬间它不会延迟响应而是立刻跳到新的工作点。结果就是系统阻尼偏弱频率变化率大时容易产生振荡。VSG 用同步发电机的转子运动方程替代下垂控制的静态关系把转子惯量和阻尼的影响都做进控制算法里。对外部电网来说这台逆变器像一个有“重量”的电压源既能调频也能调压还具备自然的同步能力。使用 Simulink 做这个项目最大的好处是转动惯量、阻尼系数、无功调节系数这些参数都可以在模型里直接改、直接看波形不用搭真实硬件就能把算法特性摸清楚。另外要强调一点光伏 VSG 和储能 VSG 在控制目标上有一个非常关键的区别。储能系统可以通过电池吸收或释放能量来支撑电网频率而光伏的输入功率完全取决于光照它天然只有一个“可发的最大功率点”。这意味着光伏 VSG 不能随便跟踪电网下发的有功指令必须先把光伏侧的实时功率状态接进 VSG 控制里。很多第一次做这个方向的同学把储能 VSG 的控制框图直接照搬到光伏上跑两步就直流母线崩溃问题就在这里。1.2 系统拓扑结构和能量流动关系整个仿真系统的拓扑并不复杂典型结构是光伏阵列经过 Boost 变换器升压并完成 MPPT直流母线并联电容后接三相两电平逆变器逆变器输出经过 LCL 滤波器和电网连接控制部分的核心是 VSG 算法。为了直观理解可以把系统拆成两段能量流来看。光伏侧这段负责把太阳辐射变成稳定的直流功率光伏阵列输出低压直流Boost 电路通过 MPPT 算法常用扰动观察法实时调整占空比让光伏阵列工作在当前工况的的最大功率点。逆变器侧这段负责把直流功率变成与电网频率、电压协调的交流功率VSG 控制算法接收功率参考值生成电压幅值和相位进而经过电压电流内环和 PWM 调制驱动逆变桥。这里有一个初学者很容易漏掉的关键设计直流母线电容并不是无限大的储能介质它的电压由光伏输入功率和逆变器输出功率的差额决定可以近似用下面的关系理解C × Udc × dUdc/dt P_pv - P_vsg当光照突然增强P_pv 大于 P_vsg直流电压就会上升当 VSG 因为频率支撑需求增加了输出功率光伏侧又没跟上直流电压就会下降。如果这个失衡时间太长母线电压就会越过保护限值。所以在纯光伏 VSG 模型中我通常会在 VSG 的有功频率控制环前面加一个直流电压协调环节用 Udc 的实际值和参考值的偏差去修正有功指令。这样 VSG 既能体现惯性支撑能力又不会无限制地支取直流侧不存在的能量。实际工程中还有一种做法是加卸荷电阻或者配一小部分储能但在 Simulink 仿真前期先用母线电压补偿逻辑把系统稳定住是性价比最高的方案。项目里具体的模块分工可以概括成下面这张表搭模型的时候按照这个清单逐块确认就能少走很多弯路模块主要作用关键控制量光伏阵列产生直流功率随光照温度变化环境辐照度、温度Boost 变换器抬升电压并跟踪 MPPT占空比 D直流母线电容平衡两侧功率稳定母线电压电容容值、Udc三相逆变桥实现 DC/AC 变换PWM 驱动信号LCL 滤波器滤除开关谐波改善并网电流质量电感、电容参数VSG 控制核心模拟同步机的惯性与阻尼J、D、无功系数电网与线路阻抗提供交流电压和同步参考等效阻抗主电路拓扑确定以后项目的重点就不在硬件结构而在 VSG 控制器内部那几条反馈环路。下一节把控制算法拆开细看。2. VSG 核心控制原理与参数整定思路2.1 同步发电机特性是怎么被“写”进控制器的同步发电机对外特性可以粗略概括成两组关系有功-频率无功-电压。转子运动方程是描述有功和频率动态关系的核心它比下垂控制多了一个积分的惯性过程。VSG 的控制算法本质就是把这个“机械方程”放到软件里执行。常用的二阶转子运动方程写成标幺形式可以这样理解2H × d(Δω_pu)/dt P_m_pu - P_e_pu - Kd × Δω_puΔω_pu 是电网频率偏差的标幺值H 是虚拟惯性时间常数P_m_pu 是机械功率参考对应的标幺有功P_e_pu 是 VSG 实际输出的有功Kd 是阻尼系数。这里用标幺值是工程上的通用做法好处是参数跟系统容量解耦换功率等级时不需要把物理单位全部重算一遍。对 Simulink 建模来说这个方程实现起来非常直观把 P_m 和 P_e 的差值经过增益 1/(2H) 送入积分器积分结果就是 Δω_pu再加一个积分器得到 VSG 的相位 θ。很多论文里把第一个积分器之后的值当成虚拟角速度再经过频率基准 ω_n 和积分得到相角。虚拟相位 θ 一旦产生VSG 对外就表现为电压源输出基波电压的相位由这个积分结果决定频率会根据有功功率是否平衡自动调整而不是像 PQ 控制那样用锁相环硬锁电网相位。这也是为什么 VSG 被单独称为“自同步”控制。需要注意这个“自同步”是相对于传统 PQ 控制说的不等于第一次合闸就可以随便并。VSG 的机械方程本质是角度跟踪如果控制器输出的电压幅值和相位与电网两侧不一致就并网合闸瞬间照样会有很大的冲击电流。无功-电压环路则模拟同步发电机励磁系统的调压能力。常用做法是E E0 Kq × (Q_ref - Q_e) Ku × (U_ref - U_g)E0 是空载电动势参考Kq 是无功无功下垂系数Ku 是机端电压偏差修正系数。VSG 输出的电压幅值由无功环决定相位由有功频率环决定两者合起来就生成了三相电压参考信号再经过电压电流内环做跟踪最终由 PWM 生成驱动脉冲。2.2 惯量系数和阻尼系数的整定方向很多人在刚搭建 VSG 时最喜欢问一个问题J 和 D 到底取多少合适这个问题其实没有固定答案但给一个可操作的初始范围并不难。先看惯性时间常数 H。H 表示系统在额定功率下能维持多长时间的输出能量“惯性”物理量纲是秒。真实大型同步机的 H 大致在 2~8 秒电力电子变流器做 VSG 时不可能也不需要设到那么大因为直流侧能量有限过大的惯量会让频率响应变慢并且导致功率振荡发散。做光伏并网仿真时H 从 0.5 秒到 2 秒之间起步是比较稳妥的。再看阻尼系数 Kd。Kd 的作用是给频率偏移提供额外的阻尼功率防止虚拟转子持续振荡。Kd 调大频率偏差的稳态能力更强振荡衰减更快但会让系统对频率偏差的“抵抗力”变弱等效于增大了调差率。Kd 调小系统动态响应变快但可能出现明显的低频功率振荡。调参规律可以概括为一句话振荡频率太高增大 H振荡衰减太慢增大 Kd两个参数交替调整三到四次之后用阶跃扰动测试就能确定一组相对合适的值。不要试图一次把参数算到完美VSG 参数和线路阻抗、负载情况耦合很强仿真条件下的最优值通常是调出来的不是算出来的。如果做毕业设计需要给出理论依据可以结合二阶系统的阻尼比概念来说明。把 VSG 的频率环在平衡点线性化后系统表现出的阻尼比跟 J 的二次方根成反比、跟 D 成正比所以在写论文或者做 PPT 时把“增大 J 导致超调量增加、增大 D 导致阻尼增强”这个趋势说清楚评审基本就认可了。2.3 电压电流双环在 VSG 里的角色VSG 输出的是电压指令但逆变器本身并不具备吸收短路电流的能力所以光有外环还不够。为了限制电流、提高动态响应工程上普遍采用电压外环和电流内环的双闭环结构。VSG 生成的三相电压参考值先进入电压环把误差转成电感电流指令再进入电流环电流环输出经过反变换后作为 SVPWM 或 SPWM 的调制波。在不涉及具体代码实现的 Simulink 模型里这套双环控制在 dq 旋转坐标系下最容易搭电网电压经过坐标变换得到 dq 分量电压环输出电感电流的 d、q 参考值电流环输出调制电压 d、q 值最后通过反 Park 变换生成三相调制波。pi 调节器参数可以使用常见的整定思路电流环带宽取开关频率的 1/10 到 1/20电压环带宽比电流环低一个数量级左右。这里有一个务必记住的设计细节VSG 电压幅值不是无限可调的它受到调制比和直流母线电压的约束。如果无功环给电压参考值是 400V但直流母线只有 600V按 SVPWM 最高能输出的线电压峰值约等于直流母线电压来算系统就会进入过调制区波形失真和电流震荡随之而来。模型首先要算清楚直流母线电压和滤波后电压之间的余量至少留 15% 的调制余量否则调参很容易接近崩溃边界。3. Simulink 模型搭建与实操过程3.1 主电路按模块逐级搭建拿到一个需要复现的光伏 VSG 仿真项目我不建议一上来就搭整张图而是按模块逐级验证最后再做闭环联合。主电路部分的搭建顺序大体是光伏阵列、Boost 电路、三相逆变桥、LCL 滤波器、电网模型。光伏阵列部分可以直接使用 Simscape Electrical 里的 PV Array 模块。双击模块后设置短路电流、开路电压、最大功率点电压电流等参数但更省事的做法是直接从模块库自带的数据表里选一块相近的组件然后通过串联数和并联数搭出目标容量。仿真时把辐照度设成 Signal Builder 或阶跃信号就能测试光照突变工况。Boost 电路用一个 MOSFET、一个二极管和一个电感电容组合就能搭出来。MPPT 控制我用的是扰动观察法采样光伏阵列输出电压和电流计算功率再和上一拍比较决定占空比是增大还是减小。扰动观察法的实现逻辑放在 Simulink 里就是一排采样保持模块和比较器。三相逆变桥可以用 Universal Bridge 模块选正 IGBT 或 MOSFET桥臂数选三臂。开关管的驱动信号来自 PWM 发生器为了让仿真贴近实际情况一般还要在驱动信号上加死区时间通常设置在 2~5 微秒。如果对 IGBT 的驱动电路细节做研究还需要在门级电路里增加驱动电阻和负压关断部分但 VSG 系统级的验证不必做到器件级Universal Bridge 的默认开关模型结合死区设置已经足够。LCL 滤波器参数按经验值选取总电感感值一般在 0.1~0.2 pu 之间电容容量一般在 0.05~0.1 pu 之间。电感太大电压降和动态损失明显电感太小高频纹波超标。电容太大无功电流占比过高电容太小滤波效果不够。搭好滤波器后一定要看看谐振频率一般设计在基波频率的十倍以上、开关频率的一半以下避免谐振峰落在控制带宽附近。电网模型用 Three-Phase Source 模块就能满足绝大多数仿真需求注意串联一个等效线路阻抗取 0.1~1 欧姆级别的纯感性阻抗作为对比基准。纯理想电压源虽然好跑但 VSG 的阻尼特性本来就是与线路阻抗耦合的完全没有线路阻抗的模型看不出真实动态行为。3.2 VSG 控制器的信号流连接控制器的搭建是整个项目最容易乱的地方尤其 VSG 涉及的信号多反馈回路也多。我习惯先把信号流关系用文字列出来再一个模块一个模块往 Simulink 里摆。第一路是功率计算采样逆变器输出三相电压和三相电流经过 abc-dq 变换用 Udc? 不是 d 轴电压、q 轴电压和 d 轴电流、q 轴电流计算有功和无功公式是 P 1.5(Ud×Id Uq×Iq)Q 1.5(Uq×Id - Ud×Iq)。注意坐标变换的幅值锁定方式要统一很多波形异常就是这里差了 1.5 倍系数。第二路是有功频率环把 P_ref 减去实际 P 和母线电压协调模块的输出经过带 1/(2H) 增益和积分器组成的有功环得到虚拟机械频率和相位。机械相位 θ 加上电网同步预同步环节的补偿角度后作为后续所有 Park 变换的角度基准。第三路是无功电压环把 Q_ref 减去实际 Q经过无功积分和电压幅值补偿得到 VSG 输出电压幅值参考。第四路是电压电流内环电压幅值参考和相位角合成为三相电压参考与滤波电容电压反馈比较经过电压环生成电感电流指令再经过电流环输出调制电压最后用 PWM 模块生成开关信号。信号流连接完成后对照检查方向感和缩放系数。最常见的错误是反馈极性反了、dq 变换角度用错、功率计算少个 1.5 倍。这些错误不会让模型立即报错但会导致 VSG 正反馈发散。3.3 Solver 和仿真步长的选择仿真参数设置对光伏 VSG 项目的影响很大。模型里的电力电子开关动作会造成数值刚性问题Solver 选择和最大步长设置不当会出现发散、波形抖动或者仿真速度极慢。如果搭的是连续模型我建议先用变步长求解器中的 ode23tb 或 ode15s这两类求解器对带开关器件和高频 PWM 的系统比普通 ode45 稳定得多。最大步长不要设置过大通常设置为开关周期的五十分之一左右。例如 10kHz 开关频率对应开关周期 100 微秒最大步长设 2 微秒到 5 微秒比较稳妥。如果要生成代码或者做硬件在环模型必须改成离散求解器。离散步长一般也是取开关周期的几十分之一。电力电子仿真想要兼顾速度和精度可以把载波频率控制在 10kHz 附近离散步长控制在 1 到 2 微秒模型调稳之后再看能否加大步长换取速度。仿真时长方面先跑 0.5 到 1 秒做暂态分析。VSG 的虚拟转子响应通常比较慢功率振荡周期可能在 0.2 到 0.5 秒量级仿到 1 秒才能基本看清楚。想看稳态并网波形再把仿真时间缩到 0.1 到 0.2 秒否则 Scope 里波形密密麻麻全是高频谐波肉眼很难判断。3.4 预同步逻辑和并网合闸操作这个环节直接决定了模型能不能顺利并网。VSG 控制的逆变器在并网前要么通过预同步控制把输出电压频率、相位、幅值慢慢调到跟电网一致要么先加一个限流电阻再合闸。部分简化模型干脆先把电网源和逆变器同时挂在母线上跑这种方法只能用来验证稳态效果不能模拟真实并网冲击投文章时会被人挑毛病。完整的做法是并网开关设置理想 Breaker在并网前把 Breaker 断开VSG 通过预同步模块对电网电压的幅值和相位进行跟踪。预同步模块可以用一个很慢的 PI 调节器实时修正 VSG 的相位和幅值让 VSG 输出电压与电网电压的误差逐步逼近零。当幅值误差小于 1%、相位误差小于 1 度也就是 0.017 弧度左右时再给 Breaker 下发合闸指令。这样并网瞬间电流冲击可以控制到非常小。调试这个环节的经验是不要用眼睛盯 Scope 判断相位差直接在模型里把 Vs_g 和 Vs_vsg 两个电压波形放在同一个 Scope 里对比细心观察包络。相位误差较大的时候两个波形会出现明显移动误差越小波形重叠度越高。等两个波形几乎完全重叠再合闸成功率最高。4. 调试中遇到的高频问题与避坑记录4.1 并网瞬间电流冲击过大甚至触发保护限幅这个问题几乎每个刚接触 VSG 的人都会遇到。如果合闸瞬间电流峰值超过额定电流好几倍通常要先怀疑预同步没有做到位。可以检查两个关键点一是 VSG 输出的电压幅值是否等于电网电压幅值二是 VSG 的相位是否锁在电网相位上。实际仿真中很多模型为了省事把并网开关一开始就闭合VSG 从启动到稳定整个过程中都要硬扛电网电压控制难度成倍增加。另一个常见原因是合闸时刻选在 PWM 调制波发生突变的瞬间。如果并网指令下发时 VSG 恰好处于大电流过零点之外的某个随机时刻冲击会偏大。解决办法是判断过零点附近再触发合闸或者在合闸之后由电流限幅环节介入。调试参数的方向是合闸瞬间出现一次电流尖峰但迅速回落问题不算大如果电流尖峰持续几个周波并且越振越大第一步要停止盲目调 J先用预同步把电压源特性确认好再回头看电流内环饱和问题。4.2 VSG 频率和功率出现持续低频振荡低频振荡通常出现在 J 和 Kd 的配合不当的场景。J 设置太大而 Kd 太小虚拟转子像一个几乎没有摩擦的重摆一旦受到扰动就会来回摆动很久功率波形会出现明显的正弦状波动。此时把 Kd 逐步增大观察功率波动衰减速度再回到 J 上微调。J 太小而阻尼系数也不足时系统会出现高频的抖动功率波形看起来很不平滑甚至叠加高频噪声。把 J 调大一倍后高频抖动会明显下降此时再看低频段的收敛速度是否满足要求。遇到振荡问题不要同时改多个参数。一次只动一个参数用同样的光照阶跃或者功率阶跃作为激励记录扰动前后的波形这样才能判断参数改变的真实贡献。仿真工程里很容易出现“改了一堆参数也不知道是谁把波形调好了”的情况这对后续项目复盘非常不利。4.3 模型运行中的报错和工程环境坑位Simulink 跑 VSG 模型时高频报错类型其实和 VC 逻辑关系不大更多来自模型环境设置。常见的一种是代数环问题表现为仿真运行时报出 “Algebraic loop” 或直接卡死。VSG 控制中功率计算和电压电流内环有时会形成瞬时反馈特别是使用平均值模型时最容易出现。解决办法是在反馈通道上加 Memory 模块或 Unit Delay把瞬时代数反馈打断成一步延迟代价是控制延时增加一个采样周期通常可以接受。还有一种打不开别人模型时经常遇到的报错比如找不到数据字典“can.sldd”。这通常是模型引用了外部数据字典但文件没有被加到 MATLAB 当前路径中。解决方法是找到同名 .sldd 文件添加到路径或者在 Model Explorer 中重新绑定有效的数据字典。如果只是想快速看模型结构可以把模型里的数据字典引用断开再加载但前提是模型内部信号都使用显式数值。另一个环境类报错是在 MATLAB 启动或运行仿真时出现 LAPACK 加载错误类似 mllapack.dll 无法加载。这种问题大多和 MATLAB 安装目录的权限、杀毒软件误删文件或版本不兼容有关。排查步骤就是先修复或重装 MATLAB 运行库确保安装目录可写再把附加功能工具箱的路径清理干净。和 VSG 算法本身没有直接联系但浪费的时间一点不少。如果负责交付模型给他人还会遇到封装密码相关的需求。Simulink 支持在 Mask 编辑器里对封装模块设置保护密码右键模块选择 Mask、Edit Mask在 Protection 选项卡中可以设置密码。不过这个密码本质是存储在模型里的防不了高手只能防止误改参数交付时务必把密码单独附在文档里否则验收时别人改不了参数会非常尴尬。4.4 光伏功率突变导致直流母线崩溃这算是光伏 VSG 项目的招牌问题比交流侧振荡更隐蔽。光伏幕顶单元因为 MPPT 响应有延迟辐照阶跃时 P_pv 的变化速度可能跟不上 P_vsg 的突变。如果 VSG 的频率支撑指令让 P_vsg 在短时间内增加到超过光伏可发功率直流母线电容就会被抽干Udc 跌掉几十伏以上后整套系统进入欠压保护。处理办法有两种。原理层面的做法是给 VSG 的有功指令设一个速率限制器把 P_ref 的变化率限制在母线电容能承受的范围之内例如 0.05~0.2 pu/s。工程层面的做法是在直流母线上并联一组小功率储能或卸荷装置在仿真中可以用受控电流源和电容并联模拟。从仿真复现的角度看两种方法都合理。如果项目只关注 VSG 的交流侧响应优先采用速率限制器调参方便也不需要额外加电源设备模型如果项目想更接近实际电站可以加一个小型储能环节。核心思路始终是保证直流母线电压在上述功率平衡方程中处于可控范围。5. 参数复现速查与后续扩展建议5.1 调试过程中可以抄作业的参数调整表我整理了一张比较实用的速查表按照“现象-可能原因-调整方向”的格式记录供做光伏 VSG 仿真时直接对照使用。现象优先怀疑对象调整方向频率持续振荡收敛慢J 过大或 Kd 过小增大 Kd观察再微调 J功率波形高频抖动J 过小或滤波不足增大 J检查功率低通滤波截止频率并网瞬间冲击大预同步未完成检查幅值相位误差重设合闸条件直流母线电压跌落P_ref 超过可用功率限幅 P_ref 或加母线电压补偿环波形长时间无法同步积分器初始值不匹配给 VSG 相位积分器设置接近电网相位的初值PWM 调制波饱和直流母线电压偏低提高母线电压或降低电压幅值参考模型跑得很慢最大步长太小在允许范围内增大步长减少不必要的波形记录上面这些内容来自实际操作中的慢慢积累碰到的概率都很高。第一次复现时不要追求一次把整套系统调稳定先单独测试 MPPT 环再测试 VSG 空载电压生成最后闭合并网开关每走一步就验证一步出问题时排查范围会小很多。5.2 从 Simulink 仿真走向代码生成和硬件在环的注意点仿真调通以后很多人会想把模型生成 C 代码部署到控制器上验证。这个方向确实可行但有几个坑必须先有个预期。仿真模型中大量使用连续积分器、变步长求解器和功能复杂的 Simscape 模块这些在生成嵌入式 C 代码时并不完全支持。代码生成要求模型先改为固定步长离散求解器把积分器替换成离散积分器把电力电子主电路和控制器解耦通常只对控制算法部分做代码生成。而且实际控制器里 PWM 发波是通过硬件定时器完成不是 Simulink 里那个 PWM Generator 模块直接生成的代码控制器输出的通常是调制波比较值这就需要额外写底层驱动接口。如果想做快速控制原型Simulink Desktop Real-Time 或外部模式是相对省力的方案。外部模式下目标机实时运行模型宿主机通过 Simulink 在线调参非常适合作 VSG 的参数在线寻优。但外部模式对模型执行时间有硬性要求模型运行必须比实时时间快复杂模型一上来就可能过载需要把主电路全部替换成平均值模型或者把控制离散步长放到几百微秒级别才能跑起来。如果要做 Carsim、Amesim 这类多软件联合仿真方向也是类似的核心是处理好模型间的数据交互周期和触发时序。VSG 模型对外输出的是电气量和控制信号对接其他领域模型时需要额外设计接口层而不是简单地把两个模型拖进同一个工程。仿真的终点不是波形跑通而是你真正理解这套控制为什么能工作。调通一个纯 PQ 控制的光伏并网模型可能只需要一天但 VSG 项目值得多花几周慢慢磨因为在调 J、调 Kd、调预同步的过程中你会越来越理解同步发电机对电网的“支撑”到底意味着什么。按照上面这个顺序搭模型、设参数、跑调试、看问题踩坑的概率会小很多而且每个坑踩完都能形成你自己的经验库。
返回列表