Использую пид регулятор из библиотеки pidreg и плк-100. пид выполняет свою функцию, но лишь тогда, когда значение близко к уставке+-10 процентов. ежели например текущее значение 10 а уставка 80 то пид просто не реагирует воздействием((
Использую пид регулятор из библиотеки pidreg и плк-100. пид выполняет свою функцию, но лишь тогда, когда значение близко к уставке+-10 процентов. ежели например текущее значение 10 а уставка 80 то пид просто не реагирует воздействием((
Я обычно использую ПИД из библиотеки Util.lib, а вызываю регулятор в программе с периодичностью 1 сек. Этот вариант 100% рабочий!!!
Автоматизация Диспетчеризация Сервис
e-mail: ads-kaluga@mail.ru
Сегодня Пид-регулятор заработал. НО!! регулирование сближается к заданию в пределах 5 процентов. и рисует на графике синусоиду! Пид, выйдя на уставку не останавливается, а постоянно регулирует! в ФБ нет упоминание о зоне нечувствительности! как ее можно организовать? вместе с пидом из Util lib использую блок VALVE_REG_NO_POS из библиотеки pidregulator.lib. может в нем проблема? не могу понять как пользлваться входом SINH:BOOL; (* синхронизация начального положения*) этого ФБ. подскажите пожалуйста.
на столе для наглядности подключил мэо(механизм электрический однооборотный) и использую в качестве регулируемой величины датчик его положения.
Колебательный процесс для замкнутых систем регулирования это нормально, а вот амплитуда и частота колебаний и есть в нашем случае качество регулирования.
Для уменьшения колебаний поставь коефициент пропорциональности 1 (Потом начинать подбирать настройки регулятора иммено с этого коэфициента)
Время интегрирования для регулятора 60 сек.
Время дифференцирования 1 сек.
PID_Otoplen(
ACTUAL:=irIzmerenoe,
SET_POINT:=rlZadanie,
KP:=1,
TN:=60,
TV:=1,
Y_MANUAL:=0,
Y_OFFSET:=0,
Y_MIN:=0,
Y_MAX:=100,
MANUAL:=FALSE);
intPosValveOtoplen:=TRUNC(PID_Otoplen.Y);
Для Valve_REG_NO_POS
DBF:=1 (*это зона нечувствительности поставь 1 или 2*)
ValveOtoplen_REG_NO_POS(
IN_VAL:= TRUNC(PID_Otoplen.Y),
DBF:=1,
FullMotionTime:=120,
LuftTime:=3,
SYNC:=0,
ReversTime:=3,
MinWork:=0.5,
MinStop:=1,
LESS=>qblnValveOtoplenie_Close, (*Закрытие клапана*)
MORE=>qblnValveOtoplenie_Open); (*Открытие клапана*)
После выше указанных манипуляций клапан будет адекватно изменять свое положение в соответствии с выставляемым заданием.
Автоматизация Диспетчеризация Сервис
e-mail: ads-kaluga@mail.ru
использую такой
PID_velo(язык ST) - ПИД регулятор. Использована скоростная форма (velocity form ) или рекуррентная формула алгоритма. Реализован безударный переход в ручной режим и автоматический. Можно использовать как в прямом, так и в обратном процессе (холодильник или нагреватель).e(t)- ошибка рассогласования
плюс еще полезные вещи
RS485_1err(язык ST)- отслеживает ошибки сети и наличие сетевого обмена
T1_T_control (язык LD) -программа показывает использование
T1S(язык LD)-задается такт в 1 секунду(включен 1 сек. И выключен 1 сек.). Настраивается в панели конфигуратора. Используется для тактирования ПИД регулятора. В блоке PID_velo выделяется передний и задний фронт сигнала T1S
T_trigg(язык LD) По нажатию одной и той же кнопки происходит включение и выключение(при потребности включить в компиляцию)
time_C(язык ST)-преобразует в миллисекунды циклические отсчеты времени преобразования с МВА-8. Удобно для настройки сетевых параметров и всех тактируемых элементов. Пример: зная, что время обновления канала 700мс нет смысла тактировать PID_velo сигналом 100мс
valTOhmiINT(язык LD) определяет ошибку МВА-8 или сбой сети и подает необходимое значение, заведомо неверное, на панель оператора.
ПЛК-110-ххх-60- М