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.

113 lines
3.6 KiB
C++

/*
* AlgorithmWorkEntry.cpp
*
* Author: Aleksey Gerasimenko
* gerasimenko.aleksey.n@gmail.com
*/
#include "SYSCTRL/AlgorithmWorkEntry.h"
namespace SYSCTRL
{
//CONSTRUCTOR
AlgorithmWorkEntry::AlgorithmWorkEntry(SYSCTRL::SystemEnvironment& env):
SYSCTRL::AlgorithmBase(),
m_env(env),
_execute(&SYSCTRL::AlgorithmWorkEntry::_execute_undef)
{}//CONSTRUCTOR
void AlgorithmWorkEntry::setup()
{
_execute = &SYSCTRL::AlgorithmWorkEntry::_execute_run;
//
}//
#pragma CODE_SECTION("ramfuncs");
void AlgorithmWorkEntry::reset()
{
}//
//
#pragma CODE_SECTION("ramfuncs");
void AlgorithmWorkEntry::execute()
{
(this->*_execute)();
//
}//
//
#pragma CODE_SECTION("ramfuncs");
bool AlgorithmWorkEntry::compare_mode(mode_t mode)
{
return m_mode == mode;
//
}//
//
#pragma CODE_SECTION("ramfuncs");
void AlgorithmWorkEntry::set_mode(mode_t mode)
{
m_mode = mode;
//
}//
//
#if TYPECONTROL == DIRECTREVERSECONTROL
#pragma CODE_SECTION("ramfuncs");
void AlgorithmWorkEntry::_execute_run()
{
m_env.hardware.ref_control_order = ORDER_START;
//
m_env.timer_stop.execute();
//
if(m_env.timer_stop.is_finished()){
//
m_voltage_a = FP_ZERO;
m_voltage_b = FP_ZERO;
m_voltage_c = FP_ZERO;
//
}else{
//
m_env.drc_voltage_reference_load_direct = m_env.drc_reference_voltage_direct_intensity.execute(m_env.drc_voltage_grid_direct);
m_env.drc_voltage_reference_load_quadrature = FP_ZERO;
//
m_env.drc_positive_voltage_cell_direct = m_env.drc_positive_voltage_controller_direct.execute(m_env.drc_voltage_reference_load_direct, m_env.drc_positive_voltage_load_direct);
m_env.drc_positive_voltage_cell_quadrature = FP_ZERO;
m_env.drc_negative_voltage_cell_direct = FP_ZERO;
m_env.drc_negative_voltage_cell_quadrature = FP_ZERO;
m_env.drc_negative_voltage_cell_alpha = FP_ZERO;
m_env.drc_negative_voltage_cell_beta = FP_ZERO;
m_env.drc_negative_voltage_cell_a = FP_ZERO;
m_env.drc_negative_voltage_cell_b = FP_ZERO;
m_env.drc_negative_voltage_cell_c = FP_ZERO;
//
FLTSYSLIB::Transformation::park_inverse(m_env.main_ab_orts.active,
m_env.main_ab_orts.reactive,
m_env.drc_positive_voltage_cell_direct,
m_env.drc_positive_voltage_cell_quadrature,
m_env.drc_positive_voltage_cell_alpha,
m_env.drc_positive_voltage_cell_beta);
//
FLTSYSLIB::Transformation::clarke_inverse(m_env.drc_positive_voltage_cell_alpha,
m_env.drc_positive_voltage_cell_beta,
m_env.drc_positive_voltage_cell_a,
m_env.drc_positive_voltage_cell_b,
m_env.drc_positive_voltage_cell_c);
//
m_env.drc_voltage_cell_a = m_env.drc_positive_voltage_cell_a;
m_env.drc_voltage_cell_b = m_env.drc_positive_voltage_cell_b;
m_env.drc_voltage_cell_c = m_env.drc_positive_voltage_cell_c;
//
m_voltage_a = m_env.drc_voltage_cell_a * m_env.cell_dc_voltage_a_reciprocal;
m_voltage_b = m_env.drc_voltage_cell_b * m_env.cell_dc_voltage_b_reciprocal;
m_voltage_c = m_env.drc_voltage_cell_c * m_env.cell_dc_voltage_c_reciprocal;
//
}//if else
//
}//
#endif
} /* namespace SYSCTRL */