PDA

Просмотр полной версии : Применение ФБ PID (Util.lib) и VALVE_REG_NO_POS (PID_Regulators.lib) для КЗР



FPavel
23.05.2022, 13:39
Здравствуйте, уважаемые специалисты.

Для регулирования уровня воды в барабане установлен КЗР без датчика положения. Для регулирования выбрал PID из Util.lib и VALVE_REG_NO_POS из PID_Regulators.lib.

Собрал минимальную тестовую программу с последовательным соединением PID - LIN_TRAFO - VALVE_REG_NO_POS.

(* проверка PID из Utils.lib *)
PID2(ACTUAL:=myPV,
SET_POINT:=mySP,
KP:=myKP,
TN:=DINT_TO_REAL(myTi),
TV:=myTd,
Y_MANUAL:=myYmanual,
Y_OFFSET:=myYOffset,
Y_MIN:=-100,
Y_MAX:=100,
MANUAL:=myManual,
RESET:=myReset,

Y=>myY,
LIMITS_ACTIVE=>myLimitsActive,
OVERFLOW=>myOverflow);

(* LIN_TRAFO *)
ltScale(in:=myY, in_min:=-100, in_max:=100, out_min:=0, out_max:=100, out=> Position);
(* VALVE_REG_NO_POS *)
KZR(in_val:=Position, DBF:=2, FullMotionTime:=60, LuftTime:=5,
SYNC:=FALSE, ReversTime:=0.5,MinWork:=0.2,MinStop:=0.5, LESS=>DO2, MORE=>DO3);

Загрузил в ПЛК110. Изменяя параметры вижу изменение выхода PID, переключения дискретных выходов. Всё, как бы хорошо.
Но при граничном значении выхода ПИД (-100 или +100), после серии импульсов, импульсы на привод прекращаются, хотя, потенциально возможно не полное перемещение привода к крайнему положению.

Какие способы борьбы с "замиранием" привода есть?
Или может быть нужна другая связка PID+VALVE_REG_NO_POS, а лучше другой регулятор (сразу работающий, как Р25 на выходы без накопления с ограничением -100...+100)?

Николай Суриков
23.05.2022, 17:02
out_min:=-1, out_max:=101

FPavel
23.05.2022, 17:26
Спасибо. Завтра с утра проверю на ПЛК.
Сейчас уже рабочий день завершился.

Я ещё нашёл предложение обвеса PID и VALVE_REG_NO_POS
https://www.asutp-volgograd.com/blog/pid-regulator-codesys.html
файл "PID_VALVE_NEW.EXP" https://www.asutp-volgograd.com/uploads/1/5/4/0/15400238/pid_valve_new.exp
Идея - при переполнении на выходе LIMITS_ACTIVE (PID) устанавливается TRUE, которая формирует импульс для сброса RS триггера и интегральной составляющей PID (вход RESET). Триггер блокирует запись в выходные переменные Close и Open (больше и меньше на КЗР). Для установки триггера используется задний фронт от OR сигналов Close и Open, таким образом первый импульс после сброса блокируется.
60798