1. Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
  2. Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
  3. Не писать свой вопрос в первую попавшуюся тему - вместо этого создать новую тему.
  4. За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения.
  5. Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
  6. Перед тем как что-то написать - читать здесь и здесь, а студентам - обязательно здесь.
  7. Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.

ПИД регулятор

Обсуждение вопросов, не относящихся ни к одному из других подразделов

Модератор: kirillio

Ответить

Автор темы
darlov
здесь недавно
здесь недавно
Сообщения: 7
Зарегистрирован: 23 авг 2012, 12:02
Имя: Петров

ПИД регулятор

Сообщение darlov »

Помогите советом, пишу на контроллере S7 300 свой ПИД регулятор,я знаю, что в контроллере имеется встроенный ПИД регулятор, просто хочу поближе познакомится с этим чудо регулятором, так что необходимы советы, только сильно не критикуйте я новичок-самоучка в области автоматизации.
Короче, формула ПИД получилась такова:

Код: Выделить всё

E=U-T 
Y= Kp*(Er+(Esumm+E)*1/Ti+(E0-E)*Df)

где 
U-уставка
Т-действующее значение  регулируемого значения
Е- ошибка
Esumm- сумма предыдущих ошибок
E0- Предыдущая ошибка
Kp- коэфициент пропорциональности
Ti- время интегрирования
Df- время диффернцирования
Y -положении задвижки
Чтобы значение Y было в пределах от 0 до 100, я тупо создал условие если Y>100 то Y=100 и если Y<0 то Y=0.
Вопрос, верно ли я все расчитываю и почему время интегрирование и дефернцирования называется именно время, а не просто коэфициент?

Romcheg
SCADA+
SCADA+
Сообщения: 592
Зарегистрирован: 05 ноя 2009, 11:18
Имя: Бузинов Роман Анатольевич
Страна: Россия
город/регион: Москва
Благодарил (а): 8 раз
Поблагодарили: 33 раза

Re: ПИД регулятор

Сообщение Romcheg »

1) Интегрирование идет по времени
2) Исходя из п.1 - регулятор либо с приведенными коэффициентами работает (Ki, Kd), которые зависят от постоянной времени интегрирования и дифференцирования и также зависят от величины цикла пересчета форумы (программы в контроллере), не забывайте, что все процессы в цифровой технике циклические и упускать эту дельту ну никак нельзя.
3) Не совсем понял почему на Кр умножаете всю формулу, хотя - тут никто не запрещает, но в классическом виде Кр*Е отдельно суммируется.
4) Производную опять же неправильно берете - по определению это dx/dt. Снова упускаете дельту такта пересчета формулы.
4) При выполнении ограничения - обычно прекращается интегрирование ошибки, чтобы сумма не убежала пока вы держите выход регулятора.

Я не совсем гуру, могу кое в чем и ошибаться (за много лет теорию уже подзабыл малость, а на практике обычно уже готовыми регуляторами пользуюсь), так что мои комментарии расценивать как мое личное имхо. Пусть еще кто что подскажет.

Случайно не по этой статье свою формулу писали: http://habrahabr.ru/post/145991/ ?
SCADA+

Автор темы
darlov
здесь недавно
здесь недавно
Сообщения: 7
Зарегистрирован: 23 авг 2012, 12:02
Имя: Петров

Re: ПИД регулятор

Сообщение darlov »

Так, а как сформировать тогда время интегрирования и дифферцирования, у меня к примеру дельта такта обновление формулы состовляет 100ms?
По поводу 3 пункта, эта формула тоже относится к ПИД регулированию, подсматривал отсюда http://ru.wikipedia.org/wiki/ПИД-регулятор
Ну да, согласен нужно дописать ограничение, чтоб интегрирование ошибки прекращался, а то убегает в бесконечность.

Да, эту статью тоже учитывал...
Аватара пользователя

Marrenoloth
завсегдатай
завсегдатай
Сообщения: 524
Зарегистрирован: 05 окт 2009, 11:51
Имя: Тихомиров Дмитрий Викторович
Страна: Россия
город/регион: Москва
Благодарил (а): 16 раз
Поблагодарили: 18 раз

Re: ПИД регулятор

Сообщение Marrenoloth »

Разбейте на 3 составляющих:
Yп=K*E
Yи=((K/Ti)*E*t)+Yи1
Yд=K*Td*(E-E1)/t
где Yи1 и E1 - значения Yи и E из предыдущего цикла контроллера, а t - дискретность вызова (100мс или 0.1сек, если в СИ в данном случае. Или можно на каждом цикле из OB1 вытаскивать, если вызывать планируете в нем.).
Потом Yп, Yи и Yд сложить.

При достижении границ или при режиме работы "Позиционирование" (Когда говорим регулятору: Стоять на 20% и не рыпаться!) замораживаем выход, и каждый цикл пересчитав Yп и Yд и вычтя их из выхода, получаем Yи. Так корректнее и получаем безударное включение при переходе с Позиционирования в Регулирование.

Теперь по теории: Вообще, коэффициент К - размерный! К примеру, если температуру держим, то он в [%/°C]. А постоянные времени в [сек], чтобы "уравновесить" t, который априори в [сек].
Аватара пользователя

Marrenoloth
завсегдатай
завсегдатай
Сообщения: 524
Зарегистрирован: 05 окт 2009, 11:51
Имя: Тихомиров Дмитрий Викторович
Страна: Россия
город/регион: Москва
Благодарил (а): 16 раз
Поблагодарили: 18 раз

Re: ПИД регулятор

Сообщение Marrenoloth »

Кстати, маленькое дополнение: границы выхода не 0-100, а переменные, чтобы можно было создавать каскады, когда выход одного регулятора идет как измеренное значение на вход другого. К примеру, уровень в емкости (0-10 m3) -> расход среды (0-10000 l/h) -> насос (0-100 %). Чтобы адекватно задавать уставку на регулятор "расход-насос", регулятор "уровень-расход" должен выдавать задание 0-10000 l/h. Кстати, коэффициент усиления в на нем будет в [(l/h)/m3]. ;)

Автор темы
darlov
здесь недавно
здесь недавно
Сообщения: 7
Зарегистрирован: 23 авг 2012, 12:02
Имя: Петров

Re: ПИД регулятор

Сообщение darlov »

Спасибо за подробную изложенную информацию, есть теперь что обдумывать. Только вот глупый вопросик, для чего умножаем а потом делим на дискретность вызова, что мы этим получим? Просто не могу в голове собрать формулу. Я понимаю что это подсчитывается производная и интеграл, но мы же и так все это прогоняем по временному циклу. Буду признателен если вправите мне мозги)
Аватара пользователя

Marrenoloth
завсегдатай
завсегдатай
Сообщения: 524
Зарегистрирован: 05 окт 2009, 11:51
Имя: Тихомиров Дмитрий Викторович
Страна: Россия
город/регион: Москва
Благодарил (а): 16 раз
Поблагодарили: 18 раз

Re: ПИД регулятор

Сообщение Marrenoloth »

Ну так интеграл - площадь под графиком, т.е. в дискретном времени сумма площадей столбиков, высота которых - значение рассогласования (Е) в каждом цикле, а ширина - дискретизация циклов по времени (t). Собственно, СУММ(E*t) и получается.
Физический смысл производной - скорость. Т.е. изменений за единицу времени. (E-E1) - изменение не за единицу времени, а за время цикла, т.е. t. Ну, значит на него еще разделить надо.
В принципе, этого можно не делать, но тогда постоянные времени будут измеряться не в секундах, а в циклах и при сравнении теоретических (или взятых с аналогичного объекта) настроек с практическими получим, что у вас Ti будет в t раз больше, а Td в t раз меньше, не более того. Опять же, исходя из того, что Ti, Td и t задаются в секундах.

Если интересно, сходите на http://code.google.com/p/s7-facility/, скачайте ПИД. Только там все на STL и много обвесов, лишних для вас, но, может чем поможет в конкретной реализации.

Автор темы
darlov
здесь недавно
здесь недавно
Сообщения: 7
Зарегистрирован: 23 авг 2012, 12:02
Имя: Петров

Re: ПИД регулятор

Сообщение darlov »

Спасибо, все ясно и понятно.
Так же отдельное спасибо за ссылку, я кстати и программирую на STL т.к. он является более гибким языком.
Еще вот вопросик возник, есть ли способы настройки ПИД регулятора с большим транспортным запаздыванием к примеру 15 мин.
Как я думаю, здесь необходима только пропорциональная составляющая с очень маленьким коэффициентом.
Аватара пользователя

Marrenoloth
завсегдатай
завсегдатай
Сообщения: 524
Зарегистрирован: 05 окт 2009, 11:51
Имя: Тихомиров Дмитрий Викторович
Страна: Россия
город/регион: Москва
Благодарил (а): 16 раз
Поблагодарили: 18 раз

Re: ПИД регулятор

Сообщение Marrenoloth »

А какие задачи в настройке? И вообще, а нужен ли ПИД? Может пару логических условий хватит? А вообще - без И составляющей все-равно останется какая-то погрешность в длительной перспективе, иначе E=0 и K*E=0. Т.е. регулирующий механизм выключился. Так что маленький К, большое Ти и ждааааа(охохо)аааааать!

Автор темы
darlov
здесь недавно
здесь недавно
Сообщения: 7
Зарегистрирован: 23 авг 2012, 12:02
Имя: Петров

Re: ПИД регулятор

Сообщение darlov »

Задача регулирвать температура в большом сушильном барабане, температура в нем начинает изменятся по истечению 5-10 минут. Думаю тут необходим ПИД, так как лигичесике условия с таким транспортнымзапаздыванием вызовут только колебания. А разве это плохо, если регулирующий механизм выключится при K*E=0, т.е. идеальное состояние получется же.
Аватара пользователя

Marrenoloth
завсегдатай
завсегдатай
Сообщения: 524
Зарегистрирован: 05 окт 2009, 11:51
Имя: Тихомиров Дмитрий Викторович
Страна: Россия
город/регион: Москва
Благодарил (а): 16 раз
Поблагодарили: 18 раз

Re: ПИД регулятор

Сообщение Marrenoloth »

Ога! Только реальных таких объектов мало. Тут же тепло приходит и уходит, т.е. его все время нужно будет добавлять. Тогда в итоге получится, что при уставке 75 градусов мы имеем 68 и клапан постоянно открыт на 17% (которые из 75-68 и получаются). Эдакое равновесие системы, но не в той точке, которая нам нужна. И составляющая и дает возможность "выбрать" эту "установившуюся погрешность". Собственно, (для данного примера) если мы при 17% имеем 68 градусов, а при 25% - искомые нами 75, то значение Yи=((K/Ti)*E*t)+Yи1 и будет равно 8%. Но это мы узнаем только когда ПИД будет работать достаточно, чтобы выйти на режим.
Как варианты решения конкретной проблемы запаздывания, можно попробовать "предсказать" где будет через 15 минут наша температура. Хоть по двум последним точкам линейной аппроксимацией! Можно и по трем параболу строить, но математики больше, а толку не много (из моего опыта). Можно вжарить нагрев на 100% в течении (к примеру) двух минут, потом потихоньку прикрыть до 20% и только потом включать ПИД. Или просто увеличивать нагрев на 2% в минуту, перегрели - так же уменьшать. При таких запаздываниях, точности датчиков и погрешностях в проводке - результат сильно не изменится.

Автор темы
darlov
здесь недавно
здесь недавно
Сообщения: 7
Зарегистрирован: 23 авг 2012, 12:02
Имя: Петров

Re: ПИД регулятор

Сообщение darlov »

Спасибо большое! Буду теперь эспериментировать...
Аватара пользователя

san
преподаватель
преподаватель
Сообщения: 1357
Зарегистрирован: 01 сен 2008, 18:32
Имя: Пупена Александр
Страна: Украина
город/регион: Киев
Поблагодарили: 6 раз

Re: ПИД регулятор

Сообщение san »

Darlov, почитайте еще
тут много инетересной информации. Начать можно с "Регулирование на основе SIMATIC", как раз сейчас знакомлюсь с данным материалом. Хоть вроде как многие вещи давно изучены, опробованы и проверены, многое осталось за бортом, так как процессов таких в реалии не было.

Автор темы
darlov
здесь недавно
здесь недавно
Сообщения: 7
Зарегистрирован: 23 авг 2012, 12:02
Имя: Петров

Re: ПИД регулятор

Сообщение darlov »

san писал(а):Darlov, почитайте еще
тут много инетересной информации. Начать можно с "Регулирование на основе SIMATIC", как раз сейчас знакомлюсь с данным материалом. Хоть вроде как многие вещи давно изучены, опробованы и проверены, многое осталось за бортом, так как процессов таких в реалии не было.
Во, то что надо.
У сименса сайт сделан на фреймах и поисковики не видят контент, приходится искать по сайту или обмениваться ссылками. Весьма благодарен за ссылку.
Аватара пользователя

san
преподаватель
преподаватель
Сообщения: 1357
Зарегистрирован: 01 сен 2008, 18:32
Имя: Пупена Александр
Страна: Украина
город/регион: Киев
Поблагодарили: 6 раз

Re: ПИД регулятор

Сообщение san »

san писал(а): Начать можно с "Регулирование на основе SIMATIC", как раз сейчас знакомлюсь с данным материалом.
Честно говоря, много с чем знакомился, накопил немалую библиотеку литературы по ПЛК, но лучшего по регулированию с использованием ПЛК пока не видел.
Аватара пользователя

Marrenoloth
завсегдатай
завсегдатай
Сообщения: 524
Зарегистрирован: 05 окт 2009, 11:51
Имя: Тихомиров Дмитрий Викторович
Страна: Россия
город/регион: Москва
Благодарил (а): 16 раз
Поблагодарили: 18 раз

Re: ПИД регулятор

Сообщение Marrenoloth »

Еще о "объектах с большим транспортным запаздыванием": Регулятор (предиктор, экстраполятор) Смита - математически корректное предсказание, но нужно знать переходную объекта, что не всегда возможно :(

Villy1987
здесь недавно
здесь недавно
Сообщения: 14
Зарегистрирован: 03 сен 2012, 09:46
Имя: Дмитрий
город/регион: Сургут

Re: ПИД регулятор

Сообщение Villy1987 »

День добрый. А как сделать что бы у меня нагреватель выходил на нужную мне температуру если я не могу что бы нагреватель работал на полную мощность, а скорость нагрева была примерно 2 процента мощности каждые 5-10 минут так как быстрый и/или мощный нагрев приводит к выходу из строя нагревательного элемента. И вообще ПИД нагреватель с этим справится??? Заранее спасибо.

Sergeyvmm
осмотрелся
осмотрелся
Сообщения: 128
Зарегистрирован: 12 авг 2010, 01:49
Имя: Сергей
Благодарил (а): 2 раза
Поблагодарили: 8 раз

Re: ПИД регулятор

Сообщение Sergeyvmm »

Вилли, ну напиши ты разумно и с пунктуацией - сам и поймешь, что нужно. Ограничь ты выход регулятора для начала.
Правильно поставленная задача – уже наполовину решенная

Villy1987
здесь недавно
здесь недавно
Сообщения: 14
Зарегистрирован: 03 сен 2012, 09:46
Имя: Дмитрий
город/регион: Сургут

Re: ПИД регулятор

Сообщение Villy1987 »

Sergeyvmm писал(а):Вилли, ну напиши ты разумно и с пунктуацией - сам и поймешь, что нужно. Ограничь ты выход регулятора для начала.
ограничения не помогут, так как я могу не дойти до нужной мне температуры.
пойми мне нужно что бы у меня мощность с 0 росла каждые 5-10 минут на 2-3 % а не что бы сразу с максимального и опускалась....
Аватара пользователя

Marrenoloth
завсегдатай
завсегдатай
Сообщения: 524
Зарегистрирован: 05 окт 2009, 11:51
Имя: Тихомиров Дмитрий Викторович
Страна: Россия
город/регион: Москва
Благодарил (а): 16 раз
Поблагодарили: 18 раз

Re: ПИД регулятор

Сообщение Marrenoloth »

Дмитрий, ну сам же написал все! Отдельно ПИД, который выдает задание на нагреватель, отдельно нагреватель. Значит настраиваем ПИД так, чтобы регулировал, а в сам нагреватель ограничиваем по скорости изменения мощности. Если есть такая штука, то механически на нагревателе, если нет, то программно в ПЛК. Т.е. ПИД дал задание, а нагреватель к нему через пол часа приходит.

Sergeyvmm
осмотрелся
осмотрелся
Сообщения: 128
Зарегистрирован: 12 авг 2010, 01:49
Имя: Сергей
Благодарил (а): 2 раза
Поблагодарили: 8 раз

Re: ПИД регулятор

Сообщение Sergeyvmm »

Villy1987: правильно поставленная задача – уже наполовину решенная.
Правильно поставленная задача – уже наполовину решенная

Villy1987
здесь недавно
здесь недавно
Сообщения: 14
Зарегистрирован: 03 сен 2012, 09:46
Имя: Дмитрий
город/регион: Сургут

Re: ПИД регулятор

Сообщение Villy1987 »

Marrenoloth писал(а):Дмитрий, ну сам же написал все! Отдельно ПИД, который выдает задание на нагреватель, отдельно нагреватель. Значит настраиваем ПИД так, чтобы регулировал, а в сам нагреватель ограничиваем по скорости изменения мощности. Если есть такая штука, то механически на нагревателе, если нет, то программно в ПЛК. Т.е. ПИД дал задание, а нагреватель к нему через пол часа приходит.
с ПЛК еще не приходилось общаться. Зато есть Trace Mode, я все таки решил написать программу на языке ST.... с грамотностью у меня видать хренова, зато с логикой вроде все хорошо.

Villy1987
здесь недавно
здесь недавно
Сообщения: 14
Зарегистрирован: 03 сен 2012, 09:46
Имя: Дмитрий
город/регион: Сургут

Re: ПИД регулятор

Сообщение Villy1987 »

всем спасибо
Аватара пользователя

Jackson
администратор
администратор
Сообщения: 17472
Зарегистрирован: 17 июн 2008, 16:01
Имя: Евгений свет Брониславович
Страна: Россия
город/регион: Санкт-Петербург
Благодарил (а): 749 раз
Поблагодарили: 1278 раз

Re: ПИД регулятор

Сообщение Jackson »

Villy1987 писал(а):
Marrenoloth писал(а):Дмитрий, ну сам же написал все! Отдельно ПИД, который выдает задание на нагреватель, отдельно нагреватель. Значит настраиваем ПИД так, чтобы регулировал, а в сам нагреватель ограничиваем по скорости изменения мощности. Если есть такая штука, то механически на нагревателе, если нет, то программно в ПЛК. Т.е. ПИД дал задание, а нагреватель к нему через пол часа приходит.
с ПЛК еще не приходилось общаться. Зато есть Trace Mode, я все таки решил написать программу на языке ST.... с грамотностью у меня видать хренова, зато с логикой вроде все хорошо.
Не имеет значение, где это реализуется. Marrenoloth все правильно написал. Только для задания на нагреватель я бы может не заводил отдельный ПИД - там достаточно ПИ-закона.
По вопросам работы Форума можно обратиться по этим контактам.

Sergeyvmm
осмотрелся
осмотрелся
Сообщения: 128
Зарегистрирован: 12 авг 2010, 01:49
Имя: Сергей
Благодарил (а): 2 раза
Поблагодарили: 8 раз

Re: ПИД регулятор

Сообщение Sergeyvmm »

Только для задания на нагреватель я бы может не заводил отдельный ПИД - там достаточно ПИ-закона.
Тоже, кстати, не могу себя заставить говорить ПИ регулятор. Для меня он всё тот же ПИД, только постоянная при Д равняется нулю :D
Правильно поставленная задача – уже наполовину решенная
Ответить

Вернуться в «Общие вопросы»