掌桥专利:专业的专利平台
掌桥专利
首页

基于傅立叶计算减少电压波动误差的方法

文献发布时间:2024-04-18 20:01:23


基于傅立叶计算减少电压波动误差的方法

技术领域

本发明涉及傅立叶信号处理技术领域,具体涉及基于傅立叶计算减少电压波动误差的方法。

背景技术

变电所主变测控装置中,在进行模拟测试时发现未加量时给通道基波正弦余弦分量赋初值,然后再加量,会出现电压波动的情况。经过研究分析发现电压波动的情况与残留的基波正弦、余弦分量的产生有关。

在计算电压有效值时,现有的计算方法中,一般采用递推的傅立叶计算方法,在采用递推傅立叶计算时,由于计算机里面的浮点数的精度问题,在递推过程中,每次都会出现较小的误差,而随着运行时间变长,累积的误差将会越来越大,影响有效值的准确性。

发明内容

本发明的目的在于提供一种基于傅立叶计算减少电压波动误差的方法,每个通道缓存最新的一周波采样值,将当前时刻通道的采样点的值减去上一周波的采样点的值,并转换为浮点数,采用傅立叶逐点递推算法进行计算,同时递推时,累加的是上一周波的周波实际采样正弦/余弦分量累加值,周波采样的正余弦分量累加值,根据正余弦分量计算周波采样有效值。这样每次计算当前时刻周波有效值时,累积的误差固定,避免累积的误差变大。

本发明通过下述技术方案实现:

一种基于傅立叶计算减少电压波动误差的方法,具体步骤包括:

S1、对傅氏变换缓冲区进行初值定义,并根据采样设计要求,生成相应的傅立叶正余弦转换表;

S2、对每个通道的周波进行采样,将当前采样点对应的实时采样值按照傅立叶正余弦转换表进行全波离散傅里叶变换算法计算,得到变换值,将各变换值进行累加后存储在临时数组中;

S3、判断临时数组中实时采样值个数是否达到一周波的采样点数,若未到达,则根据傅立叶正余弦转换表对实时采样值进行递推离散傅立叶变换计算,得到当前采样点对应的递推正余弦分量累加值,根据递推正余弦分量累加值计算当前采样点的递推采样有效值,根据递推采样有效值进行快速动作判断;

S4、若临时数组中存储的实时采样值个数达到一周波采样点数,则将临时数组中存储的一周波所有变换值累加后的累加值替换一周波最后一个采样点对应的所述递推正余弦分量累加值,并将临时数组清空;

S5、不断重复步骤S2-S5直至采样结束。

在一种可选地实施方式中,步骤S2中,变换值包括正弦变换值和余弦变换值,对变换值进行累加的方法为:

将当前采样值对应的正弦变换值累加到当前周波的所有正弦变换值的累加值上,得到周波实际采样正弦分量累加值;

将当前采样值对应的余弦变换值累加到当前周波的所有余弦变换值的累加值上,得到周波实际采样余弦分量累加值;

将周波实际采样正弦分量累加值和周波实际采样余弦分量累加值分别存储到不同的临时数组中。

在一种可选地实施方式中,步骤S4中,一周波采样结束后,临时数组中存储的分别为一周波的周波实际采样正弦分量累加值以及一周波的周波实际采样余弦分量累加值,将一周波的周波实际采样正弦分量累加值替换最后一个采样点对应的递推正弦分量累加值,将一周波的周波实际采样余弦分量累加值替换最后一个采样点对应的递推余弦分量累加值。

在一种可选地实施方式中,步骤S3中,对当前采样值进行递推离散傅立叶变换计算,得到当前采样点对应的递推正余弦分量累加值的过程为:

S31、获取当前采样周波相邻的上一周波实际采样有效值以及与当前采样点对应的上一周波的实时采样值;

S32、将当前实时采样值减去上一周波的实时采样值,得到递推值,将递推值转换为浮点数;

S33、将递推的值乘以傅立叶正余弦转换表中的对应值,得到递推采样值,将递推采样值累加上一周波所有变换值累加后的累加值,得到当前采样点对应的递推正余弦分量累加值。

在一种可选地实施例中,计算离散傅立叶变换时,包括正弦分量计算和余弦分量计算,其中,计算得到的正弦分量值和余弦分量值的数据类型为浮点数。

在一种可选地实施例中,傅立叶正余弦转换表中的对应值的数据类型为浮点数。

在一种可选地实施例中,所述一周波的采样点数为递推离散傅立叶计算时所需的实际采样点数。

在一种可选地实施例中,周波采样有效值的数据类型为浮点数。

在一种可选地实施例中,递推采样有效值Value的计算公式为:

在一种可选地实施例中,各采样值对应的正弦分量值和余弦分量值的数据类型为浮点数。

可以理解的是,现有技术中,采用递推傅立叶计算每周波的基波或各次谐波有效值时,需要先计算信号的实部和虚部,即余弦分量和正弦分量,在计算当前周波的基波正弦分量和余弦分量时,会累加上一周波带有递推部分的基波正弦分量和余弦分量,这样,随着运行时间的累加,越往后的周波在计算正弦分量和余弦分量时,会不断累加前面所有周波的递推值对应的正弦分量值和余弦分量值,数值以二进制的方式存储在计算机中,而由于计算机里面的浮点数的精度问题,当前时刻周波的递推值对应的正弦分量值和余弦分量值不会与上一时刻周波的基波正弦分量和余弦分量抵消,而是会一直累加,造成最后计算得到的基波有效值有误差,存在明显波动。

本申请中,在每次计算周波的有效值时,分为计算正弦分量和余弦分量,最后根据正弦分量值和余弦分量值求取有效值,由于主变测控装置中需要实时判断,因此,对于每个周波来说,若等整个周波的所有采样点一起采集后,再计算周波的有效值,采样点之间会有采样间隔,一般一周波24个采样点,这样,一个周波采样完成会等待很长时间,不能满足实时判断要求,因此,采用递推离散傅立叶算法,只需将最新的采样点的值加上前面的所有已计算的累加和减去当前采样点的值对应的上一周波采样点的值,即递推算法为已计算好的累加和加上采样差值,这样,每次采样一个点,即可得到递推的24个值,计算周波的有效值,就可以得到一个周波的有效值,加快了计算速度,对当前主变测控装置的状态进行实时判断。

然而采用递推算法时,由于计算机精度的问题,一周波计算完成后,相当于会将误差累加24次,本申请设置临时数组存储每一周波的24个采样点的采样值,每完成一周波24个点采样后,采用全波离散傅立叶计算一周波24个采样点总和的实际有效值,利用这个实际有效值覆盖当前周波的最后一个采样点的递推后得到的周波采样有效值,这样,在下一个周波进行计算时,采用递推离散傅立叶计算时,每次计算时累加的都只有上一周波的实际采样有效值,这样在每个周波的每次采样计算周波的有效值时,计算结果中只会累加上一周波的一次误差,从整体有效值的计算结果来看,相当于没有波动。

本发明与现有技术相比,具有如下的优点和有益效果:

本发明一种基于傅立叶计算减少电压波动误差的方法,每个通道缓存最新的一周波采样值,将当前时刻通道的采样点的值减去上一周波的采样点的值,并转换为浮点数,采用傅立叶逐点递推算法进行计算,同时递推时,累加的是上一周波的一周波实际采样正余弦分量累加值,计算后得到当前周波的有效值。这样每次计算当前时刻周波有效值时,累积的误差固定,避免累积的误差变大。

利用这个实际采样正余弦分量累加值覆盖当前周波的最后一个采样点的递推后得到的周波采样的正余弦分量累加值,这样,在下一个周波进行计算时,采用递推离散傅立叶计算时,每次计算时累加的都只有上一周波的实际采样正余弦分量累加值,这样在每个周波的每次采样计算周波的有效值时,计算结果中只会累加上一周波的一次误差,从整体有效值的计算结果来看,相当于没有波动。

附图说明

此处所说明的附图用来提供对本发明实施例的进一步理解,构成本申请的一部分,并不构成对本发明实施例的限定。在附图中:

图1为本发明方法示意图;

图2为本发明方法程序实现示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其应用或使用的任何限制。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本发明的范围。

同时,应当明白,为了便于描述,附图中所示出的各个部分的尺寸并不是按照实际的比例关系绘制的。

另外,为了清楚和简洁起见,可能省略了对公知的结构、功能和配置的描述。本领域普通技术人员将认识到,在不脱离本公开的精神和范围的情况下,可以对本文描述的示例进行各种改变和修改。

对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为授权说明书的一部分。

在这里示出和讨论的所有示例中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它示例可以具有不同的值。

如图1所示,本发明一种基于傅立叶计算减少电压波动误差的方法,具体步骤包括:

S1、对傅氏变换缓冲区进行初值定义,并根据采样设计要求,生成相应的傅立叶正余弦转换表;如下所示为对傅氏变换缓冲区进行初值定义以及傅立叶转换表的示意:

表1傅立叶转换表

可以看出,计算离散傅立叶变换时,包括正弦分量计算和余弦分量计算,其中,计算得到的正弦分量值和余弦分量值的数据类型为浮点数。傅立叶正余弦转换表中的对应值的数据类型为浮点数。

S2、对每个通道的周波进行采样,将当前采样点对应的实时采样值按照傅立叶正余弦转换表进行全波离散傅里叶变换算法计算,得到变换值,将各变换值进行累加后存储在临时数组中;

变换值包括正弦变换值和余弦变换值,对变换值进行累加的方法为:

将当前采样值对应的正弦变换值累加到当前周波的所有正弦变换值的累加值上,得到周波实际采样正弦分量累加值;

将当前采样值对应的余弦变换值累加到当前周波的所有余弦变换值的累加值上,得到周波实际采样余弦分量累加值;

将周波实际采样正弦分量累加值和周波实际采样余弦分量累加值分别存储到不同的临时数组中。

每次采样结束后,不仅会进行递推计算,还会对实际变换值进行累加计算,将一周波内当前采样值对应的变换值加上之前所有采样值对应的变换值,得到变换值的累加值,这样一周波采样结束后,可以直接将临时数组的值替换递推累加值,加快了计算速度,不影响计算速度。

S3、判断临时数组中实时采样值个数是否达到一周波的采样点数,若未到达,则根据傅立叶正余弦转换表对实时采样值进行递推离散傅立叶变换计算,得到当前采样点对应的递推正余弦分量累加值,根据递推正余弦分量累加值计算当前采样点的递推采样有效值,根据递推采样有效值进行快速动作判断;

对当前采样值进行递推离散傅立叶变换计算,得到当前采样点对应的递推正余弦分量累加值的过程为:

S31、获取当前采样周波相邻的上一周波实际采样有效值以及与当前采样点对应的上一周波的实时采样值;

S32、将当前实时采样值减去上一周波的实时采样值,得到递推值,将递推值转换为浮点数;

S33、将递推的值乘以傅立叶正余弦转换表中的对应值,得到递推采样值,将递推采样值累加上一周波所有变换值累加后的累加值,得到当前采样点对应的递推正余弦分量累加值。

S4、若临时数组中存储的实时采样值个数达到一周波采样点数,则将临时数组中存储的一周波所有变换值累加后的累加值替换一周波最后一个采样点对应的所述递推正余弦分量累加值,并将临时数组清空;

步骤S4中,一周波采样结束后,临时数组中存储的分别为一周波的周波实际采样正弦分量累加值以及一周波的周波实际采样余弦分量累加值,将一周波的周波实际采样正弦分量累加值替换最后一个采样点对应的递推正弦分量累加值,将一周波的周波实际采样余弦分量累加值替换最后一个采样点对应的递推余弦分量累加值。

S5、不断重复步骤S2-S5直至采样结束。

需要理解的是,一周波的采样点数为递推离散傅立叶计算时所需的实际采样点数。周波采样有效值的数据类型为浮点数。采用递推离散傅立叶计算,分为计算正弦分量和余弦分量,傅立叶转换时用采样值乘以乘以傅立叶转换表中的对应值即可,得到各递推值对应的正弦分量值和余弦分量值,并根据递推傅立叶计算,将递推值的正余弦分量值加上之前的累加值,并将正弦分量累加值存储到PS中,余弦分量累加值存储到PC中;

如2图所示,对于临时数组中的实时采样值,乘以傅立叶转换表中的对应值,得到实际正弦分量和实际余弦分量,然后与该周波内其他采样点对应的正弦分量和余弦分量分别累加后分别存储在RS和RC中,利用一周波实际采样正弦变换累加值和余弦变换累加值替换当前周波最后一个采样点对应的周波采样的正余弦分量累加值,相当于新建临时变量存储当前周波的正弦分量累加值RS、余弦分量累加值RC,在一周波计算结束后,代替当前周波最后一个采样点计算的正弦分量累加值PS、余弦分量累加值PC;这是由于计算一周波的正弦、余弦分量时,会有积累,每周波更新一次,将最新的正弦分量累加值RS、余弦分量累加值RC作为下一周波计算的起点,使得上一周波的积累误差不会带入下一周波的计算。

为了更好说明本实施例中的方法与现有技术的区别,以三个周波为例,现有技术中,傅立叶变换处理的过程为:

假设第一个周波采样24个点,每个点为a1,a2…,a24;第二个周波采样24个点,每个点为b1,…,b24;第三个周波采样24个点,每个点为c1,…,c24;这24个点根据傅立叶转换表相乘后,得到的对应的傅立叶变换为sin1、cos1,…,sin24、cos24;初始值为0。以基波为例,计算第一个周波的基波余弦分量时:PS1=(a1-0)*sin1+(a2-0)*sin2+…+(a24-0)*sin24;

计算第二个周波的基波余弦分量:

PS2=PS1+(b1-a1)*sin1+(b2-a2)*sin2+…+(b24-a24)*sin24;

代入PS1,就可以得到:

PS2=(a1-0)*sin1+(b1-a1)*sin1+(a2-0)*sin2+(b2-a2)*sin2+…+(a24-0)*sin24+(b24-a24)*sin24;

从理论上出发,PS2=b1*sin1+…+b24*sin24;

但是由于计算机里面的浮点数的精度问题,实际:

PS2=b1*sin1+(a1-a1)*sin1+…+b24*sin24+(a24-a24)*sin24

这里a1-a1≠0、…、a24-a24≠0,所以一周波结束后,就会存在24个很小的积累;

同理得到第三个周波的基波余弦分量:

PS3=c1*sin1+(b1-b1)*sin1+(a1-a1)*sin1+…+c24*sin24+(b24-b24)*sin24+(a24-a24)*sin24;

这里的a1-a1≠0、b1-b1≠0、…、a24-a24≠0、b24-b24≠0,此处就有48个很小的积累,当这48个积累都为正或者都为负的时候,积累就不能互相抵消,而变成更大的积累。依次类推,当运行时间足够长,这个积累就可能变得很大。同理正弦分量也会有这个积累。这样傅立叶变换处理后的有效值

而本申请中,同样以三个周波为例,傅立叶变换处理的过程为:

假设第一个周波采样24个点,每个点为a1,a2…,a24;第二个周波采样24个点,每个点为b1,…,b24;第三个周波采样24个点,每个点为c1,…,c24;

这24个点也对应的傅立叶变换为sin1、cos1,…,sin24、cos24;初始值为0;计算第一个周波的基波余弦分量:

PS1=(a1-0)*sin1+(a2-0)*sin2+…+(a24-0)*sin24;

在计算第一个周波的基波余弦分量的同时,使用了一个临时变量RS用来存储第一个周波各采样值对应的实时正弦分量值和实时余弦分量值,用于参与下一周波正弦分量PS2的计算;RS=a1*sin1+…+a24*sin24;

计算完成后,将RS幅值给PS1,PS1=RS;然后将RC清零,RC=0;这里RS计算的就是周波各采样值对应的实时正弦分量值和实时余弦分量值。

这样在计算第二个周波的基波余弦分量PS2时累积的相当于累加的是上一时刻周波各采样值对应的实时正弦分量值和实时余弦分量值:

PS2=RS+(b1-a1)*sin1+(b2-a2)*sin2+…+(b24-a24)*sin24;

代入PS1,就可以得到:

PS2=a1*sin1+(b1-a1)*sin1+a2*sin2+(b2-a2)*sin2+…+a24*sin24+(b24-a24)*sin24;

从理论上出发,PS2=b1*sin1+…+b24*sin24;

但是由于计算机里面的浮点数的精度问题,实际:

PS2=b1*sin1+(a1-a1)*sin1+…+b24*sin24+(a24-a24)*sin24;

这里a1-a1≠0、…、a24-a24≠0,所以就会存在24个很小的积累;

而在计算第二个周波的基波余弦分量的同时,又使用了临时变量RS,给RS重新赋值,使RS表示第二个周波的各采样值对应的实时正弦分量值;

RS=b1*sin1+…+b24*sin24

计算完成后,将RS幅值给PS2,PS2=RS

然后将RS清零,RS=0;

这样在计算第三个周波的基波正弦分量时,相当于累加的是第二个周波各采样值对应的实时正弦分量值,而不是第二周波基波正弦分量PS2,下述的PS2的值为RS,

PS3=RS+(c1-b1)*sin1+…+(c24-b24)*sin24

带入PS2(RS),PS3=c1*sin1+(b1-b1)*sin1+…+c24*sin24+(b24-b24)*sin24这里的b1-b1≠0、…、b24-b24≠0,此处就和计算第二个周波一样只有24个很小的积累,而24个积累量很小,最终从液晶上得到的数据就不会波动。

可以理解的是,本发明方法通过程序实现时,可以实时缓冲每个周波的采样值对应的实时正弦分量值和余弦分量值,然后建立临时变量调用上一周波的正弦、余弦分量并代替之前计算的正弦、余弦分量;这样使用傅立叶递推算法计算有效值时,可能也会产生积累量,但是该积累量不会带入下一周波的计算。

通过程序实现的具体过程如下:

1.在傅氏变换缓冲区定义中新增计算实时正弦分量累加值RS,计算实时余弦分量累加值RC

2.用当前采样点的值减去上一周波的采样点的值,并转换为浮点数,得到递推值;

3.用递推值乘以傅立叶转换表中的对应值并累加上一周波的一周波实际采样变换累加值,得到采样点的正弦余弦分量PC、PS

4.新建一个临时变量,存储当前采样值

5.用采样值乘以傅立叶转换表中的对应值并不断累加,得到存储的采样点的正弦余弦分量累加值RC、RS

6.一个周波结束过后,将RC、RS分别赋值给PC、PS,并将RC和RS清0

7.计算当前周波的基波的正弦分量和余弦分量时,将各递推值对应的正弦分量值和余弦分量值分别与各采样值对应的实时正弦分量值和实时余弦分量值进行累加,得到当前时刻基波的正弦分量FS_temp和余弦分量FC_temp;

8.利用

相当于每次计算当前时刻基波的正弦分量和余弦分量时,累积的是上一周波采样值的实时正弦分量值和余弦分量值,而不是累积上一时刻基波的正弦分量和余弦分量,这样在计算周波的正弦、余弦分量时,虽然会有积累,但是计算下一周波计算时,不会累加上一周波递推带来的误差,当前时刻周波的正弦分量和余弦分量不会带入下一周波的计算,这样每个周波计算时误差累积量固定。

以上所述,仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制,依据本发明的技术实质,在本发明的精神和原则之内,对以上实施例所作的任何简单的修改、等同替换与改进等,均仍属于本发明技术方案的保护范围之内。

相关技术
  • 一种尿液中氧化三甲胺快速检测方法及检测试剂盒
  • 液体试样检测试剂盒用膜载体、液体试样检测试剂盒和液体试样检测试剂盒的制造方法
  • 一种NSE检测试纸条的制备方法、试纸条、检测卡及NSE检测试剂盒
  • 一种水稻黄单胞菌的环介导等温扩增检测引物组、检测方法和检测试剂盒
  • 一种检测葡萄糖-6-磷酸异构酶的试剂盒及试剂盒的使用方法
  • 一种去甲芬太尼及芬太尼的检测试剂盒及其检测方法
  • 一种芬太尼代谢标志物的检测试剂盒及其检测方法和应用
技术分类

06120116551563