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++
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 */
|