You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
DVRLastVersionsCompare/SYSCTRL/GeneratorSymmetricalCompone...

124 lines
2.5 KiB
C

/*
* GeneratorSymmetricalComponents.h
*
* Author: Aleksey Gerasimenko
* gerasimenko.aleksey.n@gmail.com
*/
#ifndef SYSCTRL_GENERATORSYMMETRICALCOMPONENTS_H_
#define SYSCTRL_GENERATORSYMMETRICALCOMPONENTS_H_
#include <math.h>
#include <stdint.h>
//#include "SYSCTRL/HeadersFLTSYSLIB.h"
#include "FLTSYSLIB/Transformation.h"
namespace SYSCTRL
{
struct GeneratorPhase
{
float phase;
float cos_phase;
float sin_phase;
GeneratorPhase():
phase(FP_ZERO),
cos_phase(FP_ZERO),
sin_phase(FP_ZERO)
{}
};//GeneratorPhase
struct GeneratorSymmetricalComponentsPhase
{
GeneratorPhase direct;
GeneratorPhase inverse;
GeneratorSymmetricalComponentsPhase():
direct(),
inverse()
{}
};//GeneratorSymmetricalComponentsPhase
struct GeneratorAmplitude
{
float d;
float q;
GeneratorAmplitude():
d(FP_ZERO),
q(FP_ZERO)
{}
};//GeneratorAmplitude
struct GeneratorSymmetricalComponentsAmplitude
{
GeneratorAmplitude direct;
GeneratorAmplitude inverse;
float zero_a;
float zero_b;
float zero_c;
GeneratorSymmetricalComponentsAmplitude():
direct(),
inverse(),
zero_a(FP_ZERO),
zero_b(FP_ZERO),
zero_c(FP_ZERO)
{}
};//GeneratorSymmetricalComponentsAmplitude
struct GeneratorSymmetricalComponentsConfiguration
{
GeneratorSymmetricalComponentsAmplitude amplitude;
GeneratorSymmetricalComponentsPhase phase;
GeneratorSymmetricalComponentsConfiguration():
amplitude(),
phase()
{}
};//GeneratorSymmetricalComponentsConfiguration
class GeneratorSymmetricalComponents
{
private:
GeneratorSymmetricalComponentsAmplitude m_amplitude;
GeneratorSymmetricalComponentsPhase m_phase;
private:
float m_ort_direct_alpha;
float m_ort_direct_beta;
float m_ort_inverse_alpha;
float m_ort_inverse_beta;
private:
float m_direct_alpha;
float m_direct_beta;
float m_inverse_alpha;
float m_inverse_beta;
private:
float m_direct_a;
float m_direct_b;
float m_direct_c;
float m_inverse_a;
float m_inverse_b;
float m_inverse_c;
private:
float m_out_a;
float m_out_b;
float m_out_c;
public:
GeneratorSymmetricalComponents();
public:
void configure(GeneratorSymmetricalComponentsConfiguration& config);
public:
void execute(float ort_alpha, float ort_beta);
void get_output(float& out_a, float& out_b, float& out_c);
};//GeneratorSymmetricalComponents
} /* namespace SYSCTRL */
#endif /* SYSCTRL_GENERATORSYMMETRICALCOMPONENTS_H_ */