/* * GeneratorSymmetricalComponents.h * * Author: Aleksey Gerasimenko * gerasimenko.aleksey.n@gmail.com */ #ifndef SYSCTRL_GENERATORSYMMETRICALCOMPONENTS_H_ #define SYSCTRL_GENERATORSYMMETRICALCOMPONENTS_H_ #include #include //#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_ */