/************************************************************************** Description: Всякие разные переключатели и уставки. Автор: Улитовский Д.И. Дата последнего обновления: 2021.11.08 **************************************************************************/ #ifndef DEF #define DEF // раскомментировать, если есть сдвиг между обмотками ГЭД (30 град.) #define SHIFT #define SIMULINK_SEQUENCE V_PWM24_PHASE_SEQ_NORMAL_ABC /* V_PWM24_PHASE_SEQ_NORMAL_ABC, - не то V_PWM24_PHASE_SEQ_NORMAL_BCA, - похоже на правду V_PWM24_PHASE_SEQ_NORMAL_CAB, - жопа V_PWM24_PHASE_SEQ_REVERS_ACB, - жопа V_PWM24_PHASE_SEQ_REVERS_CBA, - жопа V_PWM24_PHASE_SEQ_REVERS_BAC - жопа */ // режимы работы (для state) #define STATE_SHUTDOWN 0 //аварийная остановка #define STATE_STOP 1 //штатная остановка #define STATE_WORK 2 //работа // частота тактовых импульсов процессора, Гц #define FSYSCLKOUT 200e6 //150e6 // // prescaled version of the system clock and is used by // all submodules within the ePWM, Гц // (см. EPwmxRegs.TBCTL.bit.CLKDIV и EPwmxRegs.TBCTL.bit.HSPCLKDIV) #define FTBCLK (FSYSCLKOUT*0.5*0.5) //#define FTBCLK (FSYSCLKOUT*0.5*0.5*0.5*0.5) // период ШИМ, c #define T_PWM 2220e-6 //F_PWM = 450 Гц //#define T_PWM 6000e-6 //F_PWM = 166.7 Гц // период вызова основной программы, с #define TY (T_PWM*0.5) // "мертвое время", с #define DT 30e-6 //#define DT 60e-6 // Time-Base Period Register, ед. счётчика таймера #define T1_PRD (FTBCLK*T_PWM*0.5) // максимальное значение амплитуды напряжения управления устанавливаем так, // чтобы минимальная ширина импульса была 10 мкс, ед. счётчика таймера #define Y_LIM (T1_PRD - (DT + 10e-6)*FTBCLK) // константы для вычисления всякого #define PI2 6.283185307179586476925286766559 //pi*2 #define SQRT2 1.4142135623730950488016887242097 //sqrt(2) #define SQRT3 1.7320508075688772935274463415059 //sqrt(3) #define ISQRT3 0.57735026918962576450914878050196 //1./sqrt(3) // Номинальные величины ГЭД // ... мощность на валу, Вт #define P_NOM (6300e3.) // ... линейное напряжение, В (ampl) #define U_NOM (3300.*SQRT2) // ... механическая скорость, об/мин #define N_NOM 180. // ... число пар полюсов #define PP 6. // ... коэффициент мощности #define COS_FI 0.89 // ... КПД #define EFF 0.968 // ... приведенный к валу момент инерции, кг*м^2 #define J (87e3*0.50) // ... полная мощность, ВА #define S_NOM (P_NOM/(COS_FI*EFF)) // ... механическая скорость, рад/с #define WM_NOM (N_NOM/60.*PI2) // ... момент на валу, Н*м #define M_NOM (P_NOM/WM_NOM) // Базовые величины ГЭД // ... полная мощность, BA #define S_BAZ S_NOM // ... линейное напряжение, В (ampl) #define U_BAZ U_NOM // ... фазный ток, А (ampl) #define I_BAZ (S_BAZ*2./(U_BAZ*SQRT3)*0.5) //0.5 - т.к. обмоток две // ... механическая скорость, об/мин #define N_BAZ N_NOM // ... механическая скорость, рад/с #define WM_BAZ (N_BAZ/60.*PI2) // ... электрическая скорость, рад/с #define WE_BAZ (WM_BAZ*PP) // ... момент на валу, Н*м #define M_BAZ (S_BAZ/WM_BAZ) // ... потокосцепление статора, Вб #define PSI_BAZ (U_BAZ/(WE_BAZ*SQRT3)) // ... индуктивность, Гн #define L_BAZ (PSI_BAZ/I_BAZ) // ... сопротивление, Ом #define R_BAZ (U_BAZ/(I_BAZ*SQRT3)) // для пересчёта из амплитуды фазного напряжения в единицы сигнала управления #define U_2_Y (T1_PRD*SQRT3/U_BAZ) // напряжение в звене пост. тока, которое дало бы на выходе АЦП знач. 2048, В #define UDC_SENS_MAX (U_BAZ*1.15*1.3) // выходной ток, который дал бы на выходе АЦП знач. 2048, А (ampl) #define IAC_SENS_MAX (I_BAZ*1.5) // number of pulses per rev. (from tacho, Hall, optical sensor...etc) #define NOP 1024. // приращение счётчика QEP за TY сек. при частоте вращ. WM_BAZ #define QEP_CNT_DEL_NOM (NOP*4.*TY*WM_BAZ/PI2) // коэффициенты для перевода измеренных величин в o.e. #define GAIN_UDC (UDC_SENS_MAX/(2048.*U_BAZ)) #define GAIN_IAC (IAC_SENS_MAX/(2048.*I_BAZ)) #define GAIN_WM (1.0/QEP_CNT_DEL_NOM) // минимальная скорость для пересчёта мощности в ток, o.e. #define WM_MIN 0.03 //0.003 //? // для прореживания регуляторов потока, скорости и мощности #define DECIM_PSI_WM_PM 2. //1. //5. //? // for specify the PLL #define PLLSTS_DIVSEL 2 #define PLLCR_DIV 10 // для вывода #define CONTROLLER_BIAS 3.2 #define CONTROLLER_GAIN 2500. // общее количество параметров #define PAR_NUMBER 400 // номер первого редактируемого параметра #define FIRST_WRITE_PAR_NUM 150 // Дискретные входы/выходы (begin) //------------------------------------------------------------------------- // входы // ---------------------------- #define DI_24V_SOURCE_FAULT GpioDataRegs.GPBDAT.bit.GPIO50 // выходы // ---------------------------- // ... разное #define DO_GPIO00_SET GpioDataRegs.GPASET.bit.GPIO0 = 1 #define DO_GPIO00_CLEAR GpioDataRegs.GPACLEAR.bit.GPIO0 = 1 #define DO_GPIO01_SET GpioDataRegs.GPASET.bit.GPIO1 = 1 #define DO_GPIO01_CLEAR GpioDataRegs.GPACLEAR.bit.GPIO1 = 1 #define DO_GPIO02_SET GpioDataRegs.GPASET.bit.GPIO2 = 1 #define DO_GPIO02_CLEAR GpioDataRegs.GPACLEAR.bit.GPIO2 = 1 #define DO_GPIO03_SET GpioDataRegs.GPASET.bit.GPIO3 = 1 #define DO_GPIO03_CLEAR GpioDataRegs.GPACLEAR.bit.GPIO3 = 1 #define DO_GPIO04_SET GpioDataRegs.GPASET.bit.GPIO4 = 1 #define DO_GPIO04_CLEAR GpioDataRegs.GPACLEAR.bit.GPIO4 = 1 #define DO_GPIO05_SET GpioDataRegs.GPASET.bit.GPIO5 = 1 #define DO_GPIO05_CLEAR GpioDataRegs.GPACLEAR.bit.GPIO5 = 1 #define DO_GPIO06_SET GpioDataRegs.GPASET.bit.GPIO6 = 1 #define DO_GPIO06_CLEAR GpioDataRegs.GPACLEAR.bit.GPIO6 = 1 #define DO_GPIO07_SET GpioDataRegs.GPASET.bit.GPIO7 = 1 #define DO_GPIO07_CLEAR GpioDataRegs.GPACLEAR.bit.GPIO7 = 1 #define DO_GPIO08_SET GpioDataRegs.GPASET.bit.GPIO8 = 1 #define DO_GPIO08_CLEAR GpioDataRegs.GPACLEAR.bit.GPIO8 = 1 #define DO_GPIO09_SET GpioDataRegs.GPASET.bit.GPIO9 = 1 #define DO_GPIO09_CLEAR GpioDataRegs.GPACLEAR.bit.GPIO9 = 1 #define DO_GPIO10_SET GpioDataRegs.GPASET.bit.GPIO10 = 1 #define DO_GPIO10_CLEAR GpioDataRegs.GPACLEAR.bit.GPIO10 = 1 #define DO_GPIO11_SET GpioDataRegs.GPASET.bit.GPIO11 = 1 #define DO_GPIO11_CLEAR GpioDataRegs.GPACLEAR.bit.GPIO11 = 1 // ... не используются #define DO_GPIO019_SET GpioDataRegs.GPASET.bit.GPIO19 = 1 #define DO_GPIO019_CLEAR GpioDataRegs.GPACLEAR.bit.GPIO19 = 1 #define DO_GPIO020_SET GpioDataRegs.GPASET.bit.GPIO20 = 1 #define DO_GPIO020_CLEAR GpioDataRegs.GPACLEAR.bit.GPIO20 = 1 #define DO_GPIO022_SET GpioDataRegs.GPASET.bit.GPIO22 = 1 #define DO_GPIO022_CLEAR GpioDataRegs.GPACLEAR.bit.GPIO22 = 1 #define DO_GPIO48_SET GpioDataRegs.GPBSET.bit.GPIO48 = 1 #define DO_GPIO48_CLEAR GpioDataRegs.GPBCLEAR.bit.GPIO48 = 1 #define DO_GPIO49_SET GpioDataRegs.GPBSET.bit.GPIO49 = 1 #define DO_GPIO49_CLEAR GpioDataRegs.GPBCLEAR.bit.GPIO49 = 1 // ... для управления ножкой CS EEPROM #define CS_SET GpioDataRegs.GPBSET.bit.GPIO57 = 1 #define CS_CLEAR GpioDataRegs.GPBCLEAR.bit.GPIO57 = 1 // ... светодиоды // (зелёный "Готовность") #define LED_GREEN1_ON GpioDataRegs.GPBCLEAR.bit.GPIO59 = 1 #define LED_GREEN1_OFF GpioDataRegs.GPBSET.bit.GPIO59 = 1 #define LED_GREEN1_TOGGLE GpioDataRegs.GPBTOGGLE.bit.GPIO59 = 1 // (зелёный "Работа") #define LED_GREEN2_ON GpioDataRegs.GPBCLEAR.bit.GPIO60 = 1 #define LED_GREEN2_OFF GpioDataRegs.GPBSET.bit.GPIO60 = 1 #define LED_GREEN2_TOGGLE GpioDataRegs.GPBTOGGLE.bit.GPIO60 = 1 // (красный "Авария") #define LED_RED_ON GpioDataRegs.GPBCLEAR.bit.GPIO61 = 1 #define LED_RED_OFF GpioDataRegs.GPBSET.bit.GPIO61 = 1 #define LED_RED_TOGGLE GpioDataRegs.GPBTOGGLE.bit.GPIO61 = 1 // ... не используется #define DO_GPIO63_SET GpioDataRegs.GPBSET.bit.GPIO63 = 1 #define DO_GPIO63_CLEAR GpioDataRegs.GPBCLEAR.bit.GPIO63 = 1 //------------------------------------------------------------------------- // Дискретные входы/выходы (end) #include "DSP2833x_Device.h" #include "math.h" #include "C28x_FPU_FastRTS.h" #endif //DEF