• 大小: 2KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-13
  • 语言: C/C++
  • 标签: 有效值  c语言  

资源简介

有效值计算算法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


评论

共有 条评论