主动式孤岛检测原理:四种核心方法深度解析
各位工程师朋友,今天我们来聊聊主动式孤岛检测。说实话,被动式检测虽然简单,但盲区太大——你想想看,当负载和逆变器输出功率刚好匹配时,电压和频率根本不会跑偏,这时候被动法就彻底失效了。所以,我们得主动“搞点事情”,让逆变器主动注入扰动,逼出孤岛状态。
我个人习惯把主动式检测比作“钓鱼”——你往水里扔个石子,看水面有没有反应。没反应,说明水太深(电网还在);有反应,说明水浅(孤岛了)。下面这四种方法,就是四种不同的“扔石子”方式。
1. 主动频率偏移法(AFD)
AFD 是最经典的方法,也是我入行时第一个接触的主动式算法。它的核心思路很简单:让逆变器输出电流的频率,比电网电压频率偏一点点。
怎么偏? 我们通常引入一个“斩波因子” cf。正常并网时,电流和电压同频。AFD 会让电流在过零点附近“死区”一段时间,相当于强制电流频率偏移。
核心公式:
斩波因子 cf = 2 * tz / T_v
其中 tz 是死区时间,T_v 是电压周期。cf 越大,频率偏移越猛。
// AFD 实现伪代码(我习惯用定点数做,避免浮点开销)
void afd_control(float v_freq, float *i_freq) {
float cf = 0.05; // 斩波因子,我一般取 0.03~0.08
if (v_freq > 49.5 && v_freq < 50.5) {
*i_freq = v_freq * (1 + cf); // 电流频率略高于电压
} else {
*i_freq = v_freq; // 频率跑偏太多就停止扰动
}
}
我的经验: 我在一个 30kW 的 PCS 项目里用过 AFD。当时并网时一切正常,但孤岛测试时发现,如果负载是纯阻性,频率偏移很慢。后来我把 cf 从 0.03 调到 0.06,检测时间从 2 秒缩短到 0.8 秒。但注意,cf 太大容易误触发,电网频率波动时容易跳闸。
AFD 的优缺点:
- 优点:实现简单,计算量小,适合低成本 MCU。
- 缺点:多机并联时,各台 AFD 的扰动可能互相抵消,导致检测失败。另外,对电网质量有轻微影响。
2. 滑模频率偏移法(SMS)
SMS 是 AFD 的升级版。它不固定偏移量,而是让偏移量随频率变化——频率越偏,我推得越狠。这就像“正反馈”,一旦孤岛发生,频率会迅速跑偏到保护阈值。
核心思想: 让逆变器输出电流的相位,是电网频率的函数。正常时相位差很小,孤岛时相位差迅速增大。
SMS 相位偏移公式:
θ_sms = θ_m * sin( (π/2) * (f - f_g) / (f_m - f_g) )
其中 θ_m 是最大偏移角(我常用 10°),f_m 是最大偏移频率(通常 51Hz),f_g 是电网额定频率(50Hz)。
// SMS 实现示例
float sms_phase_shift(float f_grid) {
float theta_m = 10.0 * PI / 180.0; // 10度转弧度
float f_m = 51.0; // 最大偏移频率
float f_g = 50.0; // 额定频率
if (f_grid < 49.5 || f_grid > 50.5) {
return 0.0; // 频率异常时不扰动
}
float delta = (f_grid - f_g) / (f_m - f_g);
return theta_m * sin(PI/2 * delta);
}
避坑指南: 我曾经在一个 100kW 的储能项目里用 SMS,结果并网时频繁误报孤岛。查了两天发现,是电网频率波动较大(±0.2Hz),SMS 的增益设得太高。后来我把 θ_m 从 15° 降到 8°,并加入 200ms 的延时确认,问题就解决了。记住,SMS 的增益要跟电网质量匹配。
SMS vs AFD:
| 对比项 | AFD | SMS |
|---|---|---|
| 扰动方式 | 固定频率偏移 | 频率相关相位偏移 |
| 检测速度 | 较慢(0.5~2s) | 较快(0.2~1s) |
| 多机并联 | 易失效 | 相对稳定 |
| 电网影响 | 较小 | 略大 |
3. Sandia 频率偏移法
Sandia 是美国 Sandia 国家实验室提出的方法,说白了就是“正反馈+频率偏移”的组合拳。它比 SMS 更激进——不仅相位偏移,还主动改变电流幅值。
核心逻辑: 检测到频率偏移后,逆变器输出一个与频率偏差成正比的“额外无功电流”,加速频率漂移。
Sandia 法公式:
I_q = K * (f - f_g)
其中 I_q 是无功电流分量,K 是正反馈增益(我一般取 0.1~0.5 A/Hz)。
// Sandia 频率偏移法实现
void sandia_control(float f_grid, float *i_d, float *i_q) {
float K = 0.3; // 正反馈增益
float f_g = 50.0;
float delta_f = f_grid - f_g;
// 正常并网时,无功电流为0
// 孤岛时,频率偏移,注入无功电流加速偏移
if (fabs(delta_f) > 0.1) {
*i_q = K * delta_f; // 正反馈
} else {
*i_q = 0.0;
}
// 有功电流保持正常
*i_d = 1.0; // 标幺值
}
我的建议: Sandia 法检测速度非常快,我实测过 0.1 秒就能检测到孤岛。但代价是,电网频率波动时容易误动。我一般会加一个“频率变化率”限制——只有 df/dt 超过 0.5 Hz/s 才启动正反馈,这样能滤掉大部分电网正常波动。
4. 主动电流扰动法
这个方法跟频率偏移不同,它扰动的是电流幅值。说白了,就是让逆变器输出电流周期性地“抖一下”——比如每 10 个周期,电流幅值突然降低 5%。
为什么有效? 并网时,电网是“硬”的,你电流抖一下,电压纹丝不动。但孤岛时,负载是“软”的,电流一抖,电压跟着抖。检测到电压波动,就知道孤岛了。
// 主动电流扰动法示例
void current_disturbance(int cycle_count, float *i_ref) {
int disturb_period = 10; // 每10个周期扰动一次
float disturb_amp = 0.95; // 幅值降到95%
if (cycle_count % disturb_period == 0) {
*i_ref = *i_ref * disturb_amp; // 电流幅值降低
} else {
// 正常输出
}
}
避坑指南: 我曾经在微电网项目里用电流扰动法,结果发现扰动周期跟负载的谐振频率重合了,导致电压振荡。后来我把扰动周期改成随机数(7~13 周期随机),问题就解决了。另外,扰动幅度不能太大,否则并网时功率波动会触发过流保护。
四种方法对比总结:
| 方法 | 检测速度 | 多机兼容性 | 电网影响 | 实现难度 |
|---|---|---|---|---|
| AFD | 中等 | 差 | 小 | 低 |
| SMS | 快 | 中 | 中 | 中 |
| Sandia | 很快 | 好 | 大 | 高 |
| 电流扰动 | 慢 | 好 | 小 | 低 |
知识体系框架图
下面这张图,是我自己整理的主动式孤岛检测知识体系。你可以把它当作学习地图。
好了,四种主动式孤岛检测方法就讲完了。说实话,没有哪种方法是完美的,关键看你的应用场景。我个人建议:单机小功率用 AFD 最省事,多机并联用 Sandia 最可靠,电网质量差的时候用电流扰动法最稳妥。嗯,下次我们聊聊这些方法在 DSP 上的具体实现细节。
公众号:蓝海资料掘金营,微信deep3321