做并离网微电网仿真的朋友,十个里有八个绕不开下垂控制。我在搭这套Simulink模型之前,一直觉得教材里那两条下垂曲线很简单——功率大就降频,无功多就降压,写出来也就两行表达式。等到自己真正把多个分布式电源放进同一个三相系统里,同时还要处理并网和离网两种模式切换时,才发现这玩意儿每一层都有坑:功率分配不均、PLL锁不住、模式切换瞬间过流、甚至Simulink直接报代数环错误。这篇文章围绕我实际搭起来的一套并离网下垂控制模型,把完整思路、参数设计和踩坑记录一次讲透。适合正在做微电网方向课程设计、毕业设计,或者刚接触逆变器并联控制的工程师参考。
1. 先想明白:这套下垂控制模型到底在解决什么问题
1.1 微电网为什么会用到下垂控制
理解下垂控制之前,得先搞清楚微电网里的电源有什么特殊性。跟大电网里的同步发电机不同,微电网里的光伏、储能、小风机基本都是通过逆变器并网的,逆变器本身没有转动惯量,不能天然维持频率和电压。多个逆变器并联运行时,如果各自按照本地功率指令硬发,就会出现负载分配不均的问题。
下垂控制其实是借鉴同步发电机的外特性:一次调频靠频率下垂,一次调压靠电压下垂。它的核心思想是让逆变器在没有任何通信线的情况下,仅凭本地测量到的有功、无功功率,自动调整输出电压的频率和幅值,实现功率自然均分。这个特性在离网模式下尤其重要,因为没有大电网兜底,频率和电压完全靠微电网内部分布式电源自己撑起来。
我一开始踩过的一个误区是,觉得并网模式下就不需要下垂了。实际上,很多实际项目里会在并网模式也保留下垂特性,让多个分布式电源平滑地承担负荷变化,只是并网时电网会强制拽住频率,下垂体现出来的主要是功率分配方向。
1.2 并网与离网的两种运行姿态
这套模型要重点刻画的是两种工况:
并网状态下,微电网通过公共连接点PCC与上级电网相连。此时系统频率由大电网决定,分布式电源通常按恒定功率输出,或者按下垂曲线参与调节。真正麻烦的地方在于并网切换到离网的一瞬间——外部电源消失,微电网必须立刻自己建立电压和频率,这个接力没做好,下面的负荷就会直接掉电。
离网状态下,所有分布式电源都处于电压源型控制,共同承担负荷。下垂控制在这里不是可选项,是必备的,因为多个逆变器并联、又没有任何互相通信的时候,只有靠功率-频率、无功-电压的下垂关系才能维持同步运行。
关于控制架构,主流做法有“双模式切换”和“统一下垂控制”两种。前者在并网时用PQ控制,离网时用V/f或下垂控制,每个模式单独设计控制器,性能容易保证;后者全程使用下垂控制,只是在并网时让下垂环与电网外特性共同作用,切换逻辑更少。我搭的模型采用的是双模式切换方案,但下垂控制环本身是独立封装好的,这样三个DG之间即使后来改成统一控制,也只需要改顶层逻辑,不用重写整个子系统。
1.3 “完美运行”背后的三个隐藏标准
仿真能跑通,不等于模型正确。我在调这套模型时给自己定了三条硬指标,缺一条都不能叫“完美运行”:
第一是稳态功率分配精度。两台DG从空载突然切到10kW负载,各自承担的功率偏差不能超过设定容量的5%。如果一台发得多一台发得少,说明下垂系数或者线路阻抗参数有问题。
第二是模式切换的平稳性。并网切离网、离网再并网这两个瞬间,关键节点电压的幅值波动应控制在5%以内,频率波动应控制在0.5Hz以内,绝不能出现电流冲击和母线电压塌陷。光这一条就让我反复调了两周。
第三是动态响应不过度。突加负载后,系统应能在0.5秒左右恢复到稳定,频率振荡的阻尼要好,不能一出现扰动就“呼吸式”地来回摆动。
这三个标准看起来基础,但实际能把三条同时满足的仿真模型,我看到的不少作品其实都没做到。下面我把实现细节一层一层拆开。
2. 核心控制链路拆解:从功率计算到参考电压的完整推导
2.1 下垂公式怎么推导,参数又该怎么定
下垂控制的数学基础其实就两组方程:
ω = ω₀ − m·P
V = V₀ − n·Q
其中ω₀是空载角频率,V₀是空载电压幅值,m是有功-频率下垂系数,n是无功-电压下垂系数。
参数设计的逻辑非常简单:先确定允许的频率偏差和电压偏差,再除以该电源能够提供的最大功率。以我搭建的模型为例,单台DG额定有功功率10kW,额定无功功率5kVar,系统额定电压380V/50Hz。
频率允许偏差取±0.5Hz,那么实际可用频率范围就是1Hz,对应角频率偏差是2π×0.5≈3.14rad/s。下垂系数
m = 3.14 / 10000 ≈ 3.14×10⁻⁴ rad/(s·W)
电压允许偏差取额定相电压峰值311V的5%,也就是约15.6V,那么
n = 15.6 / 5000 ≈ 3.1×10⁻³ V/var
这里有一个非常容易踩的坑:Simulink里的频率单位。很多人把m算成0.05Hz/kW,然后在程序里直接当角频率用,仿真结果出来频率整体偏移都找不到原因。正确做法是统一用角频率rad/s,如果要写Hz,就必须在接入ω之前乘上2π。
我把关键参数整理成了一个对照表,方便直接复制调整:
| 参数 | 符号 | 数值 | 单位 | 说明 |
|---|---|---|---|---|
| 有功下垂系数 | m | 3.14e-4 | rad/(s·W) | 由±0.5Hz折算 |
| 无功下垂系数 | n | 3.1e-3 | V/var | 由±5%额定峰值电压折算 |
| 额定角频率 | ω₀ | 314.16 | rad/s | 50Hz |
| 空载电压幅值 | V₀ | 311 | V | 相电压峰值 |
| 一阶低通滤波截止频率 | ω_c | 31.4 | rad/s | 滤除功率波动谐波 |
2.2 虚拟阻抗:低压微电网里必须补的“顺手一笔”
除了最基础的两条下垂公式之外,我建议直接把虚拟阻抗加上。低压微电网的线路阻抗以电阻为主,阻性成分大会导致有功和无功之间产生耦合,P-f、Q-V两条通道不再独立,功率分配会乱。虚拟阻抗的思想是在控制回路里“人为加一段阻抗”,让逆变器对外呈现出来的等效输出阻抗呈感性。
实现方法很直接:在d-q坐标系下,把电流的微分和电流按虚拟电阻R_v、虚拟电感L_v做一次计算,然后从电压参考值里减掉:
V_d_ref = V_d_droop − R_v·i_d + ω·L_v·i_q
V_q_ref = V_q_droop − R_v·i_q − ω·L_v·i_d
我这里设置的虚拟电阻0.1Ω,虚拟电感1mH。R_v太小会抑制不住功率耦合,太大又会把电压压降拉得很厉害,导致负载端电压偏低。判断标准很简单,看P从1kW阶跃到8kW时,Q通道的波动幅度;耦合越小越理想,但不能牺牲稳态电压。
2.3 电压电流双闭环在整条链路里的位置
下垂环给出的是电压幅值和频率指令,但逆变器输出的是PWM波,中间必须经过电压电流双闭环把那一路电压“钉住”。电压外环跟踪下垂参考电压,电流内环快速响应对付负载突变,并且天然具备限流能力。
从控制链路看,顺序是:采样输出电压电流 → 功率计算 → 下垂计算得到ω和V → 生成三相参考电压 → Park变换到d-q轴 → 电压外环PI → 电流内环PI → 前馈解耦 → PWM调制。
很多人只把注意力放在下垂系数上,双闭环随便拿一组PI参数顶上,结果就是功率波形叠着高频纹波,开关频率附近的噪声全部串进功率环。我在下面第4节会具体讲PI整定顺序。
3. Simulink模型架构:怎么搭一座“能跑不崩”的微电网系统
3.1 顶层拓扑和模块划分
整个模型我从顶层开始分层搭建,避免一张大图纸上堆满线路,检查起来非常痛苦。顶层拓扑包括:三相电网源、公共连接点处并网开关、两条馈线、两台DG、一组本地负载。
每个DG单元拆成一个独立子系统,内部又分三层:
第一层是主电路层,直流电压源、三相全桥IGBT逆变器、LC滤波器、线路阻抗。主电路工作电压取800V直流侧,输出经过LC滤波后升压到380V交流。
第二层是测量层,用电压电流测量模块采集滤波电容电压和滤波电感电流。采集信号必须用“三相瞬时值”而不是平均值,因为控制器需要的是每个开关周期的瞬时反馈。
第三层是控制层,内含SRF-PLL锁相环、功率计算、下垂控制器、虚拟阻抗、电压电流双闭环、PWM发生器、模式切换逻辑和预同步模块。
3.2 坐标系选择、前馈解耦与单位换算
这套模型里最值得细说的是d-q坐标系下的处理。三相静止坐标系里的正弦信号,PI控制器跟踪效果并不好,稳态有静差;换到旋转坐标系后,被控量变成直流量,PI可以做到无静差跟踪。
Park变换需要的角度,在离网模式下直接取下垂控制器产生的θ,在并网模式下则全部由PLL锁定电网电压相位提供。角度来源切换是整个模型最容易出问题的地方,我采用的是“角度连续切换”,切换前先记录当前θ值,再根据新模式下的角频率连续累加,不让θ发生突变。θ只要跳变,输出电压相位就会跳变,那个瞬间冲击电流非常大。
电流内环采用d-q轴解耦。三相逆变器在旋转坐标系下,d轴和q轴的电流方程是互相耦合的,控制器输出里必须加上ω·L·i_d和ω·L·i_q这两个前馈补偿项,否则D轴分量一变Q轴就会跟着抖。
关于单位换算,我建议统一用国际单位制。Simulink里三相模块很多都支持pu标幺值和SI单位切换,混用非常容易导出系数差几百倍的错误。我的做法是:主电路电气部分用SI单位,控制器全部用SI单位,两个子系统之间不做任何单位换算,自始至终一套单位制。这样初期调试虽然麻烦一点,但排错时心智负担小很多。
3.3 模式切换与预同步逻辑
并网切离网相对好处理,核心命令就是断路器断开、控制模式切换。但在切断之前,控制器必须知道电网要断开。我的实现里用一个“并网状态信号”来模拟外部电网故障或检修:状态为1时系统并网运行,状态变0时立即进入离网模式。切换时分布式电源的输出电压参考值被锁定在最后一刻的幅值和相位上,这样逆变器不会因为控制模式切换而产生输出跳变。
离网再并网要麻烦很多,必须先做预同步。下面的示意逻辑就是我最终采用的顺序:
if 当前模式 == 离网: 计算电网侧电压幅值U_grid、频率f_grid、相位θ_grid 计算逆变器输出电压幅值U_inv、相位θ_inv 计算三者误差: ΔU, Δθ, Δf 当 ΔU < 5% 且 Δf < 0.1Hz 且 Δθ < 5° 时: 合闸并网开关 控制模式切到并网 否则: 用PI调节器把Δθ整形为频率修正量,叠加到下垂频率指令上核心难处在最后那个PI调节器。它专门用来微调逆变器频率,把两边相位慢慢“拉”到一致,整形速度太慢会拖很久,太快又会引起频率波动。我这边PI参数是Kp=0.5,Ki=20,配合5°的判断门限,大约0.3秒就能完成一次合闸。
4. 实操过程与关键参数调试顺序
4.1 线路阻抗、滤波器与下垂系数的联动匹配
调试这套模型,第一步绝对不是调PI,而是把稳态工作点算准。线路阻抗和滤波器参数直接影响功率分配,如果线路阻抗不一致,即便下垂系数完全相同,两台DG分配到的功率也会不同。
以两条馈线为例,馈线1长0.2km,馈线2长0.5km,单位阻抗按0.3Ω/km电抗、0.1Ω/km电阻估算。馈线2的阻抗明显更大,离网带同一负荷时,它分担的功率就会偏小。要补偿这种偏差,我给馈线2对应的DG设置了稍小的虚拟电感,等效上把它的输出阻抗拉回与馈线1一致。这样做的物理含义是:并联电源要均分功率,它们对外表现出的等效阻抗必须一致,而不是物理线路长度一致。
LC滤波器参数我选的是L=2mH,C=30μF,计算谐振频率:
f_r = 1 / (2π√(L·C)) = 1 / (2π·√(0.002×0.00003)) ≈ 650Hz
这个谐振频率要显著低于开关频率(我用的10kHz),又要显著高于基波50Hz,留出控制带宽窗口。把谐振频率算出来是必须做的,我在只调PI不看谐振频率的时候,模型总在某一个特定负载下出现持续振荡,后来就是谐振点恰好在控制带宽附近被激励了。
4.2 双闭环PI参数整定思路
双闭环的整定顺序有严格先后:先内环后外环,先稳态后动态。
电流内环的PI参数,可以按带宽法确定。设期望电流环带宽为ω_ci,对2mH电感,Kp可粗取L_f·ω_ci,Ki按零点抵消电感电阻极点来取。我目标带宽是1200rad/s左右,算出来Kp=2.4,Ki=120,实际仿真再微调。电流内环带宽不能取得太高,否则离散控制一拍延迟就会让系统不稳定。
电压外环的带宽要明显低于电流内环,一般取电流环带宽的1/3到1/5。我这里电压环期望带宽约400rad/s,对应反馈电容30μF,Kp=0.012显得很小,但加上电压外环输出的是电流内环指令,整个环路增益综合之后效果是对的。这一点新手很容易被数值吓到,觉得PI参数太小就不敢往仿真里填,其实对应的物理对象和信号通路完全不同,一定要结合前向通道增益整体看。
整定的时候,我给双闭环写的是一套“四步走”流程:
- 只接单台DG,断开并网开关,负载挂一个纯电阻,把下垂环的功率计算反馈断开,让电压环去跟踪固定311V参考。
- 电流环从纯比例开始往上加,观察电感电流波形,出现图中高频杂波就回调20%。
- 电压环外环逐级加Ki,直到电容电压稳态幅值误差小于1V,动态超调小于10%。
- 双闭环稳定之后,把下垂环和功率计算接回来,重新检查功率分配和电压幅值。
4.3 仿真步长与求解器选择
这套模型包含IGBT开关器件和PWM调制,仿真步长和求解器配置直接影响能否跑完和结果是否可信。PWM开关频率10kHz,一个开关周期100微秒,控制周期也是100微秒。单纯按控制周期采样会丢失电流纹波细节,我经验是固定步长取2微秒到5微秒,既能保留电流细节,又不至于太慢。
求解器方面,我最终的配置是固定步长、离散求解器,步长2微秒。Simulink里的可变步长连续求解器虽然跑得快,但功率电子模型里存在高频开关和续流二极管换流,很容易触发最小步长限制然后卡死。
如果模型规模再大一点,比如三个以上DG,建议把PWM载波设置为多路移相,或者先把开关管理想化处理成平均值模型做功能验证,再切回实际开关模型做波形验证。平均值模型能跑出控制逻辑和功率分配,但不能看纹波和谐波,两个阶段各有用途。
5. 常见问题排查与避坑实录
5.1 功率振荡:两台DG互相“打架”
这是离网并联模型里最常见的问题。现象是两台DG的输出有功功率在额定值附近来回摆动,周期大概在0.5秒到2秒之间,摆动幅度逐渐增大。
排查思路按顺序走:先看两台DG的等效输出阻抗是否一致,把线路参数和虚拟阻抗都列出来对比;再看功率计算里的低通滤波器截止频率,截止频率太低会让功率反馈严重滞后,滞后是振荡最常见的原因之一。我把低通滤波器截止频率从31.4rad/s提高到了62.8rad/s,同时适当加大虚拟电感,两个方面都会增加系统阻尼,摆动就压住了。
5.2 模式切换瞬间过流和电压凹陷
并网切离网瞬间,如果控制模式从PQ直接切成V/f,参考电压相位与当前实际输出电压相位不一致,逆变器会瞬间输出大电流,母线电压也会凹陷。
这里关键问题不是PI参数,而是切换时序。我最后的做法是:断路器分闸信号发出前,下垂控制器已经提前开始运行,但它的输出被一个很小的斜坡函数钳位在当前值;分闸完成后,斜坡在5毫秒内放开,让下垂控制逐渐接管。这种“先运行、后接管”的方式比先切换模式再接入控制的效果平滑得多。
5.3 PLL失锁与角度跳变
SRF-PLL在电网电压对称跌落或者频率突增时会短暂失锁,失锁期间θ持续线性增加,等到重新锁定已经偏差很大,直接导致并网合闸冲击。
我的处理分两层:一是PLL输出θ与下垂控制θ之间做差值计算时,加一个角度回卷处理,保证差值落在±π区间内,避免θ跨过2π边界时产生虚假的大误差信号;二是预同步阶段不直接使用PLL的瞬时相位,而是用一阶惯性环节平滑θ误差,把角度修正量限幅在±0.1rad/s以内,合闸瞬间冲击电流显著降低。
5.4 模型跑不起来:代数环与初始化陷阱
Simulink里最令人抓狂的报错是“Algebraic loop detected”。这个错误多出现在控制输出直接通过测量模块反馈回输入的回路里,下垂控制器的功率测量信号和PWM输出之间,如果路径上没有任何状态变量,Simulink就会尝试解代数环,轻则仿真极慢,重则直接报错。
我的解决方案是在功率反馈通路上保留一阶低通滤波器的状态,也就是让功率环至少有一个积分器或单位延迟,从结构上打破代数环。另外,双闭环中所有PI控制器都要设置合理的初始状态,尤其是离网模式的电压外环积分器,初始值如果不匹配,模型一启动就会出现巨大的超调。
最后整理一份排查速查表,按症状查原因,能省很多时间:
| 现象 | 可能原因 | 对应调整方案 |
|---|---|---|
| 两台DG功率不均衡 | 线路阻抗不等、虚拟阻抗未补偿 | 调整虚拟阻抗使等效输出阻抗一致 |
| 有功振荡 | 功率环低通过滤时间太长 | 提高截止频率至60~100rad/s |
| 开关频率噪声串入电压 | 电流环带宽过高 | 降低电流环Kp或增加滤波电容 |
| 并网合闸冲击 | 相位或幅值不同步 | 启用预同步,门限Δθ<5°、ΔU<5% |
| 突加负载电压塌陷 | 电压环带宽不足 | 提高电压环带宽,检查LC谐振点 |
| 报代数环错误 | 纯前馈回路无状态量 | 功率环低通滤波器引入一阶惯性状态 |
| 启动瞬间飞车 | PI积分器初始值过大 | 初始化V/f参考为额定值,积分输出置0 |
6. 跑通之后还能往下做哪些扩展
模型能稳定跑完并离网切换,只是第一步。我在这个基础上继续做过三个方向的扩展,都不是伤筋动骨的大改动:
第一是二次调频调压。下垂控制本质是有差调节,离网负载变化后频率会偏离50Hz,二次控制可以用一个慢环把频率误差修正回额定值,在Simulink里只需要在下垂控制器旁边并联一条惯性反馈通道。
第二是多储能SOC均衡。两套储能系统离网并联运行时,依靠下垂虽然能分功率,但可能一台充满电、一台已经放空。我给每台储能加一个SOC修正项,叠加到下垂频率指令上,让剩余电量高的多放一点电、少充一点电,仿真里要多花一些时间验证,但效果非常明显。
第三是谐波抑制。非线性整流负载会拉出大量5次、7次谐波,影响电压质量。可以在电压外环输出前加多个谐振控制器,只在特定谐波频率处提高增益,不影响基波控制。这部分对Simulink的计算开销增加不少,但模型架构不用变。
我个人建议,第一次搭这套模型的时候不要急着上三台DG、四套控制。我最初就是从单台DG带固定负载开始跑通,再扩展成两台并联,最后才加入并网开关和预同步逻辑。每一步只引入一个新变量,出了问题定位很快,不会一上来就陷入“哪一层都在抖,无从下手”的局面。这套下垂控制模型做到最后,真正值钱的不是Simulink里那几根漂亮的波,而是你知道了哪一组参数会让系统失控、哪一个切换时序会带来冲击,这种手感,才是靠一次一次的失败换来的。