Advertisement
7134956

Untitled

Jan 4th, 2020
354
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.42 KB | None | 0 0
  1. //Работа с измерением температур
  2. void FOC_routine_25ms(void) {
  3.     static uint32_t step = 0;
  4.     switch(step++) {
  5.         case 0:
  6.             McKit.MCU_T = get_mcu_vdd_temp();
  7.             thermoADCval = 0;
  8.             Vrefint_n100 = 0;
  9.             break;
  10.         case 1:
  11.             calcTemp(&fetThermo);
  12.             fetThermo.ADCval = 0;
  13.             break;
  14.         case 2:
  15.             calcTemp(&motThermo);
  16.             motThermo.ADCval = 0;
  17.             break;
  18.         case 3:
  19.             motParam.R = R20_to_Rt(mc_conf.mot_param_R20, *motParam.t);
  20.             step = 0;
  21.             break;
  22.     }
  23. }
  24.  
  25. void FOC_routine_distribution(void) {
  26.     static uint32_t step = 0;
  27.     switch(step++) {
  28.         case 0:
  29.             // Следим за состоянием привода
  30.             FOC_state_control_routine_1ms();
  31.             break;
  32.         case 1: {
  33.             // Обновить значение усиления наблюдателя.
  34.             float gain = 0.5f * (0.001f * 1e6f) / SQ(mc_conf.mot_param_lambda);
  35.             float proportion = utils_map(McKit.Vdq, 0.0, McKit.Vdcf, mc_conf.observer_gain_min, mc_conf.observer_gain_max);
  36.             motParam.gamma = proportion * gain;
  37.             break;
  38.         }
  39.         case 2:
  40.             // Шаг контроля скорости ротора
  41.             PID_speed_step(&pid_spd);
  42.             break;
  43.         case 3:
  44.             // Температуры
  45.             motThermo.ADCval += adc.Ext_NTC;
  46.             fetThermo.ADCval += adc.T_PCB;
  47.             thermoADCval += adc.Vtemp;
  48.             Vrefint_n100 += adc.Vrefint;
  49.             static int i = 0;
  50.             if(++i == 25) {
  51.                 i = 0;
  52.                 FOC_routine_25ms();
  53.             }
  54.             step = 0;
  55.             break;
  56.     }
  57. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement