Время цикла берут либо с аналогового модуля либо создают самостоятельно.
Вид для печати
Время цикла берут либо с аналогового модуля либо создают самостоятельно.
Уважаемый deniska13 какие параметры Вы устанавливали в PID регуляторе из библиотеки UTIL ?
В смысле? Для какой системы?
К= 0,05..0,1, T=50..100..150.
Step=T#1s
MinPulse=T#300ms
Применил Ваш регулятор на реальном объекте для регулирования ГВС.
К = 5
Т = 50
Время хода привода = 120с
MinPulse = 500мс
Регулятор не выдаёт импульсов с разной длительностью, а просто замыкает либо "больше" либо "меньше", "стоп" не увидел. Возможно я что-то не так настроил, подскажите в чем может быть ошибка.
Поставьте К=0,05. 5 - это слишком много.
Блок работает, используется именно в ИТП.
Спасибо. Попробую, Ваш ФБ VALVE_3_POS мне понравился.
Прокомментировать ФБ? Могу, но пока не до этого. На самом деле, это обычный ПИ регулятор, переписанный в диф форму, без накопления интегральной составляющей.
Входных значений коэффициентов регулирования? Они те же, что и для "классического ПИД с выходной величиной в диапазоне 0..1 (привычка не пользоваться %). Т.е для типичного АВОК для отопления К=0,02 (аналог 2 для случая выхода 0..100%), T=300. Для ГВС, как динамичной системы, К=0,05, Т=100. Дальше подбираем.
Господа! Может кто поделиться библиотекой OSCAT ?
Мучаюсь над большой проблемой для себя: Есть ПЛК110-60 с датчиком температуры (подключена через модуль МВ110-8А), нужно управлять нагревом тэна, так чтобы по достижению определенной температуры тэн отключался и включался вентелятор.
Уважаемые, может у когото уже был подобный опыт? поделитесь кто чем может :rolleyes:
бибка же бесплатна, свободно лежит на сайте
Вложение 24888
Господа знатоки, подскажите пожалуйста студенту, есть следующую проблема:
С ПИД-а выходит величина Y (REAL) - принимает значение от 0 до 100 (чем ближе PV к SP - тем меньше)
Далее я преобразую Y в BOOL и вывожу в BLINK - нужно чтобы нагреватель включался через дискрет импульсно
И тут есть проблема. параметры TIMELOW и TIMEHIGH должны быть непостоянными, а зависеть от величины Y, то есть чем больше величина Y - тем чаще должен срабатывать дискрет MIG1, и соответственно чем ниже величина Y, тем реже срабатывает дискрет.
Y конвертирую в YTIME путем REAL_TO_TIME, далее YTIME завожу на TIMEHIGH или нужно как-то иначе?
Спасибо добрый человек!
Уважаемы ASo можете этот ФБ Вложение 24892 сделать чуточку интеллектуальней что ли:)
У вас длительность импульсов всегда одинаковая...в моем блоке длительность импульсов меняется в зависимости на сколько текущее значение близко или далеко от уставки....чем дальше, тем импульс длиннее и наоборот,
при достижении регулятором крайнего положения 100 или -100, импульс имеет постоянное значение...Ваш регулятор будет не очень точно работать
В моем блоке можно реализовать, дополнительно свой регулятор, внутренний, и можно будет обойтись без ФБ PID из библиотеки UTIL. Сам блок, как я считаю, работает правильно, есть небольшие недостатки в том, что
он имеет мертвую зону большую, когда выход ПИДа находится в диапазоне от -10 до 10, но это можно устранить путем уменьшения минимальной длительности импульса...при полном ходе ИМ в 120 сек, минимальный импульс будет 600мс, если полный ход ИМ установить 60 сек, то минимальная длительность импульса будет 300 мс, то есть у ФБ VALVE_3_POS импульс будет выдан, когда значение расчетного импульса в зависимости от значения на входе будет больше минимальной длительности импульса...с этим можно поиграться и добиться работы регулятора в пределах выхода ФБ ПИД от -5 до 5 и того меньше...что даст более точное регулирование, но при этом постоянное дерганье ИМ в близи уставки, что сказывается на сроке службе ИМ. Ну и конечно влияют установленные коэффициенты ПИДа, нужно чтобы он работал быстро на системах ГВС, на отоплении можно и даже нужно, чтобы был медленнее, тут нужно подбирать KP и TN...
Что касается управления горелок, так там все гораздо проще, там не нужно обычно очень хорошего регулятора, можно обойтись и обычным 2 поз, ваш будет вообще идеально работать, так как котловой контур обычно более инерционен, нежели чем, например система ГВС..
Работает Ваш ФБ согласен замечательно, но Вот если бы Вы добавили в него регулятор свой, что бы было как у ASo, то было бы ещё лучше.
Мой вариант VALVE_3_POS
Вложение 24903
Вложение 24904
С выборкой люфта механизма, с контролем мин. длительности импульсов и мин. паузы между импульсами и мин. паузы при реверсе механизма.
Есть вход синхронизации виртуального положения текущему значению на входе, входы ручного управления.
Не нравится мне этот пид утильный, или настраивать его не умею, входное изменилось он обратно на 100 отсчитывает:(
Что Вам в нем не нравится?) Хороший регулятор на самом деле. Если очень быстро считает, значит к Вас большое значение КР и маленькое TN это образно говоря...
Поиграйтесь с значениями на этих входах и увидите как меняется скорость изменения выходного значения на выходе ПИДа
Столько у вас много входных параметров) можно запутаться при настройке) чем проще сделано, тем качественнее работает)...в моем блоке можно изменить немного код и минимальную длительность импульсов задавать вручную,
но тот кто будет пользоваться этим блоком, не видя что "внутри" будет слабо понимать, какие параметры для работы блока оптимальные, чтобы блок работал корректно. Что касается люфта и времени реверса, обычно
это происходит мгновенно, и это не атомная станция, а обычные тепловые пункты и котельные где 1 сек не играет сильной роли не говоря уже о люфте в 500мс, но это лично мое мнение....а как у Вас в блоке работает функция синхронизации положения, можете суть ее рассказать, нет возможности сейчас просмотреть код блока..Для чего нужен параметр "минимальная остановка"? MinStop
Я ничего не изобретал, а сделал столько входных переменных, сколько было у VALVE_REG_NO_POS из библиотеки PID_Regulators ОВЕН.
Вложение 24905
Вложение 24906
Вложение 24907
Может бы свой ФБ и не сочинял, а взял бы готовый, только ФБ из библиотеки PID_Regulators в эмуляции не работает, только в реальном ПЛК.
По тому что данная библиотека в ядре ПЛК.