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.

1332 lines
75 KiB
C++

/*
* SystemControl.cpp
*
* Author: Aleksey Gerasimenko
* gerasimenko.aleksey.n@gmail.com
*/
#include "SYSCTRL/SystemControl.h"
namespace SYSCTRL
{
//CONSTRUCTOR
SystemControl::SystemControl():
m_mode(SYSCTRL::SystemControl::UNDEFINED),
m_algorithm_executed(SYSCTRL::AlgorithmContext::OFF),
turnQ1On(false),
m_decompose_voltage_input_a(),
m_decompose_voltage_input_b(),
m_decompose_voltage_input_c(),
//
m_decompose_voltage_load_a(),
m_decompose_voltage_load_b(),
m_decompose_voltage_load_c(),
//
m_decompose_current_load_a(),
m_decompose_current_load_b(),
m_decompose_current_load_c(),
//
m_decompose_current_cell_a(),
m_decompose_current_cell_b(),
m_decompose_current_cell_c(),
//
m_decompose_current_bypass_a(),
m_decompose_current_bypass_b(),
m_decompose_current_bypass_c(),
//
m_rms_filter_current_input_a(),
m_rms_filter_current_input_b(),
m_rms_filter_current_input_c(),
//
m_rms_filter_current_cell_a(),
m_rms_filter_current_cell_b(),
m_rms_filter_current_cell_c(),
//
m_rms_filter_current_load_a(),
m_rms_filter_current_load_b(),
m_rms_filter_current_load_c(),
//
m_rms_filter_voltage_input_a(),
m_rms_filter_voltage_input_b(),
m_rms_filter_voltage_input_c(),
//
m_rms_filter_voltage_load_a(),
m_rms_filter_voltage_load_b(),
m_rms_filter_voltage_load_c(),
//
m_rms_filter_current_bypass_a(),
m_rms_filter_current_bypass_b(),
m_rms_filter_current_bypass_c(),
//
m_zero_filter_voltage_input_a(),
m_zero_filter_voltage_input_b(),
m_zero_filter_voltage_input_c(),
//
m_zero_filter_current_input_a(),
m_zero_filter_current_input_b(),
m_zero_filter_current_input_c(),
//
m_zero_filter_current_cell_a(),
m_zero_filter_current_cell_b(),
m_zero_filter_current_cell_c(),
//
m_zero_filter_voltage_load_a(),
m_zero_filter_voltage_load_b(),
m_zero_filter_voltage_load_c(),
//
m_zero_filter_current_load_a(),
m_zero_filter_current_load_b(),
m_zero_filter_current_load_c(),
//
m_zero_filter_current_bypass_a(),
m_zero_filter_current_bypass_b(),
m_zero_filter_current_bypass_c(),
//
m_cell_dc_voltage_a_filter(),
m_cell_dc_voltage_b_filter(),
m_cell_dc_voltage_c_filter(),
//
m_relative_filter_voltage_input_a(),
m_relative_filter_voltage_input_b(),
m_relative_filter_voltage_input_c(),
//
m_pll_abc_input_voltage(),
//
//Harmonica Analyzer
m_voltage_input_a_harmonica_filter_5(),
m_voltage_input_b_harmonica_filter_5(),
m_voltage_input_c_harmonica_filter_5(),
//
//Phase Alert monitor
m_phase_alert_monitor(),
//
m_enable_work_trigger(),
m_system_fault_trigger(),
//
m_q1_control_trigger(),
m_km1_control_trigger(),
m_km2_control_trigger(),
m_km3_control_trigger(),
m_km11_control_on_off_trigger(),
m_km11t_control_on_trigger(),
m_km11t_control_off_trigger(),
m_km1_external_command_trigger(),
m_km3_external_command_trigger(),
m_q1_external_command_trigger(),
m_vs_protection_control_trigger(),
//
m_q1_control_fault(),
m_km1_control_fault(),
m_km2_control_fault(),
m_km3_control_fault(),
//
m_system_setup(),
m_system_configuration(),
m_environment(),
m_algorithm(m_environment),
m_fram_db(),
//
m_test_read_word(),
m_test_write_word(),
m_modbus_break_counter(0),
m_rubus(NUMBER_RUBUSCELLS),
hardware_analog_current_fault(),
//
_slow_loop_execute(&SYSCTRL::SystemControl::_slow_loop_undef),
_execute_additional(&SYSCTRL::SystemControl::_additional_undef),
_execute(&SYSCTRL::SystemControl::_execute_ubdef)
//
{}//CONSTRUCTOR
void SystemControl::setup()
{
static bool _status = true;
if(m_mode == SYSCTRL::SystemControl::UNDEFINED)
{
m_environment.time_sample_control = m_system_setup.time_sample_control;
m_environment.time_prescale_slow = m_system_setup.time_prescale_slow;
m_environment.time_prescale_additional = m_system_setup.time_prescale_additional;
m_environment.counter_slow = m_system_setup.time_prescale_slow;
m_environment.counter_additional = m_system_setup.time_prescale_additional;
m_environment.time_sample_slow = ((float)m_environment.time_prescale_slow)*m_environment.time_sample_control;
m_environment.time_sample_additional = ((float)m_environment.time_prescale_additional)*m_environment.time_sample_control;
_status &= m_environment.time_sample_control != FP_ZERO ? true : false;
_status &= m_environment.time_sample_slow >= m_environment.time_sample_control ? true : false;
_status &= m_environment.time_sample_additional >= m_environment.time_sample_control ? true : false;
m_environment.digital_output_inverse.all = 0xffffffff;
m_environment.digital_output.all = 0xffffffff;
//
// Algorithm
//
m_algorithm.setup();
_status &= m_algorithm.compare(SYSCTRL::AlgorithmContext::CONFIGURATE);
//<>
//
// DIGITAL INPUTS
//
m_environment.remote_start.setup(m_environment.time_sample_slow); //3001
m_environment.remote_stop.setup(m_environment.time_sample_slow); //3002
m_environment.remote_reset.setup(m_environment.time_sample_slow); //3003
m_environment.remote_e_stop.setup(m_environment.time_sample_slow); //3004
m_environment.auxiliary_q1.setup(m_environment.time_sample_slow); //3005
m_environment.bypass_ready.setup(m_environment.time_sample_slow); //3006
m_environment.transformer_inv_over_temperature_alarm.setup(m_environment.time_sample_slow); //3007
m_environment.local_e_stop.setup(m_environment.time_sample_slow); //3008
m_environment.cabinet_door_interlocked.setup(m_environment.time_sample_slow); //3009
m_environment.arc_and_fire.setup(m_environment.time_sample_slow); //3010
m_environment.hw_dvr_ready.setup(m_environment.time_sample_slow); //3011
m_environment.auxiliary_km2.setup(m_environment.time_sample_slow); //3012
m_environment.auxiliary_km11.setup(m_environment.time_sample_slow); //3013
m_environment.transformer_t_over_temperature_fault.setup(m_environment.time_sample_slow); //3014
m_environment.control_power_supply_status.setup(m_environment.time_sample_slow); //3015
m_environment.auxiliary_km1.setup(m_environment.time_sample_slow); //3016
m_environment.auxiliary_km3.setup(m_environment.time_sample_slow); //3017
m_environment.transformer_inv_over_temperature_fault.setup(m_environment.time_sample_slow); //3018
m_environment.fan_fault.setup(m_environment.time_sample_slow); //3019
m_environment.local_remote.setup(m_environment.time_sample_slow); //3020
_status &= m_environment.remote_start.compare(FLTSYSLIB::DigitalInputAntiNoise::CONFIGURATE); //3001
_status &= m_environment.remote_stop.compare(FLTSYSLIB::DigitalInputAntiNoise::CONFIGURATE); //3002
_status &= m_environment.remote_reset.compare(FLTSYSLIB::DigitalInputAntiNoise::CONFIGURATE); //3003
_status &= m_environment.remote_e_stop.compare(FLTSYSLIB::DigitalInputAntiNoise::CONFIGURATE); //3004
_status &= m_environment.auxiliary_q1.compare(FLTSYSLIB::DigitalInputAntiNoise::CONFIGURATE); //3005
_status &= m_environment.bypass_ready.compare(FLTSYSLIB::DigitalInputAntiNoise::CONFIGURATE); //3006
_status &= m_environment.transformer_inv_over_temperature_alarm.compare(FLTSYSLIB::DigitalInputAntiNoise::CONFIGURATE); //3007
_status &= m_environment.local_e_stop.compare(FLTSYSLIB::DigitalInputAntiNoise::CONFIGURATE); //3008
_status &= m_environment.cabinet_door_interlocked.compare(FLTSYSLIB::DigitalInputAntiNoise::CONFIGURATE); //3009
_status &= m_environment.arc_and_fire.compare(FLTSYSLIB::DigitalInputAntiNoise::CONFIGURATE);//3010
_status &= m_environment.hw_dvr_ready.compare(FLTSYSLIB::DigitalInputAntiNoise::CONFIGURATE);//3011
_status &= m_environment.auxiliary_km2.compare(FLTSYSLIB::DigitalInputAntiNoise::CONFIGURATE);//3012
_status &= m_environment.auxiliary_km11.compare(FLTSYSLIB::DigitalInputAntiNoise::CONFIGURATE);//3013
_status &= m_environment.transformer_t_over_temperature_fault.compare(FLTSYSLIB::DigitalInputAntiNoise::CONFIGURATE);//3014
_status &= m_environment.control_power_supply_status.compare(FLTSYSLIB::DigitalInputAntiNoise::CONFIGURATE);//3015
_status &= m_environment.auxiliary_km1.compare(FLTSYSLIB::DigitalInputAntiNoise::CONFIGURATE); //3016
_status &= m_environment.auxiliary_km3.compare(FLTSYSLIB::DigitalInputAntiNoise::CONFIGURATE); //3017
_status &= m_environment.transformer_inv_over_temperature_fault.compare(FLTSYSLIB::DigitalInputAntiNoise::CONFIGURATE); //3018
_status &= m_environment.fan_fault.compare(FLTSYSLIB::DigitalInputAntiNoise::CONFIGURATE); //3019
_status &= m_environment.local_remote.compare(FLTSYSLIB::DigitalInputAntiNoise::CONFIGURATE); //3020
//<>
//
// Phase Alarm Monitor
//
m_phase_alert_monitor.setup(m_environment.time_sample_slow);
//<>
//
// FAN CONTROL
//
m_environment.fan_control.setup(m_environment.time_sample_slow);
_status &= m_environment.fan_control.compare(SYSCTRL::FanTimerControl::CONFIGURATE);
//<>
//
// RMS Filters
//
m_rms_filter_current_input_a.setup(m_environment.time_sample_additional);
m_rms_filter_current_input_b.setup(m_environment.time_sample_additional);
m_rms_filter_current_input_c.setup(m_environment.time_sample_additional);
_status &= m_rms_filter_current_input_a.compare(FLTSYSLIB::RMS::CONFIGURATE);
_status &= m_rms_filter_current_input_b.compare(FLTSYSLIB::RMS::CONFIGURATE);
_status &= m_rms_filter_current_input_c.compare(FLTSYSLIB::RMS::CONFIGURATE);
//
m_rms_filter_current_cell_a.setup(m_environment.time_sample_additional);
m_rms_filter_current_cell_b.setup(m_environment.time_sample_additional);
m_rms_filter_current_cell_c.setup(m_environment.time_sample_additional);
_status &= m_rms_filter_current_cell_a.compare(FLTSYSLIB::RMS::CONFIGURATE);
_status &= m_rms_filter_current_cell_b.compare(FLTSYSLIB::RMS::CONFIGURATE);
_status &= m_rms_filter_current_cell_c.compare(FLTSYSLIB::RMS::CONFIGURATE);
//
m_rms_filter_current_load_a.setup(m_environment.time_sample_additional);
m_rms_filter_current_load_b.setup(m_environment.time_sample_additional);
m_rms_filter_current_load_c.setup(m_environment.time_sample_additional);
_status &= m_rms_filter_current_load_a.compare(FLTSYSLIB::RMS::CONFIGURATE);
_status &= m_rms_filter_current_load_b.compare(FLTSYSLIB::RMS::CONFIGURATE);
_status &= m_rms_filter_current_load_c.compare(FLTSYSLIB::RMS::CONFIGURATE);
//
m_rms_filter_voltage_input_a.setup(m_environment.time_sample_additional);
m_rms_filter_voltage_input_b.setup(m_environment.time_sample_additional);
m_rms_filter_voltage_input_c.setup(m_environment.time_sample_additional);
_status &= m_rms_filter_voltage_input_a.compare(FLTSYSLIB::RMS::CONFIGURATE);
_status &= m_rms_filter_voltage_input_b.compare(FLTSYSLIB::RMS::CONFIGURATE);
_status &= m_rms_filter_voltage_input_c.compare(FLTSYSLIB::RMS::CONFIGURATE);
//
m_rms_filter_voltage_load_a.setup(m_environment.time_sample_additional);
m_rms_filter_voltage_load_b.setup(m_environment.time_sample_additional);
m_rms_filter_voltage_load_c.setup(m_environment.time_sample_additional);
_status &= m_rms_filter_voltage_load_a.compare(FLTSYSLIB::RMS::CONFIGURATE);
_status &= m_rms_filter_voltage_load_b.compare(FLTSYSLIB::RMS::CONFIGURATE);
_status &= m_rms_filter_voltage_load_c.compare(FLTSYSLIB::RMS::CONFIGURATE);
//
m_rms_filter_current_bypass_a.setup(m_environment.time_sample_additional);
m_rms_filter_current_bypass_b.setup(m_environment.time_sample_additional);
m_rms_filter_current_bypass_c.setup(m_environment.time_sample_additional);
_status &= m_rms_filter_current_bypass_a.compare(FLTSYSLIB::RMS::CONFIGURATE);
_status &= m_rms_filter_current_bypass_b.compare(FLTSYSLIB::RMS::CONFIGURATE);
_status &= m_rms_filter_current_bypass_c.compare(FLTSYSLIB::RMS::CONFIGURATE);
//<>
//
// Zero Drift Analog Signals
//
m_zero_filter_voltage_input_a.setup(m_environment.time_sample_slow);
m_zero_filter_voltage_input_b.setup(m_environment.time_sample_slow);
m_zero_filter_voltage_input_c.setup(m_environment.time_sample_slow);
_status &= m_zero_filter_voltage_input_a.compare(FLTSYSLIB::FilterForth::CONFIGURATE);
_status &= m_zero_filter_voltage_input_b.compare(FLTSYSLIB::FilterForth::CONFIGURATE);
_status &= m_zero_filter_voltage_input_c.compare(FLTSYSLIB::FilterForth::CONFIGURATE);
//
m_zero_filter_current_input_a.setup(m_environment.time_sample_slow);
m_zero_filter_current_input_b.setup(m_environment.time_sample_slow);
m_zero_filter_current_input_c.setup(m_environment.time_sample_slow);
_status &= m_zero_filter_current_input_a.compare(FLTSYSLIB::FilterForth::CONFIGURATE);
_status &= m_zero_filter_current_input_b.compare(FLTSYSLIB::FilterForth::CONFIGURATE);
_status &= m_zero_filter_current_input_c.compare(FLTSYSLIB::FilterForth::CONFIGURATE);
//
m_zero_filter_current_cell_a.setup(m_environment.time_sample_slow);
m_zero_filter_current_cell_b.setup(m_environment.time_sample_slow);
m_zero_filter_current_cell_c.setup(m_environment.time_sample_slow);
_status &= m_zero_filter_current_cell_a.compare(FLTSYSLIB::FilterForth::CONFIGURATE);
_status &= m_zero_filter_current_cell_b.compare(FLTSYSLIB::FilterForth::CONFIGURATE);
_status &= m_zero_filter_current_cell_c.compare(FLTSYSLIB::FilterForth::CONFIGURATE);
//
m_zero_filter_voltage_load_a.setup(m_environment.time_sample_slow);
m_zero_filter_voltage_load_b.setup(m_environment.time_sample_slow);
m_zero_filter_voltage_load_c.setup(m_environment.time_sample_slow);
_status &= m_zero_filter_voltage_load_a.compare(FLTSYSLIB::FilterForth::CONFIGURATE);
_status &= m_zero_filter_voltage_load_b.compare(FLTSYSLIB::FilterForth::CONFIGURATE);
_status &= m_zero_filter_voltage_load_c.compare(FLTSYSLIB::FilterForth::CONFIGURATE);
//
m_zero_filter_current_load_a.setup(m_environment.time_sample_slow);
m_zero_filter_current_load_b.setup(m_environment.time_sample_slow);
m_zero_filter_current_load_c.setup(m_environment.time_sample_slow);
_status &= m_zero_filter_current_load_a.compare(FLTSYSLIB::FilterForth::CONFIGURATE);
_status &= m_zero_filter_current_load_b.compare(FLTSYSLIB::FilterForth::CONFIGURATE);
_status &= m_zero_filter_current_load_c.compare(FLTSYSLIB::FilterForth::CONFIGURATE);
//
m_zero_filter_current_bypass_a.setup(m_environment.time_sample_slow);
m_zero_filter_current_bypass_b.setup(m_environment.time_sample_slow);
m_zero_filter_current_bypass_c.setup(m_environment.time_sample_slow);
_status &= m_zero_filter_current_bypass_a.compare(FLTSYSLIB::FilterForth::CONFIGURATE);
_status &= m_zero_filter_current_bypass_b.compare(FLTSYSLIB::FilterForth::CONFIGURATE);
_status &= m_zero_filter_current_bypass_c.compare(FLTSYSLIB::FilterForth::CONFIGURATE);
//<>
//
//Cell DC Voltage Filter
//
m_cell_dc_voltage_a_filter.setup(m_environment.time_sample_control);
m_cell_dc_voltage_b_filter.setup(m_environment.time_sample_control);
m_cell_dc_voltage_c_filter.setup(m_environment.time_sample_control);
_status &= m_cell_dc_voltage_a_filter.compare(FLTSYSLIB::FilterForth::CONFIGURATE);
_status &= m_cell_dc_voltage_b_filter.compare(FLTSYSLIB::FilterForth::CONFIGURATE);
_status &= m_cell_dc_voltage_c_filter.compare(FLTSYSLIB::FilterForth::CONFIGURATE);
//<>
//
// Signal Decompose
//
#if ( (TYPECONTROL == VECTORCONTROL) || (TYPECONTROL == DIRECTREVERSECONTROL) )
//
m_decompose_voltage_input_a.setup(m_environment.time_sample_slow);
m_decompose_voltage_input_b.setup(m_environment.time_sample_slow);
m_decompose_voltage_input_c.setup(m_environment.time_sample_slow);
//
m_decompose_voltage_load_a.setup(m_environment.time_sample_slow);
m_decompose_voltage_load_b.setup(m_environment.time_sample_slow);
m_decompose_voltage_load_c.setup(m_environment.time_sample_slow);
//
m_decompose_current_load_a.setup(m_environment.time_sample_slow);
m_decompose_current_load_b.setup(m_environment.time_sample_slow);
m_decompose_current_load_c.setup(m_environment.time_sample_slow);
//
m_decompose_current_cell_a.setup(m_environment.time_sample_slow);
m_decompose_current_cell_b.setup(m_environment.time_sample_slow);
m_decompose_current_cell_c.setup(m_environment.time_sample_slow);
//
m_decompose_current_bypass_a.setup(m_environment.time_sample_slow);
m_decompose_current_bypass_b.setup(m_environment.time_sample_slow);
m_decompose_current_bypass_c.setup(m_environment.time_sample_slow);
//
#endif
#if TYPECONTROL == SCALARCONTROL
m_decompose_voltage_input_a.setup(m_environment.time_sample_control);
m_decompose_voltage_input_b.setup(m_environment.time_sample_control);
m_decompose_voltage_input_c.setup(m_environment.time_sample_control);
//
m_decompose_voltage_load_a.setup(m_environment.time_sample_control);
m_decompose_voltage_load_b.setup(m_environment.time_sample_control);
m_decompose_voltage_load_c.setup(m_environment.time_sample_control);
//
m_decompose_current_load_a.setup(m_environment.time_sample_control);
m_decompose_current_load_b.setup(m_environment.time_sample_control);
m_decompose_current_load_c.setup(m_environment.time_sample_control);
//
m_decompose_current_cell_a.setup(m_environment.time_sample_control);
m_decompose_current_cell_b.setup(m_environment.time_sample_control);
m_decompose_current_cell_c.setup(m_environment.time_sample_control);
//
m_decompose_current_bypass_a.setup(m_environment.time_sample_control);
m_decompose_current_bypass_b.setup(m_environment.time_sample_control);
m_decompose_current_bypass_c.setup(m_environment.time_sample_control);
#endif
//<>
//
// Relative Voltage Input
//
m_relative_filter_voltage_input_a.setup(m_system_setup.relative_voltage_input);
m_relative_filter_voltage_input_b.setup(m_system_setup.relative_voltage_input);
m_relative_filter_voltage_input_c.setup(m_system_setup.relative_voltage_input);
_status &= m_relative_filter_voltage_input_a.compare(SYSCTRL::SignalRelative::CONFIGURATE);
_status &= m_relative_filter_voltage_input_b.compare(SYSCTRL::SignalRelative::CONFIGURATE);
_status &= m_relative_filter_voltage_input_c.compare(SYSCTRL::SignalRelative::CONFIGURATE);
//<>
//
// PLL Input Voltage
//
m_pll_abc_input_voltage.setup(m_environment.time_sample_control);
_status &= m_pll_abc_input_voltage.compare(FLTSYSLIB::PLLABCDVR::CONFIGURATE);
//<>
//
// Generator ABC
//
m_environment.generator_abc.setup(m_environment.time_sample_control);
//_status &= m_environment.generator_abc.compare(FLTSYSLIB::GeneratorABC::CONFIGURATE);
//<>
//
// Reference PWM-Generator
//
//m_environment.generator_pwm.setup(m_environment.time_sample_control);
//<>
//
// Harmonica Analyzer
//
m_voltage_input_a_harmonica_filter_5.setup(m_environment.time_sample_control);
m_voltage_input_b_harmonica_filter_5.setup(m_environment.time_sample_control);
m_voltage_input_c_harmonica_filter_5.setup(m_environment.time_sample_control);
_status &= m_voltage_input_a_harmonica_filter_5.compare(FLTSYSLIB::HarmonicaFilter4Order::CONFIGURATE);
_status &= m_voltage_input_b_harmonica_filter_5.compare(FLTSYSLIB::HarmonicaFilter4Order::CONFIGURATE);
_status &= m_voltage_input_c_harmonica_filter_5.compare(FLTSYSLIB::HarmonicaFilter4Order::CONFIGURATE);
//<>
//
// Regulators
//
#if TYPECONTROL == VECTORCONTROL
m_environment.regulator_voltage_load_direct.setup(m_environment.time_sample_control);
m_environment.regulator_voltage_load_quadrature.setup(m_environment.time_sample_control);
_status &= m_environment.regulator_voltage_load_direct.compare(FLTSYSLIB::PIController::CONFIGURATE);
_status &= m_environment.regulator_voltage_load_quadrature.compare(FLTSYSLIB::PIController::CONFIGURATE);
//
m_environment.integrator_direct.setup(m_environment.time_sample_control);
m_environment.integrator_quadrature.setup(m_environment.time_sample_control);
_status &= m_environment.integrator_direct.compare(FLTSYSLIB::Integrator::CONFIGURATE);
_status &= m_environment.integrator_quadrature.compare(FLTSYSLIB::Integrator::CONFIGURATE);
//
m_environment.reference_voltage_direct_intensity.setup(m_environment.time_sample_control);
_status &= m_environment.reference_voltage_direct_intensity.compare(FLTSYSLIB::Filter::CONFIGURATE);
//
#if TYPECURRENTCONTROLLER == CURRENTCONTROLLER_PI
m_environment.regulator_current_load_direct.setup(m_environment.time_sample_control);
m_environment.regulator_current_load_quadrature.setup(m_environment.time_sample_control);
_status &= m_environment.regulator_current_load_direct.compare(FLTSYSLIB::PIController::CONFIGURATE);
_status &= m_environment.regulator_current_load_quadrature.compare(FLTSYSLIB::PIController::CONFIGURATE);
#endif
//
m_environment.referencer_current_bypass_direct.setup(m_environment.time_sample_control);
m_environment.referencer_current_bypass_quadrature.setup(m_environment.time_sample_control);
_status &= m_environment.referencer_current_bypass_direct.compare(FLTSYSLIB::IController::CONFIGURATE);
_status &= m_environment.referencer_current_bypass_quadrature.compare(FLTSYSLIB::IController::CONFIGURATE);
//
m_environment.regulator_current_limit.setup(m_environment.time_sample_control);
m_environment.regulator_current_pfc.setup(m_environment.time_sample_control);
_status &= m_environment.regulator_current_limit.compare(FLTSYSLIB::IController::CONFIGURATE);
_status &= m_environment.regulator_current_pfc.compare(FLTSYSLIB::PIController::CONFIGURATE);
#endif
#if TYPECONTROL == SCALARCONTROL
#if SCALARCONTROL_VOLTAGEREGULATOR == SCALARCONTROL_VOLTAGEREGULATOR_ABC
m_environment.regulator_voltage_load_a_active.setup(m_environment.time_sample_control);
m_environment.regulator_voltage_load_a_reactive.setup(m_environment.time_sample_control);
_status &= m_environment.regulator_voltage_load_a_active.compare(FLTSYSLIB::PIController::CONFIGURATE);
_status &= m_environment.regulator_voltage_load_a_reactive.compare(FLTSYSLIB::PIController::CONFIGURATE);
//
m_environment.regulator_voltage_load_b_active.setup(m_environment.time_sample_control);
m_environment.regulator_voltage_load_b_reactive.setup(m_environment.time_sample_control);
_status &= m_environment.regulator_voltage_load_b_active.compare(FLTSYSLIB::PIController::CONFIGURATE);
_status &= m_environment.regulator_voltage_load_b_reactive.compare(FLTSYSLIB::PIController::CONFIGURATE);
//
m_environment.regulator_voltage_load_c_active.setup(m_environment.time_sample_control);
m_environment.regulator_voltage_load_c_reactive.setup(m_environment.time_sample_control);
_status &= m_environment.regulator_voltage_load_c_active.compare(FLTSYSLIB::PIController::CONFIGURATE);
_status &= m_environment.regulator_voltage_load_c_reactive.compare(FLTSYSLIB::PIController::CONFIGURATE);
#endif
#if SCALARCONTROL_VOLTAGEREGULATOR == SCALARCONTROL_VOLTAGEREGULATOR_RMS
m_environment.reference_voltage_load_rms_intensity.setup(m_environment.time_sample_control);
m_environment.regulator_voltage_load_rms.setup(m_environment.time_sample_control);
_status &= m_environment.reference_voltage_load_rms_intensity.compare(FLTSYSLIB::Filter::CONFIGURATE);
_status &= m_environment.regulator_voltage_load_rms.compare(FLTSYSLIB::IController::CONFIGURATE);
#endif
//
m_environment.regulator_current_limit_a.setup(m_environment.time_sample_control);
m_environment.regulator_current_pfc_a.setup(m_environment.time_sample_control);
_status &= m_environment.regulator_current_limit_a.compare(FLTSYSLIB::PIController::CONFIGURATE);
_status &= m_environment.regulator_current_pfc_a.compare(FLTSYSLIB::PIController::CONFIGURATE);
//
m_environment.regulator_current_limit_b.setup(m_environment.time_sample_control);
m_environment.regulator_current_pfc_b.setup(m_environment.time_sample_control);
_status &= m_environment.regulator_current_limit_b.compare(FLTSYSLIB::PIController::CONFIGURATE);
_status &= m_environment.regulator_current_pfc_b.compare(FLTSYSLIB::PIController::CONFIGURATE);
//
m_environment.regulator_current_limit_c.setup(m_environment.time_sample_control);
m_environment.regulator_current_pfc_c.setup(m_environment.time_sample_control);
_status &= m_environment.regulator_current_limit_c.compare(FLTSYSLIB::PIController::CONFIGURATE);
_status &= m_environment.regulator_current_pfc_c.compare(FLTSYSLIB::PIController::CONFIGURATE);
//
m_environment.current_regulator_a_active.setup(m_environment.time_sample_control);
m_environment.current_regulator_a_reactive.setup(m_environment.time_sample_control);
_status &= m_environment.current_regulator_a_active.compare(FLTSYSLIB::PIController::CONFIGURATE);
_status &= m_environment.current_regulator_a_reactive.compare(FLTSYSLIB::PIController::CONFIGURATE);
//
m_environment.current_regulator_b_active.setup(m_environment.time_sample_control);
m_environment.current_regulator_b_reactive.setup(m_environment.time_sample_control);
_status &= m_environment.current_regulator_b_active.compare(FLTSYSLIB::PIController::CONFIGURATE);
_status &= m_environment.current_regulator_b_reactive.compare(FLTSYSLIB::PIController::CONFIGURATE);
//
m_environment.current_regulator_c_active.setup(m_environment.time_sample_control);
m_environment.current_regulator_c_reactive.setup(m_environment.time_sample_control);
_status &= m_environment.current_regulator_c_active.compare(FLTSYSLIB::PIController::CONFIGURATE);
_status &= m_environment.current_regulator_c_reactive.compare(FLTSYSLIB::PIController::CONFIGURATE);
//
m_environment.current_referencer_a_active.setup(m_environment.time_sample_control);
m_environment.current_referencer_a_reactive.setup(m_environment.time_sample_control);
_status &= m_environment.current_referencer_a_active.compare(FLTSYSLIB::PIController::CONFIGURATE);
_status &= m_environment.current_referencer_a_reactive.compare(FLTSYSLIB::PIController::CONFIGURATE);
//
m_environment.current_referencer_b_active.setup(m_environment.time_sample_control);
m_environment.current_referencer_b_reactive.setup(m_environment.time_sample_control);
_status &= m_environment.current_referencer_b_active.compare(FLTSYSLIB::PIController::CONFIGURATE);
_status &= m_environment.current_referencer_b_reactive.compare(FLTSYSLIB::PIController::CONFIGURATE);
//
m_environment.current_referencer_c_active.setup(m_environment.time_sample_control);
m_environment.current_referencer_c_reactive.setup(m_environment.time_sample_control);
_status &= m_environment.current_referencer_c_active.compare(FLTSYSLIB::PIController::CONFIGURATE);
_status &= m_environment.current_referencer_c_reactive.compare(FLTSYSLIB::PIController::CONFIGURATE);
//
//m_environment.regulator_dc_a.setup(m_environment.time_sample_control);
//m_environment.regulator_dc_b.setup(m_environment.time_sample_control);
//m_environment.regulator_dc_c.setup(m_environment.time_sample_control);
//_status &= m_environment.regulator_dc_a.compare(FLTSYSLIB::PIController::CONFIGURATE);
//_status &= m_environment.regulator_dc_b.compare(FLTSYSLIB::PIController::CONFIGURATE);
//_status &= m_environment.regulator_dc_c.compare(FLTSYSLIB::PIController::CONFIGURATE);
#endif
//
//<>
#if TYPECONTROL == DIRECTREVERSECONTROL
//
m_environment.drc_positive_voltage_controller_direct.setup(m_environment.time_sample_control);
m_environment.drc_positive_voltage_controller_quadrature.setup(m_environment.time_sample_control);
m_environment.drc_negative_voltage_controller_direct.setup(m_environment.time_sample_control);
m_environment.drc_negative_voltage_controller_quadrature.setup(m_environment.time_sample_control);
_status &= m_environment.drc_positive_voltage_controller_direct.compare(FLTSYSLIB::PIController::CONFIGURATE);
_status &= m_environment.drc_positive_voltage_controller_quadrature.compare(FLTSYSLIB::PIController::CONFIGURATE);
_status &= m_environment.drc_negative_voltage_controller_direct.compare(FLTSYSLIB::PIController::CONFIGURATE);
_status &= m_environment.drc_negative_voltage_controller_quadrature.compare(FLTSYSLIB::PIController::CONFIGURATE);
//
m_environment.drc_reference_voltage_direct_intensity.setup(m_environment.time_sample_control);
_status &= m_environment.drc_reference_voltage_direct_intensity.compare(FLTSYSLIB::FilterSecond::CONFIGURATE);
//
m_environment.drc_regulator_current_load_direct.setup(m_environment.time_sample_control);
m_environment.drc_regulator_current_load_quadrature.setup(m_environment.time_sample_control);
_status &= m_environment.drc_regulator_current_load_direct.compare(FLTSYSLIB::PIController::CONFIGURATE);
_status &= m_environment.drc_regulator_current_load_quadrature.compare(FLTSYSLIB::PIController::CONFIGURATE);
//
m_environment.drc_referencer_current_bypass_direct.setup(m_environment.time_sample_control);
m_environment.drc_referencer_current_bypass_quadrature.setup(m_environment.time_sample_control);
_status &= m_environment.drc_referencer_current_bypass_direct.compare(FLTSYSLIB::IController::CONFIGURATE);
_status &= m_environment.drc_referencer_current_bypass_quadrature.compare(FLTSYSLIB::IController::CONFIGURATE);
//
m_environment.drc_regulator_current_limit.setup(m_environment.time_sample_control);
m_environment.drc_regulator_current_pfc.setup(m_environment.time_sample_control);
_status &= m_environment.drc_regulator_current_limit.compare(FLTSYSLIB::IController::CONFIGURATE);
_status &= m_environment.drc_regulator_current_pfc.compare(FLTSYSLIB::PIController::CONFIGURATE);
//
m_environment.drc_direct_voltage_decomposer.setup(m_environment.time_sample_control);
m_environment.drc_back_voltage_decomposer.setup(m_environment.time_sample_control);
//
#endif
//<>
//
// Timers
//
m_environment.timer_start.setup(m_environment.time_sample_control);
m_environment.timer_stop.setup(m_environment.time_sample_control);
_status &= m_environment.timer_start.compare(FLTSYSLIB::FTimer::CONFIGURATE);
_status &= m_environment.timer_stop.compare(FLTSYSLIB::FTimer::CONFIGURATE);
//<>
//
// Contactor Control Fault
//
m_q1_control_fault.setup(m_environment.time_sample_slow);
m_km1_control_fault.setup(m_environment.time_sample_slow);
m_km2_control_fault.setup(m_environment.time_sample_slow);
m_km3_control_fault.setup(m_environment.time_sample_slow);
if(_status)
{
m_mode = SYSCTRL::SystemControl::CONFIGURATE;
// m_environment.state_register.current.bit.stopped = 1;
// m_environment.state_register.privious.bit.stopped = 1;
// m_environment.state_register.shadow.bit.stopped = 1;
m_algorithm_executed = m_algorithm.get_algorithm();
//
}//if
//
}//if
//
}//setup()
//
void SystemControl::configure()
{
static bool _status = true;
//if(m_mode == SYSCTRL::SystemControl::CONFIGURATE)
{
//
// References
//
#if TYPECONTROL == VECTORCONTROL
//
m_environment.current_reference_limit = m_system_configuration.reference_current_limit_rms;
m_environment.current_reference_pfc = m_system_configuration.reference_current_pfc_rms;
//
m_environment.voltage_reference_load_direct = m_system_configuration.reference_voltage_rms;
m_environment.voltage_reference_limit_high = m_system_configuration.reference_voltage_high_limit_rms;
m_environment.voltage_reference_load_quadrature = FP_ZERO;
m_environment.voltage_reference_dc_cell = m_system_configuration.reference_voltage_dc;
//
_status &= (m_environment.current_reference_limit > FP_ZERO) ? true : false;
_status &= (m_environment.voltage_reference_load_direct > FP_ZERO) ? true : false;
_status &= (m_environment.voltage_reference_dc_cell > FP_ZERO) ? true : false;
//
#endif
#if TYPECONTROL == SCALARCONTROL
m_environment.phase_control.common_ref.current_limit_rms = m_system_configuration.reference_current_limit_rms;
m_environment.phase_control.common_ref.current_limit_ampl = 1.41421 * m_environment.phase_control.common_ref.current_limit_rms;
_status &= (m_environment.phase_control.common_ref.current_limit_rms > FP_ZERO) ? true : false;
//
m_environment.phase_control.common_ref.current_pfc_rms = m_system_configuration.reference_current_pfc_rms;
m_environment.phase_control.common_ref.current_pfc_ampl = 1.41421 * m_environment.phase_control.common_ref.current_pfc_rms;
//
m_environment.phase_control.common_ref.voltage_module_rms = m_system_configuration.reference_voltage_rms;
m_environment.phase_control.common_ref.voltage_module_ampl = 1.41421 * m_environment.phase_control.common_ref.voltage_module_rms;
_status &= (m_environment.phase_control.common_ref.voltage_module_rms > FP_ZERO) ? true : false;
//
m_environment.phase_control.common_ref.voltage_dc = 5.0 * 950.0;
#endif
//<>
//
// Algorithm Control
//
m_environment.algorithm_control.all = m_system_configuration.algorithm_control.all;
// preset control bits
SYSCTRL::MonitorDigitalInputSignal::preset(m_environment.algorithm_control.signal.enable_current_limit, m_environment.enable_current_limit);
SYSCTRL::MonitorDigitalInputSignal::preset(m_environment.algorithm_control.signal.enable_pfc, m_environment.enable_pfc);
SYSCTRL::MonitorDigitalInputSignal::preset(m_environment.algorithm_control.signal.enable_harmonica, m_environment.enable_harmonica);
SYSCTRL::MonitorDigitalInputSignal::preset(m_environment.algorithm_control.signal.enable_auto_offset, m_environment.enable_auto_offset);
#if TYPECONTROL == SCALARCONTROL
m_environment.phase_control.common_control_bit.signal.enable_current_limit = m_environment.enable_current_limit.signal.is_on;
m_environment.phase_control.common_control_bit.signal.enable_pfc = m_environment.enable_pfc.signal.is_on;
m_environment.phase_control.common_control_bit.signal.enable_harmonica = m_environment.enable_harmonica.signal.is_on;
#endif
//<>
//
// High Voltage Cell
//
m_environment.hardware.configure(m_system_configuration.hardware);
_status &= (m_environment.hardware.level >= 1) && (m_environment.hardware.level <= 8) ? true : false;
// m_environment.m_minimal_input_voltage_level = m_system_configuration.minimal_input_voltage_level;
// _status &= m_environment.m_minimal_input_voltage_level > FP_ZERO ? true : false;
//
// Scale Analog Signals Setup
//
m_environment.scale_voltage_grid_a = m_system_configuration.scale_voltage_input_a;
m_environment.scale_voltage_grid_b = m_system_configuration.scale_voltage_input_b;
m_environment.scale_voltage_grid_c = m_system_configuration.scale_voltage_input_c;
_status &= m_environment.scale_voltage_grid_a > FP_ZERO ? true : false;
_status &= m_environment.scale_voltage_grid_b > FP_ZERO ? true : false;
_status &= m_environment.scale_voltage_grid_c > FP_ZERO ? true : false;
//
m_environment.scale_current_input_a = m_system_configuration.scale_current_input_a;
m_environment.scale_current_input_b = m_system_configuration.scale_current_input_b;
m_environment.scale_current_input_c = m_system_configuration.scale_current_input_c;
_status &= m_environment.scale_current_input_a > FP_ZERO ? true : false;
_status &= m_environment.scale_current_input_b > FP_ZERO ? true : false;
_status &= m_environment.scale_current_input_c > FP_ZERO ? true : false;
//
m_environment.scale_voltage_load_a = m_system_configuration.scale_voltage_load_a;
m_environment.scale_voltage_load_b = m_system_configuration.scale_voltage_load_b;
m_environment.scale_voltage_load_c = m_system_configuration.scale_voltage_load_c;
_status &= m_environment.scale_voltage_load_a > FP_ZERO ? true : false;
_status &= m_environment.scale_voltage_load_b > FP_ZERO ? true : false;
_status &= m_environment.scale_voltage_load_c > FP_ZERO ? true : false;
//
m_environment.scale_current_load_a = m_system_configuration.scale_current_load_a;
m_environment.scale_current_load_b = m_system_configuration.scale_current_load_b;
m_environment.scale_current_load_c = m_system_configuration.scale_current_load_c;
_status &= m_environment.scale_current_load_a > FP_ZERO ? true : false;
_status &= m_environment.scale_current_load_b > FP_ZERO ? true : false;
_status &= m_environment.scale_current_load_c > FP_ZERO ? true : false;
//
m_environment.scale_current_cell_a = m_system_configuration.scale_current_cell_a;
m_environment.scale_current_cell_b = m_system_configuration.scale_current_cell_b;
m_environment.scale_current_cell_c = m_system_configuration.scale_current_cell_c;
_status &= m_environment.scale_current_cell_a > FP_ZERO ? true : false;
_status &= m_environment.scale_current_cell_b > FP_ZERO ? true : false;
_status &= m_environment.scale_current_cell_c > FP_ZERO ? true : false;
//
m_environment.scale_current_bypass_a = m_system_configuration.scale_current_bypass_a;
m_environment.scale_current_bypass_b = m_system_configuration.scale_current_bypass_b;
m_environment.scale_current_bypass_c = m_system_configuration.scale_current_bypass_c;
_status &= m_environment.scale_current_bypass_a > FP_ZERO ? true : false;
_status &= m_environment.scale_current_bypass_b > FP_ZERO ? true : false;
_status &= m_environment.scale_current_bypass_c > FP_ZERO ? true : false;
//<>
//
// Static Offset of Analog Signals
//
m_environment.offset_voltage_grid_static_a = FP_ZERO;
m_environment.offset_voltage_grid_static_b = FP_ZERO;
m_environment.offset_voltage_grid_static_c = FP_ZERO;
//
m_environment.offset_current_input_static_a = FP_ZERO;
m_environment.offset_current_input_static_b = FP_ZERO;
m_environment.offset_current_input_static_c = FP_ZERO;
//
m_environment.offset_current_cell_static_a = FP_ZERO;
m_environment.offset_current_cell_static_b = FP_ZERO;
m_environment.offset_current_cell_static_c = FP_ZERO;
//
m_environment.offset_voltage_load_static_a = FP_ZERO;
m_environment.offset_voltage_load_static_b = FP_ZERO;
m_environment.offset_voltage_load_static_c = FP_ZERO;
//
m_environment.offset_current_load_static_a = FP_ZERO;
m_environment.offset_current_load_static_b = FP_ZERO;
m_environment.offset_current_load_static_c = FP_ZERO;
//
m_environment.offset_current_bypass_static_a = FP_ZERO;
m_environment.offset_current_bypass_static_b = FP_ZERO;
m_environment.offset_current_bypass_static_c = FP_ZERO;
//<>
//
// RMS Filters Setup
//
m_rms_filter_current_input_a.configure(m_system_configuration.rms_filter_analog_signal);
m_rms_filter_current_input_b.configure(m_system_configuration.rms_filter_analog_signal);
m_rms_filter_current_input_c.configure(m_system_configuration.rms_filter_analog_signal);
_status &= m_rms_filter_current_input_a.compare(FLTSYSLIB::RMSFSO::OPERATIONAL);
_status &= m_rms_filter_current_input_b.compare(FLTSYSLIB::RMSFSO::OPERATIONAL);
_status &= m_rms_filter_current_input_c.compare(FLTSYSLIB::RMSFSO::OPERATIONAL);
//
m_rms_filter_current_cell_a.configure(m_system_configuration.rms_filter_analog_signal);
m_rms_filter_current_cell_b.configure(m_system_configuration.rms_filter_analog_signal);
m_rms_filter_current_cell_c.configure(m_system_configuration.rms_filter_analog_signal);
_status &= m_rms_filter_current_cell_a.compare(FLTSYSLIB::RMSFSO::OPERATIONAL);
_status &= m_rms_filter_current_cell_b.compare(FLTSYSLIB::RMSFSO::OPERATIONAL);
_status &= m_rms_filter_current_cell_c.compare(FLTSYSLIB::RMSFSO::OPERATIONAL);
m_rms_filter_current_load_a.configure(m_system_configuration.rms_filter_analog_signal);
m_rms_filter_current_load_b.configure(m_system_configuration.rms_filter_analog_signal);
m_rms_filter_current_load_c.configure(m_system_configuration.rms_filter_analog_signal);
_status &= m_rms_filter_current_load_a.compare(FLTSYSLIB::RMSFSO::OPERATIONAL);
_status &= m_rms_filter_current_load_b.compare(FLTSYSLIB::RMSFSO::OPERATIONAL);
_status &= m_rms_filter_current_load_c.compare(FLTSYSLIB::RMSFSO::OPERATIONAL);
m_rms_filter_voltage_input_a.configure(m_system_configuration.rms_filter_analog_signal);
m_rms_filter_voltage_input_b.configure(m_system_configuration.rms_filter_analog_signal);
m_rms_filter_voltage_input_c.configure(m_system_configuration.rms_filter_analog_signal);
_status &= m_rms_filter_voltage_input_a.compare(FLTSYSLIB::RMSFSO::OPERATIONAL);
_status &= m_rms_filter_voltage_input_b.compare(FLTSYSLIB::RMSFSO::OPERATIONAL);
_status &= m_rms_filter_voltage_input_c.compare(FLTSYSLIB::RMSFSO::OPERATIONAL);
//
m_rms_filter_voltage_load_a.configure(m_system_configuration.rms_filter_analog_signal);
m_rms_filter_voltage_load_b.configure(m_system_configuration.rms_filter_analog_signal);
m_rms_filter_voltage_load_c.configure(m_system_configuration.rms_filter_analog_signal);
_status &= m_rms_filter_voltage_load_a.compare(FLTSYSLIB::RMSFSO::OPERATIONAL);
_status &= m_rms_filter_voltage_load_b.compare(FLTSYSLIB::RMSFSO::OPERATIONAL);
_status &= m_rms_filter_voltage_load_c.compare(FLTSYSLIB::RMSFSO::OPERATIONAL);
//
m_rms_filter_current_bypass_a.configure(m_system_configuration.rms_filter_analog_signal);
m_rms_filter_current_bypass_b.configure(m_system_configuration.rms_filter_analog_signal);
m_rms_filter_current_bypass_c.configure(m_system_configuration.rms_filter_analog_signal);
_status &= m_rms_filter_current_bypass_a.compare(FLTSYSLIB::RMSFSO::OPERATIONAL);
_status &= m_rms_filter_current_bypass_b.compare(FLTSYSLIB::RMSFSO::OPERATIONAL);
_status &= m_rms_filter_current_bypass_c.compare(FLTSYSLIB::RMSFSO::OPERATIONAL);
//<>
//
// Algorithm
//
m_algorithm.configure();
_status &= m_algorithm.compare(SYSCTRL::AlgorithmContext::OPERATIONAL);
//<>
//
// Zero Drift Current Input
//
m_zero_filter_voltage_input_a.configure(m_system_configuration.zero_filter);
m_zero_filter_voltage_input_b.configure(m_system_configuration.zero_filter);
m_zero_filter_voltage_input_c.configure(m_system_configuration.zero_filter);
_status &= m_zero_filter_voltage_input_a.compare(FLTSYSLIB::FilterForth::OPERATIONAL);
_status &= m_zero_filter_voltage_input_b.compare(FLTSYSLIB::FilterForth::OPERATIONAL);
_status &= m_zero_filter_voltage_input_c.compare(FLTSYSLIB::FilterForth::OPERATIONAL);
//
m_zero_filter_current_input_a.configure(m_system_configuration.zero_filter);
m_zero_filter_current_input_b.configure(m_system_configuration.zero_filter);
m_zero_filter_current_input_c.configure(m_system_configuration.zero_filter);
_status &= m_zero_filter_current_input_a.compare(FLTSYSLIB::FilterForth::OPERATIONAL);
_status &= m_zero_filter_current_input_b.compare(FLTSYSLIB::FilterForth::OPERATIONAL);
_status &= m_zero_filter_current_input_c.compare(FLTSYSLIB::FilterForth::OPERATIONAL);
//
m_zero_filter_current_cell_a.configure(m_system_configuration.zero_filter);
m_zero_filter_current_cell_b.configure(m_system_configuration.zero_filter);
m_zero_filter_current_cell_c.configure(m_system_configuration.zero_filter);
_status &= m_zero_filter_current_cell_a.compare(FLTSYSLIB::FilterForth::OPERATIONAL);
_status &= m_zero_filter_current_cell_b.compare(FLTSYSLIB::FilterForth::OPERATIONAL);
_status &= m_zero_filter_current_cell_c.compare(FLTSYSLIB::FilterForth::OPERATIONAL);
//
m_zero_filter_voltage_load_a.configure(m_system_configuration.zero_filter);
m_zero_filter_voltage_load_b.configure(m_system_configuration.zero_filter);
m_zero_filter_voltage_load_c.configure(m_system_configuration.zero_filter);
_status &= m_zero_filter_voltage_load_a.compare(FLTSYSLIB::FilterForth::OPERATIONAL);
_status &= m_zero_filter_voltage_load_b.compare(FLTSYSLIB::FilterForth::OPERATIONAL);
_status &= m_zero_filter_voltage_load_c.compare(FLTSYSLIB::FilterForth::OPERATIONAL);
//
m_zero_filter_current_load_a.configure(m_system_configuration.zero_filter);
m_zero_filter_current_load_b.configure(m_system_configuration.zero_filter);
m_zero_filter_current_load_c.configure(m_system_configuration.zero_filter);
_status &= m_zero_filter_current_load_a.compare(FLTSYSLIB::FilterForth::OPERATIONAL);
_status &= m_zero_filter_current_load_b.compare(FLTSYSLIB::FilterForth::OPERATIONAL);
_status &= m_zero_filter_current_load_c.compare(FLTSYSLIB::FilterForth::OPERATIONAL);
//
m_zero_filter_current_bypass_a.configure(m_system_configuration.zero_filter);
m_zero_filter_current_bypass_b.configure(m_system_configuration.zero_filter);
m_zero_filter_current_bypass_c.configure(m_system_configuration.zero_filter);
_status &= m_zero_filter_current_bypass_a.compare(FLTSYSLIB::FilterForth::OPERATIONAL);
_status &= m_zero_filter_current_bypass_b.compare(FLTSYSLIB::FilterForth::OPERATIONAL);
_status &= m_zero_filter_current_bypass_c.compare(FLTSYSLIB::FilterForth::OPERATIONAL);
//<>
//
// Cell DC Voltage Filter
//
m_cell_dc_voltage_a_filter.configure(m_system_configuration.cell_dc_voltage_filter);
m_cell_dc_voltage_b_filter.configure(m_system_configuration.cell_dc_voltage_filter);
m_cell_dc_voltage_c_filter.configure(m_system_configuration.cell_dc_voltage_filter);
_status &= m_cell_dc_voltage_a_filter.compare(FLTSYSLIB::FilterForth::OPERATIONAL);
_status &= m_cell_dc_voltage_b_filter.compare(FLTSYSLIB::FilterForth::OPERATIONAL);
_status &= m_cell_dc_voltage_c_filter.compare(FLTSYSLIB::FilterForth::OPERATIONAL);
//<>
//
// Relative
//
m_relative_filter_voltage_input_a.configure(m_system_configuration.relative_voltage_input);
m_relative_filter_voltage_input_b.configure(m_system_configuration.relative_voltage_input);
m_relative_filter_voltage_input_c.configure(m_system_configuration.relative_voltage_input);
_status &= m_relative_filter_voltage_input_a.compare(SYSCTRL::SignalRelative::OPERATIONAL);
_status &= m_relative_filter_voltage_input_b.compare(SYSCTRL::SignalRelative::OPERATIONAL);
_status &= m_relative_filter_voltage_input_c.compare(SYSCTRL::SignalRelative::OPERATIONAL);
//<>
//
// PLL ABC
//
m_pll_abc_input_voltage.configure(m_system_configuration.pll_abc_input_voltage);
_status &= m_pll_abc_input_voltage.compare(FLTSYSLIB::PLLABCDVR::OPERATIONAL);
//<>
//
// Signal Decompose
//
m_decompose_voltage_input_a.configure(m_system_configuration.signal_decompose);
m_decompose_voltage_input_b.configure(m_system_configuration.signal_decompose);
m_decompose_voltage_input_c.configure(m_system_configuration.signal_decompose);
//
#if (TYPECONTROL == SCALARCONTROL)
#if TYPEVOLTAGEDECOMPOSE == TYPEVOLTAGEDECOMPOSE_DIFFICULT
m_decompose_voltage_load_a.configure(m_system_configuration.signal_decompose);
m_decompose_voltage_load_b.configure(m_system_configuration.signal_decompose);
m_decompose_voltage_load_c.configure(m_system_configuration.signal_decompose);
#endif
#if TYPEVOLTAGEDECOMPOSE == TYPEVOLTAGEDECOMPOSE_SIMPLE
m_decompose_voltage_load_a.configure(m_system_configuration.voltage_decompose);
m_decompose_voltage_load_b.configure(m_system_configuration.voltage_decompose);
m_decompose_voltage_load_c.configure(m_system_configuration.voltage_decompose);
#endif
#endif
#if (TYPECONTROL == VECTORCONTROL) || (TYPECONTROL == DIRECTREVERSECONTROL)
m_decompose_voltage_load_a.configure(m_system_configuration.signal_decompose);
m_decompose_voltage_load_b.configure(m_system_configuration.signal_decompose);
m_decompose_voltage_load_c.configure(m_system_configuration.signal_decompose);
#endif
//
m_decompose_current_load_a.configure(m_system_configuration.signal_decompose);
m_decompose_current_load_b.configure(m_system_configuration.signal_decompose);
m_decompose_current_load_c.configure(m_system_configuration.signal_decompose);
//
m_decompose_current_cell_a.configure(m_system_configuration.signal_decompose);
m_decompose_current_cell_b.configure(m_system_configuration.signal_decompose);
m_decompose_current_cell_c.configure(m_system_configuration.signal_decompose);
//
m_decompose_current_bypass_a.configure(m_system_configuration.signal_decompose);
m_decompose_current_bypass_b.configure(m_system_configuration.signal_decompose);
m_decompose_current_bypass_c.configure(m_system_configuration.signal_decompose);
//<>
//
// DIGITAL INPUTS
//
m_environment.remote_start.configure(m_system_configuration.digital_input_config); //3001
m_environment.remote_stop.configure(m_system_configuration.digital_input_config); //3002
m_environment.remote_reset.configure(m_system_configuration.digital_input_config); //3003
m_environment.remote_e_stop.configure(m_system_configuration.digital_input_config); //3004
m_environment.auxiliary_q1.configure(m_system_configuration.digital_input_config); //3005
m_environment.bypass_ready.configure(m_system_configuration.digital_input_config); //3006
m_environment.transformer_inv_over_temperature_alarm.configure(m_system_configuration.digital_input_config); //3007
m_environment.local_e_stop.configure(m_system_configuration.digital_input_config); //3008
m_environment.cabinet_door_interlocked.configure(m_system_configuration.digital_input_config); //3009
m_environment.arc_and_fire.configure(m_system_configuration.digital_input_config);//3010
m_environment.hw_dvr_ready.configure(m_system_configuration.digital_input_config); //3011
m_environment.auxiliary_km2.configure(m_system_configuration.digital_input_config); //3012
m_environment.auxiliary_km11.configure(m_system_configuration.digital_input_config); //3013
m_environment.transformer_t_over_temperature_fault.configure(m_system_configuration.digital_input_config);//3014
m_environment.control_power_supply_status.configure(m_system_configuration.digital_input_config);//3015
m_environment.auxiliary_km1.configure(m_system_configuration.digital_input_config); //3016
m_environment.auxiliary_km3.configure(m_system_configuration.digital_input_config); //3017
m_environment.transformer_inv_over_temperature_fault.configure(m_system_configuration.digital_input_config); //3018
m_environment.fan_fault.configure(m_system_configuration.digital_input_config); //3019
m_environment.local_remote.configure(m_system_configuration.digital_input_config); //3020
_status &= m_environment.remote_start.compare(FLTSYSLIB::DigitalInputAntiNoise::OPERATIONAL); //3001
_status &= m_environment.remote_stop.compare(FLTSYSLIB::DigitalInputAntiNoise::OPERATIONAL); //3002
_status &= m_environment.remote_reset.compare(FLTSYSLIB::DigitalInputAntiNoise::OPERATIONAL); //3003
_status &= m_environment.remote_e_stop.compare(FLTSYSLIB::DigitalInputAntiNoise::OPERATIONAL); //3004
_status &= m_environment.auxiliary_q1.compare(FLTSYSLIB::DigitalInputAntiNoise::OPERATIONAL); //3005
_status &= m_environment.bypass_ready.compare(FLTSYSLIB::DigitalInputAntiNoise::OPERATIONAL); //3006
_status &= m_environment.transformer_inv_over_temperature_alarm.compare(FLTSYSLIB::DigitalInputAntiNoise::OPERATIONAL); //3007
_status &= m_environment.local_e_stop.compare(FLTSYSLIB::DigitalInputAntiNoise::OPERATIONAL); //3008
_status &= m_environment.cabinet_door_interlocked.compare(FLTSYSLIB::DigitalInputAntiNoise::OPERATIONAL); //3009
_status &= m_environment.arc_and_fire.compare(FLTSYSLIB::DigitalInputAntiNoise::OPERATIONAL);//3010
_status &= m_environment.hw_dvr_ready.compare(FLTSYSLIB::DigitalInputAntiNoise::OPERATIONAL); //3011
_status &= m_environment.auxiliary_km2.compare(FLTSYSLIB::DigitalInputAntiNoise::OPERATIONAL); //3012
_status &= m_environment.auxiliary_km11.compare(FLTSYSLIB::DigitalInputAntiNoise::OPERATIONAL); //3013
_status &= m_environment.transformer_t_over_temperature_fault.compare(FLTSYSLIB::DigitalInputAntiNoise::OPERATIONAL);//3014
_status &= m_environment.control_power_supply_status.compare(FLTSYSLIB::DigitalInputAntiNoise::OPERATIONAL);//3015
_status &= m_environment.auxiliary_km1.compare(FLTSYSLIB::DigitalInputAntiNoise::OPERATIONAL); //3016
_status &= m_environment.auxiliary_km3.compare(FLTSYSLIB::DigitalInputAntiNoise::OPERATIONAL); //3017
_status &= m_environment.transformer_inv_over_temperature_fault.compare(FLTSYSLIB::DigitalInputAntiNoise::OPERATIONAL); //3018
_status &= m_environment.fan_fault.compare(FLTSYSLIB::DigitalInputAntiNoise::OPERATIONAL); //3019
_status &= m_environment.local_remote.compare(FLTSYSLIB::DigitalInputAntiNoise::OPERATIONAL); //3020
//<>
//
// Phase Alarm monitor
//
m_phase_alert_monitor.configure(m_system_configuration.phase_alert_monitor);
//<>
//
// FAN CONTROL
//
m_environment.fan_control.configure(m_system_configuration.fan_control);
_status &= m_environment.fan_control.compare(SYSCTRL::FanTimerControl::OPERATIONAL);
//<>
//
// Generator ABC
//
m_environment.generator_abc.configure(m_system_configuration.generator_abc);
//_status &= m_environment.generator_abc.compare(FLTSYSLIB::GeneratorABC::OPERATIONAL);
//<>
//
// Algorithm Source References
//
m_environment.algorithm_source_references = m_system_configuration.algorithm_source_references;
//
// Reference PWM-Generator
//
//m_environment.generator_pwm.configure(m_system_configuration.generator_pwm);
//<>
//
// Harmonica Analyzer
//
m_voltage_input_a_harmonica_filter_5.configure(m_system_configuration.ph_harmonica_5);
m_voltage_input_b_harmonica_filter_5.configure(m_system_configuration.ph_harmonica_5);
m_voltage_input_c_harmonica_filter_5.configure(m_system_configuration.ph_harmonica_5);
_status &= m_voltage_input_a_harmonica_filter_5.compare(FLTSYSLIB::HarmonicaFilter4Order::OPERATIONAL);
_status &= m_voltage_input_b_harmonica_filter_5.compare(FLTSYSLIB::HarmonicaFilter4Order::OPERATIONAL);
_status &= m_voltage_input_c_harmonica_filter_5.compare(FLTSYSLIB::HarmonicaFilter4Order::OPERATIONAL);
//<>
//
// Regulators
//
#if TYPECONTROL == VECTORCONTROL
m_environment.regulator_voltage_load_direct.configure(m_system_configuration.regulator_voltage_load_dq);
m_environment.regulator_voltage_load_quadrature.configure(m_system_configuration.regulator_voltage_load_dq);
_status &= m_environment.regulator_voltage_load_direct.compare(FLTSYSLIB::PIController::OPERATIONAL);
_status &= m_environment.regulator_voltage_load_quadrature.compare(FLTSYSLIB::PIController::OPERATIONAL);
//
m_environment.integrator_direct.configure(m_system_configuration.integrator_voltage_dq);
m_environment.integrator_quadrature.configure(m_system_configuration.integrator_voltage_dq);
_status &= m_environment.integrator_direct.compare(FLTSYSLIB::Integrator::OPERATIONAL);
_status &= m_environment.integrator_quadrature.compare(FLTSYSLIB::Integrator::OPERATIONAL);
//
m_environment.reference_voltage_direct_intensity.configure(m_system_configuration.reference_voltage_dq_intensity);
_status &= m_environment.reference_voltage_direct_intensity.compare(FLTSYSLIB::Filter::OPERATIONAL);
//
#if TYPECURRENTCONTROLLER == CURRENTCONTROLLER_P
m_environment.regulator_current_load_direct.configure(m_system_configuration.regulator_current_load_dq);
m_environment.regulator_current_load_quadrature.configure(m_system_configuration.regulator_current_load_dq);
_status &= m_environment.regulator_current_load_direct.compare(FLTSYSLIB::PController::OPERATIONAL);
_status &= m_environment.regulator_current_load_quadrature.compare(FLTSYSLIB::PController::OPERATIONAL);
#endif
#if TYPECURRENTCONTROLLER == CURRENTCONTROLLER_PI
m_environment.regulator_current_load_direct.configure(m_system_configuration.regulator_current_load_dq);
m_environment.regulator_current_load_quadrature.configure(m_system_configuration.regulator_current_load_dq);
_status &= m_environment.regulator_current_load_direct.compare(FLTSYSLIB::PIController::OPERATIONAL);
_status &= m_environment.regulator_current_load_quadrature.compare(FLTSYSLIB::PIController::OPERATIONAL);
#endif
//
m_environment.referencer_current_bypass_direct.configure(m_system_configuration.referencer_current_bypass_dq);
m_environment.referencer_current_bypass_quadrature.configure(m_system_configuration.referencer_current_bypass_dq);
_status &= m_environment.referencer_current_bypass_direct.compare(FLTSYSLIB::IController::OPERATIONAL);
_status &= m_environment.referencer_current_bypass_quadrature.compare(FLTSYSLIB::IController::OPERATIONAL);
//
m_system_configuration.regulator_current_limit.low_saturation = m_environment.voltage_reference_load_direct * 0.57735;
m_system_configuration.regulator_current_limit.high_saturation = m_environment.voltage_reference_limit_high * 0.57735;
m_environment.regulator_current_limit.configure(m_system_configuration.regulator_current_limit);
m_environment.regulator_current_pfc.configure(m_system_configuration.regulator_current_pfc);
_status &= m_environment.regulator_current_limit.compare(FLTSYSLIB::IController::OPERATIONAL);
_status &= m_environment.regulator_current_pfc.compare(FLTSYSLIB::PIController::OPERATIONAL);
#endif
#if TYPECONTROL == SCALARCONTROL
#if SCALARCONTROL_VOLTAGEREGULATOR == SCALARCONTROL_VOLTAGEREGULATOR_ABC
m_environment.regulator_voltage_load_a_reactive.configure(m_system_configuration.regulator_voltage_load_active_reactive);
_status &= m_environment.regulator_voltage_load_a_reactive.compare(FLTSYSLIB::PIController::OPERATIONAL);
m_environment.regulator_voltage_load_b_reactive.configure(m_system_configuration.regulator_voltage_load_active_reactive);
_status &= m_environment.regulator_voltage_load_b_reactive.compare(FLTSYSLIB::PIController::OPERATIONAL);
m_environment.regulator_voltage_load_c_reactive.configure(m_system_configuration.regulator_voltage_load_active_reactive);
_status &= m_environment.regulator_voltage_load_c_reactive.compare(FLTSYSLIB::PIController::OPERATIONAL);
//
m_system_configuration.regulator_voltage_load_active_reactive.low_saturation = FP_ZERO;
m_environment.regulator_voltage_load_a_active.configure(m_system_configuration.regulator_voltage_load_active_reactive);
_status &= m_environment.regulator_voltage_load_a_active.compare(FLTSYSLIB::PIController::OPERATIONAL);
m_environment.regulator_voltage_load_b_active.configure(m_system_configuration.regulator_voltage_load_active_reactive);
_status &= m_environment.regulator_voltage_load_b_active.compare(FLTSYSLIB::PIController::OPERATIONAL);
m_environment.regulator_voltage_load_c_active.configure(m_system_configuration.regulator_voltage_load_active_reactive);
_status &= m_environment.regulator_voltage_load_c_active.compare(FLTSYSLIB::PIController::OPERATIONAL);
#endif
#if SCALARCONTROL_VOLTAGEREGULATOR == SCALARCONTROL_VOLTAGEREGULATOR_RMS
m_environment.reference_voltage_load_rms_intensity.configure(m_system_configuration.reference_voltage_load_rms_intensity);
m_environment.regulator_voltage_load_rms.configure(m_system_configuration.regulator_voltage_load_rms);
_status &= m_environment.reference_voltage_load_rms_intensity.compare(FLTSYSLIB::Filter::OPERATIONAL);
_status &= m_environment.regulator_voltage_load_rms.compare(FLTSYSLIB::IController::OPERATIONAL);
#endif
//
//m_system_configuration.regulator_current_limit.high_saturation = m_system_configuration.reference_voltage_rms;
//m_system_configuration.regulator_current_limit.low_saturation = FP_ZERO;
//m_system_configuration.regulator_current_pfc.high_saturation = m_system_configuration.reference_voltage_rms;
//m_system_configuration.regulator_current_pfc.low_saturation = -m_system_configuration.reference_voltage_rms;
m_environment.regulator_current_limit_a.configure(m_system_configuration.regulator_current_limit);
m_environment.regulator_current_pfc_a.configure(m_system_configuration.regulator_current_pfc);
_status &= m_environment.regulator_current_limit_a.compare(FLTSYSLIB::PIController::OPERATIONAL);
_status &= m_environment.regulator_current_pfc_a.compare(FLTSYSLIB::PIController::OPERATIONAL);
//
m_environment.regulator_current_limit_b.configure(m_system_configuration.regulator_current_limit);
m_environment.regulator_current_pfc_b.configure(m_system_configuration.regulator_current_pfc);
_status &= m_environment.regulator_current_limit_b.compare(FLTSYSLIB::PIController::OPERATIONAL);
_status &= m_environment.regulator_current_pfc_b.compare(FLTSYSLIB::PIController::OPERATIONAL);
//
m_environment.regulator_current_limit_c.configure(m_system_configuration.regulator_current_limit);
m_environment.regulator_current_pfc_c.configure(m_system_configuration.regulator_current_pfc);
_status &= m_environment.regulator_current_limit_c.compare(FLTSYSLIB::PIController::OPERATIONAL);
_status &= m_environment.regulator_current_pfc_c.compare(FLTSYSLIB::PIController::OPERATIONAL);
//
m_environment.current_regulator_a_active.configure(m_system_configuration.current_regulator_active);
m_environment.current_regulator_a_reactive.configure(m_system_configuration.current_regulator_reactive);
_status &= m_environment.current_regulator_a_active.compare(FLTSYSLIB::PIController::OPERATIONAL);
_status &= m_environment.current_regulator_a_reactive.compare(FLTSYSLIB::PIController::OPERATIONAL);
//
m_environment.current_regulator_b_active.configure(m_system_configuration.current_regulator_active);
m_environment.current_regulator_b_reactive.configure(m_system_configuration.current_regulator_reactive);
_status &= m_environment.current_regulator_b_active.compare(FLTSYSLIB::PIController::OPERATIONAL);
_status &= m_environment.current_regulator_b_reactive.compare(FLTSYSLIB::PIController::OPERATIONAL);
//
m_environment.current_regulator_c_active.configure(m_system_configuration.current_regulator_active);
m_environment.current_regulator_c_reactive.configure(m_system_configuration.current_regulator_reactive);
_status &= m_environment.current_regulator_c_active.compare(FLTSYSLIB::PIController::OPERATIONAL);
_status &= m_environment.current_regulator_c_reactive.compare(FLTSYSLIB::PIController::OPERATIONAL);
//
m_environment.current_referencer_a_active.configure(m_system_configuration.current_referencer);
m_environment.current_referencer_a_reactive.configure(m_system_configuration.current_referencer);
_status &= m_environment.current_referencer_a_active.compare(FLTSYSLIB::PIController::OPERATIONAL);
_status &= m_environment.current_referencer_a_reactive.compare(FLTSYSLIB::PIController::OPERATIONAL);
//
m_environment.current_referencer_b_active.configure(m_system_configuration.current_referencer);
m_environment.current_referencer_b_reactive.configure(m_system_configuration.current_referencer);
_status &= m_environment.current_referencer_b_active.compare(FLTSYSLIB::PIController::OPERATIONAL);
_status &= m_environment.current_referencer_b_reactive.compare(FLTSYSLIB::PIController::OPERATIONAL);
//
m_environment.current_referencer_c_active.configure(m_system_configuration.current_referencer);
m_environment.current_referencer_c_reactive.configure(m_system_configuration.current_referencer);
_status &= m_environment.current_referencer_c_active.compare(FLTSYSLIB::PIController::OPERATIONAL);
_status &= m_environment.current_referencer_c_reactive.compare(FLTSYSLIB::PIController::OPERATIONAL);
//
//m_system_configuration.regulator_dc_voltage.low_saturation = - m_environment.phase_control.common_ref.voltage_module_rms;
//m_environment.regulator_dc_a.configure(m_system_configuration.regulator_dc_voltage);
//m_environment.regulator_dc_b.configure(m_system_configuration.regulator_dc_voltage);
//m_environment.regulator_dc_c.configure(m_system_configuration.regulator_dc_voltage);
//_status &= m_environment.regulator_dc_a.compare(FLTSYSLIB::PIController::OPERATIONAL);
//_status &= m_environment.regulator_dc_b.compare(FLTSYSLIB::PIController::OPERATIONAL);
//_status &= m_environment.regulator_dc_c.compare(FLTSYSLIB::PIController::OPERATIONAL);
#endif
//<>
#if TYPECONTROL == DIRECTREVERSECONTROL
//
m_environment.drc_positive_voltage_controller_direct.configure(m_system_configuration.drc_voltage_controller);
m_environment.drc_positive_voltage_controller_quadrature.configure(m_system_configuration.drc_voltage_controller);
m_environment.drc_negative_voltage_controller_direct.configure(m_system_configuration.drc_voltage_controller);
m_environment.drc_negative_voltage_controller_quadrature.configure(m_system_configuration.drc_voltage_controller);
_status &= m_environment.drc_positive_voltage_controller_direct.compare(FLTSYSLIB::PIController::OPERATIONAL);
_status &= m_environment.drc_positive_voltage_controller_quadrature.compare(FLTSYSLIB::PIController::OPERATIONAL);
_status &= m_environment.drc_negative_voltage_controller_direct.compare(FLTSYSLIB::PIController::OPERATIONAL);
_status &= m_environment.drc_negative_voltage_controller_quadrature.compare(FLTSYSLIB::PIController::OPERATIONAL);
//
m_environment.drc_reference_voltage_direct_intensity.configure(m_system_configuration.drc_reference_voltage_direct_intensity);
_status &= m_environment.drc_reference_voltage_direct_intensity.compare(FLTSYSLIB::FilterSecond::OPERATIONAL);
//
m_environment.drc_regulator_current_load_direct.configure(m_system_configuration.drc_regulator_current_load);
m_environment.drc_regulator_current_load_quadrature.configure(m_system_configuration.drc_regulator_current_load);
_status &= m_environment.drc_regulator_current_load_direct.compare(FLTSYSLIB::PIController::OPERATIONAL);
_status &= m_environment.drc_regulator_current_load_quadrature.compare(FLTSYSLIB::PIController::OPERATIONAL);
//
m_environment.drc_referencer_current_bypass_direct.configure(m_system_configuration.drc_referencer_current_bypass);
m_environment.drc_referencer_current_bypass_quadrature.configure(m_system_configuration.drc_referencer_current_bypass);
_status &= m_environment.drc_referencer_current_bypass_direct.compare(FLTSYSLIB::IController::OPERATIONAL);
_status &= m_environment.drc_referencer_current_bypass_quadrature.compare(FLTSYSLIB::IController::OPERATIONAL);
//
m_environment.drc_regulator_current_limit.configure(m_system_configuration.drc_regulator_current_limit);
m_environment.drc_regulator_current_pfc.configure(m_system_configuration.drc_regulator_current_pfc);
_status &= m_environment.drc_regulator_current_limit.compare(FLTSYSLIB::IController::OPERATIONAL);
_status &= m_environment.drc_regulator_current_pfc.compare(FLTSYSLIB::PIController::OPERATIONAL);
//
m_environment.drc_direct_voltage_decomposer.configure(m_system_configuration.drc_voltage_decomposer);
m_environment.drc_back_voltage_decomposer.configure(m_system_configuration.drc_voltage_decomposer);
//
#endif
//<>
//
// Timers
//
m_environment.timer_start.configure(m_system_configuration.timer_start);
m_environment.timer_stop.configure(m_system_configuration.timer_stop);
_status &= m_environment.timer_start.compare(FLTSYSLIB::FTimer::OPERATIONAL);
_status &= m_environment.timer_stop.compare(FLTSYSLIB::FTimer::OPERATIONAL);
//<>
m_environment.digital_input_debug.all = (uint32_t)0;
//
// Scale Compute
//
m_environment.scale_compute_voltage_command.all = 0;
m_environment.scale_compute_current_command.all = 0;
m_environment.scale_compute_voltage_input.set_enable();
m_environment.scale_compute_voltage_load.set_enable();
m_environment.scale_compute_current_input.set_enable();
m_environment.scale_compute_current_cell.set_enable();
m_environment.scale_compute_current_load.set_enable();
m_environment.scale_compute_current_bypass.set_enable();
//<>
//m_environment.digital_output_temp.all = 0xFFFFFFFF;
m_environment.digital_output_temp.all = (uint32_t)0;
SYSCTRL::TriggerRegister::clear(m_enable_work_trigger);
SYSCTRL::TriggerRegister::clear(m_system_fault_trigger);
SYSCTRL::TriggerRegister::clear(m_q1_control_trigger);
SYSCTRL::TriggerRegister::clear(m_km1_control_trigger);
SYSCTRL::TriggerRegister::clear(m_km2_control_trigger);
SYSCTRL::TriggerRegister::clear(m_km3_control_trigger);
SYSCTRL::TriggerRegister::clear(m_km11_control_on_off_trigger);
SYSCTRL::TriggerRegister::clear(m_km11t_control_on_trigger);
SYSCTRL::TriggerRegister::clear(m_km11t_control_off_trigger);
SYSCTRL::TriggerRegister::clear(m_km1_external_command_trigger);
SYSCTRL::TriggerRegister::clear(m_km3_external_command_trigger);
SYSCTRL::TriggerRegister::clear(m_q1_external_command_trigger);
SYSCTRL::TriggerRegister::clear(m_vs_protection_control_trigger);
//m_environment.gen_symm_comp_inp_volt.configure(m_system_configuration.gen_inp_volt);
//m_environment.gen_symm_comp_out_volt.configure(m_system_configuration.gen_out_volt);
//m_environment.gen_symm_comp_out_current.configure(m_system_configuration.gen_out_current);
//m_environment.gen_symm_comp_input_current.configure(m_system_configuration.gen_input_current);
//m_environment.gen_symm_comp_bypass_current.configure(m_system_configuration.gen_bypass_current);
//m_environment.gen_symm_comp_cell_current.configure(m_system_configuration.gen_cell_current);
//
// Contactor Control Fault
//
m_q1_control_fault.configure(m_system_configuration.contactor);
m_km1_control_fault.configure(m_system_configuration.contactor);
m_km2_control_fault.configure(m_system_configuration.contactor);
m_km3_control_fault.configure(m_system_configuration.contactor);
//<>
//
// RUBUS Configuration
//
_modbusrtu_rubus_configurate();
//<>
if(_status)
{
m_mode = SYSCTRL::SystemControl::OPERATIONAL;
_slow_loop_execute = &SYSCTRL::SystemControl::_slow_loop_operational;
_execute_additional = &SYSCTRL::SystemControl::_additional_operational;
_execute = &SYSCTRL::SystemControl::_execute_operational;
m_algorithm.set_strategy_off();
m_algorithm.set_off();
m_algorithm_executed = m_algorithm.get_algorithm();
//
// Response To Monitor
//
m_test_read_word.bit32.b00 = 1;
//<>
//
}//if
}//if
//
}//configure()
//
//#pragma FUNC_ALWAYS_INLINE
void SystemControl::reload()
{
if(m_fram_db.is_free())
{
TRAPSWRST;
//
}//if
//
}//
//
} /* namespace SYSCTRL */