【风电控制】高低穿现场失败的原因分析------算法简单但工程复杂
一、问题的本质
这个问题问得非常好。从算法角度看,高低穿的核心计算确实不复杂------检测电压、计算无功电流、限幅有功、切状态机。但现场测试失败的原因,90%以上不是算法本身的问题,而是算法之外的工程问题。
理论/仿真世界: 现场/实际世界:
电网电压 = 干净的正弦波 电网电压 = 畸变、不平衡、含谐波
故障 = 理想的阶跃跌落 故障 = 有过渡过程、有重燃弧
参数 = 恒定不变 参数 = 随温度/工况漂移
传感器 = 精确无延迟 传感器 = 有偏移、有噪声、有延迟
保护 = 精确按设定值动作 保护 = 有离散性、有误动
负载 = 理想模型 风机 = 有机械惯性、有桨距延迟
通信 = 零延迟 通信 = 有丢包、有延迟
环境 = 25°C恒温 环境 = -30°C~+50°C
二、现场失败的十大原因
原因1:电网不是理想电压源
仿真假设:电网是理想电压源,故障时电压干净地跌落到某个值。
现场实际:
仿真中的LVRT波形:
1.0 ┤━━━━━━┓ ┏━━━━━━━
│ ┃ ┃
0.2 ┤ ┗━━━━━━━━━━━━━━┛
│ ↑ ↑
│ 故障开始 故障清除
└──────────────────────────────→ t
完美的阶跃!
现场实际的LVRT波形:
1.0 ┤━━━╲ ╱━━━━━━━
│ ╲ ╱╲ ╱╲ ╱
0.2 ┤ ╲╱╱ ╲╱ ╲╱╱╲╱
│ ↑ ↑
│ 故障开始 故障清除(有重燃弧)
└──────────────────────────────→ t
有振荡、有重燃弧、有高频暂态!
现场问题:
| 问题 | 具体表现 | 导致失败的原因 |
|---|---|---|
| 电压波形畸变 | 故障期间电压含大量3/5/7次谐波 | PLL锁相不准,相位跳变 |
| 电压不平衡 | 单相接地故障导致三相不对称 | 正负序分解延迟,无功计算错误 |
| 重燃弧 | 故障清除后电弧重燃,电压多次跌落 | 恢复阶段被打断,反复穿越 |
| 电压过零 | 故障瞬间电压可能在过零点 | 电压检测延时,漏判故障 |
| 高频暂态 | 故障瞬间有μs级的电压尖峰 | ADC采样捕获到尖峰,误触发保护 |
原因2:弱电网下的SCR问题
仿真假设:电网阻抗为零或很小(SCR > 3)。
现场实际:很多风电场的并网点SCR可能只有1.5~2,甚至更低。
弱电网的影响:
强电网 (SCR > 3): 弱电网 (SCR < 2):
风电场 ──── 强电网 风电场 ──── Zgrid ──── 弱电网
│ │
│ 注入无功 → 电压快速恢复 │ 注入无功 → Zgrid上压降大
│ │ → 并网点电压恢复慢
│ │ → 变流器看到的电压仍然很低
│ │ → 持续在LVRT模式
│ │ → 超时脱网!
弱电网下LVRT失败的典型场景:
- 变流器注入无功支撑电压
- 但电网阻抗大,无功电流在阻抗上产生压降
- 并网点电压恢复不明显
- 变流器持续处于LVRT模式
- 超过允许的穿越时间 → 保护脱网
更严重的问题 :弱电网下,变流器的控制环可能与电网阻抗交互,产生次同步振荡(频率在几Hz到几十Hz),导致电流/电压振荡发散。
原因3:传感器和测量误差
仿真假设:传感器精确无延迟,测量值 = 真实值。
现场实际:
传感器误差链:
真实电压 ──→ PT(电压互感器) ──→ 调理电路 ──→ ADC ──→ 数字值
│ │ │ │
· 带宽有限 · 有偏移 · 量化 · 有增益误差
· 有相位延迟 · 有温漂 · 有噪声
· 饱和(高压时) · 有纹波
总误差: 幅值 ±2~5%, 相位 ±2~5°, 延迟 0.5~2ms
| 误差类型 | 量级 | 对高低穿的影响 |
|---|---|---|
| PT带宽不足 | 高频衰减 | 故障瞬间电压波形失真,检测延迟 |
| PT相位延迟 | 0.5~2ms | PLL角度偏移,无功计算错误 |
| ADC偏移 | ±0.5% | 电压幅值误判,可能漏判轻度故障 |
| 增益误差 | ±1~2% | 无功电流计算不准确 |
| 采样延迟 | 1~2个采样周期 | 故障检测延迟,响应慢 |
一个真实的失败案例:
现场PT的相位延迟比仿真中假设的大了1ms。在50Hz下,1ms对应18°相位误差。这导致PLL跟踪的相位偏移了18°,无功电流的d/q分量"串台"------本应注入无功的电流变成了有功电流。结果:无功支撑不足,电压恢复慢,LVRT测试失败。
原因4:保护整定不当
仿真假设:保护阈值是固定的,精确触发。
现场实际 :保护整定需要考虑离散性 和配合关系。
保护整定的困境:
太灵敏: 太迟钝:
· 误触发保护 · 真正故障时保护不动作
· 正常波动就停机 · 设备损坏
· 发电量损失 · 事故扩大
例如: 过流保护阈值设为1.2×IN
· 如果故障瞬间电流尖峰达到1.3×IN (持续1ms)
· 保护动作 → 停机 → LVRT失败
· 但实际上这个1ms的尖峰对IGBT无害
| 保护类型 | 常见整定问题 | 后果 |
|---|---|---|
| 过流保护 | 阈值太低或延时太短 | 故障瞬间电流尖峰触发停机 |
| 过压保护 | Vdc阈值不考虑Chopper动作时间 | Chopper还没来得及动作就停机 |
| PLL失步保护 | 检测时间太短 | 电压相位跳变时误判为失步 |
| 通信超时 | 超时时间太短 | 风电场SCADA通信繁忙时误停机 |
原因5:Chopper响应不及时
仿真假设:Chopper瞬时动作,Vdc超限立即泄放。
现场实际:
Chopper响应链:
Vdc超限 → 检测(1ms) → 判断(1ms) → 驱动信号(0.5ms) → IGBT开通(μs) → 电阻发热
总延迟: ~3ms
在这3ms内, Vdc可能已经:
· 从1.1pu上升到1.2pu (取决于功率不平衡程度)
· 如果电容小: 上升更快
· 如果机侧功率大: 上升更快
数值算例(3MW DFIG,C=10mF):
dVdcdt=PunbalanceC×Vdc=3×1060.01×1100=272733 V/s \frac{dV_{dc}}{dt} = \frac{P_{unbalance}}{C \times V_{dc}} = \frac{3 \times 10^6}{0.01 \times 1100} = 272733 \text{ V/s} dtdVdc=C×VdcPunbalance=0.01×11003×106=272733 V/s
3ms内Vdc上升:272733×0.003=818V272733 \times 0.003 = 818V272733×0.003=818V!
如果起始Vdc=1100V,3ms后Vdc=1918V------远超IGBT耐压!
当然,实际中电容会吸收一部分能量,上升速度没有这么快。但这个算例说明了Chopper响应延迟的严重性。
原因6:机械系统的耦合
仿真假设:电气系统独立于机械系统,或者机械模型过于简化。
现场实际:风力机的机械系统与电气系统深度耦合。
机械-电气耦合链:
电网故障 → 电磁转矩突变 → 轴系扭振 → 转速波动 → 反电动势波动
│ │
│ ▼
│ 机侧电流波动
│ │
└──── 电压恢复 → 转矩恢复冲击 ──────→ 轴系二次扭振
| 机械问题 | 对电气的影响 | 后果 |
|---|---|---|
| 轴系扭振 | 转速波动 → 转差率波动 → 转子EMF波动 | 电流振荡,可能触发过流保护 |
| 桨距响应慢 | 风轮输入功率不变 → 机侧功率不变 | Vdc持续偏高 |
| 传动链间隙 | 故障/恢复瞬间产生冲击转矩 | 机械应力超限 |
| 塔架振动 | 基础振动 → 传感器噪声 | 信号质量下降 |
原因7:温度和环境影响
仿真假设:25°C恒温,器件参数恒定。
现场实际:
温度对变流器的影响:
高温 (+45°C以上):
· IGBT结温升高 → 降额运行 → 电流容量下降
· 电容ESR增大 → 纹波电压增大
· 传感器漂移 → 测量误差增大
· 散热不足 → 保护动作
低温 (-20°C以下):
· 电解电容容量下降 → 直流母线储能减少
· 机械润滑变差 → 轴系阻尼变化
· 通信延时增大 (某些协议)
一个真实的失败案例:
某风电场在冬季(-25°C)进行LVRT测试。电解电容在低温下容量下降了30%,导致Vdc在故障期间上升速度比预期快50%。Chopper虽然动作了,但电容储能不够,Vdc仍然超过了过压保护阈值。测试失败。
原因8:多机交互效应
仿真假设:只仿真单台变流器。
现场实际:一个风电场有多台变流器同时运行。
多机交互问题:
风电场 (100台 × 3MW = 300MW):
│
├── 台1: 检测到LVRT → 注入无功
├── 台2: 检测到LVRT → 注入无功 (但检测时间不同!)
├── 台3: 检测到LVRT → 注入无功
│ ...
├── 台100: 检测到LVRT → 注入无功
│
│ 100台同时注入无功 → 场站级无功过补 → 电压反而升高!
│ 或者: 不同台检测时间不同 → 无功注入不同步 → 电压振荡!
│
└── 集电线路阻抗 → 各台看到的电压不同 → 策略不一致
原因9:软件时序问题
仿真假设:控制周期严格一致,中断无延迟。
现场实际:
软件时序问题:
理想情况:
PWM中断 ──→ ADC采样 ──→ 控制计算 ──→ 更新PWM
│←────── 250μs ──────────────────→│
实际情况:
PWM中断 ──→ 等待ADC完成 ──→ 控制计算 ──→ (被通信中断抢占!) ──→ 更新PWM
│←────── 250μs ──────────→│←── 额外50μs ──→│
↑
超时! PWM更新延迟!
| 时序问题 | 原因 | 后果 |
|---|---|---|
| 中断延迟 | 高优先级中断抢占 | 电流环计算延迟,相位裕度下降 |
| ADC采样抖动 | 采样时刻不在PWM中心 | 电流采样值包含开关纹波 |
| 通信中断 | MODBUS/CAN通信占用CPU时间 | 快任务被延迟 |
| Flash等待 | 代码从Flash执行时有等待状态 | 计算时间增加 |
原因10:测试条件与标准的差异
仿真假设:按照标准的理想故障波形测试。
现场实际:电网公司的测试条件可能比标准更严格。
| 标准要求 | 现场实际 | 差异 |
|---|---|---|
| 电压跌落到20%,持续625ms | 电压跌落到15%,持续800ms | 更深、更久 |
| 三相对称跌落 | 两相接地不对称跌落 | 更复杂 |
| 故障前满载运行 | 故障前80%负载+风速波动 | 工况不同 |
| 单次故障 | 连续两次故障(间隔2s) | 更严酷 |
三、现场排查的系统方法
当高低穿测试失败时,需要系统性地排查:
排查决策树:
测试失败
│
├── 1. 脱网时刻?
│ ├── 故障瞬间脱网 → 检查过流/过压保护整定
│ ├── 故障持续中脱网 → 检查穿越时间是否超限
│ └── 故障恢复时脱网 → 检查恢复策略和二次故障
│
├── 2. 脱网原因?
│ ├── 过流 → 电流限幅不够 / 传感器偏移
│ ├── 过压 → Chopper响应慢 / 电容太小
│ ├── PLL失步 → 弱电网 / PT延迟
│ ├── 通信超时 → 通信负载重
│ └── 其他保护 → 检查保护整定
│
├── 3. 波形分析?
│ ├── 电流波形有振荡 → 控制环不稳定 / 弱电网
│ ├── Vdc波形有尖峰 → Chopper延迟 / 电容不足
│ ├── 无功电流不足 → 传感器误差 / 计算错误
│ └── 电压恢复慢 → 无功注入不足 / 电网阻抗大
│
└── 4. 环境因素?
├── 温度 → 高温降额 / 低温电容衰减
├── 风速 → 故障前工况
└── 电网状态 → SCR / 背景谐波
四、提高现场成功率的工程措施
措施1:保护整定"宽进严出"
c
// 保护整定原则:
// 进入穿越: 宽松判断 (避免漏判)
// 退出穿越: 严格确认 (避免误判)
// 动作保护: 适当延时 (容忍瞬态)
// 电压检测: 加滑动窗口滤波
float Vg_detection(float Vg_raw, float threshold, int window_size) {
static float buffer[32];
static int index = 0;
buffer[index] = Vg_raw;
index = (index + 1) % window_size;
// 滑动平均
float Vg_avg = 0;
for (int i = 0; i < window_size; i++) Vg_avg += buffer[i];
Vg_avg /= window_size;
// 用平均值判断, 但响应时间 = window_size × Ts
return Vg_avg;
}
// 过流保护: 加延时 (容忍1ms尖峰)
void Overcurrent_Protection(float i_actual, float i_threshold, float Ts) {
static float timer = 0;
if (fabsf(i_actual) > i_threshold) {
timer += Ts;
if (timer > 0.003f) { // 延时3ms确认
TRIP_Overcurrent();
}
} else {
timer = 0; // 电流恢复正常, 清零计时器
}
}
措施2:增加裕度
| 参数 | 标准要求 | 建议整定 | 裕度 |
|---|---|---|---|
| 过流保护阈值 | 1.5×IN | 1.8×IN | +20% |
| 过压保护阈值 | 1.25×Vdc | 1.3×Vdc | +4% |
| 穿越时间 | 625ms | 设计能力800ms | +28% |
| 无功电流 | 标准要求值 | +10%裕量 | +10% |
措施3:现场预测试
正式测试前的预测试流程:
1. 仿真验证 (实验室)
· 用RT-LAB做HIL仿真
· 覆盖SCR=1.0~3.0的场景
· 覆盖对称/不对称故障
· 覆盖不同负载率
2. 空载测试 (现场)
· 低功率(10%~20%)下先测
· 验证保护不误动
· 验证状态机切换正确
3. 半载测试 (现场)
· 50%功率下测试
· 关注Vdc波形
· 关注Chopper动作
4. 满载测试 (正式)
· 100%功率下正式测试
· 全程录波
· 留有重试余量
措施4:录波分析
c
// 故障录波 (环形缓冲, 持续记录)
typedef struct {
float Vg_abc[3]; // 三相电压
float Ig_abc[3]; // 三相电流
float Vdc; // 直流母线电压
float id_ref, iq_ref; // 电流指令
float theta_pll; // PLL角度
int state; // 状态机状态
int fault_code; // 故障码
float timestamp; // 时间戳
} WaveRecord_t;
#define RECORD_SIZE 10000 // 记录10秒 (4kHz采样)
WaveRecord_t record_buffer[RECORD_SIZE];
int record_index = 0;
// 每个采样周期记录
void FaultRecorder_Update(WaveRecord_t *rec) {
record_buffer[record_index] = *rec;
record_index = (record_index + 1) % RECORD_SIZE;
}
// 触发保存 (故障发生时保存前后各5秒)
void FaultRecorder_TriggerSave(void) {
// 从record_buffer中提取故障前后的数据
// 保存到Flash或通过通信上传
}
五、一句话总结
| 维度 | 理论/仿真 | 现场实际 |
|---|---|---|
| 电网 | 理想电压源 | 弱电网、畸变、不平衡 |
| 故障 | 理想阶跃 | 有暂态、有重燃弧 |
| 传感器 | 精确无延迟 | 有偏移、有噪声、有延迟 |
| 保护 | 精确按值动作 | 有离散性、有误动/拒动 |
| 机械 | 解耦或简化 | 轴系扭振、桨距延迟 |
| 环境 | 25°C恒温 | 极端温度、盐雾、振动 |
| 电网规模 | 单机 | 多机交互、场站级协调 |
算法是骨架,工程是血肉。 高低穿的算法设计只占整个工作量的20%,剩下80%是保护整定、传感器标定、参数裕度、环境适应、多机协调、现场调试等"脏活累活"。正是这些"算法之外"的工程细节,决定了高低穿测试能否在现场一次通过。