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.
1303 lines
73 KiB
C++
1303 lines
73 KiB
C++
5 months ago
|
/*
|
||
|
* 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
|
||
|
//
|
||
|
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
|
||
|
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);
|
||
|
//
|
||
|
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);
|
||
|
//
|
||
|
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);
|
||
|
//
|
||
|
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
|
||
|
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);
|
||
|
|
||
|
|
||
|
//
|
||
|
//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 */
|