Рампа с заданием скорости увеличения/уменьшения:
Код:FUNCTION RAMP : REAL; VAR_INPUT Q_FB : REAL; (* Значение выхода на предыдущем цикле (ОС с задержкой с выхода функции) *) X : REAL; (* Входное значение *) VU_MAX : REAL; (* Скорость увеличения *) VD_MAX : REAL; (* Скорость уменьшения *) CYCLE : REAL; (* Цикл, в СЕК *) RST : BOOL; (* Сброс *) END_VAR IF 0.0 > VU_MAX THEN VU_MAX := 0.0; END_IF IF 0.0 > VD_MAX THEN VD_MAX := 0.0; END_IF IF RST THEN RAMP := X; ELSIF X > Q_FB THEN VU_MAX := VU_MAX * CYCLE; VD_MAX := X - Q_FB; IF VU_MAX > VD_MAX THEN VU_MAX := VD_MAX; END_IF RAMP := Q_FB + VU_MAX; ELSIF X < Q_FB THEN VD_MAX := -1.0 * VD_MAX * CYCLE; VU_MAX := X - Q_FB; IF VD_MAX < VU_MAX THEN VD_MAX := VU_MAX; END_IF RAMP := Q_FB + VD_MAX; ELSE RAMP := X; END_IF END_FUNCTION




Ответить с цитированием