/* * SymmetricalComponents.cpp * * Author: Aleksey Gerasimenko * gerasimenko.aleksey.n@gmail.com */ #include "SYSCTRL/SymmetricalComponents.h" namespace SYSCTRL { //CONSTRUCTOR SymmetricalComponents::SymmetricalComponents() {}//CONSTRUCTOR // #pragma CODE_SECTION("ramfuncs"); void SymmetricalComponents::compute_symmetrical_components_axis_common(const SYSCTRL::ProjectionAnalogSignalStructure in_ph_a, const SYSCTRL::ProjectionAnalogSignalStructure in_ph_b, const SYSCTRL::ProjectionAnalogSignalStructure in_ph_c, SYSCTRL::SymmetricalComponentsStructure& out) { SYSCTRL::SymmetricalComponents::compute_direct_symmetrical_components_axis_common(in_ph_a, in_ph_b, in_ph_c, out.direct); SYSCTRL::SymmetricalComponents::compute_inverse_symmetrical_components_axis_common(in_ph_a, in_ph_b, in_ph_c, out.inverse); SYSCTRL::SymmetricalComponents::compute_zero_symmetrical_components_axis_common(in_ph_a, in_ph_b, in_ph_c, out.zero); // }// // #pragma CODE_SECTION("ramfuncs"); void SymmetricalComponents::compute_direct_symmetrical_components_axis_common(const SYSCTRL::ProjectionAnalogSignalStructure in_ph_a, const SYSCTRL::ProjectionAnalogSignalStructure in_ph_b, const SYSCTRL::ProjectionAnalogSignalStructure in_ph_c, SYSCTRL::SymmetricalComponentsPhase& out) { SYSCTRL::SymmetricalComponents::_direct_common_inverse_own(in_ph_a, in_ph_b, in_ph_c, out); out.b.active = -m_coefficient_a * out.a.active + m_coefficient_b * out.a.reactive; out.b.reactive = -m_coefficient_b * out.a.active - m_coefficient_a * out.a.reactive; out.c.active = -m_coefficient_a * out.a.active - m_coefficient_b * out.a.reactive; out.c.reactive = m_coefficient_b * out.a.active - m_coefficient_a * out.a.reactive; // }// // #pragma CODE_SECTION("ramfuncs"); void SymmetricalComponents::compute_inverse_symmetrical_components_axis_common(const SYSCTRL::ProjectionAnalogSignalStructure in_ph_a, const SYSCTRL::ProjectionAnalogSignalStructure in_ph_b, const SYSCTRL::ProjectionAnalogSignalStructure in_ph_c, SYSCTRL::SymmetricalComponentsPhase& out) { SYSCTRL::SymmetricalComponents::_inverse_common_zero_own(in_ph_a, in_ph_b, in_ph_c, out); out.b.active = -m_coefficient_a * out.a.active - m_coefficient_b * out.a.reactive; out.b.reactive = m_coefficient_b * out.a.active - m_coefficient_a * out.a.reactive; out.c.active = -m_coefficient_a * out.a.active + m_coefficient_b * out.a.reactive; out.c.reactive = -m_coefficient_b * out.a.active - m_coefficient_a * out.a.reactive; // }// // #pragma CODE_SECTION("ramfuncs"); void SymmetricalComponents::compute_zero_symmetrical_components_axis_common(const SYSCTRL::ProjectionAnalogSignalStructure in_ph_a, const SYSCTRL::ProjectionAnalogSignalStructure in_ph_b, const SYSCTRL::ProjectionAnalogSignalStructure in_ph_c, SYSCTRL::SymmetricalComponentsPhase& out) { SYSCTRL::SymmetricalComponents::_zero_common_direct_own(in_ph_a, in_ph_b, in_ph_c, out); out.b.active = out.a.active; out.b.reactive = out.a.reactive; out.c.active = out.a.active; out.c.reactive = out.a.reactive; // }// // #pragma CODE_SECTION("ramfuncs"); void SymmetricalComponents::compute_symmetrical_components_axis_own(const SYSCTRL::ProjectionAnalogSignalStructure in_ph_a, const SYSCTRL::ProjectionAnalogSignalStructure in_ph_b, const SYSCTRL::ProjectionAnalogSignalStructure in_ph_c, SYSCTRL::SymmetricalComponentsStructure& out) { SYSCTRL::SymmetricalComponents::compute_direct_symmetrical_components_axis_own(in_ph_a, in_ph_b, in_ph_c, out.direct); SYSCTRL::SymmetricalComponents::compute_inverse_symmetrical_components_axis_own(in_ph_a, in_ph_b, in_ph_c, out.inverse); SYSCTRL::SymmetricalComponents::compute_zero_symmetrical_components_axis_own(in_ph_a, in_ph_b, in_ph_c, out.zero); // }// // #pragma CODE_SECTION("ramfuncs"); void SymmetricalComponents::compute_direct_symmetrical_components_axis_own(const SYSCTRL::ProjectionAnalogSignalStructure in_ph_a, const SYSCTRL::ProjectionAnalogSignalStructure in_ph_b, const SYSCTRL::ProjectionAnalogSignalStructure in_ph_c, SYSCTRL::SymmetricalComponentsPhase& out) { SYSCTRL::SymmetricalComponents::_zero_common_direct_own(in_ph_a, in_ph_b, in_ph_c, out); //out.b.active = -m_coefficient_a * out.a.active + m_coefficient_b * out.a.reactive; //out.b.reactive = -m_coefficient_b * out.a.active - m_coefficient_a * out.a.reactive; out.b.active = 0.8660254 * (out.a.reactive - 0.577350269 * out.a.active); out.b.reactive = -0.8660254 * (out.a.active + 0.577350269 * out.a.reactive); //out.c.active = -m_coefficient_a * out.a.active - m_coefficient_b * out.a.reactive; //out.c.reactive = m_coefficient_b * out.a.active - m_coefficient_a * out.a.reactive; out.c.active = -0.8660254 * (0.577350269 * out.a.active + out.a.reactive); out.c.reactive = 0.8660254 * (out.a.active - 0.577350269 * out.a.reactive); // }// // #pragma CODE_SECTION("ramfuncs"); void SymmetricalComponents::compute_inverse_symmetrical_components_axis_own(const SYSCTRL::ProjectionAnalogSignalStructure in_ph_a, const SYSCTRL::ProjectionAnalogSignalStructure in_ph_b, const SYSCTRL::ProjectionAnalogSignalStructure in_ph_c, SYSCTRL::SymmetricalComponentsPhase& out) { SYSCTRL::SymmetricalComponents::_direct_common_inverse_own(in_ph_a, in_ph_b, in_ph_c, out); //out.b.active = -m_coefficient_a * out.a.active - m_coefficient_b * out.a.reactive; //out.b.reactive = m_coefficient_b * out.a.active - m_coefficient_a * out.a.reactive; out.b.active = -0.8660254 * (0.577350269 * out.a.active + out.a.reactive); out.b.reactive = 0.8660254 * (out.a.active - 0.577350269 * out.a.reactive); //out.c.active = -m_coefficient_a * out.a.active + m_coefficient_b * out.a.reactive; //out.c.reactive = -m_coefficient_b * out.a.active - m_coefficient_a * out.a.reactive; out.c.active = 0.8660254 * (out.a.reactive - 0.577350269 * out.a.active); out.c.reactive = -0.8660254 * (out.a.active + 0.577350269 * out.a.reactive); // }// // #pragma CODE_SECTION("ramfuncs"); void SymmetricalComponents::compute_zero_symmetrical_components_axis_own(const SYSCTRL::ProjectionAnalogSignalStructure in_ph_a, const SYSCTRL::ProjectionAnalogSignalStructure in_ph_b, const SYSCTRL::ProjectionAnalogSignalStructure in_ph_c, SYSCTRL::SymmetricalComponentsPhase& out) { SYSCTRL::SymmetricalComponents::_inverse_common_zero_own(in_ph_a, in_ph_b, in_ph_c, out); out.b.active = out.a.active; out.b.reactive = out.a.reactive; out.c.active = out.a.active; out.c.reactive = out.a.reactive; // }// // #pragma CODE_SECTION("ramfuncs"); inline void SymmetricalComponents::_direct_common_inverse_own(const SYSCTRL::ProjectionAnalogSignalStructure in_ph_a, const SYSCTRL::ProjectionAnalogSignalStructure in_ph_b, const SYSCTRL::ProjectionAnalogSignalStructure in_ph_c, SYSCTRL::SymmetricalComponentsPhase& out) { out.a.active = m_three_recipcoral * (in_ph_a.active - m_coefficient_a * (in_ph_b.active + in_ph_c.active) - m_coefficient_b * (in_ph_b.reactive - in_ph_c.reactive)); out.a.reactive = m_three_recipcoral * (in_ph_a.reactive - m_coefficient_a * (in_ph_b.reactive + in_ph_c.reactive) + m_coefficient_b * (in_ph_b.active - in_ph_c.active)); // }// // #pragma CODE_SECTION("ramfuncs"); inline void SymmetricalComponents::_inverse_common_zero_own(const SYSCTRL::ProjectionAnalogSignalStructure in_ph_a, const SYSCTRL::ProjectionAnalogSignalStructure in_ph_b, const SYSCTRL::ProjectionAnalogSignalStructure in_ph_c, SYSCTRL::SymmetricalComponentsPhase& out) { out.a.active = m_three_recipcoral * (in_ph_a.active - m_coefficient_a * (in_ph_b.active + in_ph_c.active) + m_coefficient_b * (in_ph_b.reactive - in_ph_c.reactive)); out.a.reactive = m_three_recipcoral * (in_ph_a.reactive - m_coefficient_a * (in_ph_b.reactive + in_ph_c.reactive) - m_coefficient_b * (in_ph_b.active - in_ph_c.active)); // }// // #pragma CODE_SECTION("ramfuncs"); inline void SymmetricalComponents::_zero_common_direct_own(const SYSCTRL::ProjectionAnalogSignalStructure in_ph_a, const SYSCTRL::ProjectionAnalogSignalStructure in_ph_b, const SYSCTRL::ProjectionAnalogSignalStructure in_ph_c, SYSCTRL::SymmetricalComponentsPhase& out) { out.a.active = m_three_recipcoral * (in_ph_a.active + in_ph_b.active + in_ph_c.active); out.a.reactive = m_three_recipcoral * (in_ph_a.reactive + in_ph_b.reactive + in_ph_c.reactive); // }// // // } /* namespace SYSCTRL */