3、对称故障控制策略:电压跌落检测、正序电流控制、无功支撑策略、有功功率调节
各位同行,今天我们来聊聊对称故障。说白了,就是电网三相电压同时跌落的场景。这种故障在现实中不算最常见,但一旦碰上,处理不好就容易炸机。我早年刚入行时,就吃过这个亏——有一次现场调试,电网突然跌了30%,我那个控制算法没处理好,直流母线直接飙到800V,IGBT模块当场报废。从那以后,我对对称故障的策略就格外上心。
3.1 电压跌落检测——你得先知道它来了
控制策略的第一步,是快速检测到电压跌落。你想想看,如果检测慢了,电流还没来得及调整,过流就来了。
我个人习惯用dq变换法来检测。具体做法是:
- 采集三相电压 \( u_a, u_b, u_c \)
- 通过Park变换得到 \( u_d, u_q \)
- 计算电压幅值 \( U_m = \sqrt{u_d^2 + u_q^2} \)
- 与额定值比较,判断跌落深度
这里有个关键点:锁相环(PLL)的响应速度。如果PLL在故障期间失锁,你算出来的 \( u_d, u_q \) 就是错的。我在项目中遇到过这种情况,PLL用了二阶广义积分器(SOGI),故障时相位跳变,导致检测结果滞后了半个周波。后来我改用了双二阶广义积分器(DSOGI),抗干扰能力明显提升。
检测时间要求:根据并网标准,电压跌落检测应在1ms内完成。我个人建议留出余量,控制在0.5ms以内。
下面是我常用的检测逻辑伪代码:
// 电压跌落检测函数
void voltage_sag_detection(void) {
// 1. 采集三相电压
ua = ADC_read(CHANNEL_A);
ub = ADC_read(CHANNEL_B);
uc = ADC_read(CHANNEL_C);
// 2. Clark变换
u_alpha = (2*ua - ub - uc) / 3;
u_beta = (ub - uc) / sqrt(3);
// 3. Park变换(使用PLL输出的theta)
ud = u_alpha * cos(theta) + u_beta * sin(theta);
uq = -u_alpha * sin(theta) + u_beta * cos(theta);
// 4. 计算电压幅值
Um = sqrt(ud*ud + uq*uq);
// 5. 判断跌落
if (Um < V_NOMINAL * 0.9) {
sag_flag = 1; // 检测到跌落
sag_depth = (V_NOMINAL - Um) / V_NOMINAL;
} else {
sag_flag = 0;
}
}
避坑指南:我曾经在采样频率较低的系统上吃过亏。如果ADC采样率只有10kHz,检测延迟可能达到100μs以上。建议采样率至少20kHz,配合硬件比较器做快速触发。
3.2 正序电流控制——稳住电流,别让它乱跑
对称故障下,电网电压中只有正序分量。所以控制目标很简单:只控制正序电流。负序和零序分量在对称故障中不存在,不用管。
控制结构还是经典的双闭环:
- 外环:直流母线电压环或功率环
- 内环:电流环,采用PI控制器
但这里有个变化:故障期间,电网电压降低,逆变器的输出能力受限。你想想看,电压低了,同样的电流能输出的功率就少了。所以电流环的限幅值需要动态调整。
我一般这样处理:
- 根据跌落深度计算最大允许电流
- 将电流限幅值从额定值降低到 \( I_{max} = I_{rated} \times \frac{U_{grid}}{U_{rated}} \)
- 同时考虑IGBT的过流能力,通常取1.2倍额定电流作为硬限幅
注意:电流环的PI参数在故障期间可能需要切换。我在项目中遇到过,正常工况下PI参数调得很好,但电压一跌,电流响应就出现超调。后来我增加了增益调度,根据电压幅值自动调整PI系数。
正序电流控制的框图如下:
3.3 无功支撑策略——电网需要你出力
电网故障时,最怕的是电压进一步崩溃。所以并网标准(比如国内的GB/T 19964)要求逆变器在故障期间提供无功支撑。说白了,就是让逆变器像发电机一样,向电网注入无功电流,帮助电压恢复。
具体要求是这样的:
| 电压跌落深度 | 无功电流注入比例 | 响应时间 |
|---|---|---|
| 10% ~ 30% | 不低于额定电流的 20% | < 30ms |
| 30% ~ 50% | 不低于额定电流的 50% | < 30ms |
| > 50% | 不低于额定电流的 100% | < 30ms |
我一般这样实现无功支撑:
- 根据检测到的跌落深度 \( \Delta U \),计算无功电流指令 \( i_q^* = k \times \Delta U \times I_{rated} \)
- 其中 \( k \) 是比例系数,通常取 2~6,具体看标准要求
- 将 \( i_q^* \) 作为电流环的q轴指令
经验之谈:我建议把无功支撑的优先级设得比有功高。因为电网恢复电压是第一位的,有功功率可以等电压稳定后再慢慢调。我曾经在某个项目中,把有功和无功的优先级搞反了,结果电压越撑越低,差点导致脱网。
3.4 有功功率调节——别让直流母线飞起来
对称故障下,电网电压降低,逆变器能送出去的有功功率自然就少了。但光伏板或者电池还在往直流母线上灌能量,如果不及时调节,直流母线电压就会飙升。
我常用的策略是:
- 限制有功电流指令:根据当前电压和电流限幅值,计算最大允许有功电流
- 优先保证无功:先分配无功电流,剩余容量再给有功
- 直流母线电压环:如果母线电压超过阈值,立即降低有功指令
具体计算是这样的:
// 有功电流指令计算
void active_power_control(void) {
// 1. 计算总电流限幅
I_max = I_rated * 1.2; // 硬限幅
// 2. 无功电流指令(来自无功支撑策略)
iq_ref = k * sag_depth * I_rated;
// 3. 限制无功电流不超过总限幅
if (iq_ref > I_max) iq_ref = I_max;
// 4. 计算有功电流最大允许值
id_max = sqrt(I_max * I_max - iq_ref * iq_ref);
// 5. 直流母线电压环输出
id_ref = PI_controller(Vdc_ref - Vdc_actual);
// 6. 限幅
if (id_ref > id_max) id_ref = id_max;
if (id_ref < -id_max) id_ref = -id_max;
}
注意:直流母线电压环的PI参数在故障期间也需要调整。因为正常工况下,母线电压波动小,PI参数可以调得比较慢。但故障时,母线电压可能快速上升,需要更快的响应。我一般会准备两套PI参数,根据故障标志位切换。
3.5 整体控制流程
把上面几个部分串起来,整个对称故障控制策略的流程是这样的:
- 检测阶段:实时监测三相电压,一旦检测到跌落,立即触发故障处理
- 模式切换:从正常控制模式切换到故障控制模式,切换时间应小于1ms
- 指令计算:根据跌落深度,计算无功电流指令和有功电流指令
- 电流控制:通过电流环PI控制器,跟踪电流指令
- 限幅保护:确保电流不超过IGBT的安全工作区
- 故障恢复:电网电压恢复正常后,平滑切换回正常模式
避坑指南:我曾经在故障恢复时吃过亏。电压刚恢复正常,我立刻切回正常模式,结果电流突变,导致过流保护动作。后来我加了软切换,在故障恢复后的几个周波内,让电流指令逐渐过渡到正常值。
好了,对称故障控制策略的核心内容就这些。说白了,就是三件事:快速检测、优先无功、限幅保护。你把这些做好了,电网故障时逆变器就能稳稳地撑住。