
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
//-------------------------------------------------------//
// Project Code : V2H6K01-23-ENEMAN
// File Name : OffsetProcess.cpp
// Created on : 2023. 08. 08.
// Description :
// Author : KimJeongWoo
// Last modified Date :
//-------------------------------------------------------//
#include "Cpu1DeviceDefine.h"
unsigned int FlagOffset = 0;
int CntAdcOffsetWait = 20000;
int SetAdcOffsetWait = 20000;
int CntOffsetWait = 400;
int SetOffsetWait = 400;
unsigned int CntOffsetAvg = 0;
unsigned int SetOffsetAvg = 16384;
unsigned int CntAdcOffsetSum = 0;
unsigned int SetAdcOffsetSum = 16384;
int SetFaultAdcOffset = 32767 * 0.01;
void OffsetProcess()
{
// WatchdogRun();
AdcResult();
PllRun();
Lpf1stRun();
// InvVdc = 1. / (CH3_UV_Flt + 1.e-32);
RmsAvgSum();
// FaultChecker();
if (FaultReset == 0)
{
if (FlagOffset == 0)
{
--CntAdcOffsetWait;
if (CntAdcOffsetWait <= 0)
{
// Adc.Offset[1] = ADC_OFFSET1V5; //Ibat
// Adc.Offset[6] = ADC_OFFSET1V5; //IuGrid
// Adc.Offset[7] = ADC_OFFSET1V5; //IwGrid
//
// Adc.Offset[11] = ADC_OFFSET1V5; //IuInv
// Adc.Offset[12] = ADC_OFFSET1V5; //IwInv
//
// Adc.Offset[18] = ADC_OFFSET1V5; //IuGridExt
// Adc.Offset[19] = ADC_OFFSET1V5; //IwGridExt
//
//
// Adc.OffsetSum[1] = 0.; //Ibat
// Adc.OffsetSum[6] = 0.; //IuGrid
// Adc.OffsetSum[7] = 0.; //IwGrid
//
// Adc.OffsetSum[11] = 0.; //IuInv
// Adc.OffsetSum[12] = 0.; //IwInv
//
// Adc.OffsetSum[18] = 0.; //IuGridExt
// Adc.OffsetSum[19] = 0.; //IwGridExt
//
// Adc.OffsetDelt[1] = 0.; //Ibat
// Adc.OffsetDelt[6] = 0.; //IuGrid
// Adc.OffsetDelt[7] = 0.; //IwGrid
//
// Adc.OffsetDelt[11] = 0.; //IuInv
// Adc.OffsetDelt[12] = 0.; //IwInv
//
// Adc.OffsetDelt[18] = 0.; //IuGridExt
// Adc.OffsetDelt[19] = 0.; //IwGridExt
FlagOffset = 1;
CntAdcOffsetWait = SetAdcOffsetWait;
}
}
else if (FlagOffset == 1)
{
Adc.OffsetSum[2] += Adc.RawData[2] - ADC_OFFSET1V5; //Ibat
Adc.OffsetSum[3] += Adc.RawData[3] - ADC_OFFSET1V5; //IuGrid
Adc.OffsetSum[4] += Adc.RawData[4] - ADC_OFFSET1V5; //IwGrid
Adc.OffsetSum[5] += Adc.RawData[5] - ADC_OFFSET1V5; //IuInv
Adc.OffsetSum[8] += Adc.RawData[8] - ADC_OFFSET1V5; //IwInv
Adc.OffsetSum[10] += Adc.RawData[10] - ADC_OFFSET1V5; //IwInv
Adc.OffsetSum[11] += Adc.RawData[11] - ADC_OFFSET1V5; //Ibat
Adc.OffsetSum[12] += Adc.RawData[12] - ADC_OFFSET1V5; //IuGrid
Adc.OffsetSum[13] += Adc.RawData[13] - ADC_OFFSET1V5; //IwGrid
Adc.OffsetSum[18] += Adc.RawData[18] - ADC_OFFSET1V5; //IuInv
Adc.OffsetSum[19] += Adc.RawData[19] - ADC_OFFSET1V5; //IwInv
Adc.OffsetSum[20] += Adc.RawData[20] - ADC_OFFSET1V5; //IwInv
if (++CntOffsetAvg >= SetOffsetAvg)
{
//todo 나중에 최적화 할 것.
Adc.OffsetDelt[2] = Adc.OffsetSum[2] / SetOffsetAvg;
Adc.OffsetDelt[3] = Adc.OffsetSum[3] / SetOffsetAvg;
Adc.OffsetDelt[4] = Adc.OffsetSum[4] / SetOffsetAvg;
Adc.OffsetDelt[5] = Adc.OffsetSum[5] / SetOffsetAvg;
Adc.OffsetDelt[8] = Adc.OffsetSum[8] / SetOffsetAvg;
Adc.OffsetDelt[10] = Adc.OffsetSum[10] / SetOffsetAvg;
Adc.OffsetDelt[11] = Adc.OffsetSum[11] / SetOffsetAvg;
Adc.OffsetDelt[12] = Adc.OffsetSum[12] / SetOffsetAvg;
Adc.OffsetDelt[13] = Adc.OffsetSum[13] / SetOffsetAvg;
Adc.OffsetDelt[18] = Adc.OffsetSum[18] / SetOffsetAvg;
Adc.OffsetDelt[19] = Adc.OffsetSum[19] / SetOffsetAvg;
Adc.OffsetDelt[20] = Adc.OffsetSum[20] / SetOffsetAvg;
// if (fabs(AdcExt.Offset[18]) > SetFaultAdcOffset) Fault.Sw3.bit.Offset_IL |= 1;
// if (fabs(AdcExt.Offset[19]) > SetFaultAdcOffset) Fault.Sw3.bit.Offset_IL |= 1;
// if (fabs(AdcExt.Offset[20]) > SetFaultAdcOffset) Fault.Sw3.bit.Offset_IL |= 1;
// if (fabs(AdcExt.Offset[21]) > SetFaultAdcOffset) Fault.Sw3.bit.Offset_Iabc |= 1;
// if (fabs(AdcExt.Offset[22]) > SetFaultAdcOffset) Fault.Sw3.bit.Offset_Iabc |= 1;
// if (fabs(AdcExt.Offset[23]) > SetFaultAdcOffset) Fault.Sw3.bit.Offset_Iabc |= 1;
// if (fabs(AdcExt.Offset[24]) > SetFaultAdcOffset) Fault.Sw3.bit.Offset_Ibe |= 1;
CntOffsetAvg = 0;
FlagOffset = 3;
CntOffsetWait = SetOffsetWait;
}
}
}
}
unsigned int AutoOffsetCnt = 0;
unsigned int AutoOffsetSet = 16384;
unsigned int FlagAutoOffset = 0;
unsigned int AdcOffsetCalCh = 0;
unsigned int OffsetCalSeq = 0;
void AutoOffsetCal(int AdcCh)
{
if (FlagAutoOffset == 1)
{
if(OffsetCalSeq == 0)
{
Adc.OffsetSum[AdcCh] = 0;
OffsetCalSeq = 1;
}
else
{
if (AutoOffsetCnt++ < AutoOffsetSet)
{
Adc.OffsetSum[AdcCh] += Adc.RawData[AdcCh] - Adc.OffsetDefault[AdcCh];
}
else
{
Adc.OffsetDelt[AdcCh] = Adc.OffsetSum[AdcCh] / AutoOffsetCnt;
AutoOffsetCnt = 0;
FlagAutoOffset = 0;
OffsetCalSeq = 0;
}
}
}
}