FUNCTION_BLOCK MY_PWM
VAR_INPUT
Enable:BOOL; //Разрешение работы
Y:REAL; //Вход от ПИД регулятора 0...100%
END_VAR
VAR_OUTPUT
Out:BOOL; //Выход на исполнительный механизм (нагреватель)
END_VAR
VAR
TL,TH:lin_trafo;
Time_Low,Time_High:TIME;
BL:blink;
END_VAR
TL(IN:=Y, IN_MIN:=0,IN_MAX:=100,OUT_MIN:=9500,OUT_MAX:=500); // Расчет длительности паузы (мс)
TH(IN:=Y, IN_MIN:=0,IN_MAX:=100,OUT_MIN:=500,OUT_MAX:=9500); //Расчет длительности импульса (мс)
Time_Low:=REAL_TO_TIME(TL.OUT);
Time_High:=REAL_TO_TIME(TH.OUT);
BL(ENABLE:=TRUE, TIMELOW:=Time_Low, TIMEHIGH:=Time_High);
Out:=BL.OUT AND Enable;