Здравствуйте, уважаемые специалисты.
Для регулирования уровня воды в барабане установлен КЗР без датчика положения. Для регулирования выбрал PID из Util.lib и VALVE_REG_NO_POS из PID_Regulators.lib.
Собрал минимальную тестовую программу с последовательным соединением PID - LIN_TRAFO - VALVE_REG_NO_POS.
Загрузил в ПЛК110. Изменяя параметры вижу изменение выхода PID, переключения дискретных выходов. Всё, как бы хорошо.Код:(* проверка 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);
Но при граничном значении выхода ПИД (-100 или +100), после серии импульсов, импульсы на привод прекращаются, хотя, потенциально возможно не полное перемещение привода к крайнему положению.
Какие способы борьбы с "замиранием" привода есть?
Или может быть нужна другая связка PID+VALVE_REG_NO_POS, а лучше другой регулятор (сразу работающий, как Р25 на выходы без накопления с ограничением -100...+100)?


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