/*
 * params_alg.h
 *
 *  Created on: 26 июн. 2020 г.
 *      Author: Yura
 */

#ifndef SRC_MAIN_PARAMS_ALG_H_
#define SRC_MAIN_PARAMS_ALG_H_

// разпрет расчета км на слейве, берем с мастера
#define DISABLE_CALC_KM_ON_SLAVE    0//1

#define DISABLE_WORK_BREAK   0  // запрнтить работу с тормозными

#define SENSOR_ALG_22220   1
#define SENSOR_ALG_23550   2


#define SENSOR_ALG                      SENSOR_ALG_22220
//#define SENSOR_ALG                    SENSOR_ALG_23550


#define NOMINAL_U_ZARYAD                2520    // Задание напряжения заряда ЗПТ
#define NOMINAL_U_BREAK_LEVEL           2580    // начало работы тормозных + IQ_DELTA_U_START_RECUP=100V
#define NOMINAL_SET_IZAD                910     // ток от поста
#define NOMINAL_SET_K_U_DISBALANCE      40//20      // Задание К напряжения дисбаланса коэф. обратной связи по дисбалансу, надо >0 чтоб работал алгоритм
#define NOMINAL_SET_LIMIT_POWER         6300    // запас мощность от поста





///////////////////////////////////////////////////////////////
#define U_D_MAX_ERROR_GLOBAL        IQ_I_U_VALUE_PLUS_2850 //U_D_MAX_ERROR_GLOBAL_2850

#define MAX_U_PROC_SMALL            2.5                 //1.4
#define MAX_U_PROC                  1.1             //1.11                 //1.4
#define MIN_U_PROC                  0.8       //0.7

#define ADD_U_MAX_GLOBAL            200.0   //V  Насколько поднимаем уставку GLOBAL относительно ZadanieU_Charge
#define ADD_U_MAX_GLOBAL_SMALL      500.0   //V  Насколько поднимаем уставку GLOBAL относительно ZadanieU_Charge
#define LEVEL_DETECT_U_SMALL        1000.0  //V  Насколько поднимаем уставку GLOBAL относительно ZadanieU_Charge

#define KOEF_IM_ON_TORMOG           0.65// 0.75 // на сколько уменьшать возможную мощность при торможении
#define KOEF_IM_ON_TORMOG_WITH_MAX_TEMPER_BREAK  0.1// с перегревом томозных на сколько уменьшать возможную мощность при торможении

///////////////////////////////////////////////////////////////


#define MZZ_ADD_1                   0.5 // 0.25 //0.5 интенсивнось набора момента за 1 мсек
#define MZZ_ADD_2                   0.15 ///0.1 //0.05 //0.1 интенсивнось набора момента за 1 мсек
#define MZZ_ADD_3                   0.25 //0.05 ///0.1 //0.05 //0.1 интенсивнось набора момента за 1 мсек

#define FZAD_ADD_MAX                0.08 //0.005 //0.08  интенсивнось набора fzad за 1 мсек
#define FZAD_DEC                    0.0004 //интенсивнось спада fzad за 1 мсек

#define POWERZAD_ADD_MAX            0.08 //0.005 //0.08  интенсивнось набора fzad за 1 мсек
#define POWERZAD_DEC                0.0004 //интенсивнось спада fzad за 1 мсек

#define POLUS                       6 //6   // число пар полюсов
#define BPSI_NORMAL                 0.22    //0.3 // скольжение константа
#define BPSI_MAXIMAL                0.35    //0.3 // скольжение константа
#define BPSI_MINIMAL                0.05    //0.3 // скольжение константа
#define PROVOROT_F_HZ               0.2 // проворот
#define PROVOROT_OBOROTS            10 // проворот


#define ADD_KP_DF                   (1000.0/NORMA_MZZ)//(500.0/NORMA_MZZ)//(50.0/NORMA_MZZ)
#define ADD_KI_DF                   (2000.0/NORMA_MZZ)//(1000.0/NORMA_MZZ)//(100.0/NORMA_MZZ)

#define ADD_KP_DPOWER               (1000.0/NORMA_MZZ)//(500.0/NORMA_MZZ)//(50.0/NORMA_MZZ)
#define ADD_KI_DPOWER               (2000.0/NORMA_MZZ)//(1000.0/NORMA_MZZ)//(100.0/NORMA_MZZ)

#define MIN_MZZ_FOR_DF              210
#define MIN_MZZ_FOR_DPOWER          210


////////////////////


#define PID_KP_IM                   0.036 //0.018 //0.0013//   0.018 //0.036 //0.018 //0.18 //0.095   // PID Kp
#define PID_KI_IM                   0.32 // 0.16 //0.32  //0.16 //0.08//0.8//0.025 //0.08   // PID Ki
#define PID_KD_IM                   0.0000  //*100  // PID Kd
#define PID_KC_IM                   0.09    // PID Kc


#define PID_KP_F                    12.0//6.0//12.0    //6.0 //18  //12//6//26//12 //40 //20 //12 //20 //60.0 //20.0 //0.095   // PID Kp
#define PID_KI_F                    0.00020 //0.00010 // 0.008   // PID Ki
//#define PID_KI_F                  0.00030 //0.00010 // 0.008   // PID Ki
#define PID_KD_F                    0.000    //*100 PID Kd
#define PID_KC_F                    0.00005//0.005    // PID Kc
//#define PID_KC_F                  0.000    // PID Kc

#define PID_KP_POWER                9//3//26//12 //40 //20 //12 //20 //60.0 //20.0 //0.095   // PID Kp
//#define PID_KI_F                  0.00020 //0.00010 // 0.008   // PID Ki
#define PID_KI_POWER                0.00030 //0.00010 // 0.008   // PID Ki
#define PID_KD_POWER                0.000    //*100 PID Kd
#define PID_KC_POWER                0.0001    // PID Kc



///////////////////
// макс. k ограничено электроникой

#define K_STATOR_MAX                0.93 // 0.91 // для DEF_PERIOD_MIN_MKS = 60 мкс
#define K_STATOR_MIN                0.020 // 0.91 // для DEF_PERIOD_MIN_MKS = 60 мкс

//#define K_STATOR_MAX 0.89 //для DEF_PERIOD_MIN_MKS  = 80 мкс




#define MAX_ZADANIE_I_VOZBUD        200.0 // A

#define MAX_ZADANIE_U_CHARGE        2800.0//1500.0 //V
//#define MAX_ZADANIE_F_ROTOR     70

#define MAX_ZADANIE_OBOROTS_ROTOR    230.0 //340 //240  1000 //260.0 // +/- ob/min
#define MIN_ZADANIE_OBOROTS_ROTOR   -230.0 //-180.0 //-230.0 //  1000 //260.0 // +/- ob/min

#define MAX_1_ZADANIE_OBOROTS_ROTOR    120.0 //340 //240  1000 //260.0 // +/- ob/min
#define MIN_1_ZADANIE_OBOROTS_ROTOR   -90.0 //-230.0 //  1000 //260.0 // +/- ob/min


#define DEAD_ZONE_ZADANIE_OBOROTS_ROTOR     10.0

#define MAX_ZADANIE_I_M                         950.0// 1000.0  //750.0 // A

#define MAX_ZADANIE_POWER                           6300.0      // kWt
#define MIN_ZADANIE_POWER                           -6300.0     // kWt

#define MAX_1_ZADANIE_POWER                         3000.0      // kWt
#define MIN_1_ZADANIE_POWER                         -3000.0     // kWt


#define SUPER_MAX_ZADANIE_LIMIT_POWER               6500.0  // kWt

#define MAX_ZADANIE_LIMIT_POWER                     6300.0  // kWt
#define MAX_1_ZADANIE_LIMIT_POWER                   2000.0  // kWt

#define MIN_ZADANIE_LIMIT_POWER                     100.0     // kWt
#define MIN_ZADANIE_LIMIT_POWER_FROM_SVU            50.0   // kWt
#define POWER_ZAPAS_FOR_UOM                         5       //50 // доп запас для УОМ

#define DEAD_ZONE_ZADANIE_POWER                 50.0 // kWt
#define DEAD_ZONE_ZADANIE_LIMIT_POWER           50.0 // kWt



#define MAX_ZADANIE_K_M                         K_STATOR_MAX // A
#define MAX_ZADANIE_F                           30.0 // Hz
#define MIN_ZADANIE_F                           -30.0 //60.0 // Hz


#define MAX_ZADANIE_K_U_DISBALANCE              2.0    //1.0 // k
#define MAX_ZADANIE_KPLUS_U_DISBALANCE          1.0 // k



#define T_NARAST_ZADANIE_F                              5.0  // sec
#define T_NARAST_ZADANIE_OBOROTS_ROTOR                  80.0 //20.0 //30.0 //15.0  // sec

#define T1_NARAST_ZADANIE_OBOROTS_ROTOR_PLUS             80.0 //20.0 //30.0 //15.0  // sec
#define T1_NARAST_ZADANIE_OBOROTS_ROTOR_MINUS            40.0 //20.0 //30.0 //15.0  // sec

#define T2_NARAST_ZADANIE_OBOROTS_ROTOR_PLUS             80.0 //160.0 //20.0 //30.0 //15.0  // sec
#define T2_NARAST_ZADANIE_OBOROTS_ROTOR_MINUS            40.0 //20.0 //30.0 //15.0  // sec

#define T_SLOW_NARAST_ZADANIE_OBOROTS_ROTOR_PLUS             600.0 //160.0 //20.0 //30.0 //15.0  // sec
#define T_SLOW_NARAST_ZADANIE_OBOROTS_ROTOR_MINUS            600.0 //20.0 //30.0 //15.0  // sec



#define T_NARAST_ZADANIE_K_M                            15.0  // sec
#define T_NARAST_ZADANIE_I_M                            15.0  // sec

#define T1_NARAST_ZADANIE_POWER_PLUS                          80.0 //30.0  // sec
#define T1_NARAST_ZADANIE_POWER_MINUS                         30.0 //30.0  // sec
#define T2_NARAST_ZADANIE_POWER_PLUS                          80.0 //30.0  // sec
#define T2_NARAST_ZADANIE_POWER_MINUS                         30.0 //30.0  // sec

#define T_NARAST_ZADANIE_LIMIT_POWER                    5.0 //30.0  // sec

#define T1_NARAST_ZADANIE_LIMIT_POWER_PLUS              30.0 //30.0  // sec
#define T1_NARAST_ZADANIE_LIMIT_POWER_MINUS             5.0 //30.0  // sec
#define T2_NARAST_ZADANIE_LIMIT_POWER_PLUS              80.0 //30.0  // sec
#define T2_NARAST_ZADANIE_LIMIT_POWER_MINUS             5.0 //30.0  // sec


#define T_NARAST_ZADANIE_U_CHARGE                       2.0  // sec
#define T_NARAST_ZADANIE_K_U_DISBALANCE                 15.0  // sec
#define T_NARAST_ZADANIE_KPLUS_U_DISBALANCE             15.0  // sec

#define T_NARAST_ZADANIE_IMITATION_OBOROTS_ROTOR        30.0  // sec






#define ENABLE_DECR_MZZ_POWER_IZAD          1
// запас мощности при задании мощности от СВУ
#define POWER_AIN_100KW                         186413

#define DELTA_LEVEL_POWER_AIN_DECR_MZZ_DEF      (3*POWER_AIN_100KW) // 300 kW // 559240   //300 кВт//186413   //100kW   // iqP = P (W) /3000/3000 * 2^24 //
#define MIN_DELTA_LEVEL_POWER_AIN_DECR_MZZ_DEF  (5*POWER_AIN_100KW) // 500 kW
#define SMEWENIE_LEVEL_POWER_AIN_DECR_MZZ_DEF   0                   //(1*POWER_AIN_100KW) // 100 kW

// меняется от 1 - полный размах до 0 -  нет ограничения
#define MAX_KOEF_OGRAN_POWER_LIMIT                        CONST_IQ_05 // 0.5
#define EXP_FILTER_KOEF_OGRAN_POWER_LIMIT                 4.40//2.22 // в секундах





#endif /* SRC_MAIN_PARAMS_ALG_H_ */
