
构网型逆变器特别是它的并网瞬间控制一直是工程上的一个硬骨头。我最早接触这个课题是因为一次不太愉快的实验经历一台已经稳定离网运行了几分钟的构网型变流器在准备并网时我没有做任何预同步处理直接下了合闸指令结果并网瞬间的冲击电流直接冲到了额定电流的4倍以上过流保护几乎是立刻动作。那次之后我才真正把注意力放在预同步控制上。最近我把基于自适应PI的构网型变流器预同步控制策略完整复现了一遍从理论推导到仿真调试踩了不少坑也理清了很多之前模糊的细节。这篇报告就是这次复现的记录内容包括预同步的原理、为什么固定PI参数在这个场景下不好用、自适应PI的参数整定思路、完整的仿真实现方式以及我在复现过程中踩过的坑和排查方法。如果你正在做构网型变流器的并网控制或者你只是在研究下垂控制、虚拟同步机的预同步环节这篇文章应该能帮你少走不少弯路。即使你自己暂时不做复现只是需要理解预同步策略的设计逻辑也可以参考这里的思路。1. 为什么要做预同步从一次并网冲击事故说起1.1 构网型变流器与跟网型的本质区别要理解预同步先要理解构网型变流器跟传统跟网型变流器的根本区别这是整个后续讨论的基础。跟网型变流器PLL-based Grid-Following它的本质是一个受控电流源。它通过锁相环实时跟踪电网电压的幅值、频率和相位然后控制输出电流跟踪给定的有功无功指令。因为它的输出时时刻刻都在跟随电网所以只要锁相环工作正常它的电压天然就是和电网同步的。这种变流器并网合闸相对简单因为它本来就贴着电网在运行。构网型变流器Grid-Forming则完全不一样。它本质上是一个受控电压源。在离网运行状态下它自己决定输出电压的频率和幅值不依赖锁相环去跟随任何外部电压。最典型的下垂控制逻辑是有功功率增大、频率下降无功功率增大、电压幅值下降。这种控制模式让变流器像一个真正的发电机一样能够自主建压建频为弱电网或者纯离网负荷提供支撑。但问题恰恰就出在自主上。由于构网型变流器离网运行时是在自由地建立自己的电压而电网电压有自己的频率和相位这两个源在没有主动干预的情况下相位差会随着时间越拉越大。如果此时直接合闸并网相当于两个电压源硬并联。1.2 不预同步直接合闸会发生什么两个电压源硬并联的后果可以从一个简单的数学表达式看出来。忽略电阻假设电网电压是 Vg变流器输出电压是 Vv连接电抗是 X相位差是 Δθ那么并网瞬间变流器输出的有功冲击功率近似为P ≈ (Vg × Vv / X) × sin(Δθ)假设电抗标幺值是 0.1两个电压都是额定值相位差如果有10度那这个冲击功率就是 sin(10°) / 0.1 ≈ 1.74 倍额定功率。冲击有功电流会以同样的比例直接反映在电流上。加上如果幅值也有偏差无功冲击和潜在的直流分量都会叠加进来。我当时那个4倍额定电流的冲击就是在相位差大约15度、幅值差大约8%的情况下合闸的结果。从波形上看合闸瞬间三相电流会出现一个尖锐的非对称尖峰变压器或者滤波电感会发出明显的嗡的一声。如果是电流内环响应不快的机组这个尖峰大概率直接触发硬件过流或者IGBT短路保护。更严重的如果反复冲击滤波电容、电抗器和功率模块的寿命都会受到影响。1.3 预同步的目标幅值、频率、相位对齐到可接受的精度所以预同步控制要干的活归结起来就一句话在并网合闸前主动调整变流器输出电压的幅值、频率和相位让它跟电网电压的差值缩小到一个工程上可接受的范围内然后再合闸。工程上可接受是有量化指标的。按照我个人的经验合闸时相位差最好控制在2度以内幅值差控制在2%~3%以内频率差自然是和相位差联动——只要相位差收敛且保持稳定频率差近似为零。这三个量满足条件后合闸冲击电流可以控制在额定电流的1.2~1.5倍以内这个量级对设备和断路器都是安全的。这里说一个容易被忽略的细节预同步不是让相位差严格变成零而是让它在某个小范围内稳定。因为电网频率本身不是恒定不变的会有±0.1Hz甚至更大的波动所以相位差永远处于动态平衡中。只要相位差在允许范围内且波动可接受就达到了合闸条件。这也是后面设计预同步PI参数时的一个重要约束——不能一味追求收敛速度快否则稳定性和抗扰动能力反而会变差。2. 预同步控制链路设计从电网信息提取到补偿量注入2.1 电网相位与幅值的信息获取预同步控制的第一步是获取电网电压的相位和幅值。常用的做法是用锁相环PLL对电网电压进行同步。这里我用的是经典的SRF-PLL同步旋转坐标系锁相环它的原理是把三相电网电压变换到dq旋转坐标系下通过调节q轴分量为零来锁定相位。在电网电压平衡的情况下SRF-PLL的带宽可以做到100~300Hz稳态精度在0.1度以内满足预同步需求。有一个细节要提醒锁相环的输出并不直接等于电网相位锁相环输出的相位本质上是一个与电网频率同步且q轴归零的积分结果。在电网三相平衡、畸变不大的理想条件下可以近似认为PLL的输出 θg 就是电网A相电压的相位。但如果电网有畸变或者不平衡PLL的动态误差会直接影响预同步精度。所以在我的复现模型中电网侧刻意设置成理想电压源加微小的谐波含量这样能更干净地观察到预同步控制本身的效果。幅值信息 Vg 可以用两种方法获取一种是对三相电网电压做dq变换后取d轴分量另一种是计算三相电压的幅值平方和再开根号。前者更平滑适合直接作为预同步幅值环的参考后者动态响应快但容易受谐波影响。考虑到预同步本身不需要太高的带宽我选了前一种也就是利用PLL旋转角度对齐后的d轴电压作为电网幅值参考。2.2 预同步补偿量与下垂控制的叠加方式获取了电网信息之后关键问题是如何把预同步的补偿量注入到原有的构网型控制环路中。这涉及控制逻辑的改动也是很多初学者容易犯迷糊的地方。先说一下构网型变流器传统下垂控制的参考值产生过程频率参考ω ω0 - m × P其中 ω0 是空载频率m 是有功下垂系数P 是实测有功功率。电压幅值参考V V0 - n × Q其中 V0 是空载电压幅值n 是无功下垂系数Q 是实测无功功率。相位由频率积分得到θ ∫ω dt。预同步模块叠加之后的参考值变成了ω_ref ω0 - m × P Δω_preV_ref V0 - n × Q ΔV_pre其中 Δω_pre 来自预同步相位环PI调节器的输出ΔV_pre 来自预同步幅值环PI调节器的输出。这样设计的好处是预同步模块只是在原下垂参考值上做了一个平移不影响构网型变流器原有的自主建压特性。一旦并网完成预同步模块退出变流器立即恢复纯下垂控制整个过程是平滑切换的。2.3 固定PI在预同步场景下的原罪很多第一次做预同步的人包括我自己最开始都是简单地给相位差和幅值差各配一个固定PI参数然后看仿真波形。结果通常不理想而且会让人困惑明明PI参数调好了为什么换一个初始相位差就不行原因在于预同步过程是一个大动态范围的过程。设电网相位是 θg变流器输出电压相位是 θv相位差 Δθ θg - θv。离网运行时间越长Δθ 越大。从极端情况看Δθ 可能从几十度甚至上百度的初始值一路被调节到1度以内的收敛值。这个过程误差从大到小跨越了一到两个数量级。固定PI的局限性在这里暴露得很明显。如果按照初始大误差来整定参数Kp 就得取的比较大否则收敛速度太慢预同步要花两三秒甚至更久但大Kp在误差较小时会产生明显的超调和振荡相位差会在零附近来回摆动迟迟无法稳定在1度以内。反过来如果按照小误差来整定参数用较小的Kp去换平稳性那初始大误差阶段的收敛会非常迟钝工程上根本等不起。我复现时做过一组固定PI的对照实验Kp3Ki50初始相位差35度相位差收敛到1度以内耗时约0.8秒但超调量达到8度左右。把Kp降到0.8以后超调几乎没了但收敛时间拉长到2.5秒以上。这个矛盾是固定PI结构上的缺陷不是调参技巧能解决的。预同步这个场景天然需要一个误差大时动作快、误差小时动作稳的调节器自适应PI就是基于这个需求应运而生的。3. 自适应PI的设计按误差分段调增益的思路与代码3.1 自适应规则大误差快逼近小误差细对准我采用的自适应PI策略并不复杂核心思想是按误差幅值分段切换调节器增益本质上是一种增益调度Gain Scheduling策略。根据相位差的大小把整个预同步过程分成三段第一阶段误差大要求快速逼近Kp取大值、Ki取小值比例主导让相位差快速被拉到接近目标的范围。第二阶段误差中等要求平稳过渡Kp适当减小、Ki适当增大比例和积分共同作用保证收敛速度的同时抑制超调。第三阶段误差小要求精细对准Kp进一步减小、Ki增大积分主导让相位差慢慢被吸到零附近同时保持稳定。具体参数我在复现中取的值如下以相位环为例rad单位和pu制相位差绝对值区间KpKi设计目标≥ 0.15 rad约8.6°6.020大误差快速拉入比例主导0.02 ~ 0.15 rad3.060中等误差平稳过渡 0.02 rad约1.1°0.5120小误差精细对准积分主导这套规则背后的逻辑很朴素误差大的时候宁可牺牲一点稳定性也要保证快速性因为此时离目标还很远超调的空间很大误差小的时候如果还用大比例增益系统会在目标值附近来回振荡此时必须把比重交给积分让相位差缓慢但确定地收敛到允许范围。幅值环的自适应逻辑类似只不过误差阈值和增益大小不同。因为我设置的场景是离网额定电压输出幅值差初始时就5%左右动态范围没有相位差那么大所以幅值环只用了两段误差大于2%时用中增益误差小于2%时用小增益大积分。3.2 MATLAB/Simulink实现细节两种方案对比在Simulink里实现自适应PI有两种常见方式我都试过各有利弊。第一种是用一个MATLAB Function模块也就是编译器生成代码的嵌入式函数块来实时计算增益然后送给两个乘法器去调节原PI模块的输入输出增益。这种方案代码直观、易于调试但给代码生成到嵌入式控制器时需要注意函数块的可变输入输出数据类型的支持问题。第二种更接近工程实现的做法是直接在Simulink的函数模块里把整个增益调度逻辑写成输出 Kp 和 Ki 两个量的函数然后在Simulink的连续PI模块的外部做增益相乘。我复现时用的是第二种代码大致是这样function [Kp, Ki] adaptive_pi_gain(e, th1, th2, Kp_large, Kp_mid, Kp_small, Ki_large, Ki_mid, Ki_small) % 按误差绝对值分段计算增益 % e: 输入的误差相位差或幅值差 % th1 为大误差阈值th2 为小误差阈值 abs_e abs(e); if abs_e th1 Kp Kp_large; Ki Ki_large; elseif abs_e th2 Kp Kp_mid; Ki Ki_mid; else Kp Kp_small; Ki Ki_small; end然后在Simulink中把误差信号 e 同时送入这个增益计算函数和原PI模块的输入把计算出的 Kp、Ki 分别与PI模块内部的比例路径、积分路径输出相乘。关键点在于原PI模块的积分器要实现外部重置external reset功能这样当增益切换时积分值不会因为增益跳变而产生台阶。3.3 增益切换的平滑化处理直接按上述代码进行增益切换会有一个实际工程中绕不开的坑Kp和Ki在切换瞬间会发生跳变导致PI输出突变。这个突变反映到控制量上就是频率参考或电压幅值参考的阶跃可能引发电磁暂态上的抖动和噪声。解决办法是对增益切换做平滑过渡。最简洁的实现方式是在切换点附近做一个线性插值让增益在一定的时间常数比如5~10ms内从当前值渐变到目标值。另一种更工程化的做法是对Kp、Ki本身做一阶低通滤波让增益在任何时候都不会突变。举例来说当误差从0.14 rad降到0.02 rad以下时Kp从3.0平滑降低到0.5而不是瞬间跳变。一个简单的一阶惯性滤波实现如下function Kp_filtered gain_filter(Kp_ref, Kp_prev, T_filter, Ts) % 一阶低通滤波T_filter为滤波时间常数Ts为采样周期 alpha Ts / (T_filter Ts); Kp_filtered Kp_prev alpha * (Kp_ref - Kp_prev); end在仿真中我给Kp设了5ms的滤波时间常数给Ki设了10ms的滤波时间常数因为积分增益突变比比例增益突变危害更大。加上滤波之后预同步输出的频率参考值波形变得平滑几乎没有毛刺。4. 仿真复现全过程模型、参数与波形验证4.1 主电路与控制器参数设置整个仿真在MATLAB/Simulink中完成模型由主电路、控制系统和并网逻辑三部分组成。主电路用Simscape Electrical搭建包含直流电压源、三相桥臂、LCL滤波器、断路器、电网以及本地负载控制系统用普通Simulink模块搭建包含下垂控制环、电压电流双闭环内环、预同步模块和自适应PI。系统参数如下参数数值说明额定功率50 kW—电网线电压有效值380 V / 50 Hz—直流母线电压700 V由理想直流源提供LCL滤波L10.8 mH, C30 μF, L20.15 mH阻尼采用无源阻尼电阻开关频率8 kHz双极性PWM有功下垂系数 m0.01 rad/(s·kW)满载频率跌落约0.5Hz无功下垂系数 n0.02 V/kvar满载幅值跌落约2%电网短路比2.5通过电网阻抗模拟弱电网预同步控制的运行流程是t0时刻变流器带本地负载离网运行t0.5s时启动预同步模块此时通过一个初始相位偏移设置把变流器输出电压相位相较于电网偏移约35度模拟离网期间累积的相位漂移当相位差小于0.5度且幅值差小于2%时控制系统向断路器发出合闸信号t1s时合闸。4.2 预同步阶段波形相位差与幅值差的收敛过程先看自适应PI下预同步阶段的波形趋势。启动预同步后相位差Δθ的初始值约为35度0.61 rad。按照我设置的自适应阈值0.61 rad大于0.15 rad处于第一阶段Kp6、Ki20。此时相位差以大约每秒200度以上的速率快速减小变流器输出的频率参考值整体上升因为要赶超电网相位从50Hz快速抬升到大约50.4Hz左右然后随着相位差减小逐渐回落。在大约0.12秒后相位差降到0.15 rad以下进入第二阶段Kp降到3.0、Ki升到60。从波形上可以看到相位差的下降速率变缓但依然稳步收敛。这个阶段是最容易出现超调的区间我后来仔细观察了波形在相位差从10度降到3度的过程中曲线的惯性感明显变弱没有出现固定PI那种明显冲过零点的迹象。大约在0.35秒左右相位差降到0.02 rad约1.1度以下进入第三阶段。此时积分主导Kp只有0.5、Ki有120相位差被非常缓慢但稳定地拖向零。最终在t≈0.75s左右相位差稳定在0.2度以内波动完全满足我设定的0.5度合闸条件。整个预同步用时约0.25秒从启动到达到合闸条件相比固定PI中增益方案的0.8秒快了3倍多比小增益方案更是快了8倍以上。幅值差这边初始约5%在幅值环PI作用下大约0.4秒收敛到1%以内。需要注意幅值环和相位环不是完全解耦的我在下一节会详细讲这个问题。4.3 合闸冲击电流对比固定PI和自适应PI预同步最终是为合闸服务的所以最核心的评判标准是合闸那一刻的冲击电流大小。我做了三组对比控制方案预同步收敛时间合闸相位差合闸电流峰值标幺值固定PIKp3Ki500.8s约1.5度2.6 pu固定PIKp0.8Ki202.5s约2.0度2.2 pu自适应PI0.25s约0.3度1.3 pu这里提一下为什么固定小增益方案合闸电流也有2.2 pu——因为已经满足合闸逻辑相位差2度但合闸时仍存在约2度的残余相位差再加上幅值差和负载切换的暂态过程冲击电流依然不小。而自适应PI在合闸时相位差只有0.3度这个差异直接反映在冲击电流上。从A相电流波形看自适应PI合闸瞬间波形几乎没有畸变电流在一个工频周期内就平稳过渡到逆变器输出额定电流固定PI方案合闸瞬间则有一个明显的尖峰大约3~4ms后衰减到稳态值。4.4 抗扰动性测试电网频率扰动下的表现实际电网的频率不是恒定的50Hz而是围绕50Hz小幅波动。为了验证自适应PI策略在电网频率扰动下的鲁棒性我在仿真中叠加了一个0.2Hz的正弦频率扰动模拟电网频率波动。固定PI方案在这个扰动下暴露了一个问题当预同步收敛到小误差区间后如果电网频率持续波动固定大Kp会让相位差跟随扰动剧烈动作预同步输出频率参考值出现明显的抖动合闸逻辑频繁满足又不满足可能反复触发合闸——这是工程上非常忌讳的情况。自适应PI在进入第三阶段后Kp被刻意调小、Ki调大相当于对高频的电网频率扰动做了一个低通。相位差在扰动下维持在0.5度以内波动预同步模块输出平滑合闸指令稳定可靠。这个测试让我确信自适应PI不仅仅是为了快更是为了稳两者在这个策略里是统一体。5. 复现过程中的坑与排查思路5.1 相位环与幅值环的耦合问题我最初的设计里相位环和幅值环完全独立互不通信。但仿真中发现一个现象相位差收敛得很好的时候幅值差突然出现了一个阶梯状的跳变。排查之后定位到原因在弱电网SCR2.5条件下变流器输出的有功功率变化会显著影响公共连接点的电压幅值。相位差快速收敛意味着有功输出快速变化预同步幅值环还没反应电压幅值已经被有功功率的波动带跑了。这个耦合关系在强电网里基本可以忽略但在弱电网工况下必须处理。我的解决方案是在预同步启动的第一阶段相位差较大主动降低幅值环的带宽等相位差进入小误差区间后再恢复幅值环的调节能力。实现上很简单就是把幅值环的自适应阈值和相位环联动——相位差大于0.05 rad时幅值环Ki限制在一个小值小于0.05 rad后恢复正常增益。这么做背后的工程逻辑是相位差是合闸条件中最难满足的硬指标幅值差稍微滞后一点影响不大。优先把相位差收敛到合闸范围内再处理幅值差两个环之间的动态耦合风险就大大降低了。5.2 增益切换瞬间的输出抖动这是我在仿真里观察到的最难察觉的一个问题。最初实现自适应PI时我用的是直接切换没有做增益平滑。波形上看预同步功能是正常的相位差也收敛了但把波形放大到细节会发现每次增益切换的瞬间变流器输出电压的相角会有一个肉眼几乎不可见但数值存在的突变。这个突变对合闸本身影响不大但会带来两个隐性危害一是电压畸变率微微升高二是对PLL环节造成扰动可能引发PLL的瞬态响应。排查思路是这样的先用示波器把切换瞬间的频率参考值放大发现频率参考值有约0.1Hz的跳变。然后倒推——频率参考是由有功下垂输出叠加预同步Δω得到的Δω的变化来自相位环PI输出。PI输出在增益切换瞬间跳变说明增益跳变直接注入了控制量。确认根因后加上增益低通滤波问题消失。这个坑也再次验证了工程上控制量变化率限制的重要性任何控制器参数突变都会以某种形式体现到最终输出上。5.3 仿真步长对合闸条件判定的影响还有一个容易被忽略的问题来自仿真步长。我一开始为了加快仿真速度把步长设成了100微秒。结果发现谐振到50Hz工频下100微秒步长对应的相位分辨率是50Hz×100μs×360°1.8度。也就是说在判断相位差小于0.5度这么小的合闸条件时仿真器根本分辨不出来——相位差在1.8度的量化台阶上跳来跳去合闸条件永远无法满足。我把步长改到5微秒后相位分辨率变为0.09度这个精度足够判断0.5度的合闸条件了。如果你在复现时发现合闸逻辑迟迟不触发先别急着怀疑控制算法检查一下仿真步长可能是个更高效的排查方向。对于含PWM和LCL滤波的构网型模型建议步长不要大于系统开关周期的1/20也就是8kHz开关频率下步长不要超过6微秒。另外还有一个容易被忽视的逻辑细节合闸条件判定时相位差必须连续满足条件一段时间比如10ms以上而不是瞬时满足就触发合闸。这是因为相位差本身是瞬时值可能在合闸判定瞬间碰巧满足但马上又偏离。加入持续判定逻辑后实际合闸可靠性和波形一致性都明显提高了。6. 复现后的几点体会这次完整复现做下来我最大的感受是预同步这个环节表面上看只是加了一个同步控制器但真正把它做好需要的是对整个构网型控制体系的理解包括下垂控制的下垂特性如何与同步控制交互、弱电网条件下各个控制环之间如何耦合、以及合闸逻辑与时序如何与控制环配合。自适应PI在其中扮演的角色一方面是解决了大误差快速性和小误差稳定性的矛盾另一方面也天然提供了一种抗扰动能力——它把频率波动带来的相位扰动当成了中等误差处理而不是以固定增益去硬扛。从仿真实测来看和固定PI相比自适应PI在收敛速度上的提升是非常可观的0.25s对比0.8s合闸冲击电流也从2.6倍额定电流降到了1.3倍。如果你接下来要做硬件实验我建议在DSP或者FPGA中实现自适应PI时优先用查表法配合增益平滑滤波同时一定预留预同步模块的使能和退出信号让它能和并网时序逻辑正确配合。如果遇到相位差收敛但幅值差反复波动的情况也可以从我上面提到的相位幅值耦合角度去分析大概率能快速定位到问题所在。