前阵子调试一套孤岛微电网测试平台,只投了下垂控制,负荷从50kW加到60kW那一刻,频率从50.02Hz慢慢落到49.82Hz,倒是能稳住,但屏幕上那个频率值就一直悬在那儿,再也回不到50Hz了。这是很多刚接触微电网二次控制的人容易卡住的地方:文献里写得很漂亮,下垂控制能自动分配功率,为什么实际运行就留下偏差?比例积分(PI)二次控制又是怎么把它拉回额定值的?这半年来我在仿真、小功率实验平台和真机调试里反复折腾这套东西,把下垂控制和PI二次控制的配合逻辑、参数整定方法从头到尾捋了一遍,趁着这个总结的机会,把能直接落地的经验写出来,供后来的人少走弯路。
1. 一次控制在孤岛模式下留下的“硬伤”:频率电压偏差到底哪来的
1.1 微电网分层控制的三级架构分工
聊二次控制之前,得先把微电网的分层控制架构说清楚。业内常用的概念是三级控制:最底层的一次控制、第二层二次控制、最高层三次控制或能量管理。一次控制就是每台变流器里的本地控制器,比如电压电流双环、功率外环,以及我们常说的下垂控制。它最大的特点是快,负荷突变后几十毫秒内就动作,完全不依赖通信,靠的是本地电气量感知。
二次控制的定位完全不一样。它的任务是消除一次控制留下的稳态偏差,把频率和电压重新“对齐”到额定值。这个动作不需要快,反而要有意识地放慢,一般几百毫秒到几秒完成一次调节。三次控制就更慢了,通常做经济运行、调度策略,跟本文主题关系不大,暂时按下不表。
之所以要分成这么几层,根本原因在于:一次控制追求“快”和“就地”,二次控制追求“准”和“全局”,而“快”“准”“全局”这三件事在物理上天然有冲突。
1.2 下垂曲线的平衡点为什么回不到50Hz
下垂控制在孤岛微电网里做的是有功-频率和无功-电压的静态下垂,表达式可以写得非常简单:
f_i = f_ref - m_p * P_i
U_i = U_ref - n_q * Q_i
这里的物理含义非常直白:某台电源输出有功功率越多,它的频率参考点就越低;输出无功越多,电压幅值参考点就越低。一旦负荷增加,比如我开头说的从50kW加到60kW,每台参与调节的DG都会多输出有功,按照下垂曲线,系统频率必然被迫下移。这个过程的本质是:微电网只有牺牲频率偏差,才能换取出力增加,也就是用“频率”这个公共信号告诉所有DG“该多出力了”。
问题在于,一次下垂控制锁定的那个平衡点,是由负荷大小和下垂系数共同决定的。负荷在60kW时,曲线就只允许频率停留在49.8Hz左右,没有任何机制能让它自己爬回50Hz。原因用大白话说:每一台DG的参考点都是固定参数,没有“更高一级的眼睛”去发现频率偏低了、再手动把下垂曲线整体抬起来。
1.3 频率偏差带来的连锁反应不只在数字上
有人可能会说,49.8Hz也没差多少啊,影响很大吗?实际不是数字好不好看的问题。异步电机转速会跟着频率走,频率低了,水泵转速、风机转速都会降低,工艺系统效率直接打折。谐振负载和整流设备的特性也会变化,尤其是那些对频率敏感的变频设备。更麻烦的是,微电网往往还要准备跟主网重新并网或与其他微电网并联,如果频率长期偏离额定值,并网瞬间的相位和频率差会造成很大的冲击电流,甚至触发逆功率保护。
电压偏差也是类似的道理。无功负荷重了以后,Q-V下垂会把电压拉低,用户侧会跟着受影响。所以二次控制不是“锦上添花”,而是孤岛微电网能否达到基本电能质量要求的必需品。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 下垂控制没那么“傻”:参数怎么定直接决定二次补偿做得顺不顺
2.1 下垂控制的本质是没有通信线的并联逻辑
理解下垂控制,最核心的一点是:它让所有并联变流器在没有通信的情况下,仅凭本地测量就能自动分担负荷。你看同步发电机并联运行,靠的就是转速下垂;逆变器做的下垂控制是在模拟这套物理机制。输出功率大的那台频率自然低一点,输出功率小的频率高一点,于是系统频率本身就变成了一个“广播信号”,所有DG参照同一个频率调整出力,最终大家稳定在同一个频率点上,有功分配也稳定下来。
这就像一个环形赛场里的跑者,每个人不是被裁判指挥,而是通过观察别人跟自己的距离自动调整配速。下垂系数的物理单位相当于“每多跑多少功率,速度降多少”。
2.2 下垂系数选择的两个约束
下垂系数的选取不能拍脑袋,它要同时满足两个约束。一个是最大允许偏差约束:从空载到满载,频率跌落不能超过允许范围,通常按额定频率的1%~2%来设计,50Hz系统大概就是0.5Hz到1Hz。另一个是并联功率分配精度约束:多台DG并列时,希望大家按容量比例分担负荷,此时各台的下垂系数要按各自额定容量归一化。
具体来说,如果你有一台100kW和一台50kW的DG并联,满载频率偏差都是0.5Hz的话,前者下垂系数是0.005Hz/kW,后者是0.01Hz/kW,斜率刚好差一倍。这样在同一个系统频率下,大机出力约等于小机出力的两倍,正好跟容量成正比。如果两台机的下垂系数都拍脑袋设成一样,那么小机在稳态时出力只跟大机相同,而不是按容量比例,严重时小机会过载,大机在轻载。这个坑我在第一版仿真里踩过,后来把所有下垂系数都改成标幺化设置才解决。
2.3 线路阻抗对下垂效果的干扰不可忽视
低压微电网这条线有个比中高压配电网麻烦得多的特点:线路电阻R占的比例很高,甚至R/X大于1。传统下垂公式是假设线路感性主导,有功主要跟功角差相关,无功主要跟电压差相关。到了低压线路里,有功会把电压拉低,无功也会影响频率,P和Q出现强烈耦合,导致功率分配互相牵扯。
工程上常用的补救手段是加虚拟阻抗。在本地控制环路里人为叠加一个感性虚拟阻抗,让变流器对外呈现的等效阻抗更接近纯感性,这样原来解耦的下垂逻辑又基本成立了。不过虚拟阻抗是有代价的,它会额外增加电压降落,也在一定程度上削弱系统带载能力。所以从二次控制的角度看,如果一次层的下垂参数和阻抗补偿做不好,二次PI无论怎么调都像在“烂地基上盖房子”,补偿信号发下去会出现奇奇怪怪的振荡。
3. 比例积分二次控制的闭环:偏差测量、补偿下发、本地叠加
3.1 集中式二次控制的系统组成
二次控制按架构分,最经典、也最好理解的是集中式。系统里存在一个微电网中央控制器(MGCC,也有人叫微电网能量管理终端),它不断接收各个DG上传的频率和电压信息,也可能接收公共母线测点的量测值。中央控制器自己算一套控制偏差,再通过低带宽通信链路把补偿信号下发到每一台DG。
这个“上传-计算-下发”的闭环,其实跟热力系统里的区域自动发电控制思路一致:传感器感知偏差,中央计算补偿,执行机构叠加上层命令。只是在微电网里,执行机构不是汽轮机调速器,而是每台变流器内部的频率参考点和电压参考点。
3.2 控制对象是“平均频率”而不是单台频率
集中式PI二次控制的一个关键设计决策是:用谁的频率来跟额定值做差?
如果只取一台DG的本地频率,容易出问题。因为本地频率里含有脉动分量,负载突变瞬间还会有较大的瞬态波动。如果拿单点频率直接进PI,控制器会在系统还没稳定时就开始动作,甚至把暂态尖峰放大成一次过调。更稳健的做法是取所有DG输出频率的平均值,或者取母线上多个测点的加权平均频率,用这个平均值跟额定频率比较。离散数学里这相当于给二次控制器做了低通预处理,让上层控制只看到“全局趋势”,而不是“局部抖动”。
频率偏差的定义可以写成:
e_f = f_ref - f_avg
电压偏差同理:
e_u = U_ref - U_ref_avg
这里f_ref和U_ref是额定值或上层设定的调度目标值。在孤岛运行模式下,通常就是50Hz和额定电压值。
3.3 PI补偿量的叠加方式与功率分配的关系
中央控制器算出来的PI输出是一个公共修正量,记作Δf_sec和ΔU_sec。这个量下发到每一台DG后,不会直接粗暴地改变电流环或电压环给定,而是加到下垂控制的参考点前面。也就是原来的下垂控制律变成:
f_i_ref = f_0 - m_p * P_i + Δf_sec
U_i_ref = U_0 - n_q * Q_i + ΔU_sec
关键在于,所有DG叠加的Δf_sec是同一个量。这样每一个DG的下垂曲线都整体平移了同样大小,曲线的斜率没有变。因此系统新的稳态点上,频率回到额定值,各DG之间的有功分配关系仍然严格由原本的下垂系数决定,不会因为二次控制介入而打乱负荷分配。这一点非常重要,是集中式PI二次控制能稳定工作的前提。
对电压的补偿也是同一个思路。无功分配关系由n_q决定,电压补偿信号统一平移Q-U曲线,实现电压恢复而不破坏无功比例。
4. PI参数怎么整定:用伯德图把频率特性看清楚
4.1 二次控制必须遵守时间尺度分离原则
PI二次控制参数整定最大的坑,是试图让二次控制“反应快一点”。很多初学着把Kp调大、把Ki调大,结果系统反而开始振荡,频率像打摆子一样。原因在于二次控制必须跟一次控制在时间尺度上拉开距离。一次下垂已经做到几十毫秒到一两百毫秒级别的响应,二次控制如果也追求这么快,两个闭环就会抢带宽,互相干涉。
工程上比较稳妥的经验是:二次控制的闭环带宽至少要低于一次控制的十分之一。比如一次下垂控制闭环调节时间在0.2s左右,那么二次控制的穿越频率要放到几个rad/s以内,让整个二次调节过程持续1~3s,而不是100ms就冲完。这样做的另一个好处是,二次控制在调整下垂曲线时,一次控制已经在每个中间工作点完成了功率分配,整个系统始终处于准稳态轨迹上。
4.2 比例项与积分项在物理上分别解决什么问题
比例项解决的是“当下偏差有多大就补多少”。Kp大,对偏差的反应快,但它本质上是一个跟偏差成比例的输出,单独用比例控制时,系统还是会有静差,只不过把频率偏差缩小了。积分项解决的是“持续偏差的累计”。只要频率没有回到额定值,积分项就会一直累积修正量,直到偏差消失为止。这也是为什么最终把频率精确拉回50Hz的主要功臣是Ki。
但不能因此把Ki调得很大。积分项的相位滞后很重,会让闭环的低频相位裕度显著下降,配合通信延时后特别容易引发低频振荡。实际整定时常用的策略是:先用纯比例把系统拉到临界稳定附近,观察频率响应,再慢慢投入积分项,给比例项留足裕度。
4.3 伯德图整定法的简化对象模型
伯德图并不能直接画在真实系统上,而是画在系统模型上。这里需要先把被控对象抽象出来:从二次补偿量Δf_sec输入,到系统平均频率偏差e_f输出,之间包含了下垂控制的功率-频率闭环、滤波环节和通信链路。如果只考虑主要动态,可以将这条通道近似成一阶惯性加纯延时:
G(s) = K * e^(-τd s) / (T s + 1)
其中T由一次控制的功率环响应速度决定,典型值在0.05~0.2s之间;τd主要是通信采样周期、数据上传下发和DA转换造成的延时,集中式系统里常见几十毫秒到两百毫秒。这个简化模型不完全精确,但足以指导参数方向。
PI控制器的传递函数是:
C(s) = Kp + Ki / s
开环传递函数就是L(s) = C(s) * G(s)。在Matlab里用margin函数就能看到幅频特性曲线和相频特性曲线。整定时先不急着加Ki,令Ki=0,调Kp,让开环穿越频率落在希望的目标值附近,再观察那个频率点上的相位裕度。如果相位裕度低于45度,就不能直接加积分项,或者说加了之后要把穿越频率再压低,给积分项的相位拖累留出余地。引入积分项后,PI的零点放在穿越频率下方不远的位置,用来补偿积分在低频带来的相位损失。
现场没有Matlab时,也可以用近似估算的办法。先根据T估算开环自然转折频率,大致把穿越频率定在转折频率的1/3到1/10之间,再按这个穿越频率反推需要的Kp。Ki则从“调节时间”的角度切进去:希望二次控制在2s内把偏差消完,那么Ki可以先设为Kp的0.5~1倍,作初步迭代。
4.4 我的伯德图整定操作流程
分享一套我自己在实际项目里验证过的步骤,基本流程是:
- 在仿真环境里把一次下垂控制单独跑稳,记录负载阶跃时频率从初始值到稳定的全过程,用一阶惯性模型拟合时间常数T。
- 测量通信链路的平均延时和最大抖动,把它作为τd写进模型。
- 做开环Bode图,先设Ki=0,只调Kp,观察期望穿越频率处的相位裕度,保证相位裕度在45度以上。
- 加上Ki,保持0dB穿越频率不变(调低一些Kp),让PI零点放到穿越频率的1/3以下,重新看相位裕度和最大增益峰值。
- 用simulink或PSCAD做非线性时域仿真,在150%负载阶跃下看频率超调,超调控制在20%以内。
- 现场实测时,把Kp和Ki按仿真结果的50%起步,慢慢往上加,每加一次都做负荷阶跃测试,记录波形而不是只看稳态表。
顺序不要反。如果跳过前两步直接在现场调参数,很容易把一次控制带宽和通信延时混在一起,调出来的参数换一个运行点就失效。
4.5 实际调试中最常碰到的三个参数坑
第一个坑是积分饱和。中央控制器算出来的Δf_sec通常是有限的,因为DG的频率设定范围、变流器频率保护都有上下限。如果PI积分不接抗饱和(anti-windup)逻辑,频率长时间回不到额定值,积分项会一直累加饱和。等频率终于回到额定值,积分器里已经积累了一大堆“历史债”,输出还要很久才退回来,直接造成频率超调和二次波动。工程上必须在控制器里加积分限幅,并且采用反馈钳位或条件积分法。
第二个坑是在整定Ki时忽略了通信延时的相位滞后。延时的相位滞后等于ω*τd,单位换算成角度再乘180除以π。你算一下:通信延时200ms时,在10rad/s处的相位滞后已经超过100度,这个数字本身就能吃掉系统所有相位裕度。所以当系统有较长通信周期时,穿越频率必须压得足够低,比如1~3rad/s,而不是拍脑袋用5rad/s。
第三个坑是伯德图模型里没有包含PWM和电流内环的高频动态。这些高频环节虽然不会影响1rad/s附近的低频特性,但在分析高频谐振和数字化延时时会有偏差。调参时不能只看伯德图的理论曲线就万事大吉,一定要保留实测和仿真复核的环节。
5. 通信是集中式PI二次控制的“命门”:延时、丢包与安全回退
5.1 集中式方案本质上依赖低带宽通信闭环
集中式PI二次控制的整个策略都建立在通信链路上。没有通信,中央控制器看不到平均频率,也就算不出Δf_sec。你可能会说,那我能不能靠本地积分自己恢复频率?不行。如果每台DG单纯靠自己本地频率误差去积分,由于测量点不同、初始状态不同,每台算出来的补偿量会不一样,最后各台的f_i_ref被完全错开,功率分配互相打架,甚至出现无功环流。
所以集中式方案里的通信优先级非常高。工程上常见做法是用Ethernet、RS485或光纤加Modbus/IEC 61850等协议做秒级以下的循环更新。通信带宽不需要太高,几kbps都够,但实时性和可靠性必须足够好。
5.2 延时一上来,PI参数就全变了
通信延时直接影响系统的相位裕度。假设你的中央控制器每100ms周期算一次PI,下发到DG再花20ms,DG执行后又是滤波延时,整个环路上的纯延时加总有100~200ms很正常。如果你按无延时模型把PI穿越频率放到5rad/s以上,那么延时在这个频率上贡献的滞后是0.15s*5rad/s约等于43度,加上PI本身积分环节的滞后,相位裕度很容易跌破30度,系统开始出现明显欠阻尼甚至振荡。
实测中你会发现一个很有意思的现象:同一组PI参数,在纯仿真里调得好好的,加上通信延时仿真后开始出现1Hz左右的频率波动;如果把这个波动的周期跟通信延时对照,会发现它们强相关。这个现象说明不是PI本身设计错,而是没有给延时留足够裕度。解决的思路不是光降增益,而是把整个二次控制带宽降下来,让它跟通信带宽匹配。
5.3 通信异常后的回退策略不能只有一套
集中式系统最怕的故障是通信完全中断。此时中央控制器可能还在算,但算出来的补偿信号已经送不到DG,或者只送到了一部分DG。如果没有安全回退策略,系统里就会出现一部分DG带着二次补偿、另一部分退回纯下垂的混乱局面。
我建议的回退逻辑分为两层。第一层,每台DG要监控自己收到的二次补偿命令的时间戳,如果超过预设时间(比如连续3~5个周期没收到有效数据),立即把Δf_sec清零并切回纯下垂控制,保证本地频率、电压还在一次控制的范围内;而不是保持最后一次收到的补偿值不变。实践证明,“超时清零”比“超时保持”安全得多。因为通信故障可能是瞬时的,也可能持续很久,保持旧补偿值会让系统在一个未知错误状态下运行,而清零回纯下垂,至少让系统回到一个确定的安全工作点。
第二层,中央控制器要能区分“全部通信中断”和“部分通信中断”。如果只收到部分DG的数据,用残缺数据算出的平均频率偏差极不可靠,此时宁可让PI输出保持上一拍的值,等待通信恢复,也不要基于残缺集继续更新积分器。我在一次联调时就遇到过,一台DG的上行线被误拔了,中央控制器只见剩下两台的数据,算出的平均频率偏高,积分器一直往下压,差点把系统频率拉过头。后来加了“有效节点数门限”才解决。
6. 从集中式走向分布式:一致性二次控制的思路对比
6.1 集中式方案的天然短板在哪
集中式PI二次控制在系统规模不大、DG数量不超过十几台、通信星型网络可靠的情况下,确实简单高效。但它的短板也很明显:中央控制器是单点故障源,通信网络拓扑越复杂,星型汇集数据就越吃力,而且每新增一台DG都要修改中央控制器的接入配置。某些场景下通信物理条件不好,专线拉到所有DG经济上不现实,集中式就变得非常笨重。
分布式二次控制就是冲着这些问题来的。它的核心思想是:不设中央大脑,让每一台DG只跟相邻的DG交换信息,通过一致性算法慢慢让所有DG对全局平均频率、电压“达成共识”,再基于这个共识做本地PI修正。
6.2 动态平均一致性如何实现“无中心求平均”
简单静态平均的做法是:每一台DG上报自己的本地频率给中央,中央直接算平均数。没有中央时,就得靠邻居之间反复交换数据来逼近全局平均值。这个过程叫做平均一致性算法。初始时刻每台DG把本地频率赋给一个内部状态变量,然后每个通信步长里,每台DG把自己的状态变量与邻居的状态变量做加权修正。数学上通常写成:
dx_i/dt = c * sum_{j in Ni} (x_j - x_i)
只要通信图是连通的,这个状态变量x_i会逐渐收敛到所有初始值的平均值。但由于微电网里的频率本身不是固定不变的,负荷扰动后频率会持续变化,直接用静态平均一致性去跟踪动态频率会跟不上。所以实际工程里会用动态平均一致性协议,它在一致性修正的基础上叠加了对本地量变化趋势的补偿,这样即使全局平均值在随时间变化,各台也能实时估计出比较准确的动态平均频率。
等每台DG都拿到全局平均频率估计值后,本地PI控制就可以照常工作:估计偏差、计算补偿、叠加到本地下垂参考点。这样从功能上看,跟集中式PI二次控制做到的效果是一致的,但通信从一个中心变成了网格里的邻居通信,单点故障影响范围大大缩小。
6.3 分布式与集中式怎么选
这里我做了一张对比表,方便大家根据项目约束做取舍。
| 对比维度 | 集中式PI二次控制 | 分布式一致性二次控制 |
|---|---|---|
| 通信拓扑 | 星型,所有DG汇聚到中心 | 网状图,邻居间点到点通信 |
| 中心依赖 | 强依赖MGCC,中心故障全盘停摆 | 无中心,任意单点通信故障影响小 |
| 信息可见性 | 全局平均信息直接可见,调试直观 | 依赖算法收敛,中间过程各台估计不完全一致 |
| 扩展性 | 新增DG需改中心配置,容量受限 | 新增节点只需接入通信邻居,扩展更灵活 |
| 控制带宽 | 可做得较高但受通信延迟限制 | 一致性收敛需要时间,带宽通常更慢 |
| 调试难度 | PI参数直观,故障定位容易 | 一致性增益、邻居权值等参数更多,需要更多建模分析 |
| 适用场景 | 中小型园区微电网、通信条件好的场景 | DG数量多、位置分散、可靠性要求高的场景 |
拿我的实际体会来说:如果是实验室样机、小型工业微电网,DG数量不超过5台,且现场有条件拉可靠的通信线,集中式是投入产出比最高的选择。但如果你做的是屋顶光伏、储能、柴发分散布置的村级或偏远场景,通信链路不是专线,可靠性没保证,那分布式或者至少分区式管理会是更稳妥的方向。
分布式二次控制的参数整定,很多朋友以为完全不一样,其实不然。它只是把“中央PI”拆成了“每个节点本地PI + 邻居信息交换”,本地PI的带宽仍然要遵循时间尺度分离原则。一致性协议的收敛速度也要比本地PI快一些,但这个快是相对的,必须在通信延时的约束范围内。否则邻居之间交换信息还没收敛,本地PI就大动作,系统会在空间维度上振荡,表现为不同DG之间的频率、电压互相追赶。
最后一点经验
这套东西做下来,我最想提醒的是:先看伯德图,再动手改参数,但不要迷信伯德图。伯德图能帮你判断系统趋势、相位裕度和稳定边界,但它依赖的线性模型里往往不包括通信节流、死区、限幅、非线性和实际元件离散化。所以我的习惯是:在Matlab里调出一版可用的PI初值后,一定会在带通信延时、带限幅的详细模型里做一遍非线性验证,再把参数拿到现场按50%起步逐步逼近。这样做看似多了一步,实际上省掉的是在现场反复拉负荷、烧接触器的麻烦。微电网的二次控制,本质上是把“功率分配”和“频率电压恢复”这两个目标拆给不同时间尺度的控制层去完成,谁都想快,但只有学会慢,整个系统才能真正稳下来。
