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.

615 lines
19 KiB
C++

/*
* SystemEnvironment.cpp
*
* Author: Aleksey Gerasimenko
* gerasimenko.aleksey.n@gmail.com
*/
#include "SYSCTRL/SystemEnvironment.h"
namespace SYSCTRL
{
//CONSTRUCTOR
SystemEnvironment::SystemEnvironment():
id_software(),
time_sample_control(-1.0),
time_sample_slow(-1.0),
time_sample_additional(-1.0),
time_prescale_slow(0),
time_prescale_additional(0),
time_prescale_symmetrical((Uint16)14325),
counter_slow(0),
counter_additional(0),
counter_symmetrical(333),
//
fram_operation(),
fram_burn(),
fram_erase(),
fram_verify(),
fram_read(),
fram_restore(),
//
analog_input(),
//
scale_voltage_grid_a(1.0),
scale_voltage_grid_b(1.0),
scale_voltage_grid_c(1.0),
//
scale_current_input_a(1.0),
scale_current_input_b(1.0),
scale_current_input_c(1.0),
//
scale_current_cell_a(1.0),
scale_current_cell_b(1.0),
scale_current_cell_c(1.0),
//
scale_voltage_load_a(1.0),
scale_voltage_load_b(1.0),
scale_voltage_load_c(1.0),
//
scale_current_load_a(1.0),
scale_current_load_b(1.0),
scale_current_load_c(1.0),
//
scale_current_bypass_a(1.0),
scale_current_bypass_b(1.0),
scale_current_bypass_c(1.0),
//
//
offset_voltage_grid_a(FP_ZERO),
offset_voltage_grid_b(FP_ZERO),
offset_voltage_grid_c(FP_ZERO),
//
offset_current_input_a(FP_ZERO),
offset_current_input_b(FP_ZERO),
offset_current_input_c(FP_ZERO),
//
offset_current_cell_a(FP_ZERO),
offset_current_cell_b(FP_ZERO),
offset_current_cell_c(FP_ZERO),
//
offset_voltage_load_a(FP_ZERO),
offset_voltage_load_b(FP_ZERO),
offset_voltage_load_c(FP_ZERO),
//
offset_current_load_a(FP_ZERO),
offset_current_load_b(FP_ZERO),
offset_current_load_c(FP_ZERO),
//
offset_current_bypass_a(FP_ZERO),
offset_current_bypass_b(FP_ZERO),
offset_current_bypass_c(FP_ZERO),
//
//
offset_voltage_grid_static_a(FP_ZERO),
offset_voltage_grid_static_b(FP_ZERO),
offset_voltage_grid_static_c(FP_ZERO),
//
offset_current_input_static_a(FP_ZERO),
offset_current_input_static_b(FP_ZERO),
offset_current_input_static_c(FP_ZERO),
//
offset_current_cell_static_a(FP_ZERO),
offset_current_cell_static_b(FP_ZERO),
offset_current_cell_static_c(FP_ZERO),
//
offset_voltage_load_static_a(FP_ZERO),
offset_voltage_load_static_b(FP_ZERO),
offset_voltage_load_static_c(FP_ZERO),
//
offset_current_load_static_a(FP_ZERO),
offset_current_load_static_b(FP_ZERO),
offset_current_load_static_c(FP_ZERO),
//
offset_current_bypass_static_a(FP_ZERO),
offset_current_bypass_static_b(FP_ZERO),
offset_current_bypass_static_c(FP_ZERO),
//
//
adc_voltage_grid_a(FP_ZERO),
adc_voltage_grid_b(FP_ZERO),
adc_voltage_grid_c(FP_ZERO),
//
adc_current_input_a(FP_ZERO),
adc_current_input_b(FP_ZERO),
adc_current_input_c(FP_ZERO),
//
adc_current_cell_a(FP_ZERO),
adc_current_cell_b(FP_ZERO),
adc_current_cell_c(FP_ZERO),
//
adc_voltage_load_a(FP_ZERO),
adc_voltage_load_b(FP_ZERO),
adc_voltage_load_c(FP_ZERO),
//
adc_current_load_a(FP_ZERO),
adc_current_load_b(FP_ZERO),
adc_current_load_c(FP_ZERO),
//
adc_current_bypass_a(FP_ZERO),
adc_current_bypass_b(FP_ZERO),
adc_current_bypass_c(FP_ZERO),
//
//
voltage_grid_a(FP_ZERO),
voltage_grid_b(FP_ZERO),
voltage_grid_c(FP_ZERO),
//
current_input_a(FP_ZERO),
current_input_b(FP_ZERO),
current_input_c(FP_ZERO),
//
current_cell_a(FP_ZERO),
current_cell_b(FP_ZERO),
current_cell_c(FP_ZERO),
//
current_bypass_a(FP_ZERO),
current_bypass_b(FP_ZERO),
current_bypass_c(FP_ZERO),
//
voltage_load_a(FP_ZERO),
voltage_load_b(FP_ZERO),
voltage_load_c(FP_ZERO),
//
current_load_a(FP_ZERO),
current_load_b(FP_ZERO),
current_load_c(FP_ZERO),
//
#if TYPECONTROL == VECTORCONTROL
voltage_grid_alpha(FP_ZERO),
voltage_grid_beta(FP_ZERO),
//
voltage_grid_direct(FP_ZERO),
voltage_grid_quadrature(FP_ZERO),
//
voltage_load_alpha(FP_ZERO),
voltage_load_beta(FP_ZERO),
//
voltage_load_direct(FP_ZERO),
voltage_load_quadrature(FP_ZERO),
//
current_load_alpha(FP_ZERO),
current_load_beta(FP_ZERO),
//
current_load_direct(FP_ZERO),
current_load_quadrature(FP_ZERO),
//
current_bypass_alpha(FP_ZERO),
current_bypass_beta(FP_ZERO),
//
current_bypass_direct(FP_ZERO),
current_bypass_quadrature(FP_ZERO),
//
current_cell_alpha(FP_ZERO),
current_cell_beta(FP_ZERO),
//
current_cell_direct(FP_ZERO),
current_cell_quadrature(FP_ZERO),
//
current_reference_limit(FP_ZERO),
current_reference_pfc(FP_ZERO),
//
voltage_reference_limit_high(FP_ZERO),
voltage_reference_load_direct(FP_ZERO),
voltage_reference_load_quadrature(FP_ZERO),
voltage_reference_dc_cell(FP_ZERO),
//
voltage_pi_reg_out_direct(FP_ZERO),
voltage_pi_reg_out_quadrature(FP_ZERO),
//
voltage_cell_direct(FP_ZERO),
voltage_cell_quadrature(FP_ZERO),
//
voltage_cell_alpha(FP_ZERO),
voltage_cell_beta(FP_ZERO),
//
voltage_cell_a(FP_ZERO),
voltage_cell_b(FP_ZERO),
voltage_cell_c(FP_ZERO),
#endif
#if TYPECONTROL == DIRECTREVERSECONTROL
drc_voltage_grid_alpha(FP_ZERO),
drc_voltage_grid_beta(FP_ZERO),
//
drc_voltage_grid_direct(FP_ZERO),
drc_voltage_grid_quadrature(FP_ZERO),
//
drc_positive_voltage_load_direct(FP_ZERO),
drc_positive_voltage_load_quadrature(FP_ZERO),
drc_negative_voltage_load_direct(FP_ZERO),
drc_negative_voltage_load_quadrature(FP_ZERO),
//
drc_current_load_alpha(FP_ZERO),
drc_current_load_beta(FP_ZERO),
//
drc_current_load_direct(FP_ZERO),
drc_current_load_quadrature(FP_ZERO),
//
drc_current_bypass_alpha(FP_ZERO),
drc_current_bypass_beta(FP_ZERO),
//
drc_current_bypass_direct(FP_ZERO),
drc_current_bypass_quadrature(FP_ZERO),
//
drc_current_cell_alpha(FP_ZERO),
drc_current_cell_beta(FP_ZERO),
//
drc_current_cell_direct(FP_ZERO),
drc_current_cell_quadrature(FP_ZERO),
//
drc_current_reference_limit(FP_ZERO),
drc_current_reference_pfc(FP_ZERO),
//
drc_voltage_reference_limit_high(FP_ZERO),
drc_voltage_reference_load_direct(FP_ZERO),
drc_voltage_reference_load_quadrature(FP_ZERO),
drc_voltage_reference_dc_cell(FP_ZERO),
drc_voltage_reference_zero(FP_ZERO),
//
drc_positive_voltage_cell_direct(FP_ZERO),
drc_positive_voltage_cell_quadrature(FP_ZERO),
drc_negative_voltage_cell_direct(FP_ZERO),
drc_negative_voltage_cell_quadrature(FP_ZERO),
//
drc_positive_voltage_cell_alpha(FP_ZERO),
drc_positive_voltage_cell_beta(FP_ZERO),
drc_negative_voltage_cell_alpha(FP_ZERO),
drc_negative_voltage_cell_beta(FP_ZERO),
//
drc_positive_voltage_cell_a(FP_ZERO),
drc_positive_voltage_cell_b(FP_ZERO),
drc_positive_voltage_cell_c(FP_ZERO),
//
drc_negative_voltage_cell_a(FP_ZERO),
drc_negative_voltage_cell_b(FP_ZERO),
drc_negative_voltage_cell_c(FP_ZERO),
//
drc_voltage_cell_a(FP_ZERO),
drc_voltage_cell_b(FP_ZERO),
drc_voltage_cell_c(FP_ZERO),
#endif
reference_phase_a(FP_ZERO),
reference_phase_b(FP_ZERO),
reference_phase_c(FP_ZERO),
//
reference_phase_alpha(FP_ZERO),
reference_phase_betta(FP_ZERO),
//
reference_phase_d(FP_ZERO),
reference_phase_q(FP_ZERO),
//
scale_compute_voltage_command(),
scale_compute_current_command(),
scale_compute_voltage_input(this->rms_voltage_input_ab,
this->rms_voltage_input_bc,
this->rms_voltage_input_ca,
this->scale_voltage_grid_a,
this->scale_voltage_grid_b,
this->scale_voltage_grid_c),
scale_compute_voltage_load(this->rms_voltage_load_ab,
this->rms_voltage_load_bc,
this->rms_voltage_load_ca,
this->scale_voltage_load_a,
this->scale_voltage_load_b,
this->scale_voltage_load_c),
scale_compute_current_input(this->rms_current_input_a,
this->rms_current_input_b,
this->rms_current_input_c,
this->scale_current_input_a,
this->scale_current_input_b,
this->scale_current_input_c),
scale_compute_current_cell(this->rms_current_cell_a,
this->rms_current_cell_b,
this->rms_current_cell_c,
this->scale_current_cell_a,
this->scale_current_cell_b,
this->scale_current_cell_c),
scale_compute_current_load(this->rms_current_load_a,
this->rms_current_load_b,
this->rms_current_load_c,
this->scale_current_load_a,
this->scale_current_load_b,
this->scale_current_load_c),
scale_compute_current_bypass(this->rms_current_bypass_a,
this->rms_current_bypass_b,
this->rms_current_bypass_c,
this->scale_current_bypass_a,
this->scale_current_bypass_b,
this->scale_current_bypass_c),
spinner_phase_a(),
spinner_phase_b(),
spinner_phase_c(),
//
module_voltage_phase_a(),
module_voltage_phase_b(),
module_voltage_phase_c(),
//
//Signal Decompose
relative_voltage_input_a(),
relative_voltage_input_b(),
relative_voltage_input_c(),
//
projection_voltage_input_a(),
projection_voltage_input_b(),
projection_voltage_input_c(),
//
projection_voltage_load_a(),
projection_voltage_load_b(),
projection_voltage_load_c(),
//
projection_current_load_a(),
projection_current_load_b(),
projection_current_load_c(),
//
projection_current_cell_a(),
projection_current_cell_b(),
projection_current_cell_c(),
//
projection_current_bypass_a(),
projection_current_bypass_b(),
projection_current_bypass_c(),
// test_projection_a(),
// test_projection_b(),
// test_projection_c(),
//Symmetrical Components
symmetrical_components_voltage_input(),
symmetrical_components_voltage_load(),
symmetrical_components_current_load(),
symmetrical_components_current_bypass(),
//
//RMS value
//
rms_voltage_input_ab(FP_ZERO),
rms_voltage_input_bc(FP_ZERO),
rms_voltage_input_ca(FP_ZERO),
rms_voltage_input_module(FP_ZERO),
//
rms_voltage_load_ab(FP_ZERO),
rms_voltage_load_bc(FP_ZERO),
rms_voltage_load_ca(FP_ZERO),
rms_voltage_load_module(FP_ZERO),
//
rms_current_input_a(FP_ZERO),
rms_current_input_b(FP_ZERO),
rms_current_input_c(FP_ZERO),
rms_current_input_module(FP_ZERO),
//
rms_current_load_a(FP_ZERO),
rms_current_load_b(FP_ZERO),
rms_current_load_c(FP_ZERO),
rms_current_load_module(FP_ZERO),
//
rms_current_bypass_a(FP_ZERO),
rms_current_bypass_b(FP_ZERO),
rms_current_bypass_c(FP_ZERO),
rms_current_bypass_module(FP_ZERO),
//
rms_current_cell_a(FP_ZERO),
rms_current_cell_b(FP_ZERO),
rms_current_cell_c(FP_ZERO),
//
hardware(),
cell_dc_voltage_a(FP_ZERO),
cell_dc_voltage_b(FP_ZERO),
cell_dc_voltage_c(FP_ZERO),
cell_dc_voltage_a_average(FP_ZERO),
cell_dc_voltage_b_average(FP_ZERO),
cell_dc_voltage_c_average(FP_ZERO),
cell_dc_voltage_a_reciprocal(FP_ZERO),
cell_dc_voltage_b_reciprocal(FP_ZERO),
cell_dc_voltage_c_reciprocal(FP_ZERO),
system_alarm(),
system_fault(),
system_reset(),
system_ready(),
short_circuit(),
enable_work(),
enable_work_previous(),
enable_work_is_on(),
enable_work_is_off(),
enable_work_reset(),
system_faults_register(),
external_command_word(),
external_start(),
external_stop(),
external_reset(),
external_e_stop(),
external_km1_on(0),
external_km1_off(),
external_km3_on(),
external_km3_off(),
external_q1_on(),
external_q1_off(),
gen_ort_a(FP_ZERO),
gen_ort_b(FP_ZERO),
gen_ort_c(FP_ZERO),
gen_ort_alpha(FP_ZERO),
gen_ort_beta(FP_ZERO),
grid_frequency(FP_ZERO),
status_pll_sync(false),
//PLL-ABC
pll_abc_orts(),
main_abc_orts(),
main_abc_reverse_orts(),
twisted_abc_orts(),
main_ab_orts(),
harmonica_2(),
harmonica_3(),
harmonica_5(),
harmonica_7(),
harmonica_9(),
harmonica_11(),
//Algorithm Control
algorithm_control(),
enable_current_limit(),
enable_pfc(),
enable_harmonica(),
enable_auto_offset(),
allow_auto_offset(false),
//AlgorithmPhaseControl
#if TYPECONTROL == SCALARCONTROL
phase_control(),
start_control(),
#endif
algorithm_source_references(),
//Harmonica Analyzer
voltage_input_a_harmonica_5(),
voltage_input_b_harmonica_5(),
voltage_input_c_harmonica_5(),
//Framework data
digital_output_inverse(),
digital_output(),
digital_input(),
digital_output_temp(),
//Phase Alarm monitor
phase_alert_monitor_register(),
//Fan Control
fan_control(),
//
//digital inputs
remote_start(), //3001
remote_stop(), //3002
remote_reset(), //3003
remote_e_stop(), //3004
auxiliary_q1(), //3005
bypass_ready(), //3006
transformer_inv_over_temperature_alarm(), //3007
local_e_stop(), //3008
cabinet_door_interlocked(), //3009
arc_and_fire(),//3010
hw_dvr_ready(), //3011
auxiliary_km2(), //3012
auxiliary_km11(), //3013
transformer_t_over_temperature_fault(),//3014
control_power_supply_status(),//3015
auxiliary_km1(), //3016
auxiliary_km3(), //3017
transformer_inv_over_temperature_fault(), //3018
fan_fault(), //3019
local_remote(), //3020
input_discrete(),
//input_discrete_debug_only(),
//
generator_abc(),
//gen_symm_comp_inp_volt(),
//amplitude_generator_pwm(1.0),
//generator_pwm(),
//
#if TYPECONTROL == VECTORCONTROL
regulator_voltage_load_direct(),
regulator_voltage_load_quadrature(),
//
integrator_direct(),
integrator_quadrature(),
//
regulator_current_load_direct(),
regulator_current_load_quadrature(),
//
reference_voltage_direct_intensity(),
//
referencer_current_bypass_direct(),
referencer_current_bypass_quadrature(),
//
regulator_current_limit(),
regulator_current_pfc(),
#endif
//
//
#if TYPECONTROL == SCALARCONTROL
regulator_voltage_load_a_active(),
regulator_voltage_load_a_reactive(),
regulator_voltage_load_b_active(),
regulator_voltage_load_b_reactive(),
regulator_voltage_load_c_active(),
regulator_voltage_load_c_reactive(),
//
regulator_current_limit_a(),
regulator_current_pfc_a(),
regulator_current_limit_b(),
regulator_current_pfc_b(),
regulator_current_limit_c(),
regulator_current_pfc_c(),
//
current_regulator_a_active(),
current_regulator_a_reactive(),
current_regulator_b_active(),
current_regulator_b_reactive(),
current_regulator_c_active(),
current_regulator_c_reactive(),
current_referencer_a_active(),
current_referencer_a_reactive(),
current_referencer_b_active(),
current_referencer_b_reactive(),
current_referencer_c_active(),
current_referencer_c_reactive(),
//
regulator_dc_a(),
regulator_dc_b(),
regulator_dc_c(),
#endif
#if TYPECONTROL == DIRECTREVERSECONTROL
//
drc_positive_voltage_controller_direct(),
drc_positive_voltage_controller_quadrature(),
drc_negative_voltage_controller_direct(),
drc_negative_voltage_controller_quadrature(),
//
drc_reference_voltage_direct_intensity(),
//
drc_regulator_current_load_direct(),
drc_regulator_current_load_quadrature(),
//
drc_referencer_current_bypass_direct(),
drc_referencer_current_bypass_quadrature(),
//
drc_regulator_current_limit(),
drc_regulator_current_pfc(),
//
drc_direct_voltage_decomposer(),
drc_back_voltage_decomposer(),
#endif
//
timer_start(),
timer_stop()
//
{
bypass_ready.state.all = 0x15;
auxiliary_km11.state.all = 0x15;
hw_dvr_ready.state.all = 0x15;
}//CONSTRUCTOR
} /* namespace SYSCTRL */