发明内容
本发明所要解决的技术问题在于,提供一种节省DSP的RAM空间、提高检测速度、消除计算积量误差的谐波检测方法。
为解决上述技术问题,本发明提供一种基于查表的谐波检测方法,包括如下步骤:
步骤1,将三相电流信号Ila、Ilb和Ilc进行AD转换,由模拟量变为数字量Ilad、Ilbd和Ilcd,数字量Ilad、Ilbd和Ilcd即为采样值;
步骤2,采用滑窗傅里叶变换的方法将数字量Ilad、Ilbd和Ilcd转化为傅里叶系数;
步骤3,采用傅里叶反变换将步骤2得到的傅里叶系数变成各谐波的瞬时值。
本发明步骤2包括如下步骤:
步骤2-1,设计一张表格,在表格中设置N个点,前N/2个点与后N/2个点的正弦余弦值的和为零,表格储存在ROM(Read Only Memory image,只读内存镜像)中;
步骤2-2,计算k时刻提取的n次余弦量和n次正弦量;
步骤2-3,根据步骤2得到的k时刻提取的n次余弦量和n次正弦量计算得到k+1时刻提取的n次余弦量和n次正弦量,从而得到k+1时刻的第n次谐波的幅值。
步骤2-2中,通过如下公式计算k时刻提取的直流量A0(k):
其中,u(mT)为m时刻的采样值,T是采样周期,N是基波周期的采样点数;
通过如下公式计算k时刻提取的n次余弦量An(k):
其中,ω是基波频率。
步骤2-2中,通过如下公式计算k时刻提取的n次正弦量Bn(k):
将公式(4)代入到公式(2)和公式(3)中,得到如下公式:
通过如下公式分别计算k+1时刻提取的n次余弦量An(k+1)和k+1时刻提取的n次正弦量Bn(k+1):
其中,表示m时刻次数n的余弦值,表示m时刻次数n的正弦值,由公式(5)、(6)、(7)和(8)得到如下公式:
当u(kt)中只含奇次谐波时,公式(5)和公式(6)简化为:
公式(11)和公式(12)简化为:
其中,u((k+1)T)表示k+1时刻的采样值,u(k-N/2+1)为上半个周期的采样值,表示k+1时刻次数n的正弦值,表示k+1时刻次数n的余弦值,表示k-N/2+1时刻次数n的正弦值,表示k-N/2+1时刻次数n的余弦值,
根据公式(17)公式(15)和公式(16)分别简化为如下公式:
上半个周期的采样值u(k-N/2+1)存储在RAM中,使用的时候进行读取。
通过查询步骤2-1设置的表格得到函数cos()与函数sin()的值,计算时取当前的负值。
步骤2-3中,用第k时刻的值(即An(k)或Bn(k))加上当前计算值,再减去上半个周期的计算值或最终得到k+1时刻的第n次谐波的幅值。
本发明的有益效果为:利用滑窗计算方法,节省DSP的RAM空间、提高检测速度、消除计算积量误差。
实施例1
如图1所示,三相电流信号Ila、Ilb、Ilc经过AD转换的过程,由模拟量变为数字量Ilad、Ilbd、Ilcd;之后经过滑窗傅里叶变换的方法,转化为傅里叶系数;之后经过傅里叶反变换的过程,变成各谐波的瞬时值。
滑窗傅里叶变换的方法如下:
步骤1、预先设计表格,表格里面设置N个点,前N/2个点与后N/2个点的正弦余弦值的和刚好为零,正弦、余弦值查表;
后面公式中用到的值在表格中都得到相应体现,因为很多值是用查表方法直接得到,所以避免了DSP直接计算引起的累计误差。
步骤2、
将(4)分别带入(2)与(3),得到(5)与(6)。
由(5)(6)(7)(8)可以得出,
若u(kt)中只含奇次谐波,(5)(6)可以简化为
(11)(12)可以简化为,
根据(17),(15)(16)可简化为(18)(19)
由(15)(16)可以看出,若需要k+1时刻的第n次谐波的幅值,可以利用第k时刻的值加上当前计算值,再减去上半个周期的计算值得到,因此可以利用滑窗计算来完成。
由(17)(18)(19)可知,当前的角度与上半个周期的角度相差180°,所以上半个周期计算的正弦与余弦值为当前的负值。An(k)中包含了计算An(k+1)时需要减去为了让An(k+1)不产生累加误差,An(k)包含的值与An(k+1)计算的必须一致,这样才可以消除累计误差。
可采用如下方法:u(k-N/2+1)上半个周期的值可以存储在RAM中,使用的时候进行读取;cos可以采用查表的方法得到,cos表格采用N个点,负半波的值刚好是正半波的负值,计算可以取当前的负值,如公式(18)(19)所示。这样An(k)计算的采用的余弦值与计算An(k+1)的余弦值是完全一致的,因此消除了累计的误差。而且计算上半个周期的正弦与余弦值只需要采用当前的余弦值,不需要再进行查表或者进行计算,提高了查表与运算的效率。