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 基于傅里叶的相量计算
相量计算,说白了就是把电压电流的幅值和相位算出来。傅里叶算法天然适合做这件事——因为它直接给出了实部和虚部。
在继电保护中,相量计算通常包括以下几个步骤:
- 采样——以固定采样率对模拟量进行AD转换
- 傅里叶计算——用全波或半波傅里叶算出实部X_R和虚部X_I
- 幅值计算——X_m = √(X_R² + X_I²)
- 相位计算——φ = arctan(X_I / X_R),注意象限判断
- 相角差计算——两路信号相角差Δφ = φ₁ - φ₂
这里有个工程细节:相位计算时,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对时出了问题。
好了,这一章的内容就到这里。下一章咱们聊聊傅里叶算法的改进——递归傅里叶和加窗傅里叶,这些在实际工程中更实用。有什么问题,欢迎随时交流。