1. 微电网下垂控制:为什么传统方案在“孤岛模式”下不够用
做微电网仿真有一段时间的人应该都有体会:孤岛模式下,系统没有大电网撑腰,所有频率和电压都由储能逆变器自己扛。这个时候,下垂控制(Droop Control)几乎是绕不开的主策略。选它不是因为它是性能最好的方案,而是因为它是结构最简单、最接近物理直觉的方案——不需要通信线,分布式电源之间不知道彼此的存在,靠输出特性自然分配功率。这一点在“即插即用”和“对等控制”的微电网场景里,简直是为分布式电源量身定做的基础能力。
但传统下垂控制真的够用吗?我个人的答案是不太够。尤其是现在很多微电网项目都是混合场景——光伏、储能、柴油机并联,或者纯储能多机并联带感性负载和整流性负载混搭,问题就出来了。
先说最常见的问题:功率分配不准。理论上只要把下垂系数设成和额定容量成反比,两台逆变器就能按比例分配有功和无功。但实际仿真里你会发现,线路阻抗不一样,分配结果就明显偏了。原因在于,传统下垂控制是建立在“线路阻抗呈纯感性”的假设上的,而低压微电网线路阻抗往往是阻感混合的,甚至以阻性为主。这就导致有功-频率、无功-电压的解耦关系失效,两台机器各自为政,一台出力大,一台几乎空载,严重的还会有环流。
还有一个你跑仿真时很容易忽略的问题:负载突变引起频率偏差。下垂控制本质是有差调节,带负载后频率一定会降,降多少和下垂系数成正比。你想要负载分配得好,下垂系数就得大;但下垂系数一大,频率偏差也跟着大——这两个需求在传统控制结构里是矛盾的。
再有就是系统阻尼不足。逆变器本身是低惯量系统,直流侧没有大电容是不可能的,但和交流同步机相比,转动惯量几乎为零,频率变化率非常高。凡是做过微电网并离网切换仿真的工程师都有这个感受:负载一阶跃,频率曲线像被刀切了一下,振荡好几拍才能稳下来。控制器参数稍微激进一点,甚至会持续振荡。
我见过不少做毕业设计或者项目预研的同学,第一版仿真都习惯直接套用某教材上给出的下垂控制公式,再拿一个通用逆变器模型接上负载开始跑。结果往往是在轻载时看起来一切正常,一加大负载或者加了一台非线性负载后,波形就开始“呼吸”了——电压幅值以几赫兹的频率缓慢摆动,要么就是有功从两台逆变器之间像拉锯一样来回倒。问题早期不严重,但越接近实际工况越明显。
所以后来几乎所有做微电网控制的人都在研究“改进下垂”。所谓“改进”,说白了就是给这个传统结构打个补丁,针对性解决功率分配、电压频率偏差、阻尼不足、非线性负载下的谐波影响这几个痛点。下面我会从头把原理讲清楚,再给出可复现的Simulink实现方案。
2. 改进下垂控制的四大方向,先理解再动手
2.1 传统下垂控制的核心公式与隐含假设
在讲改进方案之前,先把传统下垂控制的数学模型写清楚。对于两台并联的逆变器,忽略输出阻抗上的电压降时,有功功率P和无功功率Q分别主要受电压相位差和幅值差影响。简化后的下垂特性是:
- f = f0 - m × P
- U = U0 - n × Q
其中,f0是无功功率为零时的空载频率(通常设为50Hz或60Hz地网频率),U0是空载电压幅值,m是有功下垂系数,n是无功下垂系数。需要特别强调一个细节:上述解耦成立的前提是线路阻抗角接近90°(纯感性)且功率角小。实际系统中,线路越短、电压等级越低,纯感性假设越不成立。所以无论是做仿真还是工程,第一件事就是看你设定的线路阻抗参数。如果你在Simulink里随便选了一个比较短的电缆线路参数,那么真实情况就是阻性占主导,你再套用上述公式,仿真结果一定会让你怀疑人生。
2.2 改进方向一:虚拟阻抗法
虚拟阻抗法是最容易在Simulink里落地的一种改进方式。思路很简单:既然实际线路阻抗不可控,那我就在控制环路里人为“加”一个阻抗——用软件方法改变逆变器的等效输出阻抗特性。
在dq坐标系下,虚拟阻抗的电压补偿量写成:
- Uvd_ref = -Rv × Id + ω × Lv × Iq
- Uvq_ref = -Rv × Iq - ω × Lv × Id
这里Rv和Lv是虚拟电阻和虚拟电感,Id、Iq是输出电流在dq轴下的分量。仿真实现时注意坐标系的方向和符号,很容易搞反。加了虚拟阻抗之后,逆变器的等效输出阻抗就可以被近似塑造成纯感性(Lv放得比较大时),这样P-f、Q-V解耦关系重新成立,功率分配精度会明显改善。
但虚拟阻抗也有代价——它本质上是在输出电压指令上叠加一个压降补偿项,因此负载端的电压幅值会比原来更低。工程上常见做法是把虚拟阻抗的压降补偿到电压环的参考值里,或者与下垂控制的空载电压U0配合调整。初做仿真时我建议虚拟电阻Rv先设小一点(0.1~0.5Ω),R和L的比例要先估算你期望的等效阻抗角,再反推参数,别一上来就给Lv设一个特别大的值,不然动态响应会明显变慢。
2.3 改进方向二:二次调节恢复频率和电压
下垂控制的“有差性”是无法通过自身消除的。带载后频率和电压偏离额定值,如果需要恢复到额定值,必须引入二次调节。
二次调节最常见的实现方式是在下垂控制的参考值上叠加积分修正项:
- f_ref = f0 - m × P + Δf_integral
- U_ref = U0 - n × Q + ΔU_integral
其中Δf_integral由频率误差积分得到,ΔU_integral由电压误差积分得到。这个思路跟电力系统AGC(自动发电控制)很像,属于集中式二次调频/调压。集中式的缺点是需要通信——如果微电网规模很大,通信延迟和故障风险就必须纳入考虑。因此这几年不少研究在做分布式二次控制,通过相邻单元之间的稀疏通信网络,用一致性算法去逼近集中式的效果,这也是目前学术论文里一个非常热的方向。但如果你只是做Simulink仿真验证,集中式PI补偿已经足够暴露核心机理了。我个人的建议是:先做集中式,把物理机制吃透,再去拓展分布式一致性算法。
设置二次调节的PI参数时有一个共性问题:积分作用容易和下垂控制本身的动态耦合,造成恢复过程振荡。我通常建议频率恢复环的带宽要低于功率控制环的带宽,一般取功率环带宽的1/5到1/10。否则你调出来的波形高频抖动,根本分不清是控制参数问题还是负载切换问题。
2.4 改进方向三:自适应下垂系数
自适应下垂的核心动机是解决“负载分配精度”和“频率偏差”之间的矛盾。传统固定系数的下垂控制,一次调频特性是一条固定斜率的线;自适应方案则让下垂系数根据运行状态在线调整。
常见的自适应策略有两种。第一种是分段下垂:设置负载率区间,轻载时用较小下垂系数,减小稳态频率偏差;重载时用较大下垂系数,保证功率分配精度。第二种是引入微分项,也就是在下垂控制中加入频率变化率补偿,本质上是给逆变器增加了一个“虚拟惯量”环节。这正好对治逆变器低惯量问题。
以虚拟惯量为例,改进后的有功下垂表达式为:
- f_ref = f0 - m × P - md × (df/dt)
这里md就是虚拟惯量系数,实际上是在频率变化过程中提供“惯性支撑”。仿真里实现也不复杂,用一个滤波器把频率变化率提取出来,乘上系数后叠加到下垂参考值上即可。但md系数太大了也不行,系统可能在某些频率点上出现负阻尼,反而放大振荡。这一点下文会再展开。
2.5 改进方向四:考虑线路阻抗比的解耦控制
前面反复提到阻感比问题。工程上还有一种直接的做法:不强行改变阻抗特性,而是采用“旋转坐标变换”实现P-Q解耦。具体思路是通过坐标旋转矩阵,让有功-无功与频率-电压的耦合关系重新配平。简单来说,传统下垂中的P对应f、Q对应U,在阻感性线路里,实际上有有功功率会影响电压、无功功率也会影响频率。通过定义旋转角θ,将P和Q重新组合成P'和Q',再把P'给频率通道、Q'给电压通道,就能抵消线路阻抗角度的影响。
这种方法的参数计算稍微复杂一点,需要用线路阻抗角来算旋转矩阵,对系统参数有一定依赖。我个人觉得线路阻抗比方法适合做深入研究用——如果你是要发小论文、做课题创新,那这是天然的好卖点。如果你要快速搭一个可用的仿真模型,虚拟阻抗法可能是性价比更高的选择。
3. Simulink仿真模型搭建过程,从零到能跑
3.1 仿真模型整体架构设计
接下来进入重头戏:Simulink实现。先说清楚我采用的模型架构——两台分布式电源(DG)并联给同一个负载供电,这样既能验证功率分配,又能直观看到环流抑制效果。
你需要在Simulink里搭好的主要模块包括:
- DC源 + 三相两电平逆变器(VSC)
- LC滤波器(L、C参数根据开关频率和载波设计)
- 线路阻抗(分段电缆线路模型)
- 公共交流母线、负载模块(带投切功能的步进负载)
- 控制环:功率计算、下垂控制、电压/电流双闭环、PWM调制
这里有一个容易踩的坑:DC源的电压要保持一致吗?严格说不需要,实际系统各DG直流侧电压本来就有差异,但在做首次验证时建议统一DC电压,把变量数减到最少,等基础功能跑通了再逐步加差异。不然两个变量同时变化,出了问题你根本说不清是下垂控制造成的,还是DC侧差异造成的。
功率计算模块建议用瞬时功率理论,在dq坐标系下计算P和Q:
- P = 1.5 × (Ud × Id + Uq × Iq)
- Q = 1.5 × (Uq × Id - Ud × Iq)
注意坐标系的定义:我这里采用电网电压定向,Uq在稳态时为零,所以有功主要由Ud×Id决定,无功主要由Ud×Iq决定。这个在调试时非常有用——你看到有功和无功不对,先检查P和Q的表达式是否正确,再看Uq稳态值是不是零。
3.2 控制环路的具体实现
控制层是核心。完整控制链路为:
功率外环(下垂控制) -> 电压内环(PI控制) -> 电流内环(PI控制) -> PWM生成 -> 逆变器开关信号
电压电流双闭环里的PI参数,通常是通过将逆变器和滤波器模型简化为等效一阶惯性环节,再用带宽法整定。电流环带宽取开关频率的1/10到1/20,电压环比电流环慢3到5倍,功率环(下垂)比电压环再慢5到10倍。按这个原则去初始化参数,大方向不会错,之后微调就有抓手。
这里特别说下垂外环的采样处理。因为功率计算结果含有开关频率附近的高频分量,你直接把它代入下垂公式,最后的电压参考值会跟着抖动。建议在功率计算后面加一个低通滤波器,一般截止频率取10~20Hz。这跟电力系统里调速器的时间常数是一个概念:功率测量越平滑,系统动态性能越稳定。滤波器时间常数设得太小,动态响应慢;设得太大,抑制效果又不好。常用值是10ms到50ms之间,根据你的功率环带宽去折中选择。
3.3 改进下垂控制的子系统封装
现在说怎么把“改进”的部分塞进模型里。以带虚拟阻抗 + 二次调频调压 + 虚拟惯量三者组合为例,你在Simulink里的子系统中需要新增三个输入:Vd、Vq、I_unque(有功电流分量)、以及频率测量值f。输出则是修正后的电压参考指令U_ref和新的频率参考f_ref。
一个可用的子系统内部结构可以这样组织:
- 从功率计算模块拿到P、Q;
- 计算基础下垂:f_droop = f0 - m×P,U_droop = U0 - n×Q;
- 二次调节:对(f_ref - f)取误差,积分叠加到f_droop;对(U_ref - U)取误差,积分叠加到U_droop;
- 虚拟阻抗:根据输出电流计算Ud_vir和Uq_vir补偿量;
- 虚拟惯量:对频率微分,乘md后叠加到频率参考;
- 汇总:最终频率指令 = 频率下垂 + 二次频率修正 + 虚拟惯量;最终电压指令 = 电压下垂 + 二次电压修正 + 虚拟阻抗补偿。
这个子系统封装好后,你就可以复制两套给两台DG,改一下下垂系数和容量参数就能验证功率分配问题。
3.4 参数设置实例
为了给你一个可以直接起步的参数起点,我把我调试时使用的一套基准参数列在下面。这套参数来自某实验室微电网模拟平台,经过仿真和半实物验证,趋势稳定,供你参考。
| 参数名称 | 数值 | 说明 |
|---|---|---|
| 直流母线电压 | 800V | 三相逆变器输入 |
| 额定线电压 | 380V | 交流母线 |
| 额定频率 | 50Hz | - |
| 滤波电感L | 2mH | LC滤波器 |
| 滤波电容C | 50μF | LC滤波器 |
| 开关频率 | 10kHz | PWM载波 |
| 有功下垂系数m | 1e-5 Hz/W | 满载频率偏差约0.5Hz |
| 无功下垂系数n | 1e-4 V/Var | 满载电压偏差约5V |
| 虚拟电阻Rv | 0.5Ω | 可微调 |
| 虚拟电感Lv | 2mH | 可微调 |
| 二次调频PI | Kp=2, Ki=20 | 频率恢复环 |
| 电流环带宽 | 1000Hz | PI整定依据 |
| 电压环带宽 | 300Hz | PI整定依据 |
| 功率滤波时间常数 | 20ms | 低通滤波 |
微电网仿真的一个关键点:一台DG的容量和另一台DG的容量往往不一致,比如一台50kW,一台30kW。此时下垂系数必须按额定容量反比来设:
- m1 × P_load1 = m2 × P_load2 = 频率最大允许偏差
举个例子,若允许满载时频率偏差0.5Hz,50kW的DG满发对应的P为50kW,则m1 = 0.5 / 50000 = 1e-5;30kW的DG则m2 = 0.5 / 30000 = 1.667e-5。同理计算无功下垂系数时,用最大允许电压偏差除以额定无功容量。这个计算过程建议写进模型注释里,之后换参数时不会一头雾水。
4. 仿真结果怎么看?改进效果的评价方法
4.1 三种对比场景的设计
仿真验证的目的不是“跑通”,而是证明改进方案确实有效。为了分析方便,我建议设置三个场景:
场景A:传统下垂控制,两台DG参数对称,负载阶跃由20kW升至50kW。 场景B:传统下垂控制,两台DG线路阻抗不一致(一台线路长度100m,一台长度200m),负载阶跃同上。 场景C:改进下垂控制(虚拟阻抗+二次调频调压+虚拟惯量),线路阻抗同场景B,负载阶跃同上。
通过场景A和B的对比,确认线路阻抗不一致时传统方案的问题;通过场景B和C的对比,验证改进方案解决了哪些问题。这种对比设计很直接,既能用于自证,也可以作为课程报告或研究论文的图表素材。
4.2 关键波形判读
从仿真结果里你要重点看四组波形:
第一组是两台DG输出的有功功率曲线。理想情况下,经过暂态振荡后,两台DG的有功应稳定在按容量的比例分配。传统方案在场景B里可能出现较大的分配偏差,比如50kW的DG承担了80%的负载,另一台只承担20%;改进方案下两者应恢复到合理的比例。这里注意暂态过程功率曲线会出现短时反冲(有功倒灌),这是正常现象,只要振荡衰减即可。
第二组是母线频率曲线。传统方案下,负载阶跃后频率会掉下去,并长期稳定在一个低于50Hz的值;改进方案下,二次调频会慢慢把频率拉回到50Hz附近。你会看到频率曲线先跌、再回升,这个过程时间通常在0.5~2秒之间,取决于二次调节的PI参数。
第三组是负载端电压幅值曲线。虚拟阻抗和电压二次调节的效果体现在电压跌落恢复上。注意电压幅值要从dq分量或三相瞬时值求有效值,不要在示波器里直接看起来一条线,要把Ual、Ube等电压包络线提取出来才能判断稳态电压偏差。
第四组是环流曲线。在两台DG的电流差上做分析,可以看到传统方案下环流有明显的直流偏置或低频振荡,改进方案下应显著减小。环流定义通常取两机输出电流之差,这个值越小,说明并联效果越好。
我个人习惯在Simulink里用Scope模块把上述信号全部记录下来,再导出到工作区用脚本处理成对比图。这样做有个好处,可以精确计算超调量、调节时间、稳态误差,写报告更有说服力。
4.3 量化评价指标
单纯说“波形看起来好点”是不够的。建议你量化三个指标:
- 频率偏差恢复时间:从负载阶跃开始到频率偏差小于0.02Hz所需的时间。
- 功率分配误差:两台DG实际承担功率之比与额定容量之比的偏差百分比。
- 电压稳态偏差:负载端电压与额定值的相对偏差。
举个例子,场景B的传统方案,功率分配误差可能高达20%~30%;改进方案通常能压到5%以内。频率恢复时间从“无法恢复”(有差)变为1秒左右。电压偏差从5%~8%压到2%以内。这样一组数字列出来,改进方案的优越性一目了然,答辩或汇报时也很有说服力。
5. 实战踩坑与参数调试笔记,建议收藏
做这类仿真最容易出问题的地方,不是控制算法本身,而是一些工程细节。我整理了几个高频问题,这些是我实际反复遇到过、调试过的最典型的坑,供你排查时参考。
第一个坑是电压电流双闭环的坐标系对齐。很多人把锁相环(PLL)出来的角度和dq变换的相位没有校准,导致系统的有功无功方向错乱。典型现象是:你觉得应该输出有功,结果设备却从负载侧吸收有功,母线电压出现直流偏移。检查方法是把Uq稳态值打出来,理想情况下Uq应趋近于零。如果Uq有恒定的偏置或振荡,就一定存在相位对齐问题。PLL的动态响应也是一个重要因素,一般锁相环带宽可以设为10~30Hz,不要过于激进。
第二个坑是采样引入的延迟。Simulink的平均模型和开关模型对延迟的敏感度不同。如果是开关模型(用PWM发生器加IGBT模块),控制环的所有信号都需要经过零阶保持器模拟DSP采样效果。很多人漏掉这个保持器,仿真结果过于理想化,实际实验里就达不到。建议一开始就加上采样延迟模块,模拟DSP的等间隔采样,这样模型更接近物理系统。
第三个坑是滤波器的截止频率选择。功率测量低通滤波器的截止频率太低会导致功率外环响应迟缓,太高则波动抑制效果差,这两者之间的平衡点需要多次扫参。针对滤波时间常数,我的经验是用一个20ms到50ms的低通滤波,配合二次频率恢复PI调节,基本能让动态特性和稳态精度同时满足。
第四个坑是PI限幅。电压环和电流环输出的限幅值必须设置合理。电流环的限幅应该根据逆变器允许的最大电流设定,比如额定电流的1.5倍。如果不限幅,负载短时冲击时,电流环输出会叠加到一个很大的数值上,PWM占空比饱和,系统出现死区非线性,振荡概率大大增加。这算是一个比较隐秘的问题,但一旦出现,你观察到的波形就是高频极限环振荡,看起来非常诡异。
第五个坑是虚拟电感方向性。dq坐标系下虚拟电感的耦合项符号与旋转方向有关。你把符号弄反之后,虚拟阻抗从“阻尼”变成“负阻尼”,系统会不稳定。所以初次调试虚拟阻抗时,先把虚拟电阻设为0、虚拟电感设为一个较小值(比如0.5mH),观察电压补偿量及系统稳定性趋势,再逐步增大。
5.1 参数整定的经验试凑法
如果你使用的场景没有现成参考,整定顺序建议按“从内到外”,也就是先整定电流环,再整定电压环,再整定功率外环和二次调节。每层整定时把外层环路断开,给一个恒定参考值,只让内层闭环工作。这样每层都有明确边界,调节效率高,问题定位也准。不然六个PI参数同时调,几乎不可能一次找到正确组合。
在整定二次调节时有一个额外提醒:二次调频和二次调压的积分作用不仅会恢复偏差,也可能与电压电流环的输出极限冲突。必要时应增加抗积分饱和(anti-windup)环节,比如在积分器后加限幅,误差超过某个阈值时冻结积分累加。这就避免了长时间大误差下积分器“冲过头”,导致负载切换后猛烈的反向超调。
5.2 常见问题速查表
| 故障现象 | 可能原因 | 排查方法 |
|---|---|---|
| 两机功率分配严重不均衡 | 线路阻抗差异过大、下垂系数未按容量反比设置 | 检查下垂系数比值、尝试加入虚拟阻抗 |
| 频率长期低于50Hz | 二次调频未启用或积分作用过弱 | 检查频率参考修正项是否存在、增强Ki |
| 电压幅值持续跌落 | 虚拟阻抗压降过大、电压环带宽不足 | 减小Rv/Lv、提高电压环带宽 |
| 系统不稳定振荡 | 电流环PI过激进、采样延迟未建模 | 降低Kp、检查相位裕度、加入零阶保持器 |
| 有功无功强耦合 | 线路阻抗阻感比不当、未做阻抗补偿 | 引入虚拟阻抗或旋转坐标解耦 |
| 负载突变后频率回冲严重 | 虚拟惯量md过大、功率滤波器时间常数太小 | 减小md、适当增加滤波时间常数 |
6. 扩展到实际系统还缺什么?
谈到这里,肯定有人会问:仿真能跑了,改进效果也有了,那实际系统里是否还差一些东西?这个问题值得多想一步。依照我个人做半实物实验的经验,仿真与实物之间还有三座山。
第一座山是控制延迟。DSP执行控制周期一般要几十到几百微秒,加上采样保持、PWM更新,数字控制的延迟在仿真时必须建模。建议你在Simulink里设置离散控制步长(如100μs),而不是连续时间控制。这样仿真结果更接近DSP运行效果,调试得到的PI参数迁移到硬件时也会有更大可能性一次通过。
第二座山是死区效应。逆变器开关管有死区时间,仿真时如果不考虑死区,电压波形不会出现明显的低频谐波或振幅畸变。实际系统里,死区会引起输出电压波形畸变和低频谐波加剧,进而影响功率计算和控制精度。改进下垂控制中,如果在线路阻抗比低、非线性负载较重的场景下,死区的影响会被放大。因此仿真里最好把死区时间(通常设为2~4μs)加入PWM调制模块,虽然仿真速度会变慢,但更接近真实。
第三座山是通信系统的雷达图。二次控制需依赖通信网络,实际系统中的通信延迟和数据丢包会直接影响控制效果。模拟时可以在频率修正信号路径中加一个延时模块,再对比通信异常情况下的波形,分析控制系统鲁棒性。这一层面逐渐拓宽,就进入分布式控制的研究领域了。
7. 一些个人体会
这套基于改进下垂控制的微电网仿真模型,我在多次项目中不断调整过。最初也曾经直接照搬经典下垂公式,在负载条件变化下的结果很不理想。核心教训是:不要只看控制算法本身,一定要把系统阻抗、采样延迟等工程因素放到同一个框架里去看。算法再好,接口环节出了问题也是白搭。
如果你现在正打算做这个方向,从搭建基础模型、复现传统下垂控制的缺陷开始,再到加入虚拟阻抗与二次调节解决主矛盾,整个流程一步步来得更扎实。大方向把住,参数调试不必追求一次到位。仿真里的那些波形振荡和参数试错,其实都在帮你建立对微电网控制系统的工程直觉。
最后分享一个小技巧:制作对比图表时,把两台DG的容量比例、下垂系数和线路参数都作为常量写入一个统一的参数初始化脚本(比如.m文件),需要调整时只改脚本里的一个变量,而不是在Simulink模型里到处翻Block。这套习惯救了我不止一次,尤其在课上演示或者项目汇报需要临时快速改参时。