【风电控制】电网的“心跳监测”:过零点检测与频率计算技术解析

在上一篇关于陷波器的文章中,我们讨论了如何通过软件算法滤除特定频率的干扰。今天,我们要关注一个更基础但同样关键的环节——电网同步。对于任何需要并网的电力电子设备(如风力发电机的网侧变流器GSC),精确地“感知”电网的频率和相位,就如同医生为病人监测心跳一样重要。
而实现这一感知的最直接、最经典的方法之一,就是过零点检测(Zero-Crossing Detection, ZCD)

1. 什么是过零点检测?

简单来说,过零点检测就是实时监测电网电压(或电流)的波形,并精确地找出它从负半周穿越到正半周(正向过零点)或从正半周穿越到负半周(负向过零点)的时刻。
为什么这个点如此重要?

  • 频率计算:两次连续的正向过零点之间的时间,就是一个完整的电网周期。频率是周期的倒数。
  • 相位锁定:通过检测过零点,我们可以建立一个与电网同频同相的参考坐标系(如dq坐标系),这是实现单位功率因数并网和控制的基础。

2. 基本原理:用时间丈量周期

过零点检测的核心思想非常直观:用时间来丈量周期

  1. 标记起点:当检测到一次正向过零点时,我们启动一个高精度计时器(或计数器)。
  2. 等待终点:我们持续监测电压信号,直到检测到下一次正向过零点。
  3. 计算周期:两次过零点之间的时间差,就是电网的周期 T
  4. 计算频率:频率 f 就是 1/T

3. 算法实现:从理论到代码

让我们来解析一下实现这一过程的具体算法。以下是一个常见的实现逻辑,与您提供的代码片段逻辑一致。

3.1 所需变量

  • input: 当前时刻的电网电压采样值(例如,A相电压)。
  • inputBak: 上一个时刻的电网电压采样值(历史值)。
  • PosZeroCrossing: 一个标志位,用于记录是否检测到正向过零点。
  • PeriodCnt: 一个计数器,用于累计从上一次过零点到当前采样点的时间。
  • Ts_GSCInterrupt: 控制器的采样周期(例如,400μs)。
  • delta: 一个关键的修正项,用于提高频率计算的精度。

3.2 算法逻辑

该算法通常在每一个控制周期(中断)中执行。

// 假设这是在每次采样中断中执行
// 1. 计算当前时刻的 delta (用于下一次过零点计算)
// 这个 delta 用于修正当前采样点到下一次过零点的时间
delta_curr = Ts_GSCInterrupt * input / (input + abs(inputBak));
// 2. 检测是否发生正向过零点
if ( (inputBak < 0) && (input >= 0) ) {
    // 是的,发生了正向过零点!
    // 3. 计算频率 (使用上一次保存的 delta)
    // PeriodCnt 是上一次过零点到当前采样点的时间
    // delta_prev 是上一次过零点时计算的修正值
    FreqOut = 1 / (PeriodCnt + delta_prev);
    // 4. 更新周期计数器,为下一个周期做准备
    PeriodCnt = Ts_GSCInterrupt;
    // 5. 翻转过零点标志
    PosZeroCrossing = ~PosZeroCrossing;
    // 6. 保存当前的 delta,作为下一次过零点计算的"上一次delta"
    delta_prev = delta_curr;
}
// 7. 为下一次迭代更新历史值
inputBak = input;

3.3 关键修正项 delta 的作用

您在之前的讨论中已经注意到了,delta 是这个算法的“灵魂”。为什么需要它?

  • 问题:我们的采样是离散的。电压过零点可能发生在两次采样之间,而不是恰好在一个采样点上。如果我们简单地用 PeriodCnt(采样点数量)乘以 Ts 来计算周期,会引入误差。
  • 解决方案delta 是一个线性插值。它假设在两次采样之间,电压信号是线性变化的。通过当前值 input 和上一次的值 inputBak,我们可以估算出电压从 inputBak 变化到 input 所用的时间,从而更精确地定位过零点。

4. 技术挑战与优化

虽然过零点检测原理简单,但在实际应用中面临挑战:

  • 噪声与谐波:电网电压并非完美的正弦波,可能含有大量噪声和谐波。这会导致过零点检测不准确,甚至产生虚假的过零点。
  • 电压跌落:在电网故障时,电压可能跌落到很低的水平,过零点变得模糊,难以检测。
  • 频率波动:电网频率并非恒定不变,而是在一个范围内波动。
    为了应对这些挑战,现代并网逆变器通常采用更鲁棒的锁相环(PLL)算法,如基于 dq变换的PLL基于滤波器的PLL (如 SOGI-PLL)。这些算法不仅能更稳定地跟踪频率和相位,还能有效抑制噪声和谐波的影响。

5. 总结

过零点检测是一种经典、直观且计算量小的电网同步方法。它通过精确地“捕捉”电网电压的过零时刻,为我们提供了计算电网频率和相位的基石。
尽管在复杂工况下,更先进的PLL算法可能更为优越,但理解过零点检测的原理,对于我们掌握电网同步技术的本质,依然至关重要。它就像学习数字电路时从与非门开始一样,是理解更复杂系统的基础。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐