Разные коэффициенты сносно работают для регулировки расхода с помощью трехпозиционного шарового крана (управление по шим).
Однако, не могу разобраться с ПИД регулятором для частотника поддерживающего уровень. Уровень поддерживается постоянным (+-1%) даже при сильных колебаниях расхода, но при постоянном расходе (стабильный уровень поддерживается) но частота постоянно гуляет в диапазоне +-10 Гц. И угомонить ее у меня не получается. Код ниже, могу предположить, что как-то не так работаю с аналоговым регулированием (4..20мА).
Код:
FUNCTION_BLOCK pid_pchv
VAR_INPUT
actual:REAL;
set_point:REAL;
kp: REAL;
tn: REAL;
tv: REAL;
z:REAL;
y_max:REAL;
period:WORD;
reset:BOOL;
END_VAR
VAR_OUTPUT
out_real:REAL;
END_VAR
VAR
PID:PID;
y_min:REAL;
e:REAL;
y_real: REAL;
y_int: INT;
tm1:TON;
END_VAR
tm1(IN:=TRUE, PT := WORD_TO_TIME(period*1000+10));
y_min:=-1*y_max;
IF tm1.Q THEN (*опрашиваем датчик раз в 10 сек*)
actual := (actual- 4)/0.16; (*переводим ток в уровень от 0 до 100*)
e := actual - set_point;
IF ABS(e) > z THEN
pid(
ACTUAL := e,
SET_POINT := 0,
KP := kp,
TN := tn,
TV := tv,
Y_MIN := y_min/100, (*мА*)
Y_MAX := y_max/100); (*мА*)
END_IF
tm1(IN:=FALSE);
END_IF
out_real := -y_real; (*возвращает разницу которую нужно добавить к текущему значению токового выхода*)
y_real:=0;