2025-01-15 11:01:26 +03:00
|
|
|
|
#include "mcu_wrapper_conf.h"
|
2025-01-15 12:35:47 +03:00
|
|
|
|
#include "pwm_sim.h"
|
2024-12-27 10:50:32 +03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
T_project project = {0};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
WINDING a;
|
|
|
|
|
EDRK edrk = EDRK_DEFAULT;
|
2025-01-13 11:09:58 +03:00
|
|
|
|
FLAG f = FLAG_DEFAULTS;
|
2025-01-23 15:34:55 +03:00
|
|
|
|
//X_PARALLEL_BUS x_parallel_bus_project = X_PARALLEL_BUS_DEFAULTS;
|
|
|
|
|
//int Unites2SecondBS[SIZE_ARR_CAN_UNITES_BS2BS] = { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
|
|
|
|
|
// 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
|
|
|
|
|
// 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
|
|
|
|
|
// 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\
|
|
|
|
|
//};
|
|
|
|
|
//LOGSPARAMS logpar = LOGSPARAMS_DEFAULTS;
|
|
|
|
|
//OPTICAL_BUS_DATA optical_write_data = OPTICAL_BUS_DATA_DEFAULT;
|
|
|
|
|
//OPTICAL_BUS_DATA optical_read_data = OPTICAL_BUS_DATA_DEFAULT;
|
|
|
|
|
//SYNC_TOOLS_DATA sync_data = SYNC_TOOLS_DATA_DEFAULT;
|
|
|
|
|
//int flag_enable_can_from_mpu = 0;
|
|
|
|
|
//UNITES_CAN_SETUP unites_can_setup = UNITES_CAN_SETUP_DEFAULT;
|
|
|
|
|
//OSCIL_CAN oscil_can = OSCIL_CAN_DEFAULTS;
|
|
|
|
|
//int flag_special_mode_rs = 0;
|
|
|
|
|
//ALARM_LOG_CAN alarm_log_can = ALARM_LOG_CAN_CAN_DEFAULTS;
|
2024-12-27 10:50:32 +03:00
|
|
|
|
|
2025-01-13 13:05:34 +03:00
|
|
|
|
WRotorValues WRotor = WRotorValues_DEFAULTS;
|
2025-01-15 13:39:33 +03:00
|
|
|
|
WRotorValuesAngle WRotorPBus = WRotorValuesAngle_DEFAULTS;
|
2024-12-27 10:50:32 +03:00
|
|
|
|
|
2025-01-13 16:58:59 +03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void mcu_simulate_step(void)
|
|
|
|
|
{
|
|
|
|
|
int ff = 0;
|
|
|
|
|
static _iq Uzad1 = 0, Fzad = 0, Uzad2 = 0, Izad_out = 0, Uzad_from_master = 0;
|
2025-01-14 13:26:48 +03:00
|
|
|
|
int pwm_enable_calc_main;
|
2025-01-13 16:58:59 +03:00
|
|
|
|
_iq wd;
|
|
|
|
|
|
|
|
|
|
if (edrk.flag_second_PCH == 0) {
|
|
|
|
|
wd = uf_alg.winding_displacement_bs1;
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
wd = uf_alg.winding_displacement_bs2;
|
|
|
|
|
}
|
|
|
|
|
|
2025-01-15 13:39:33 +03:00
|
|
|
|
detect_level_interrupt();
|
2025-01-14 13:26:48 +03:00
|
|
|
|
if (xpwm_time.where_interrupt == PWM_LOW_LEVEL_INTERRUPT ||
|
|
|
|
|
xpwm_time.one_or_two_interrupts_run == PWM_ONE_INTERRUPT_RUN)
|
|
|
|
|
{
|
|
|
|
|
pwm_enable_calc_main = 1;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
pwm_enable_calc_main = 0;
|
|
|
|
|
}
|
2025-01-13 16:58:59 +03:00
|
|
|
|
|
|
|
|
|
|
2025-01-19 23:05:29 +03:00
|
|
|
|
ramp_all_zadanie(0); // <20><><EFBFBD> <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2025-01-13 16:58:59 +03:00
|
|
|
|
|
2025-01-15 13:39:33 +03:00
|
|
|
|
calc_norm_ADC(0);
|
2025-01-13 16:58:59 +03:00
|
|
|
|
|
2025-01-16 13:10:11 +03:00
|
|
|
|
|
|
|
|
|
if (edrk.Mode_ScalarVectorUFConst == ALG_MODE_SCALAR_OBOROTS || edrk.Mode_ScalarVectorUFConst == ALG_MODE_SCALAR_POWER)
|
|
|
|
|
{
|
|
|
|
|
#if(_ENABLE_PWM_LINES_FOR_TESTS_PWM)
|
|
|
|
|
PWM_LINES_TK_20_ON;
|
|
|
|
|
#endif
|
|
|
|
|
simple_scalar(1, 0,
|
|
|
|
|
WRotor.iqWRotorCalcBeforeRegul1, WRotor.iqWRotorCalcBeforeRegul1, edrk.zadanie.iq_oborots_zad_hz_rmp,
|
|
|
|
|
edrk.temper_limit_koeffs.sum_limit,
|
|
|
|
|
edrk.zadanie.iq_Izad_rmp, edrk.iq_bpsi_normal,
|
|
|
|
|
analog.iqIm,
|
|
|
|
|
// analog.iqU_1_long+analog.iqU_2_long,
|
|
|
|
|
edrk.zadanie.iq_ZadanieU_Charge_rmp + edrk.zadanie.iq_ZadanieU_Charge_rmp,
|
|
|
|
|
analog.iqIin_sum,
|
|
|
|
|
edrk.zadanie.iq_power_zad_rmp, (filter.PowerScalar + edrk.iq_power_kw_another_bs),
|
|
|
|
|
edrk.master_Izad, edrk.MasterSlave,
|
|
|
|
|
&Fzad, &Uzad1, &Uzad2, &Izad_out);
|
|
|
|
|
|
|
|
|
|
test_calc_simple_dq_pwm24_Ing(Fzad, Uzad1, edrk.disable_alg_u_disbalance,
|
|
|
|
|
edrk.zadanie.iq_kplus_u_disbalance, edrk.zadanie.iq_k_u_disbalance, filter.iqU_1_fast, filter.iqU_2_fast,
|
|
|
|
|
0,
|
|
|
|
|
edrk.Uzad_max,
|
|
|
|
|
edrk.master_theta,
|
|
|
|
|
Uzad1, //edrk.master_Uzad,
|
|
|
|
|
edrk.MasterSlave,
|
|
|
|
|
edrk.flag_second_PCH,
|
|
|
|
|
&edrk.Kplus, &edrk.tetta_to_slave, &edrk.Uzad_to_slave);
|
|
|
|
|
|
|
|
|
|
} // end ALG_MODE_SCALAR
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
if (edrk.flag_second_PCH == 0) {
|
|
|
|
|
wd = uf_alg.winding_displacement_bs1;
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
wd = uf_alg.winding_displacement_bs2;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
analog_dq_calc_external(wd, uf_alg.tetta);
|
|
|
|
|
|
|
|
|
|
vectorControlConstId(edrk.zadanie.iq_power_zad_rmp, edrk.zadanie.iq_oborots_zad_hz_rmp,
|
|
|
|
|
WRotorPBus.RotorDirection1, WRotor.iqWRotorCalcBeforeRegul1,
|
|
|
|
|
edrk.Mode_ScalarVectorUFConst,
|
|
|
|
|
edrk.MasterSlave, edrk.zadanie.iq_Izad, wd,
|
|
|
|
|
edrk.master_theta, edrk.master_Iq, edrk.iq_power_kw_another_bs,
|
|
|
|
|
&edrk.tetta_to_slave, &edrk.Iq_to_slave, &edrk.P_to_master,
|
|
|
|
|
0, 0);
|
|
|
|
|
|
|
|
|
|
test_calc_vect_dq_pwm24_Ing(vect_control.iqTheta, vect_control.iqUdKm, vect_control.iqUqKm,
|
|
|
|
|
edrk.disable_alg_u_disbalance,
|
|
|
|
|
edrk.zadanie.iq_kplus_u_disbalance_rmp, edrk.zadanie.iq_k_u_disbalance_rmp,
|
|
|
|
|
filter.iqU_1_fast, filter.iqU_2_fast,
|
|
|
|
|
0,
|
|
|
|
|
edrk.Uzad_max,
|
|
|
|
|
edrk.MasterSlave,
|
|
|
|
|
edrk.flag_second_PCH,
|
|
|
|
|
&edrk.Kplus, &edrk.Uzad_to_slave);
|
|
|
|
|
analog.PowerFOC = edrk.P_to_master;
|
|
|
|
|
Fzad = vect_control.iqFstator;
|
|
|
|
|
Izad_out = edrk.Iq_to_slave;
|
|
|
|
|
}// end ALG_MODE_FOC
|
2025-01-14 13:26:48 +03:00
|
|
|
|
|
|
|
|
|
if (xpwm_time.one_or_two_interrupts_run == PWM_ONE_INTERRUPT_RUN)
|
|
|
|
|
write_swgen_pwm_times(PWM_MODE_RELOAD_FORCE);
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
if (pwm_enable_calc_main)
|
|
|
|
|
write_swgen_pwm_times(PWM_MODE_RELOAD_LEVEL_HIGH);
|
|
|
|
|
else
|
|
|
|
|
write_swgen_pwm_times(PWM_MODE_RELOAD_LEVEL_LOW);
|
|
|
|
|
}
|
2025-01-13 16:58:59 +03:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2025-01-23 15:34:55 +03:00
|
|
|
|
void init_ramp_all_zadanie(void)
|
|
|
|
|
{
|
|
|
|
|
_iq rampafloat;
|
|
|
|
|
|
|
|
|
|
// rmp_fzad
|
|
|
|
|
edrk.zadanie.rmp_fzad.RampLowLimit = _IQ(-MAX_ZADANIE_F / NORMA_FROTOR); //0
|
|
|
|
|
edrk.zadanie.rmp_fzad.RampHighLimit = _IQ(MAX_ZADANIE_F / NORMA_FROTOR);
|
|
|
|
|
|
|
|
|
|
rampafloat = _IQ(1.0 / (2.0 * FREQ_PWM * T_NARAST_ZADANIE_F));
|
|
|
|
|
edrk.zadanie.rmp_fzad.RampPlus = rampafloat;
|
|
|
|
|
edrk.zadanie.rmp_fzad.RampMinus = -rampafloat;
|
|
|
|
|
|
|
|
|
|
edrk.zadanie.rmp_fzad.DesiredInput = 0;
|
|
|
|
|
edrk.zadanie.rmp_fzad.Out = 0;
|
|
|
|
|
|
|
|
|
|
// rmp_oborots_hz
|
|
|
|
|
edrk.zadanie.rmp_oborots_zad_hz.RampLowLimit = _IQ(MIN_ZADANIE_OBOROTS_ROTOR / 60.0 / NORMA_FROTOR); //0
|
|
|
|
|
edrk.zadanie.rmp_oborots_zad_hz.RampHighLimit = _IQ(MAX_ZADANIE_OBOROTS_ROTOR / 60.0 / NORMA_FROTOR);
|
|
|
|
|
|
|
|
|
|
rampafloat = _IQ(1.0 / (2.0 * FREQ_PWM * T_NARAST_ZADANIE_OBOROTS_ROTOR));
|
|
|
|
|
edrk.zadanie.rmp_oborots_zad_hz.RampPlus = rampafloat;
|
|
|
|
|
edrk.zadanie.rmp_oborots_zad_hz.RampMinus = -rampafloat;
|
|
|
|
|
|
|
|
|
|
edrk.zadanie.rmp_oborots_zad_hz.DesiredInput = 0;
|
|
|
|
|
edrk.zadanie.rmp_oborots_zad_hz.Out = 0;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//
|
|
|
|
|
edrk.zadanie.rmp_Izad.RampLowLimit = _IQ(0); //0
|
|
|
|
|
edrk.zadanie.rmp_Izad.RampHighLimit = _IQ(MAX_ZADANIE_I_M / NORMA_ACP);
|
|
|
|
|
|
|
|
|
|
rampafloat = _IQ(1.0 / (2.0 * FREQ_PWM * T_NARAST_ZADANIE_I_M));
|
|
|
|
|
edrk.zadanie.rmp_Izad.RampPlus = rampafloat;
|
|
|
|
|
edrk.zadanie.rmp_Izad.RampMinus = -rampafloat;
|
|
|
|
|
|
|
|
|
|
edrk.zadanie.rmp_Izad.DesiredInput = 0;
|
|
|
|
|
edrk.zadanie.rmp_Izad.Out = 0;
|
|
|
|
|
|
|
|
|
|
//
|
|
|
|
|
edrk.zadanie.rmp_ZadanieU_Charge.RampLowLimit = _IQ(0); //0
|
|
|
|
|
edrk.zadanie.rmp_ZadanieU_Charge.RampHighLimit = _IQ(MAX_ZADANIE_U_CHARGE / NORMA_ACP);
|
|
|
|
|
|
|
|
|
|
rampafloat = _IQ(1.0 / (2.0 * FREQ_PWM * T_NARAST_ZADANIE_U_CHARGE));
|
|
|
|
|
edrk.zadanie.rmp_ZadanieU_Charge.RampPlus = rampafloat;
|
|
|
|
|
edrk.zadanie.rmp_ZadanieU_Charge.RampMinus = -rampafloat;
|
|
|
|
|
|
|
|
|
|
edrk.zadanie.rmp_ZadanieU_Charge.DesiredInput = 0;
|
|
|
|
|
edrk.zadanie.rmp_ZadanieU_Charge.Out = 0;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//
|
|
|
|
|
edrk.zadanie.rmp_k_u_disbalance.RampLowLimit = _IQ(0); //0
|
|
|
|
|
edrk.zadanie.rmp_k_u_disbalance.RampHighLimit = _IQ(MAX_ZADANIE_K_U_DISBALANCE);
|
|
|
|
|
|
|
|
|
|
rampafloat = _IQ(1.0 / (2.0 * FREQ_PWM * T_NARAST_ZADANIE_K_U_DISBALANCE));
|
|
|
|
|
edrk.zadanie.rmp_k_u_disbalance.RampPlus = rampafloat;
|
|
|
|
|
edrk.zadanie.rmp_k_u_disbalance.RampMinus = -rampafloat;
|
|
|
|
|
|
|
|
|
|
edrk.zadanie.rmp_k_u_disbalance.DesiredInput = 0;
|
|
|
|
|
edrk.zadanie.rmp_k_u_disbalance.Out = 0;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//
|
|
|
|
|
edrk.zadanie.rmp_kplus_u_disbalance.RampLowLimit = _IQ(0); //0
|
|
|
|
|
edrk.zadanie.rmp_kplus_u_disbalance.RampHighLimit = _IQ(MAX_ZADANIE_KPLUS_U_DISBALANCE);
|
|
|
|
|
|
|
|
|
|
rampafloat = _IQ(1.0 / (2.0 * FREQ_PWM * T_NARAST_ZADANIE_KPLUS_U_DISBALANCE));
|
|
|
|
|
edrk.zadanie.rmp_kplus_u_disbalance.RampPlus = rampafloat;
|
|
|
|
|
edrk.zadanie.rmp_kplus_u_disbalance.RampMinus = -rampafloat;
|
|
|
|
|
|
|
|
|
|
edrk.zadanie.rmp_kplus_u_disbalance.DesiredInput = 0;
|
|
|
|
|
edrk.zadanie.rmp_kplus_u_disbalance.Out = 0;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//
|
|
|
|
|
edrk.zadanie.rmp_kzad.RampLowLimit = _IQ(0); //0
|
|
|
|
|
edrk.zadanie.rmp_kzad.RampHighLimit = _IQ(MAX_ZADANIE_K_M);
|
|
|
|
|
|
|
|
|
|
rampafloat = _IQ(1.0 / (2.0 * FREQ_PWM * T_NARAST_ZADANIE_K_M));
|
|
|
|
|
edrk.zadanie.rmp_kzad.RampPlus = rampafloat;
|
|
|
|
|
edrk.zadanie.rmp_kzad.RampMinus = -rampafloat;
|
|
|
|
|
|
|
|
|
|
edrk.zadanie.rmp_kzad.DesiredInput = 0;
|
|
|
|
|
edrk.zadanie.rmp_kzad.Out = 0;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//
|
|
|
|
|
edrk.zadanie.rmp_powers_zad.RampLowLimit = _IQ(MIN_ZADANIE_POWER * 1000.0 / (NORMA_MZZ * NORMA_MZZ)); //0
|
|
|
|
|
edrk.zadanie.rmp_powers_zad.RampHighLimit = _IQ(MAX_ZADANIE_POWER * 1000.0 / (NORMA_MZZ * NORMA_MZZ));
|
|
|
|
|
|
|
|
|
|
rampafloat = _IQ(1.0 / (2.0 * FREQ_PWM * T_NARAST_ZADANIE_POWER));
|
|
|
|
|
edrk.zadanie.rmp_powers_zad.RampPlus = rampafloat;
|
|
|
|
|
edrk.zadanie.rmp_powers_zad.RampMinus = -rampafloat;
|
|
|
|
|
|
|
|
|
|
edrk.zadanie.rmp_powers_zad.DesiredInput = 0;
|
|
|
|
|
edrk.zadanie.rmp_powers_zad.Out = 0;
|
|
|
|
|
|
|
|
|
|
//
|
|
|
|
|
edrk.zadanie.rmp_limit_powers_zad.RampLowLimit = _IQ(0); //0
|
|
|
|
|
edrk.zadanie.rmp_limit_powers_zad.RampHighLimit = _IQ(MAX_ZADANIE_POWER * 1000.0 / (NORMA_MZZ * NORMA_MZZ));
|
|
|
|
|
|
|
|
|
|
rampafloat = _IQ(1.0 / (2.0 * FREQ_PWM * T_NARAST_ZADANIE_POWER));
|
|
|
|
|
edrk.zadanie.rmp_limit_powers_zad.RampPlus = rampafloat;
|
|
|
|
|
edrk.zadanie.rmp_limit_powers_zad.RampMinus = -rampafloat;
|
2025-01-13 16:58:59 +03:00
|
|
|
|
|
2025-01-23 15:34:55 +03:00
|
|
|
|
edrk.zadanie.rmp_limit_powers_zad.DesiredInput = 0;
|
|
|
|
|
edrk.zadanie.rmp_limit_powers_zad.Out = 0;
|
|
|
|
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void ramp_all_zadanie(int flag_set_zero)
|
|
|
|
|
{
|
|
|
|
|
//////////////////////////////////////////////
|
|
|
|
|
if (flag_set_zero == 0)
|
|
|
|
|
edrk.zadanie.rmp_Izad.DesiredInput = edrk.zadanie.iq_Izad;
|
|
|
|
|
else
|
|
|
|
|
if (flag_set_zero == 2)
|
|
|
|
|
{
|
|
|
|
|
edrk.zadanie.rmp_Izad.DesiredInput = 0;
|
|
|
|
|
edrk.zadanie.rmp_Izad.Out = 0;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
edrk.zadanie.rmp_Izad.DesiredInput = 0;
|
|
|
|
|
|
|
|
|
|
edrk.zadanie.rmp_Izad.calc(&edrk.zadanie.rmp_Izad);
|
|
|
|
|
edrk.zadanie.iq_Izad_rmp = edrk.zadanie.rmp_Izad.Out;
|
|
|
|
|
//////////////////////////////////////////////
|
|
|
|
|
edrk.zadanie.rmp_ZadanieU_Charge.DesiredInput = edrk.zadanie.iq_ZadanieU_Charge;
|
|
|
|
|
edrk.zadanie.rmp_ZadanieU_Charge.calc(&edrk.zadanie.rmp_ZadanieU_Charge);
|
|
|
|
|
edrk.zadanie.iq_ZadanieU_Charge_rmp = edrk.zadanie.rmp_ZadanieU_Charge.Out;
|
|
|
|
|
//////////////////////////////////////////////
|
|
|
|
|
if (flag_set_zero == 0)
|
|
|
|
|
edrk.zadanie.rmp_fzad.DesiredInput = edrk.zadanie.iq_fzad;
|
|
|
|
|
else
|
|
|
|
|
if (flag_set_zero == 2)
|
|
|
|
|
{
|
|
|
|
|
edrk.zadanie.rmp_fzad.DesiredInput = 0;
|
|
|
|
|
edrk.zadanie.rmp_fzad.Out = 0;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
edrk.zadanie.rmp_fzad.DesiredInput = 0;
|
|
|
|
|
|
|
|
|
|
edrk.zadanie.rmp_fzad.calc(&edrk.zadanie.rmp_fzad);
|
|
|
|
|
edrk.zadanie.iq_fzad_rmp = edrk.zadanie.rmp_fzad.Out;
|
|
|
|
|
//////////////////////////////////////////////
|
|
|
|
|
edrk.zadanie.rmp_k_u_disbalance.DesiredInput = edrk.zadanie.iq_k_u_disbalance;
|
|
|
|
|
edrk.zadanie.rmp_k_u_disbalance.calc(&edrk.zadanie.rmp_k_u_disbalance);
|
|
|
|
|
edrk.zadanie.iq_k_u_disbalance_rmp = edrk.zadanie.rmp_k_u_disbalance.Out;
|
|
|
|
|
//////////////////////////////////////////////
|
|
|
|
|
edrk.zadanie.rmp_kplus_u_disbalance.DesiredInput = edrk.zadanie.iq_kplus_u_disbalance;
|
|
|
|
|
edrk.zadanie.rmp_kplus_u_disbalance.calc(&edrk.zadanie.rmp_kplus_u_disbalance);
|
|
|
|
|
edrk.zadanie.iq_kplus_u_disbalance_rmp = edrk.zadanie.rmp_kplus_u_disbalance.Out;
|
|
|
|
|
//////////////////////////////////////////////
|
|
|
|
|
if (flag_set_zero == 0)
|
|
|
|
|
edrk.zadanie.rmp_kzad.DesiredInput = edrk.zadanie.iq_kzad;
|
|
|
|
|
else
|
|
|
|
|
if (flag_set_zero == 2)
|
|
|
|
|
{
|
|
|
|
|
edrk.zadanie.rmp_kzad.DesiredInput = 0;
|
|
|
|
|
edrk.zadanie.rmp_kzad.Out = 0;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
edrk.zadanie.rmp_kzad.DesiredInput = 0;
|
|
|
|
|
edrk.zadanie.rmp_kzad.calc(&edrk.zadanie.rmp_kzad);
|
|
|
|
|
edrk.zadanie.iq_kzad_rmp = edrk.zadanie.rmp_kzad.Out;
|
|
|
|
|
//////////////////////////////////////////////
|
|
|
|
|
if (flag_set_zero == 0)
|
|
|
|
|
edrk.zadanie.rmp_oborots_zad_hz.DesiredInput = edrk.zadanie.iq_oborots_zad_hz;
|
|
|
|
|
else
|
|
|
|
|
if (flag_set_zero == 2)
|
|
|
|
|
{
|
|
|
|
|
edrk.zadanie.rmp_oborots_zad_hz.DesiredInput = 0;
|
|
|
|
|
edrk.zadanie.rmp_oborots_zad_hz.Out = 0;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
edrk.zadanie.rmp_oborots_zad_hz.DesiredInput = 0;
|
|
|
|
|
|
|
|
|
|
edrk.zadanie.rmp_oborots_zad_hz.calc(&edrk.zadanie.rmp_oborots_zad_hz);
|
|
|
|
|
edrk.zadanie.iq_oborots_zad_hz_rmp = edrk.zadanie.rmp_oborots_zad_hz.Out;
|
|
|
|
|
|
|
|
|
|
//////////////////////////////////////////////
|
|
|
|
|
if (flag_set_zero == 0)
|
|
|
|
|
edrk.zadanie.rmp_limit_powers_zad.DesiredInput = edrk.zadanie.iq_limit_power_zad;
|
|
|
|
|
else
|
|
|
|
|
if (flag_set_zero == 2)
|
|
|
|
|
{
|
|
|
|
|
edrk.zadanie.rmp_limit_powers_zad.DesiredInput = 0;
|
|
|
|
|
edrk.zadanie.rmp_limit_powers_zad.Out = 0;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
edrk.zadanie.rmp_limit_powers_zad.DesiredInput = 0;
|
|
|
|
|
|
|
|
|
|
edrk.zadanie.rmp_limit_powers_zad.calc(&edrk.zadanie.rmp_limit_powers_zad);
|
|
|
|
|
edrk.zadanie.iq_limit_power_zad_rmp = edrk.zadanie.rmp_limit_powers_zad.Out;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//////////////////////////////////////////////
|
|
|
|
|
if (flag_set_zero == 0)
|
|
|
|
|
{
|
|
|
|
|
if (edrk.zadanie.iq_power_zad > edrk.zadanie.iq_limit_power_zad_rmp)
|
|
|
|
|
edrk.zadanie.rmp_powers_zad.DesiredInput = edrk.zadanie.iq_limit_power_zad_rmp;
|
|
|
|
|
else
|
|
|
|
|
edrk.zadanie.rmp_powers_zad.DesiredInput = edrk.zadanie.iq_power_zad;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
if (flag_set_zero == 2)
|
|
|
|
|
{
|
|
|
|
|
edrk.zadanie.rmp_powers_zad.DesiredInput = 0;
|
|
|
|
|
edrk.zadanie.rmp_powers_zad.Out = 0;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
edrk.zadanie.rmp_powers_zad.DesiredInput = 0;
|
|
|
|
|
|
|
|
|
|
edrk.zadanie.rmp_powers_zad.calc(&edrk.zadanie.rmp_powers_zad);
|
|
|
|
|
edrk.zadanie.iq_power_zad_rmp = edrk.zadanie.rmp_powers_zad.Out;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
2025-01-13 16:58:59 +03:00
|
|
|
|
|
|
|
|
|
|
2025-01-15 12:35:47 +03:00
|
|
|
|
unsigned int ReadMemory(unsigned long addr)
|
|
|
|
|
{
|
|
|
|
|
unsigned int returnval = 0;
|
|
|
|
|
if (addr == ADR_SAW_VALUE)
|
|
|
|
|
returnval = t1sim.tcnt;
|
|
|
|
|
//return (*(volatile int *)(addr));
|
|
|
|
|
return returnval;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void WriteMemory(unsigned long addr, unsigned int data)
|
|
|
|
|
{
|
|
|
|
|
//(*(volatile int *)( addr )) = data;
|
|
|
|
|
}
|
2025-01-13 16:58:59 +03:00
|
|
|
|
|
|
|
|
|
|
2024-12-27 10:50:32 +03:00
|
|
|
|
void project_read_all_pbus2()
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#pragma DATA_SECTION(break_result_1,".fast_vars");
|
|
|
|
|
_iq break_result_1 = 0;
|
|
|
|
|
|
|
|
|
|
#pragma DATA_SECTION(break_result_2,".fast_vars");
|
|
|
|
|
_iq break_result_2 = 0;
|
|
|
|
|
|
|
|
|
|
#pragma DATA_SECTION(break_result_3,".fast_vars");
|
|
|
|
|
_iq break_result_3 = 0;
|
|
|
|
|
|
|
|
|
|
#pragma DATA_SECTION(break_result_4,".fast_vars");
|
|
|
|
|
_iq break_result_4 = 0;
|
|
|
|
|
|
|
|
|
|
//void read_in_sensor_line1(T_cds_in_rotation_sensor *rs){
|
|
|
|
|
//
|
|
|
|
|
//}
|
|
|
|
|
//
|
|
|
|
|
//void read_in_sensor_line2(T_cds_in_rotation_sensor *rs){
|
|
|
|
|
//
|
|
|
|
|
//}
|
|
|
|
|
//void read_command_reg(T_cds_in_rotation_sensor *rs){
|
|
|
|
|
//
|
|
|
|
|
//}
|
|
|
|
|
//void write_command_reg(T_cds_in_rotation_sensor *rs){
|
|
|
|
|
//
|
|
|
|
|
//}
|
|
|
|
|
//void tune_sampling_time(T_rotation_sensor *rs){
|
|
|
|
|
//
|
|
|
|
|
//}
|
|
|
|
|
//void wait_for_registers_updated(T_cds_in_rotation_sensor *rs){
|
|
|
|
|
//
|
|
|
|
|
//}
|
|
|
|
|
//void read_direction_in_plane(T_cds_in_rotation_sensor *rs){
|
|
|
|
|
//
|
|
|
|
|
//}
|
|
|
|
|
//void sensor_set(T_rotation_sensor *rs)
|
|
|
|
|
//{
|
|
|
|
|
//
|
|
|
|
|
//}
|
|
|
|
|
//void sensor_read(T_rotation_sensor *rs)
|
|
|
|
|
//{
|
|
|
|
|
//
|
|
|
|
|
//}
|
|
|
|
|
//void update_sensors_data(T_rotation_sensor *rs)
|
|
|
|
|
//{
|
|
|
|
|
// // rs->in_plane.write.regs.comand_reg.bit.update_registers = 1;
|
|
|
|
|
// // write_command_reg(&rs->in_plane);
|
|
|
|
|
//// rs->in_plane.write.regs.comand_reg.bit.update_registers = 0;
|
|
|
|
|
//}
|
|
|
|
|
//void angle_sensor_read(T_cds_angle_sensor *as)
|
|
|
|
|
//{}
|
|
|
|
|
//
|
|
|
|
|
//void angle_plane_set(T_cds_angle_sensor *rs)
|
|
|
|
|
//{}
|
|
|
|
|
//void in_plane_set(T_cds_in_rotation_sensor* rs)
|
|
|
|
|
//{}
|
|
|
|
|
//
|
|
|
|
|
//void in_sensor_read1(T_cds_in_rotation_sensor *rs)
|
|
|
|
|
//{}
|
|
|
|
|
//
|
|
|
|
|
//void in_sensor_read2(T_cds_in_rotation_sensor *rs)
|
|
|
|
|
//{}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// unsigned int BWC_Started()
|
|
|
|
|
// {
|
|
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2025-01-23 15:34:55 +03:00
|
|
|
|
void start_pwm(void) {}
|
|
|
|
|
void stop_pwm(void) {}
|
|
|
|
|
int get_real_in_mbox(int a, int b) {}
|
|
|
|
|
void update_uom(void) {}
|
|
|
|
|
void inc_RS_timeout_cicle(void) {}
|
|
|
|
|
void inc_CAN_timeout_cicle(void) {}
|
|
|
|
|
void pause_1000(void) {}
|
|
|
|
|
int xerror(unsigned int er_ID, void* CallBackRef) {}
|
2025-01-13 16:58:59 +03:00
|
|
|
|
void func_unpack_answer_from_Ingeteam(unsigned int a) {}
|
|
|
|
|
void unpack_answer_from_MPU_SVU_CAN(unsigned int a) {}
|
2025-01-23 15:34:55 +03:00
|
|
|
|
void start_break_pwm() {}
|
|
|
|
|
void stop_break_pwm() {}
|
|
|
|
|
void stop_wdog() {}
|
|
|
|
|
void start_pwm_b() {}
|
|
|
|
|
void start_pwm_a() {}
|
|
|
|
|
void stop_pwm_b() {}
|
|
|
|
|
void stop_pwm_a() {}
|
|
|
|
|
void fillADClogs() {}
|
|
|
|
|
void break_resistor_managment_calc() {}
|
|
|
|
|
void break_resistor_managment_init() {}
|
|
|
|
|
void break_resistor_managment_update() {}
|
|
|
|
|
void break_resistor_recup_calc() {}
|
|
|
|
|
void break_resistor_set_closed() {}
|
|
|
|
|
void DetectI_Out_BreakFase() {}
|
|
|
|
|
void test_mem_limit() {}
|
|
|
|
|
void set_start_mem() {}
|
|
|
|
|
void getFastLogs() {}
|
|
|
|
|
void detect_I_M_overload() {}
|
|
|
|
|
void sync_inc_error() {}
|
|
|
|
|
void optical_bus_read() {}
|
|
|
|
|
void optical_bus_write(void){}
|
|
|
|
|
void i_led1_on_off(int i) {}
|
|
|
|
|
void modbus_table_can_in(void) {}
|
2024-12-27 10:50:32 +03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2025-01-23 15:34:55 +03:00
|
|
|
|
//void init_eva_timer2() {}
|
|
|
|
|
//void init_evb_timer3() {}
|
|
|
|
|
//void start_eva_timer2() {}
|
|
|
|
|
//void start_evb_timer3() {}
|
|
|
|
|
//int enable_er0_control() {}
|
|
|
|
|
//void i_led2_on_off() {}
|
|
|
|
|
//int InitXilinxSpartan2E(void (*int_handler)()) {}
|
|
|
|
|
//void start_int13_interrupt() {}
|
|
|
|
|
//void project_read_errors_controller() {}
|
|
|
|
|
//void project_run_init_all_plates() {}
|
|
|
|
|
//void calc_temper_acdrive() {}
|
|
|
|
|
//void calc_temper_edrk() {}
|
|
|
|
|
//void SendAll2SecondBS() {}
|
|
|
|
|
//void clear_errors() {}
|
|
|
|
|
//void clear_warnings() {}
|
|
|
|
|
//void detect_error_all() {}
|
|
|
|
|
//void read_plane_errors() {}
|
|
|
|
|
//void init_detect_overloads() {}
|
|
|
|
|
//void check_all_power_limits() {}
|
|
|
|
|
//void clear_mem() {}
|
|
|
|
|
//void modbusNetworkSharing() {}
|
|
|
|
|
//void modbusNetworkSharingCAN() {}
|
|
|
|
|
//void fillLogArea() {}
|
|
|
|
|
//void clear_table_remoute() {}
|
|
|
|
|
//void update_progress_load_hmi() {}
|
|
|
|
|
//void get_command_HMI() {}
|
|
|
|
|
//void update_svu_modbus_table() {}
|
|
|
|
|
//void calc_limit_overheat() {}
|
|
|
|
|
//void project_prepare_config() {}
|
|
|
|
|
//void pump_control() {}
|
|
|
|
|
//void start_wdog() {}
|
|
|
|
|
//void global_time_interrupt() {}
|
|
|
|
|
//void optical_bus_read_write_interrupt() {}
|
|
|
|
|
//void setup_sync_line() {}
|
|
|
|
|
//void setup_sync_int() {}
|
|
|
|
|
//void start_sync_interrupt() {}
|
|
|
|
|
//void rotorInit() {}
|
|
|
|
|
//void get_adr_pcb_controller() {}
|
|
|
|
|
//void InitCan() {}
|
|
|
|
|
//void CAN_cycle_send() {}
|
|
|
|
|
//int CAN_cycle_free(int box) {}
|
|
|
|
|
//int CAN_cycle_full_free(int box, int statistics_flag) {}
|
|
|
|
|
//int get_real_out_mbox(int type_box, int box) {}
|
|
|
|
|
//int CAN_may_be_send_cycle_fifo(void) {}
|
|
|
|
|
//void start_can_interrupt() {}
|
|
|
|
|
//void clear_modbus_table_in() {}
|
|
|
|
|
//void clear_modbus_table_out() {}
|
|
|
|
|
//void initModbusTable() {}
|
|
|
|
|
//void RS232_WorkingWith() {}
|
|
|
|
|
//void sbor_shema() {}
|
|
|
|
|
//void pwm_test_lines_start() {}
|
|
|
|
|
//void pwm_test_lines_stop() {}
|
|
|
|
|
//void KickDog() {}
|
2024-12-27 10:50:32 +03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void init_flag_a(void)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
unsigned int i = 0;
|
|
|
|
|
int *pStr = (int*)&f;
|
|
|
|
|
for (i = 0; i < sizeof(f) / sizeof(int); i++) {
|
|
|
|
|
*(pStr + i) = 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|