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.
468 lines
22 KiB
C++
468 lines
22 KiB
C++
/*
|
|
* FRAMConfigurationParameters.cpp
|
|
*
|
|
* Author: Aleksey Gerasimenko
|
|
* gerasimenko.aleksey.n@gmail.com
|
|
*/
|
|
|
|
#include "FRAM/FRAMDATABASE.h"
|
|
|
|
namespace FRAM
|
|
{
|
|
|
|
void FRAMDATABASE::register_configuration_parameters(SYSCTRL::SystemControlConfiguration *sys_config)
|
|
{
|
|
|
|
m_fram_object_index = 0;
|
|
m_fram_object_address = 0;
|
|
m_fram_object_last_address = 0;
|
|
|
|
//add_register_float(uint8_t readonly, float* pParam, float default_value);
|
|
//add_register_int(uint8_t readonly, int16_t* pParam, int16_t default_value);
|
|
//
|
|
|
|
//
|
|
// References
|
|
//
|
|
add_float( 0, &sys_config->reference_current_limit_rms, CURRENT_LIMIT_RMS);
|
|
add_float( 0, &sys_config->reference_current_pfc_rms, CURRENT_PFC_RMS);
|
|
add_float( 0, &sys_config->reference_voltage_rms, GRID_VOLTAGE_REFERENCE);
|
|
add_float( 0, &sys_config->reference_voltage_high_limit_rms, GRID_VOLTAGE_HIGH_LIMIT);
|
|
add_float( 0, &sys_config->reference_voltage_dc, CELL_DC_VOLTAGE_REFERENCE);
|
|
//<>
|
|
|
|
//
|
|
// Algorithm Control Register
|
|
add_uint16(0, &sys_config->algorithm_control.all, ENABLE_CONTROL_BIT);
|
|
//<>
|
|
|
|
|
|
//
|
|
// High Voltage Cell
|
|
//
|
|
add_uint16(0, &sys_config->hardware.cell_level, 4); // for debug!!!
|
|
add_uint16(0, &sys_config->hardware.version.pwm, 210);
|
|
add_uint16(0, &sys_config->hardware.version.cell, 211);
|
|
add_uint32(0, &sys_config->hardware.version.cpu_cpld, 202);
|
|
//<>
|
|
|
|
|
|
add_float( 0, &sys_config->minimal_input_voltage_level, 10.0);
|
|
//<>
|
|
|
|
//
|
|
// Scale Analog Signals
|
|
//
|
|
add_float( 0, &sys_config->scale_voltage_input_a, 0.171899959);// 0.166324854);//0.0227386411//0.0233486816;
|
|
add_float( 0, &sys_config->scale_voltage_input_b, 0.171521276);//0.166955084);//0.0227597337//0.0234651081;
|
|
add_float( 0, &sys_config->scale_voltage_input_c, 0.17439343);//0.170290515);//0.02278281//0.0236082859;
|
|
//
|
|
add_float( 0, &sys_config->scale_current_input_a, 0.0057266783);
|
|
add_float( 0, &sys_config->scale_current_input_b, 0.00571648451);
|
|
add_float( 0, &sys_config->scale_current_input_c, 0.00571565609);
|
|
//
|
|
add_float( 0, &sys_config->scale_current_cell_a, 0.0095403092);//0.00665648002;
|
|
add_float( 0, &sys_config->scale_current_cell_b, 0.00967073813);//0.00667640707;
|
|
add_float( 0, &sys_config->scale_current_cell_c, 0.00962774921);//0.00666095456;
|
|
//
|
|
add_float( 0, &sys_config->scale_voltage_load_a, 0.174201488);//0.168764219);//0.0227408651//0.0232194811;
|
|
add_float( 0, &sys_config->scale_voltage_load_b, 0.172130167);//0.167528242);//0.0227707103//0.0233941432;
|
|
add_float( 0, &sys_config->scale_voltage_load_c, 0.175496697);//0.171417475);//0.0229060184//0.0234934501;
|
|
//
|
|
add_float( 0, &sys_config->scale_current_load_a, 0.00949461199);//0.00668919506;
|
|
add_float( 0, &sys_config->scale_current_load_b, 0.00953965727);//0.00669770781;
|
|
add_float( 0, &sys_config->scale_current_load_c, 0.00959520414);//0.00670575583;
|
|
//
|
|
add_float( 0, &sys_config->scale_current_bypass_a, 0.00953388773);
|
|
add_float( 0, &sys_config->scale_current_bypass_b, 0.00956917088);
|
|
add_float( 0, &sys_config->scale_current_bypass_c, 0.00956158526);
|
|
//<>
|
|
|
|
|
|
|
|
//
|
|
// Amplitude Filter Parameters
|
|
//
|
|
add_float( 0, &sys_config->ampl_filter_current.time, 20.0e-3);
|
|
add_float( 0, &sys_config->ampl_filter_current.a3, 2.61313);
|
|
add_float( 0, &sys_config->ampl_filter_current.a2, 3.41422);
|
|
add_float( 0, &sys_config->ampl_filter_current.a1, 2.61313);
|
|
//<>
|
|
|
|
//
|
|
// RMS Filter Parameters
|
|
//
|
|
add_float( 0, &sys_config->rms_filter_analog_signal.time, 10.0e-3);
|
|
add_float( 0, &sys_config->rms_filter_analog_signal.a3, 2.61313);
|
|
add_float( 0, &sys_config->rms_filter_analog_signal.a2, 3.41422);
|
|
add_float( 0, &sys_config->rms_filter_analog_signal.a1, 2.61313);
|
|
//<>
|
|
|
|
|
|
//
|
|
// Zero Drift Current Input
|
|
//
|
|
add_float( 0, &sys_config->zero_filter.time, 1.333);
|
|
//<>
|
|
|
|
|
|
//
|
|
// Cell DC Voltage Filter
|
|
//
|
|
add_float( 0, &sys_config->cell_dc_voltage_filter.time, 3.0e-3);
|
|
add_float( 0, &sys_config->cell_dc_voltage_filter.a3, 2.61313);
|
|
add_float( 0, &sys_config->cell_dc_voltage_filter.a2, 3.41422);
|
|
add_float( 0, &sys_config->cell_dc_voltage_filter.a1, 2.61313);
|
|
//<>
|
|
|
|
|
|
//
|
|
// Signal Decompose
|
|
//
|
|
add_float( 0, &sys_config->signal_decompose.projection_filter.time, 10.0e-3);
|
|
add_float( 0, &sys_config->signal_decompose.projection_filter.a3, 2.61313);
|
|
add_float( 0, &sys_config->signal_decompose.projection_filter.a2, 3.41422);
|
|
add_float( 0, &sys_config->signal_decompose.projection_filter.a1, 2.61313);
|
|
//
|
|
#if TYPEVOLTAGEDECOMPOSE == TYPEVOLTAGEDECOMPOSE_SIMPLE
|
|
add_float( 0, &sys_config->voltage_decompose.projection_filter.time, DECOMPOSEVOLTAGETIME);
|
|
#endif
|
|
//<>
|
|
|
|
|
|
//
|
|
// Relative
|
|
//
|
|
add_float( 0, &sys_config->relative_voltage_input.minimal_amplitude_level, 0.1);
|
|
add_float( 0, &sys_config->relative_voltage_input.limit_relative_high, 1.1);
|
|
add_float( 0, &sys_config->relative_voltage_input.limit_relative_low, -1.1);
|
|
add_float( 0, &sys_config->relative_voltage_input.amplitude_filter.time, (float)(1.0/2.0/FP_PI/10.0));
|
|
add_float( 0, &sys_config->relative_voltage_input.amplitude_filter.a3, 2.61313);
|
|
add_float( 0, &sys_config->relative_voltage_input.amplitude_filter.a2, 3.41422);
|
|
add_float( 0, &sys_config->relative_voltage_input.amplitude_filter.a1, 2.61313);
|
|
//<>
|
|
|
|
|
|
|
|
|
|
//
|
|
// Voltage PLL-ABC Parameters
|
|
//
|
|
add_float( 0, &sys_config->pll_abc_input_voltage.frequency_nominal, PLLABC_FREQUENCY_NOMINAL);
|
|
add_float( 0, &sys_config->pll_abc_input_voltage.filter.time, 1.0/PLLABC_FREQUENCY_CUT);
|
|
add_float( 0, &sys_config->pll_abc_input_voltage.controller.gain, PLLABC_FREQUENCY_CUT/2.0);
|
|
add_float( 0, &sys_config->pll_abc_input_voltage.controller.time, 4.0/PLLABC_FREQUENCY_CUT);
|
|
add_float( 0, &sys_config->pll_abc_input_voltage.controller.low_saturation, PLLABC_FREQUENCY_LIMIT_LOW);
|
|
add_float( 0, &sys_config->pll_abc_input_voltage.controller.high_saturation, PLLABC_FREQUENCY_LIMIT_HI);
|
|
add_float( 0, &sys_config->pll_abc_input_voltage.position.time, 1.0);
|
|
add_float( 0, &sys_config->pll_abc_input_voltage.position.low_saturation, FP_ZERO);
|
|
add_float( 0, &sys_config->pll_abc_input_voltage.position.high_saturation, 2.0 * FP_PI);
|
|
//<>
|
|
|
|
|
|
|
|
//
|
|
// System Alarm
|
|
//
|
|
// exceed voltage level 1
|
|
add_float( 0, &sys_config->phase_alert_monitor.voltage_exceed_level_1.level, NOMINAL_GRID_VOLTAGE * ((float)1.0 + (PROTECTION_EXCEED_VOLTAGE_LEVEL_1_PERCENT / (float)100.0)));//253.0;
|
|
add_float( 0, &sys_config->phase_alert_monitor.voltage_exceed_level_1.period, 10.0);
|
|
//
|
|
// exceed voltage level 2
|
|
add_float( 0, &sys_config->phase_alert_monitor.voltage_exceed_level_2.level, NOMINAL_GRID_VOLTAGE * ((float)1.0 + (PROTECTION_EXCEED_VOLTAGE_LEVEL_2_PERCENT / (float)100.0)));//264.5;
|
|
add_float( 0, &sys_config->phase_alert_monitor.voltage_exceed_level_2.period, 5.0);
|
|
//
|
|
// exceed voltage level 3
|
|
add_float( 0, &sys_config->phase_alert_monitor.voltage_exceed_level_3.level, NOMINAL_GRID_VOLTAGE * ((float)1.0 + (PROTECTION_EXCEED_VOLTAGE_LEVEL_3_PERCENT / (float)100.0)));//276.0;
|
|
add_float( 0, &sys_config->phase_alert_monitor.voltage_exceed_level_3.period, 2.0);
|
|
//
|
|
// exceed voltage level 4
|
|
add_float( 0, &sys_config->phase_alert_monitor.voltage_exceed_level_4.level, NOMINAL_GRID_VOLTAGE * ((float)1.0 + (PROTECTION_EXCEED_VOLTAGE_LEVEL_4_PERCENT / (float)100.0)));
|
|
add_float( 0, &sys_config->phase_alert_monitor.voltage_exceed_level_4.period, 0.004);//1.0;
|
|
//
|
|
// decrease voltage level 1
|
|
add_float( 0, &sys_config->phase_alert_monitor.voltage_decrease_level_1.level, NOMINAL_GRID_VOLTAGE * ((float)1.0 - (PROTECTION_DECREASE_VOLTAGE_LEVEL_1_PERCENT / (float)100.0)));//218.5;//195.5;
|
|
add_float( 0, &sys_config->phase_alert_monitor.voltage_decrease_level_1.period, 10.0);
|
|
//
|
|
// decrease voltage level 2
|
|
add_float( 0, &sys_config->phase_alert_monitor.voltage_decrease_level_2.level, NOMINAL_GRID_VOLTAGE * ((float)1.0 - (PROTECTION_DECREASE_VOLTAGE_LEVEL_2_PERCENT / (float)100.0)));//207.0;//172.5;
|
|
add_float( 0, &sys_config->phase_alert_monitor.voltage_decrease_level_2.period, 5.0);
|
|
//
|
|
// decrease voltage level 3
|
|
add_float( 0, &sys_config->phase_alert_monitor.voltage_decrease_level_3.level, NOMINAL_GRID_VOLTAGE * ((float)1.0 - (PROTECTION_DECREASE_VOLTAGE_LEVEL_3_PERCENT / (float)100.0)));
|
|
add_float( 0, &sys_config->phase_alert_monitor.voltage_decrease_level_3.period, 2.0);
|
|
//
|
|
// current overload level 1 120% 60s
|
|
add_float( 0, &sys_config->phase_alert_monitor.current_overload_level_1.level, 250 * 1.1);
|
|
add_float( 0, &sys_config->phase_alert_monitor.current_overload_level_1.period, 60.0);
|
|
//
|
|
// current overload level 2 130% 10s
|
|
add_float( 0, &sys_config->phase_alert_monitor.current_overload_level_2.level, 250 * 1.2);
|
|
add_float( 0, &sys_config->phase_alert_monitor.current_overload_level_2.period, 10.0);
|
|
//
|
|
// current overload level 3 150% 1ms
|
|
add_float( 0, &sys_config->phase_alert_monitor.current_overload_level_3.level, 250 * 1.3);
|
|
add_float( 0, &sys_config->phase_alert_monitor.current_overload_level_3.period, 0.004);
|
|
//
|
|
// current invertor overload level 1 110% 60s
|
|
add_float( 0, &sys_config->phase_alert_monitor.current_invertor_overload_level_1.level, 79 * 1.1);
|
|
add_float( 0, &sys_config->phase_alert_monitor.current_invertor_overload_level_1.period, 60.0);
|
|
//
|
|
// current invertor overload level 2 130% 10s
|
|
add_float( 0, &sys_config->phase_alert_monitor.current_invertor_overload_level_2.level, 79 * 1.2);
|
|
add_float( 0, &sys_config->phase_alert_monitor.current_invertor_overload_level_2.period, 10.0);
|
|
//
|
|
// current invertor overload level 3 150% 1ms
|
|
add_float( 0, &sys_config->phase_alert_monitor.current_invertor_overload_level_3.level, 79 * 5.79);
|
|
add_float( 0, &sys_config->phase_alert_monitor.current_invertor_overload_level_3.period, 0.004);
|
|
//
|
|
// current input overload level 1 110% 60s
|
|
add_float( 0, &sys_config->phase_alert_monitor.current_input_overload_level_1.level, 131.0 * 1.1);
|
|
add_float( 0, &sys_config->phase_alert_monitor.current_input_overload_level_1.period, 60.0);
|
|
//
|
|
// current input overload level 2 130% 10s
|
|
add_float( 0, &sys_config->phase_alert_monitor.current_input_overload_level_2.level, 131.0 * 1.2);
|
|
add_float( 0, &sys_config->phase_alert_monitor.current_input_overload_level_2.period, 10.0);
|
|
//
|
|
// current input overload level 3 150% 1ms
|
|
add_float( 0, &sys_config->phase_alert_monitor.current_input_overload_level_3.level, 131.0 * 1.3);
|
|
add_float( 0, &sys_config->phase_alert_monitor.current_input_overload_level_3.period, 0.004);
|
|
//<>
|
|
|
|
|
|
//
|
|
// DIGITAL INPUTS
|
|
//
|
|
add_float( 0, &sys_config->digital_input_config.period, 50.0e-3); //3001 - 3020
|
|
//<>
|
|
|
|
|
|
//
|
|
// FAN CONTROL
|
|
//
|
|
add_float( 0, &sys_config->fan_control.timer_period, 5.0*60.0);
|
|
//<>
|
|
|
|
|
|
//
|
|
// Generator ABC
|
|
//
|
|
add_float( 0, &sys_config->generator_abc.amplitude, 1.0);
|
|
add_float( 0, &sys_config->generator_abc.frequency, 2.0*FP_PI*50.0);
|
|
add_float( 0, &sys_config->generator_abc.phase_shift, 0.0);
|
|
//<>
|
|
|
|
|
|
//
|
|
// Reference PWM-Generator
|
|
//
|
|
//add_float( 0, &sys_config->generator_pwm.frequency, 2.0*FP_PI*1.0);
|
|
//add_float( 0, &sys_config->generator_abc.phase_shift, 0.0);
|
|
|
|
//add_float( 0, &sys_config->gen_inp_volt.amplitude.direct.d, 220.0);
|
|
//
|
|
//add_float( 0, &sys_config->gen_out_volt.amplitude.direct.d, 220.0);
|
|
//add_float( 0, &sys_config->gen_out_volt.phase.direct.phase, 0.122756);//FP_PI/4.0);
|
|
//
|
|
//add_float( 0, &sys_config->gen_out_current.amplitude.direct.d, 50.0);
|
|
//add_float( 0, &sys_config->gen_out_current.phase.direct.phase, 0.122756);//FP_PI/3.0;
|
|
//<>
|
|
|
|
//
|
|
// AlgorithmGeneratorReferences
|
|
//
|
|
add_float( 0, &sys_config->algorithm_source_references.voltage, 0.0);
|
|
add_float( 0, &sys_config->algorithm_source_references.phase_shift, 0.0);
|
|
|
|
//
|
|
// Harmonica Analyzer
|
|
//
|
|
add_float( 0, &sys_config->ph_harmonica_5.time, 50.0e-3);
|
|
add_float( 0, &sys_config->ph_harmonica_5.a3, 2.61313);
|
|
add_float( 0, &sys_config->ph_harmonica_5.a2, 3.41422);
|
|
add_float( 0, &sys_config->ph_harmonica_5.a1, 2.61313);
|
|
//<>
|
|
|
|
|
|
|
|
//
|
|
// Reference Intensity Idref Iqref in Start Mode
|
|
//
|
|
add_float( 0, &sys_config->intensity_id_iq_references.damp_factor, 0.7071);
|
|
add_float( 0, &sys_config->intensity_id_iq_references.time, 20.0e-3);
|
|
//<>
|
|
|
|
|
|
//
|
|
// Regulators
|
|
//
|
|
|
|
#if TYPECONTROL == VECTORCONTROL
|
|
//
|
|
#if TYPE_VOLTAGE_CONTROLLER == VOLTAGE_CONTROLLER_PII
|
|
add_float( 0, &sys_config->regulator_voltage_load_dq.gain, 1.0);
|
|
add_float( 0, &sys_config->regulator_voltage_load_dq.time, 1.6e-3);
|
|
add_float( 0, &sys_config->regulator_voltage_load_dq.high_saturation, 4500.0);
|
|
add_float( 0, &sys_config->regulator_voltage_load_dq.low_saturation, -4500.0);
|
|
//
|
|
add_float( 0, &sys_config->integrator_voltage_dq.time, 2.0e-3);
|
|
add_float( 0, &sys_config->integrator_voltage_dq.high_saturation, 4500.0);
|
|
add_float( 0, &sys_config->integrator_voltage_dq.low_saturation, -4500.0);
|
|
//
|
|
add_float( 0, &sys_config->reference_voltage_dq_intensity.time, 200.0e-3);
|
|
//
|
|
#endif
|
|
#if TYPE_VOLTAGE_CONTROLLER == VOLTAGE_CONTROLLER_I
|
|
|
|
add_float( 0, &sys_config->regulator_voltage_load_dq.gain, 0.4);
|
|
add_float( 0, &sys_config->regulator_voltage_load_dq.time, 1600.0e-6);
|
|
add_float( 0, &sys_config->regulator_voltage_load_dq.high_saturation, 4500.0);
|
|
add_float( 0, &sys_config->regulator_voltage_load_dq.low_saturation, -4500.0);
|
|
|
|
//
|
|
add_float( 0, &sys_config->integrator_voltage_dq.time, 4.0e-3); // 4.0e-3 for single winding; 2.0e-3 for double winding
|
|
add_float( 0, &sys_config->integrator_voltage_dq.high_saturation, 4500.0);
|
|
add_float( 0, &sys_config->integrator_voltage_dq.low_saturation, -4500.0);
|
|
//
|
|
add_float( 0, &sys_config->reference_voltage_dq_intensity.time, 200.0e-3);
|
|
//
|
|
#endif
|
|
//
|
|
//add_float( 0, &sys_config->regulator_current_limit.gain, 1.0);
|
|
add_float( 0, &sys_config->regulator_current_limit.time, 140.0e-3);
|
|
add_float( 0, &sys_config->regulator_current_limit.high_saturation, REGULATOR_CURRENT_LIMIT_HIGH_SATURATION);
|
|
add_float( 0, &sys_config->regulator_current_limit.low_saturation, REGULATOR_CURRENT_LIMIT_LOW_SATURATION);
|
|
//
|
|
add_float( 0, &sys_config->regulator_current_pfc.gain, 0.25);
|
|
add_float( 0, &sys_config->regulator_current_pfc.time, 800.0e-3);
|
|
add_float( 0, &sys_config->regulator_current_pfc.high_saturation, REGULATOR_CURRENT_PFC_HIGH_SATURATION);
|
|
add_float( 0, &sys_config->regulator_current_pfc.low_saturation, REGULATOR_CURRENT_PFC_LOW_SATURATION);
|
|
//
|
|
#if TYPECURRENTCONTROLLER == CURRENTCONTROLLER_PI
|
|
add_float( 0, &sys_config->regulator_current_load_dq.gain, 8.0); // 4.0 for single winding; 8.0 for double winding
|
|
add_float( 0, &sys_config->regulator_current_load_dq.time, 6.4e-3);
|
|
add_float( 0, &sys_config->regulator_current_load_dq.high_saturation, 500.0);
|
|
add_float( 0, &sys_config->regulator_current_load_dq.low_saturation, -500.0);
|
|
#endif
|
|
#if TYPECURRENTCONTROLLER == CURRENTCONTROLLER_P
|
|
add_float( 0, &sys_config->regulator_current_load_dq.gain, 8.0);
|
|
add_float( 0, &sys_config->regulator_current_load_dq.high_saturation, 500.0);
|
|
add_float( 0, &sys_config->regulator_current_load_dq.low_saturation, -500.0);
|
|
#endif
|
|
//
|
|
add_float( 0, &sys_config->referencer_current_bypass_dq.time, 25.6e-3);
|
|
add_float( 0, &sys_config->referencer_current_bypass_dq.high_saturation, 240.0);
|
|
add_float( 0, &sys_config->referencer_current_bypass_dq.low_saturation, -240.0);
|
|
//
|
|
#endif
|
|
|
|
|
|
#if TYPECONTROL == SCALARCONTROL
|
|
|
|
#if SCALARCONTROL_VOLTAGEREGULATOR == SCALARCONTROL_VOLTAGEREGULATOR_ABC
|
|
#if TYPEVOLTAGEDECOMPOSE == TYPEVOLTAGEDECOMPOSE_DIFFICULT
|
|
add_float( 0, &sys_config->regulator_voltage_load_active_reactive.gain, 0.04);
|
|
add_float( 0, &sys_config->regulator_voltage_load_active_reactive.time, 10.0e-3);
|
|
add_float( 0, &sys_config->regulator_voltage_load_active_reactive.high_saturation, REGULATOR_VOLTAGE_ABC_SATURATION);
|
|
add_float( 0, &sys_config->regulator_voltage_load_active_reactive.low_saturation, -REGULATOR_VOLTAGE_ABC_SATURATION);
|
|
#endif
|
|
#if TYPEVOLTAGEDECOMPOSE == TYPEVOLTAGEDECOMPOSE_SIMPLE
|
|
add_float( 0, &sys_config->regulator_voltage_load_active_reactive.gain, 1/5.0);
|
|
add_float( 0, &sys_config->regulator_voltage_load_active_reactive.time, REGULATORVOLTAGETIME);
|
|
add_float( 0, &sys_config->regulator_voltage_load_active_reactive.high_saturation, REGULATOR_VOLTAGE_ABC_SATURATION); // for debug!!!
|
|
add_float( 0, &sys_config->regulator_voltage_load_active_reactive.low_saturation, -REGULATOR_VOLTAGE_ABC_SATURATION); // for debug!!!
|
|
#endif
|
|
#endif
|
|
#if SCALARCONTROL_VOLTAGEREGULATOR == SCALARCONTROL_VOLTAGEREGULATOR_RMS
|
|
add_float( 0, &sys_config->reference_voltage_load_rms_intensity.time, REFERENCE_INTENSITY_VOLTAGE_RMS_TIME);
|
|
add_float( 0, &sys_config->regulator_voltage_load_rms.time, REGULATOR_VOLTAGE_RMS_TIME);
|
|
add_float( 0, &sys_config->regulator_voltage_load_rms.high_saturation, REGULATOR_VOLTAGE_RMS_SATURATION);
|
|
add_float( 0, &sys_config->regulator_voltage_load_rms.low_saturation, FP_ZERO);
|
|
#endif
|
|
//
|
|
add_float( 0, &sys_config->regulator_current_limit.gain, 1.0);
|
|
add_float( 0, &sys_config->regulator_current_limit.time, 5.0);
|
|
add_float( 0, &sys_config->regulator_current_limit.high_saturation, GRID_VOLTAGE_REFERENCE * 0.57735);
|
|
add_float( 0, &sys_config->regulator_current_limit.low_saturation, FP_ZERO);
|
|
//
|
|
add_float( 0, &sys_config->regulator_current_pfc.gain, 0.25);
|
|
add_float( 0, &sys_config->regulator_current_pfc.time, 800.0e-3);
|
|
add_float( 0, &sys_config->regulator_current_pfc.high_saturation, GRID_VOLTAGE_REFERENCE * 0.57735);
|
|
add_float( 0, &sys_config->regulator_current_pfc.low_saturation, -GRID_VOLTAGE_REFERENCE * 0.57735);
|
|
//
|
|
add_float( 0, &sys_config->current_regulator_active.gain, 0.17); // 0.34 for single winding 0.17 for double winding
|
|
add_float( 0, &sys_config->current_regulator_active.time, 0.08);
|
|
add_float( 0, &sys_config->current_regulator_active.high_saturation, 500.0);
|
|
add_float( 0, &sys_config->current_regulator_active.low_saturation, -500.0);
|
|
//
|
|
add_float( 0, &sys_config->current_regulator_reactive.gain, 0.17); // 0.34 for single winding 0.17 for double winding
|
|
add_float( 0, &sys_config->current_regulator_reactive.time, 0.08);
|
|
add_float( 0, &sys_config->current_regulator_reactive.high_saturation, 500.0);
|
|
add_float( 0, &sys_config->current_regulator_reactive.low_saturation, -500.0);
|
|
//
|
|
add_float( 0, &sys_config->current_referencer.gain, 1.0);
|
|
add_float( 0, &sys_config->current_referencer.time, 0.160);
|
|
add_float( 0, &sys_config->current_referencer.high_saturation, 57.8);
|
|
add_float( 0, &sys_config->current_referencer.low_saturation, -57.8);
|
|
//
|
|
//add_float( 0, &sys_config->regulator_dc_voltage.gain, 0.05);
|
|
//add_float( 0, &sys_config->regulator_dc_voltage.time, 800.0e-3);
|
|
//add_float( 0, &sys_config->regulator_dc_voltage.high_saturation, FP_ZERO);
|
|
//add_float( 0, &sys_config->regulator_dc_voltage.low_saturation, -GRID_VOLTAGE_REFERENCE * 0.57735);
|
|
#endif
|
|
//<>
|
|
|
|
|
|
#if TYPECONTROL == DIRECTREVERSECONTROL
|
|
//
|
|
add_float( 0, &sys_config->drc_voltage_decomposer.filter.time, 31.83e-3); //31.83e-3//6.366e-3//3.183e-3
|
|
//
|
|
add_float( 0, &sys_config->drc_voltage_controller.gain, 0.4); //0.4 - for single winding; 0.7958 - for double winding. //7.958//1.592//0.7958
|
|
add_float( 0, &sys_config->drc_voltage_controller.time, 3.2e-3); //31.83e-3//6.366e-3//3.183e-3
|
|
add_float( 0, &sys_config->drc_voltage_controller.high_saturation, 1276.0);
|
|
add_float( 0, &sys_config->drc_voltage_controller.low_saturation, -1276.0);
|
|
//
|
|
add_float( 0, &sys_config->drc_reference_voltage_direct_intensity.time, 333.0e-3);
|
|
add_float( 0, &sys_config->drc_reference_voltage_direct_intensity.damp_factor, 0.9);
|
|
//
|
|
add_float( 0, &sys_config->drc_regulator_current_load.gain, 4.0);// 4.0 - for single winding; 8.0 - for double winding
|
|
add_float( 0, &sys_config->drc_regulator_current_load.time, 6.4e-3);
|
|
add_float( 0, &sys_config->drc_regulator_current_load.high_saturation, 500.0);
|
|
add_float( 0, &sys_config->drc_regulator_current_load.low_saturation, -500.0);
|
|
//
|
|
add_float( 0, &sys_config->drc_referencer_current_bypass.time, 25.6e-3);
|
|
add_float( 0, &sys_config->drc_referencer_current_bypass.high_saturation, 240.0);
|
|
add_float( 0, &sys_config->drc_referencer_current_bypass.low_saturation, -240.0);
|
|
//
|
|
add_float( 0, &sys_config->drc_regulator_current_limit.time, 140.0e-3);
|
|
add_float( 0, &sys_config->drc_regulator_current_limit.high_saturation, REGULATOR_CURRENT_LIMIT_HIGH_SATURATION);
|
|
add_float( 0, &sys_config->drc_regulator_current_limit.low_saturation, REGULATOR_CURRENT_LIMIT_LOW_SATURATION);
|
|
//
|
|
add_float( 0, &sys_config->drc_regulator_current_pfc.gain, 0.25);
|
|
add_float( 0, &sys_config->drc_regulator_current_pfc.time, 800.0e-3);
|
|
add_float( 0, &sys_config->drc_regulator_current_pfc.high_saturation, REGULATOR_CURRENT_PFC_HIGH_SATURATION);
|
|
add_float( 0, &sys_config->drc_regulator_current_pfc.low_saturation, REGULATOR_CURRENT_PFC_LOW_SATURATION);
|
|
//
|
|
#endif
|
|
//<>
|
|
|
|
|
|
|
|
//
|
|
// Timers
|
|
//
|
|
add_float( 0, &sys_config->timer_start.period, 5.0);
|
|
add_float( 0, &sys_config->timer_stop.period, 5.0);
|
|
//<>
|
|
|
|
|
|
//
|
|
// Contactor Control Fault
|
|
//
|
|
add_float( 0, &sys_config->contactor.period, 0.4);
|
|
|
|
|
|
}//
|
|
|
|
} /* namespace FRAM */
|