/*
 * 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_ */