我最早做三相光伏并网逆变器仿真时,习惯把模型搭到"能跑"就觉得完事了。MPPT、Boost、逆变器、LCL滤波、双闭环控制,每个环节单独验证都没问题,整套模型在额定工况下也能稳定输出功率。但当我第一次把并网点电压从1.0pu直接压到0.2pu时,问题全冒出来了——直流母线电压飙到800V以上,并网电流冲破保护限值,系统直接脱网。要知道,并网导则里明确要求电网电压跌落期间光伏电站不能轻易脱网,还必须给电网提供无功支撑。这台模型如果不改,连最基本的并网验收都过不了。
这篇文章就把我在实践中摸索出来的改进型低电压穿越控制策略,以及整套MATLAB Simulink仿真模型的搭建思路、参数设计、波形结果和踩坑经验完整讲一遍。内容适合正在做光伏并网逆变器仿真、电力电子方向毕业设计、或者想把LVRT控制逻辑彻底吃透的工程师和研究生。
1. 为什么低电压穿越能力成了光伏并网的硬指标
1.1 从"电压一跌就脱网"说到并网友好性
早期很多光伏逆变器控制器只认两个目标:跟踪最大功率点、保证并网电流质量。电网正常运行时这套逻辑没有毛病,但电网一旦出现故障,比如雷击导致线路短路,或者大负荷突然起动造成母线电压骤降,并网点电压就会在极短时间内快速跌落。传统过压过流保护为了让设备自身安全,会在几百毫秒内封锁脉冲、跳开并网开关。
单台逆变器脱网问题不大,可一座几十兆瓦的光伏电站集体脱网,对电网来说就是一次巨大的功率缺额。电网本身正处于故障中,急需有功和无功支撑,电站这时候反而集体撤出,只会让频率和电压进一步恶化。这也是为什么这些年并网导则把低电压穿越能力从"建议项"改成了"强制项"。
我在仿真里对这一点体会特别深。模型中的保护模块动作后,并网点电流瞬间跌到零,波形图上就像被砍了一刀。如果放在真实电站,这个波形就对应一次实实在在的脱网事故。所以LVRT不是锦上添花,而是光伏逆变器上电网的必修课。
1.2 并网导则里那些没法讨价还价的数字
低电压穿越不是"尽量保持运行"这种弹性要求,而是有明确的电压-时间曲线。我现在做仿真模型,默认按GB/T 19964-2012和电网公司对光伏电站接入的技术规定来验收。核心要求可以拆成几条:
- 并网点电压在0.9pu以上时,电站必须保持正常并网运行;
- 并网点电压跌落到0.2pu~0.9pu区间时,电站不能脱网,要持续并网运行直到故障清除、电压恢复;
- 并网点电压跌到0.2pu附近时,要求能保持不脱网运行约625ms;
- 跌落期间必须向电网动态注入无功电流,工程中常用的公式是: [ I_q \ge 1.5 \times (0.9 - U_t) \times I_n ] 其中(U_t)是并网点电压标幺值,(I_n)是额定电流。电压跌得越狠,要求发的无功电流越大;
- 此外还有有功恢复要求:故障切除后,有功功率要在规定时间内恢复到接近故障前水平,不能长期趴窝。
把这些要求翻译成仿真模型的验收标准,就是:0.5s时叠加电压跌落,持续0.625s,然后恢复额定电压。整个过程里逆变器不能触发保护跳闸,直流母线不过压,电流峰值不超过设计限值,无功电流能按公式顶上去,故障消失后有功功率在几十毫秒内爬回原值。
2. 改进型LVRT控制策略:正负序分离与无功优先是核心
2.1 传统双闭环控制在电压跌落时的表现与短板
三相光伏并网逆变器最常用的控制结构,是电压外环加电流内环的双闭环。光伏侧Boost通过MPPT把直流母线电压稳定在一个设定值,逆变器电流内环在dq旋转坐标系下分别控制有功电流(i_d)和无功电流(i_q)。电网电压定向到d轴以后,电压外环输出有功电流给定,无功电流给定为0或按调度指令设置。经过PI调节器得到逆变器输出电压参考,再用SPWM或SVPWM驱动开关管。
问题就出在电压跌落瞬间。电网电压(u_g)掉下去之后,要输出同样的功率就必须有更大的电流,因为功率方程摆在那里: [ P = \frac{3}{2}(u_{gd} i_d + u_{gq} i_q) ] 当电网电压变小而功率指令还维持原值,电流给定必然变大。电流一变大会触发过流保护;如果限制电流不放大,有功输出又送不出去,直流侧能量全部堆在母线电容上,直流母线电压飙升。传统双闭环在这种工况下只有两条路:过流跳闸,或者母线过压,两个结果都等于脱网。
更麻烦的是,如果故障不对称,比如电网发生单相接地跌落,传统dq旋转坐标系下的电压电流都会出现二倍频的交流波动分量。PI调节器对付直流量还行,对付这种交流扰动基本无计可施。仿真里能看到电流波形在整个故障期间持续畸变,三相不平衡严重。最头疼的是锁相环也会被负序分量带偏,相角一错,电流控制直接乱套。
2.2 为什么必须做正负序分离
要应对不对称跌落,光靠传统dq双闭环是不够的。不对称故障下的三相电压可以分解成正序分量、负序分量和零序分量。三相三线制系统里零序没有通路可以忽略,但负序分量一定会流过逆变器,躲不掉。
负序分量的危害主要有三点。第一,负序电流会导致三相电流不平衡,严重时某一相电流峰值会超过开关管安全区,直接炸管子。第二,负序电流与正序电压相互作用,会在有功功率和无功功率上产生100Hz的二倍频脉动,直流母线电压跟着一起抖。第三,负序分量混入锁相环和电流反馈以后,会干扰同步旋转坐标系下的PI调节,整个控制性能明显下降。
所以改进型策略的第一步,就是快速、准确地把三相电压和电流里的正序、负序分量分离出来。常用的工程方法有三种,我列个表对比一下:
| 方法 | 原理 | 优点 | 缺点 |
|---|---|---|---|
| 延时信号消除(DSC) | 利用T/4延时构造±90°相位差,把正负序分离 | 结构简单,参数少,易实现 | 存在T/4固有延时 |
| 陷波器法 | 在αβ坐标系用100Hz陷波器滤掉负序分量 | 动态响应快 | 对频率偏移敏感 |
| DSOGI双二阶广义积分器 | 对αβ分量分别做正交信号生成再合成 | 抗频率扰动能力好 | 结构复杂,调节参数多 |
我在实际模型里用DSC比较多,原因很直接:实现直观,就几个求和模块和延迟模块,参数只有一个延时时间(T/4=5ms),调试不容易出错。DSC在αβ坐标系下的表达式如下:
[ \begin{cases} v_{\alpha}^{+}(t) = 0.5\left(v_{\alpha}(t) - v_{\beta}(t - T/4)\right)\ v_{\beta}^{+}(t) = 0.5\left(v_{\beta}(t) + v_{\alpha}(t - T/4)\right) \end{cases} ]
[ \begin{cases} v_{\alpha}^{-}(t) = 0.5\left(v_{\alpha}(t) + v_{\beta}(t - T/4)\right)\ v_{\beta}^{-}(t) = 0.5\left(v_{\beta}(t) - v_{\alpha}(t - T/4)\right) \end{cases} ]
从公式能看出来,正序和负序用的是同一组延迟信号,只是加减组合方式不同。在Simulink里就是Clarke变换模块后面挂两个Transport Delay,再加两个增益0.5的Gain模块和几个Add、Subtract模块,很轻松就能搭出来。电流信号的正负序分离,完全照这个方法再复制一份就行。
2.3 功率指令重构:故障瞬间有功无功怎么分配
传统策略在故障时不做模式切换,所以才会硬扛过流。改进型策略的关键是加一个LVRT模式切换逻辑,核心就一句话:故障期间无功优先,有功让路。
我用一个滞环比较器来检测跌落深度。先计算电网正序电压的幅值标幺值(U_t),然后判断:
- (U_t \ge 0.9)时,运行在正常并网模式,有功按最大功率跟踪,无功按调度给定;
- (U_t < 0.9)时,切入LVRT模式,持续到故障清除、电压恢复后延时退出。
在LVRT模式下,指令重构分成三步走。
第一步,无功电流给定按导则公式计算: [ i_{q_ref} = \max\left(i_{q_normal}, \ 1.5 \times (0.9 - U_t) \times I_n\right) ] 电压跌到0.2pu时,无功电流给定大约是(1.5 \times 0.7 = 1.05)倍的额定电流,也就是接近满发无功。
第二步,有功电流给定要保证合成电流不超限。这里有个新手常犯的错:直接用饱和模块把有功电流限制在1.2pu。问题是如果无功电流已经到1.05pu,再把有功限制在1.2pu,合成电流会达到1.6pu左右,早就超出开关管安全区了。我建议用合成限幅: [ i_{d_ref} = \min\left(i_{d_mppt},\ \sqrt{i_{max}^2 - i_{q_ref}^2}\right) ] 比如逆变器短时过载能力(i_{max}=1.2)pu,无功电流给定1.05pu,那么有功电流最多给到约0.58pu。这样合成电流才不会越界。
第三步,负序电流给定直接给0。也就是说,不对称故障时负序电流环会主动把负序电流抑制掉,让三相输出尽量保持平衡。
这里有一个特别容易忽略的点:从正常模式切到LVRT模式时,无功电流给定可能从0直接跳到1.05pu,如果电流环响应太快,会在一两个开关周期内产生很大的电流变化率,开关管应力非常大。我一般会在给定后加一个速率限制器,让无功电流在2~3ms内斜坡上升到指令值,实测波形会平滑很多。
2.4 直流母线过压抑制和故障恢复策略
LVRT模式下有功电流被压下去,直流侧MPPT还在继续往母线送功率,母线电容上的能量只进不出,电压必然上升。应对措施我分了三层:
- 硬件层面:在直流母线上并联卸荷电路(Chopper),电压超过阈值时导通泄放电阻,把多余能量消耗掉;
- 控制层面:对MPPT输出做快速限功率,或者直接把Boost占空比钳位,减少输入功率;
- 仿真层面:在母线电压反馈上做前馈补偿,让电压环在动态过程中动作更快。
我在模型里通常先用Chopper方案,因为逻辑简单、参数直观。直流母线电压给定650V,实测值超过680V就导通卸荷,降到660V以下才关断。靠这套逻辑,故障期间母线电压能稳在1.1pu以内。
故障恢复阶段同样要小心。很多人只关注跌落瞬间,忽略了电压恢复的那一刻。实际上电压恢复时回到额定值,LVRT模式退出,有功指令如果没有过渡,会瞬间从0.58pu跳回1.0pu,又造出第二次电流冲击。我的处理办法是有功、无功指令都做斜坡恢复,有功在10~30ms内线性爬回MPPT给定,无功以5ms左右的速率降回0。整套穿越过程才算完整闭环。
3. Simulink模型搭建:从光伏阵列到并网开关的全链路
3.1 整体模型架构和各模块职责
我在Simulink里搭的改进型LVRT模型,从光伏侧到电网侧完整信号流是下面这个样子:
- PV Array光伏阵列模块,放在Simscape Electrical的Specialized Power Systems库中,选一个常用的光伏组件型号,设置串并联数量,输出随光照、温度变化的直流功率;
- MPPT控制器,采用扰动观察法,采样光伏输出电压电流,输出Boost的占空比参考;
- Boost升压电路,把光伏输出电压升到直流母线额定值;
- 直流母线电容,作为储能缓冲环节,同时并联Chopper卸荷电路;
- 三相两电平逆变器,用Universal Bridge模块,IGBT加二极管,开关频率10kHz;
- LCL滤波器,逆变器侧电感、滤波电容、网侧电感三件套;
- 电网与故障注入模块,PCC点连接可编程三相电压源或Three-Phase Fault模块;
- 控制子系统,包含PLL锁相、正负序分离、LVRT模式切换、电流内环、电压外环、SVPWM调制。
控制信号要分清楚:功率主电路走Simscape物理端口,控制信号走普通Simulink信号线。很多新手把两个域混在一起,仿真直接报错或者迭代不收敛。我建模时习惯把控制部分全部收进一个Control子系统,里面再分成锁相模块、序分量分离模块、电流控制器模块、模式管理器几个子块,方便调试,也方便以后复用。
3.2 关键参数配置实例
参数不能拍脑袋定。下面给出我用来复现整套LVRT逻辑的一组10kW级参数,建议先按这组跑通,再改功率等级和研究其他工况:
| 项目 | 参数 |
|---|---|
| 额定功率 | 10kW |
| 交流线电压 | 380Vrms / 50Hz |
| 直流母线电压额定值 | 650V |
| 光伏阵列MPPT电压/电流 | 约500V / 20A |
| Boost开关频率 | 20kHz |
| 逆变器开关频率 | 10kHz |
| 逆变器侧电感Li | 0.6mH |
| 滤波电容Cf | 10μF |
| 网侧电感Lg | 0.2mH |
| 直流母线电容C | 2000μF |
| Chopper卸荷电阻 | 10Ω |
| 电流内环PI | Kp=3,Ki=100 |
| 电压外环PI | Kp=1.5,Ki=60 |
| 最大电流限值 | 1.2pu(短时) |
| 故障时间 | 0.5s~1.125s(共625ms) |
| 仿真求解器 | ode23tb,变步长,最大步长1e-5,时长1.5s |
LCL参数的谐振频率必须避开基波和开关频率。按上面参数大致可以估算谐振频率约1.6kHz左右,远高于50Hz基波,又低于10kHz开关频率的一半,实际波形不会出现明显的谐振尖峰。这一点在设计阶段就要算好,否则后面PWM谐波跟电感电容发生谐振,仿真波形毛刺多到没法看。
3.3 故障模块的两种模拟方式
低电压穿越仿真的核心是"让电压按需求跌下去",我在实际项目里用过两种方式,各有适用场景。
第一种,用Three-Phase Programmable Voltage Source可编程三相电压源。这个模块支持按时间段设置电压幅值、相位和频率。比如我把第一个时间段设为额定380V/50Hz,持续0.5s;第二段把幅值设成0.2pu也就是76V,持续0.625s;第三段恢复额定。这种方式的优点是干净、可控、跌落深度精确,非常适合验证控制策略本身。
第二种,用Three-Phase Fault模块模拟真实故障。在PCC和电网之间或在PCC处并联一组接地故障支路,设置故障相、故障电阻和持续时间。故障电阻越小,跌落越深。如果要对准目标跌落深度,需要结合电网阻抗和故障电阻分压来计算。比如电网等效阻抗(Z_g = 0.05 + j0.2\Omega),想要跌落至0.2pu,故障支路电阻大致需要满足: [ U_{pcc} \approx \frac{Z_f}{Z_g + Z_f} U_n ] 按这个公式算下来,(Z_f)得取到跟电网阻抗同一量级,大约在0.01~0.02Ω附近。如果你只想快速验证LVRT逻辑,建议先用可编程电源;如果你要研究真实的单相接地故障、分析负序分量,再切到Three-Phase Fault。
4. 仿真结果对比:传统控制 vs 改进型控制
4.1 对称跌落:从过流跳闸到平稳穿越
先看最典型的工况:0.5s时并网点电压对称跌落到0.2pu,持续625ms,到1.125s恢复额定。
传统控制那一版模型,电压跌落的瞬间,并网电流不是缓慢上去的,而是直接冲到2.5pu以上。电流内环的PI输出瞬间饱和,逆变器输出电压被顶到限幅,直流母线电压在几十毫秒内从650V飙到820V以上。原因很清楚:光伏侧还在源源不断输入功率,交流侧电压太低,想送同样功率就得有更大电流,电流上不去功率就出不去,能量全部堆在母线电容上。紧接着保护动作,开关管封锁,并网电流掉到零,PCC处功率断流,脱网。
改进型控制那版模型,波形完全不同。故障发生后约1ms左右,LVRT模式管理器检测到跌落深度,切入LVRT模式。无功电流给定按公式拉高到约1.05pu,有功电流给定被压到0.58pu以内,电流内环正常跟踪指令,三相电流峰值被限制在1.2pu以内。直流母线电压在故障初期有小幅上冲到约705V,Chopper动作后回落,最终稳定在675V上下,在1.1pu安全范围以内。到1.125s故障切除,有功指令按斜坡在20ms内恢复,并网功率回到故障前水平,全程没有触发保护,完整实现了低电压穿越。
4.2 单相接地不对称跌落:负序分量是主要矛盾
再看不对称工况:A相电压跌落到0.5pu,B、C相接近正常。这是实际电网里更常见的故障类型。
传统控制在单相跌落下的表现非常糟糕。负序电压存在,dq坐标系下就出现二倍频扰动,PLL输出的相位发生波动,电流环把扰动当成指令跟踪,结果三相电流严重不平衡,A相电流偏小、B相电流偏大,负序电流占到额定电流的14%左右。有功功率波形里能明显看到100Hz振荡,直流母线电压也出现同频率脉动,峰峰值达到正常值的8%。仿真跑到这个工况时,保护模块频繁越限,根本撑不满625ms。
改进型策略在不对称工况下表现是:正负序分离模块把负序电压、负序电流解耦出来,负序电流环指令给0,主动抑制负序分量。最终三相电流不平衡度从14%降到3%左右,负序电流基本被压住。有功功率的二倍频振荡虽然依然存在,因为电网负序电压还在,这是物理上无法消除的,但母线电压波动从8%降到了2%以下。整个故障期间逆变器没有过流、没有脱网。
我知道有人会问:既然负序电流是0,为什么有功功率还在振荡?因为功率振荡是电网负序电压和正序电流相互作用产生的,电流控制只能控制电流,不能改变电网电压本身。我们的目标是保证电流安全、不脱网,而不是彻底消除功率振荡。这个预期一定要摆正。
4.3 关键指标汇总对比
| 工况 | 传统控制 | 改进型控制 |
|---|---|---|
| 20%对称跌落625ms | 电流峰值2.5pu,母线820V,保护脱网 | 电流限1.2pu,母线≤705V,穿越成功 |
| A相50%不对称跌落 | 负序电流14%,母线波动8%,无法坚持 | 负序电流3%,母线波动<2%,穿越成功 |
| 故障恢复过程 | 有功阶跃冲击,二次过流风险 | 斜坡恢复20ms,无二次冲击 |
| 无功支撑能力 | 无专门控制,基本不输出 | 按导则公式输出,跌落越深无功越大 |
改进型策略的价值在这张表里体现得很直接:它不只是"不脱网",而是在不脱网的基础上还能给电网提供无功支撑,这对真实电网的电压恢复是有实际帮助的。
5. 调参与排错:仿真跑不出来的几个"隐形杀手"
5.1 直流母线电压失控,仿真被过压卡死
很多人在做LVRT仿真时遇到的第一堵墙,就是直流母线电压飞升。母线电容在故障瞬间被充电,电压从650V一路涨到900V,仿真器因为器件电气极限被超过而报错,或者系统保护动作跳闸。
我排查这个问题时先看时间尺度。如果母线电压是几十毫秒内慢慢涨上去的,大概率是电压外环带宽太低,跟不上功率突变。处理办法是给电压环加一个前馈项,把逆变器输出功率除以母线电压折算成前馈电流,叠加到电压环输出上,响应速度能提升一大截。如果母线电压是几个微秒内瞬间跳上去的,那多半是仿真步长太大,没有踩住电力电子器件的开关时刻,PWM斩波引起的尖峰被混进结果里。解决办法是把最大步长降到1e-6再试,同时检查PWM模块的采样时间设置。
5.2 PLL在跌落瞬间失锁
PLL是低电压穿越仿真里最容易翻车的地方。电压跌落不是从1.0pu平滑过渡到0.2pu,而是伴随一个相位跳变。如果PLL带宽较宽,它会在跳变时发生超调,输出相位来回摆动。电流内环拿到一个抖动的相位参考,输出电流就会出现明显的低频振荡,严重时看起来就像系统要崩溃了。
我的解决思路是:给PLL的输入先做正序分离,用正序电压的αβ分量去锁相,而不是直接用原始三相电压。这一条在不对称故障下几乎是必须的,因为原始电压里的负序分量会直接污染锁相结果。同时把PLL的PI带宽调低一点,让它对相位跳变不敏感,但也不能太低,否则故障恢复后锁相速度跟不上。这个度需要反复试,我一般从10~20Hz带宽开始调。
5.3 正负序分离的T/4延时造成指令延迟
DSC方法存在5ms的固有延时,这在动态过程中会产生一个实际问题:故障发生后前5ms内,正序和负序分离结果还没完全收敛,此时LVRT模式已经切换,电流指令会基于还不够准确的序分量算出来,造成瞬时过流。
为了规避这个问题,我做了两个措施。第一,在LVRT模式切换和电流指令计算之间加一个小延时或速率限制,等序分量提取稳定后再切到无功优先。第二,电流限幅器放在最外端,不管指令从哪里算出来的,最终进入电流环的参考值必须经过合成限幅。这样哪怕序分量实时性差了一些,电流也出不了安全区。这两个措施加上去以后,仿真里的过流尖峰基本就消失了。
5.4 仿真速度慢到怀疑人生
电力电子仿真出了名的慢,加了LVRT逻辑之后模型更重。我踩过最狠的一次,10kW模型在2核CPU上跑1.5s仿真时间差不多用了4个小时。后来把模型改成离散化之后,大约半小时跑完。两条经验值得分享:
- 主电路和控制系统尽量离散化。PWM生成用载波周期采样,控制周期设为1e-4左右,对应10kHz载波下的100μs控制周期,不必每个仿真步长都刷一遍控制器;
- 求解器用ode23tb,针对刚性系统效果好,最大步长先设1e-5。如果波形里出现莫名其妙的数值尖峰,先把最大步长降到5e-6排除数值振荡的可能,再逐步放大,找到精度和速度的平衡点;
- 把不需要每个开关周期都记录的Simscape物理变量测量关掉,减少数据记录负担。
另外提醒一句,仿真一开始就报convergence error的话,先检查Universal Bridge的snubber电阻是否设置成了inf或者过大。很多初学模型卡在第一步,其实不是控制问题,纯粹是数值求解问题。
整套模型跑稳定之后,我把LVRT模式管理器做成了一个可复用的Simulink Function模块,输入是正序电压幅值、有功指令和最大电流限值,输出是切换后的有功、无功电流参考以及卸荷开关信号。换一个功率等级的光伏系统时,只需要改参数表,不用重写控制逻辑。这也是我建议所有做光伏并网仿真的人养成的习惯——把策略和参数分开,模型才能越用越顺手。
上面这组改进型LVRT策略在对称跌落、不对称跌落和故障恢复三个阶段的表现,基本覆盖了并网导则对光伏逆变器的核心验收要求。你如果正在做类似的仿真模型,建议先按这个思路把对称跌落工况跑通,再切到不对称故障去调试正负序部分,一步一个脚印,别一上来就追求全工况一次成功。