資源簡介
有效值計算算法c語言實現,采用四分之一周波滑動平均,默認一周采樣256點,采樣點數可更改。實時計算,采一個點計算一次,精度較高,容易移植。

代碼片段和文件信息
/**********************************************************************
*?File:?Calc.c
*?Devices:?TMS320F28335
*?Author:?quan
*?History:
*???2013-04-08?-?original?(quan)
**********************************************************************/
#include?“DSP2833x_Device.h“????????????//?Peripheral?address?definitions
#include?“F28335_example.h“?????????????//?Main?include?file
#include?“Os_cpu.h“
#include?“212Math.h“
#include?“Pll.h“
#include?“DC-AC.h“
#include?“ADSample.h“
#include?“Pwm.h“
#include?“Calc.h“
//---------------------------------------------------------------------
//SWA_STRU?g_CALC_stCurrASWA;
//SWA_STRU?g_CALC_stCurrBSWA;
//SWA_STRU?g_CALC_stCurrCSWA;
//SWA_STRU?g_CALC_stGridVoltASWA;
//SWA_STRU?g_CALC_stGridVoltBSWA;
//SWA_STRU?g_CALC_stGridVoltCSWA;
RMS_CALC_STRU?g_CALC_stGridVoltRMSA;
RMS_CALC_STRU?g_CALC_stGridVoltRMSB;
RMS_CALC_STRU?g_CALC_stGridVoltRMSC;
RMS_CALC_STRU?g_CALC_stILRMSA;
RMS_CALC_STRU?g_CALC_stILRMSB;
RMS_CALC_STRU?g_CALC_stILRMSC;
DCAC_POWER_STRU?g_stPower;
Uint16?g_CALC_u16SamLenOnePeriod?=?0;
float??g_CALC_f32RecipSamLen?=?1?/?256.0;
void?SWACalcConfig(SWA_STRU?*pstSWA?float?f32SampInterval_us)
{
????pstSWA->b8SampInterval?=?0x00FF?&?(Uint16)(f32SampInterval_us?/?SWITCH_PERIOD_US?+?0.5);
????pstSWA->b8SampCnt?=?pstSWA->b8SampInterval;
????//pstSWA->f32SWALenReciprocal?=?1?/?256.0;
}
/*
*********************************************************************************************************
*???????????????????????????????????CalcInit()
*
*
*?描述:?滑窗平均值計算
*???????
*?Author?????:?quan?????122166??
*???????
*?Arguments??:?none
*
*?Returns????:?none
*********************************************************************************************************
*/
void?CalcInit()
{
????//memset(&g_CALC_stCurrASWA?0?sizeof(SWA_STRU));
????//memset(&g_CALC_stCurrBSWA?0?sizeof(SWA_STRU));
????//memset(&g_CALC_stCurrCSWA?0?sizeof(SWA_STRU));
????//memset(&g_CALC_stGridVoltASWA?0?sizeof(SWA_STRU));
????//memset(&g_CALC_stGridVoltBSWA?0?sizeof(SWA_STRU));
????//memset(&g_CALC_stGridVoltCSWA?0?sizeof(SWA_STRU));
????//SWACalcConfig(&g_CALC_stCurrASWA?SWITCH_PERIOD_US);??//?每個中斷周期都計算
????//SWACalcConfig(&g_CALC_stCurrBSWA?SWITCH_PERIOD_US);??//?每個中斷周期都計算
????//SWACalcConfig(&g_CALC_stCurrCSWA?SWITCH_PERIOD_US);??//?每個中斷周期都計算
????//SWACalcConfig(&g_CALC_stGridVoltASWA?SWITCH_PERIOD_US);??//?每個中斷周期都計算
????//SWACalcConfig(&g_CALC_stGridVoltBSWA?SWITCH_PERIOD_US);??//?每個中斷周期都計算
????//SWACalcConfig(&g_CALC_stGridVoltCSWA?SWITCH_PERIOD_US);??//?每個中斷周期都計算
????memset(&g_CALC_stGridVoltRMSA?0?sizeof(RMS_CALC_STRU));
????memset(&g_CALC_stGridVoltRMSB?0?sizeof(RMS_CALC_STRU));
????memset(&g_CALC_stGridVoltRMSC?0?sizeof(RMS_CALC_STRU));
????memset(&g_CALC_stILRMSA?0?sizeof(RMS_CALC_STRU));
????memset(&g_CALC_stILRMSB?0?sizeof(RMS_CALC_STRU));
????memset(&g_CALC_stILRMSC?0?sizeof(RMS_CALC_STRU));
????//錯
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????3075??2015-08-24?13:50??Calc.h
?????文件???????7227??2015-08-24?14:29??Calc.c
-----------?---------??----------?-----??----
????????????????10302????????????????????2
評論
共有 條評論