4、交流采样算法:傅里叶算法原理、全波傅里叶算法、半波傅里叶算法、基于傅里叶的相量计算

聊到交流采样,傅里叶算法是绕不开的核心。说实话,我刚入行那会儿,总觉得傅里叶变换是数学课上的东西,跟现场保护装置搭不上边。直到有一次调试一台老式变压器差动保护,频繁误动,查来查去发现是采样算法对谐波抑制不够——嗯,从那以后,我再也不敢小看傅里叶了。

今天咱们就把傅里叶算法在继电保护里的应用掰开揉碎讲清楚。你想想看,保护装置要判断故障,首先得知道电压电流的幅值和相位。傅里叶算法,说白了就是帮我们从一堆乱七八糟的采样点里,把基波分量“拎”出来。

4.1 傅里叶算法基本原理

傅里叶算法的核心思想很简单:任何一个周期信号,都可以分解成直流分量、基波和各次谐波的正弦波叠加。我习惯把它理解成“筛子”——不同频率的成分,通过不同频率的筛子被分离出来。

对于电力系统来说,我们最关心的是50Hz(或60Hz)的基波分量。傅里叶算法通过计算实部和虚部,就能得到基波的幅值和相位。

数学上,对于一个周期为T的信号x(t),它的基波分量可以用下面这对公式计算:

实部:X_R = (2/T) ∫ x(t) · cos(ωt) dt
虚部:X_I = (2/T) ∫ x(t) · sin(ωt) dt

其中ω=2πf,f是基波频率。得到实部和虚部后,幅值和相位就很容易算了:

幅值:X_m = √(X_R² + X_I²)
相位:φ = arctan(X_I / X_R)

这里有个细节我要提醒你:积分区间必须是一个完整的基波周期。少一点,计算结果就会偏差。我在现场遇到过有人用非整周期采样做傅里叶,结果相位误差大到离谱——这就是典型的“频谱泄漏”问题。

核心要点:傅里叶算法本质上是正交变换,利用正弦和余弦函数的正交性,把基波分量从信号中“投影”出来。投影系数就是实部和虚部。

4.2 全波傅里叶算法

全波傅里叶算法,就是用完整的一个基波周期数据进行计算。这是最经典、最常用的交流采样算法。

在数字实现中,我们用的是离散形式。假设一个周期内采样N个点,采样序列为x(0), x(1), ..., x(N-1),那么:

X_R = (2/N) Σ x(k) · cos(2πk/N)   (k=0,1,...,N-1)
X_I = (2/N) Σ x(k) · sin(2πk/N)   (k=0,1,...,N-1)

全波傅里叶的优点很明显:

  • 谐波抑制能力强——理论上可以完全滤除整数次谐波
  • 直流分量不敏感——直流分量在正交变换中会被消除
  • 计算稳定——数据窗完整,结果可靠

但缺点也有:

  • 响应速度慢——需要一个完整周期才能输出结果
  • 对频率偏移敏感——系统频率偏离50Hz时,误差会增大

我记得有一次做线路保护动模试验,系统频率波动到49.8Hz,全波傅里叶算出来的幅值误差到了3%左右。后来加了频率跟踪环节才解决。所以啊,实际工程中全波傅里叶通常要配合锁相环或频率测量模块一起用。

我的经验:全波傅里叶算法在稳态精度上是最好的。如果你不要求极快的响应速度(比如过流保护),优先选全波傅里叶。我一般用在距离保护、差动保护这些对精度要求高的场合。

4.3 半波傅里叶算法

半波傅里叶算法,顾名思义,只用半个周期的数据来计算。它的数据窗长度是T/2,响应速度比全波傅里叶快一倍。

半波傅里叶的公式和全波类似,只是积分区间从[0, T]变成了[0, T/2]:

X_R = (4/T) ∫ x(t) · cos(ωt) dt   (积分区间0到T/2)
X_I = (4/T) ∫ x(t) · sin(ωt) dt   (积分区间0到T/2)

离散形式下,假设半周期采样M个点(M=N/2):

X_R = (4/N) Σ x(k) · cos(2πk/N)   (k=0,1,...,M-1)
X_I = (4/N) Σ x(k) · sin(2πk/N)   (k=0,1,...,M-1)

半波傅里叶的优缺点正好和全波互补:

  • 响应速度快——半个周期就能出结果,适合速动保护
  • 计算量小——数据量减半,对CPU压力小
  • 谐波抑制能力弱——对偶次谐波抑制效果差
  • 受直流分量影响大——直流衰减分量会引起较大误差
注意:半波傅里叶算法对偶次谐波基本没有抑制能力。如果系统中有较大的二次谐波(比如变压器励磁涌流),用半波傅里叶算出来的基波幅值会严重偏大。我曾经在一个励磁涌流识别项目里吃过这个亏,后来果断换回了全波傅里叶。

什么时候用半波傅里叶?我个人建议:

  • 速动性要求高的保护(如母线保护、快速距离保护)
  • 谐波含量较小的场合
  • 作为全波傅里叶的补充,用于快速启动判据

4.4 基于傅里叶的相量计算

相量计算,说白了就是把电压电流的幅值和相位算出来。傅里叶算法天然适合做这件事——因为它直接给出了实部和虚部。

在继电保护中,相量计算通常包括以下几个步骤:

  1. 采样——以固定采样率对模拟量进行AD转换
  2. 傅里叶计算——用全波或半波傅里叶算出实部X_R和虚部X_I
  3. 幅值计算——X_m = √(X_R² + X_I²)
  4. 相位计算——φ = arctan(X_I / X_R),注意象限判断
  5. 相角差计算——两路信号相角差Δφ = φ₁ - φ₂

这里有个工程细节:相位计算时,arctan的值域是[-π/2, π/2],但实际相位可能落在任意象限。我习惯用atan2函数,它能根据X_R和X_I的符号自动判断象限,避免相位跳变。

另外,相量计算中还有一个重要概念——相量旋转。在电力系统里,电压电流相量是随时间旋转的。傅里叶算法算出来的相量,实际上是相对于采样起始时刻的。如果要比较不同时刻的相量,需要做相位补偿。

举个例子:

假设采样频率fs=1000Hz,基波频率f=50Hz
每个周期采样N=20点
第k个采样点对应的相位偏移 = 2πk/N = 2πk/20

如果当前计算窗口的起始点是第m个采样点
那么实际相量相位 = 计算相位 + 2πm/20

这个补偿在差动保护里特别重要。两端的采样必须同步,否则相位差会引入虚假差流。我见过一个案例,两端保护装置采样不同步,差动保护在区外故障时误动——查了三天才发现是GPS对时出了问题。

总结一下:傅里叶算法是继电保护交流采样的基石。全波傅里叶精度高、谐波抑制好,适合稳态量计算;半波傅里叶速度快,适合速动判据。实际工程中,我通常把两者结合使用——用全波傅里叶做精确计算,用半波傅里叶做快速启动。相量计算时,别忘了相位补偿和象限判断,这些细节决定了保护装置的可靠性。

好了,这一章的内容就到这里。下一章咱们聊聊傅里叶算法的改进——递归傅里叶和加窗傅里叶,这些在实际工程中更实用。有什么问题,欢迎随时交流。