matlab_23550/Inu/Src2/551/main/ramp_zadanie_tools.c
Razvalyaev 7e0063eee0 #3 Скомпилилось, но пока ничего не вызывается
Все основные файлы подтянуты без изменений

Изменены (только папка main_matlab):
- заглушки для ненужных функций (main_matlab.c)
- iq библиотека (IQmathLib_matlab.c)
- библиотеки DSP281x
2025-01-13 11:09:58 +03:00

418 lines
17 KiB
C

/*
* ramp_zadanie_tools.c
*
* Created on: 13 íî˙á. 2024 ă.
* Author: Evgeniy_Sokolov
*/
#include <edrk_main.h>
#include <params.h>
#include <params_alg.h>
#include <params_norma.h>
#include <params_pwm24.h>
#include <params_temper_p.h>
#include <project.h>
#include "IQmathLib.h"
#include "mathlib.h"
#include "ramp_zadanie_tools.h"
#include "v_rotor.h"
void change_ramp_zadanie(void)
{
_iq rampafloat, rampafloat_plus, rampafloat_minus;
if (edrk.cmd_very_slow_start)
{
rampafloat_plus = _IQ((MAX_ZADANIE_OBOROTS_ROTOR/NORMA_FROTOR/60.0)/(FREQ_RUN_RAMP*T_SLOW_NARAST_ZADANIE_OBOROTS_ROTOR_PLUS));
rampafloat_minus = _IQ((MAX_ZADANIE_OBOROTS_ROTOR/NORMA_FROTOR/60.0)/(FREQ_RUN_RAMP*T_SLOW_NARAST_ZADANIE_OBOROTS_ROTOR_MINUS));
edrk.zadanie.rmp_oborots_zad_hz.PosRampPlus1 = rampafloat_plus;
edrk.zadanie.rmp_oborots_zad_hz.PosRampMinus1 = -rampafloat_minus;
edrk.zadanie.rmp_oborots_zad_hz.NegRampPlus1 = rampafloat_minus;
edrk.zadanie.rmp_oborots_zad_hz.NegRampMinus1 = -rampafloat_plus;
// rampafloat_plus = _IQ((MAX_ZADANIE_OBOROTS_ROTOR/NORMA_FROTOR/60.0)/(FREQ_RUN_RAMP*T_SLOW_NARAST_ZADANIE_OBOROTS_ROTOR_PLUS));
// rampafloat_minus = _IQ((MAX_ZADANIE_OBOROTS_ROTOR/NORMA_FROTOR/60.0)/(FREQ_RUN_RAMP*T_SLOW_NARAST_ZADANIE_OBOROTS_ROTOR_MINUS));
edrk.zadanie.rmp_oborots_zad_hz.PosRampPlus2 = rampafloat_plus;
edrk.zadanie.rmp_oborots_zad_hz.PosRampMinus2 = -rampafloat_minus;
edrk.zadanie.rmp_oborots_zad_hz.NegRampPlus2 = rampafloat_minus;
edrk.zadanie.rmp_oborots_zad_hz.NegRampMinus2 = -rampafloat_plus;
}
else
{
rampafloat_plus = _IQ((MAX_ZADANIE_OBOROTS_ROTOR/NORMA_FROTOR/60.0)/(FREQ_RUN_RAMP*T1_NARAST_ZADANIE_OBOROTS_ROTOR_PLUS));
rampafloat_minus = _IQ((MAX_ZADANIE_OBOROTS_ROTOR/NORMA_FROTOR/60.0)/(FREQ_RUN_RAMP*T1_NARAST_ZADANIE_OBOROTS_ROTOR_MINUS));
edrk.zadanie.rmp_oborots_zad_hz.PosRampPlus1 = rampafloat_plus;
edrk.zadanie.rmp_oborots_zad_hz.PosRampMinus1 = -rampafloat_minus;
edrk.zadanie.rmp_oborots_zad_hz.NegRampPlus1 = rampafloat_minus;
edrk.zadanie.rmp_oborots_zad_hz.NegRampMinus1 = -rampafloat_plus;
rampafloat_plus = _IQ((MAX_ZADANIE_OBOROTS_ROTOR/NORMA_FROTOR/60.0)/(FREQ_RUN_RAMP*T2_NARAST_ZADANIE_OBOROTS_ROTOR_PLUS));
rampafloat_minus = _IQ((MAX_ZADANIE_OBOROTS_ROTOR/NORMA_FROTOR/60.0)/(FREQ_RUN_RAMP*T2_NARAST_ZADANIE_OBOROTS_ROTOR_MINUS));
edrk.zadanie.rmp_oborots_zad_hz.PosRampPlus2 = rampafloat_plus;
edrk.zadanie.rmp_oborots_zad_hz.PosRampMinus2 = -rampafloat_minus;
edrk.zadanie.rmp_oborots_zad_hz.NegRampPlus2 = rampafloat_minus;
edrk.zadanie.rmp_oborots_zad_hz.NegRampMinus2 = -rampafloat_plus;
}
}
void init_ramp_all_zadanie(void)
{
_iq rampafloat, rampafloat_plus, rampafloat_minus;
//rmp_oborots_imitation
edrk.zadanie.rmp_oborots_imitation.RampLowLimit = _IQ(MIN_ZADANIE_OBOROTS_ROTOR/60.0/NORMA_FROTOR);
edrk.zadanie.rmp_oborots_imitation.RampHighLimit = _IQ(MAX_ZADANIE_OBOROTS_ROTOR/60.0/NORMA_FROTOR);
rampafloat = _IQ((MAX_ZADANIE_OBOROTS_ROTOR/NORMA_FROTOR/60.0)/(FREQ_RUN_RAMP*T_NARAST_ZADANIE_IMITATION_OBOROTS_ROTOR));
edrk.zadanie.rmp_oborots_imitation.RampPlus = rampafloat;
edrk.zadanie.rmp_oborots_imitation.RampMinus = -rampafloat;
edrk.zadanie.rmp_oborots_imitation.Out = 0;
edrk.zadanie.rmp_oborots_imitation.DesiredInput = 0;
// 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/(FREQ_RUN_RAMP*T_NARAST_ZADANIE_F));
rampafloat = _IQ((MAX_ZADANIE_F/NORMA_FROTOR)/(FREQ_RUN_RAMP*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);
edrk.zadanie.rmp_oborots_zad_hz.RampLowLimit1 = _IQ(MIN_1_ZADANIE_OBOROTS_ROTOR/60.0/NORMA_FROTOR); //0
edrk.zadanie.rmp_oborots_zad_hz.RampHighLimit1 = _IQ(MAX_1_ZADANIE_OBOROTS_ROTOR/60.0/NORMA_FROTOR);
// rampafloat = _IQ(1.0/(FREQ_RUN_RAMP*T_NARAST_ZADANIE_OBOROTS_ROTOR));
// rampafloat = _IQ((MAX_ZADANIE_OBOROTS_ROTOR/NORMA_FROTOR/60.0)/(FREQ_RUN_RAMP*T_NARAST_ZADANIE_OBOROTS_ROTOR));
// edrk.zadanie.rmp_oborots_zad_hz.RampPlus = rampafloat;
// edrk.zadanie.rmp_oborots_zad_hz.RampMinus = -rampafloat;
change_ramp_zadanie();
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/(FREQ_RUN_RAMP*T_NARAST_ZADANIE_I_M));
rampafloat = _IQ((MAX_ZADANIE_I_M/NORMA_ACP)/(FREQ_RUN_RAMP*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/(FREQ_RUN_RAMP*T_NARAST_ZADANIE_U_CHARGE));
rampafloat = _IQ((MAX_ZADANIE_U_CHARGE/NORMA_ACP)/(FREQ_RUN_RAMP*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 = _IQ(NOMINAL_U_ZARYAD/NORMA_ACP);
edrk.zadanie.rmp_ZadanieU_Charge.Out = _IQ(NOMINAL_U_ZARYAD/NORMA_ACP);
//
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/(FREQ_RUN_RAMP*T_NARAST_ZADANIE_K_U_DISBALANCE));
rampafloat = _IQ((MAX_ZADANIE_K_U_DISBALANCE)/(FREQ_RUN_RAMP*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/(FREQ_RUN_RAMP*T_NARAST_ZADANIE_KPLUS_U_DISBALANCE));
rampafloat = _IQ((MAX_ZADANIE_KPLUS_U_DISBALANCE)/(FREQ_RUN_RAMP*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));
rampafloat = _IQ((MAX_ZADANIE_K_M)/(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));
edrk.zadanie.rmp_powers_zad.RampLowLimit1 = _IQ(MIN_1_ZADANIE_POWER*1000.0/(NORMA_MZZ*NORMA_MZZ));
edrk.zadanie.rmp_powers_zad.RampHighLimit1 = _IQ(MAX_1_ZADANIE_POWER*1000.0/(NORMA_MZZ*NORMA_MZZ));
// rampafloat = _IQ((MAX_ZADANIE_POWER*1000.0/(NORMA_MZZ*NORMA_MZZ))/(FREQ_RUN_RAMP*T_NARAST_ZADANIE_POWER));
// edrk.zadanie.rmp_powers_zad.RampPlus = rampafloat;
// edrk.zadanie.rmp_powers_zad.RampMinus = -rampafloat;
////
rampafloat_plus = _IQ((MAX_ZADANIE_POWER*1000.0/(NORMA_MZZ*NORMA_MZZ))/(FREQ_RUN_RAMP*T1_NARAST_ZADANIE_POWER_PLUS));
rampafloat_minus = _IQ((MAX_ZADANIE_POWER*1000.0/(NORMA_MZZ*NORMA_MZZ))/(FREQ_RUN_RAMP*T1_NARAST_ZADANIE_POWER_MINUS));
edrk.zadanie.rmp_powers_zad.PosRampPlus1 = rampafloat_plus;
edrk.zadanie.rmp_powers_zad.PosRampMinus1 = -rampafloat_minus;
edrk.zadanie.rmp_powers_zad.NegRampPlus1 = rampafloat_minus;
edrk.zadanie.rmp_powers_zad.NegRampMinus1 = -rampafloat_plus;
rampafloat_plus = _IQ((MAX_ZADANIE_POWER*1000.0/(NORMA_MZZ*NORMA_MZZ))/(FREQ_RUN_RAMP*T2_NARAST_ZADANIE_POWER_PLUS));
rampafloat_minus = _IQ((MAX_ZADANIE_POWER*1000.0/(NORMA_MZZ*NORMA_MZZ))/(FREQ_RUN_RAMP*T2_NARAST_ZADANIE_POWER_MINUS));
edrk.zadanie.rmp_powers_zad.PosRampPlus2 = rampafloat_plus;
edrk.zadanie.rmp_powers_zad.PosRampMinus2 = -rampafloat_minus;
edrk.zadanie.rmp_powers_zad.NegRampPlus2 = rampafloat_minus;
edrk.zadanie.rmp_powers_zad.NegRampMinus2 = -rampafloat_plus;
////
edrk.zadanie.rmp_powers_zad.DesiredInput = 0;
edrk.zadanie.rmp_powers_zad.Out = 0;
//
edrk.zadanie.rmp_limit_powers_zad.RampLowLimit = 0;//_IQ(0); //0
edrk.zadanie.rmp_limit_powers_zad.RampHighLimit = _IQ(SUPER_MAX_ZADANIE_LIMIT_POWER*1000.0/(NORMA_MZZ*NORMA_MZZ));
edrk.zadanie.rmp_limit_powers_zad.RampLowLimit1 = 0;
edrk.zadanie.rmp_limit_powers_zad.RampHighLimit1 = _IQ(MAX_1_ZADANIE_LIMIT_POWER*1000.0/(NORMA_MZZ*NORMA_MZZ));
rampafloat_plus = _IQ((SUPER_MAX_ZADANIE_LIMIT_POWER*1000.0/(NORMA_MZZ*NORMA_MZZ))/(FREQ_RUN_RAMP*T1_NARAST_ZADANIE_LIMIT_POWER_PLUS));
rampafloat_minus = _IQ((SUPER_MAX_ZADANIE_LIMIT_POWER*1000.0/(NORMA_MZZ*NORMA_MZZ))/(FREQ_RUN_RAMP*T1_NARAST_ZADANIE_LIMIT_POWER_MINUS));
edrk.zadanie.rmp_limit_powers_zad.PosRampPlus1 = rampafloat_plus;
edrk.zadanie.rmp_limit_powers_zad.PosRampMinus1 = -rampafloat_minus;
edrk.zadanie.rmp_limit_powers_zad.NegRampPlus1 = rampafloat_minus;
edrk.zadanie.rmp_limit_powers_zad.NegRampMinus1 = -rampafloat_plus;
rampafloat_plus = _IQ((MAX_ZADANIE_POWER*1000.0/(NORMA_MZZ*NORMA_MZZ))/(FREQ_RUN_RAMP*T2_NARAST_ZADANIE_POWER_PLUS));
rampafloat_minus = _IQ((MAX_ZADANIE_POWER*1000.0/(NORMA_MZZ*NORMA_MZZ))/(FREQ_RUN_RAMP*T2_NARAST_ZADANIE_POWER_MINUS));
edrk.zadanie.rmp_limit_powers_zad.PosRampPlus2 = rampafloat_plus;
edrk.zadanie.rmp_limit_powers_zad.PosRampMinus2 = -rampafloat_minus;
edrk.zadanie.rmp_limit_powers_zad.NegRampPlus2 = rampafloat_minus;
edrk.zadanie.rmp_limit_powers_zad.NegRampMinus2 = -rampafloat_plus;
// rampafloat = _IQ((MAX_ZADANIE_LIMIT_POWER*1000.0/(NORMA_MZZ*NORMA_MZZ))/(FREQ_RUN_RAMP*T_NARAST_ZADANIE_LIMIT_POWER));
// edrk.zadanie.rmp_limit_powers_zad.RampPlus = rampafloat;
// edrk.zadanie.rmp_limit_powers_zad.RampMinus = -rampafloat;
edrk.zadanie.rmp_limit_powers_zad.DesiredInput = 0;
edrk.zadanie.rmp_limit_powers_zad.Out = 0;
//
}
//////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////
#pragma CODE_SECTION(ramp_all_zadanie,".fast_run");
void load_current_ramp_oborots_power(void)
{
int mode=0;
static int prev_mode = 0;
if (edrk.Mode_ScalarVectorUFConst == ALG_MODE_FOC_OBOROTS ||
edrk.Mode_ScalarVectorUFConst == ALG_MODE_SCALAR_OBOROTS)
mode = 1;
if (edrk.Mode_ScalarVectorUFConst == ALG_MODE_FOC_POWER ||
edrk.Mode_ScalarVectorUFConst == ALG_MODE_SCALAR_POWER)
mode = 2;
if (mode==1 && prev_mode==2)
{
// áűëŕ ěîůíîńňü, ŕ ńňŕëč îáîđîňű
edrk.zadanie.rmp_oborots_zad_hz.Out = WRotor.iqWRotorSumFilter3;
//edrk.zadanie.iq_oborots_zad_hz = WRotor.iqWRotorSumFilter3;
}
if (mode==2 && prev_mode==1)
{
// áűëč îáîđîňű, ŕ ńňŕëŕ ěîůíîńňü
edrk.zadanie.rmp_powers_zad.Out = edrk.iq_power_kw_one_filter_znak;//filter.PowerScalarFilter2;
}
prev_mode = mode;
}
//////////////////////////////////////////////////////////
#pragma CODE_SECTION(ramp_all_zadanie,".fast_run");
void ramp_all_zadanie(int flag_set_zero)
{
// if (edrk.Status_Ready.bits.ImitationReady2)
{
edrk.zadanie.rmp_oborots_imitation.DesiredInput = edrk.zadanie.iq_oborots_zad_hz;
edrk.zadanie.rmp_oborots_imitation.calc(&edrk.zadanie.rmp_oborots_imitation);
edrk.zadanie.rmp_oborots_imitation_rmp = edrk.zadanie.rmp_oborots_imitation.Out;
}
//////////////////////////////////////////////
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.DesiredInput = edrk.zadanie.iq_limit_power_zad;
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>=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 (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;
}
//////////////////////////////////////////////////////////