@startuml start :Считать DATA_FROM_PCON; :Обновить фильтры DINPUT (DFILTER_COUNTER, DINP_FILTER*); :Обработать CALC_SM_STATE (0..6)\nADC -> физ. величины; :Обновить VIN/VOUT/CURRENT фильтры; :Рассчитать защиты\n(OVERCURRENT, OVERVOLTAGE, OVERTEMP); :Обновить BRAKE_ENERGY_*; if (CHOPPER_ENABLE && !GlobalError) then (yes) :PI-регулятор\n(REG_INPUT, REG_OUTPUT, REG_CURRENT_LIMIT); else (no) :Сброс регулятора\n(REG_INTEGRATOR и др.); endif :Расчёт CHOPPER_PWM_WIDTH_LIMIT; :Генерация ШИМ для CHOPP_BOT_IGBT; if (GlobalError || !BRAKE_ENABLE || BRAKE_ERROR) then (off) :BRAKE_TOP_IGBT = 0; else (on) :Генерация ШИМ для BRAKE_TOP_IGBT; endif :Логика вентилятора (DIGITAL_OUTPUT[2]); :Формирование DATA_TO_PCON\nи разбор DATA_FROM_PCON; stop @enduml