Профиль должен быть заполнен на русском языке кириллицей. Заполнение профиля заведомо ложными или некорректными данными - причина возможного отказа в регистрации на форуме.

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

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

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

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

Сообщение darlov » 23 авг 2012, 11:25

Помогите советом, пишу на контроллере 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+
Сообщения: 520
Зарегистрирован: 05 ноя 2009, 11:18
Ф.И.О.: Бузинов Роман Анатольевич
Благодарил (а): 5 раз
Поблагодарили: 14 раз

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

Сообщение Romcheg » 23 авг 2012, 11:57

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

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

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


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

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

Сообщение darlov » 23 авг 2012, 12:40

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

Да, эту статью тоже учитывал...

Аватара пользователя

Marrenoloth
частый гость
частый гость
Сообщения: 489
Зарегистрирован: 05 окт 2009, 10:51
Ф.И.О.: Тихомиров Дмитрий Викторович
Откуда: Москва
Благодарил (а): 13 раз
Поблагодарили: 17 раз
Контактная информация:

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

Сообщение Marrenoloth » 23 авг 2012, 16:04

Разбейте на 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
частый гость
частый гость
Сообщения: 489
Зарегистрирован: 05 окт 2009, 10:51
Ф.И.О.: Тихомиров Дмитрий Викторович
Откуда: Москва
Благодарил (а): 13 раз
Поблагодарили: 17 раз
Контактная информация:

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

Сообщение Marrenoloth » 23 авг 2012, 16:13

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


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

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

Сообщение darlov » 24 авг 2012, 06:35

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

Аватара пользователя

Marrenoloth
частый гость
частый гость
Сообщения: 489
Зарегистрирован: 05 окт 2009, 10:51
Ф.И.О.: Тихомиров Дмитрий Викторович
Откуда: Москва
Благодарил (а): 13 раз
Поблагодарили: 17 раз
Контактная информация:

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

Сообщение Marrenoloth » 24 авг 2012, 09:35

Ну так интеграл - площадь под графиком, т.е. в дискретном времени сумма площадей столбиков, высота которых - значение рассогласования (Е) в каждом цикле, а ширина - дискретизация циклов по времени (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, 11:02
Ф.И.О.: Петров

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

Сообщение darlov » 24 авг 2012, 10:45

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

Аватара пользователя

Marrenoloth
частый гость
частый гость
Сообщения: 489
Зарегистрирован: 05 окт 2009, 10:51
Ф.И.О.: Тихомиров Дмитрий Викторович
Откуда: Москва
Благодарил (а): 13 раз
Поблагодарили: 17 раз
Контактная информация:

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

Сообщение Marrenoloth » 24 авг 2012, 10:55

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


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

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

Сообщение darlov » 24 авг 2012, 11:09

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

Аватара пользователя

Marrenoloth
частый гость
частый гость
Сообщения: 489
Зарегистрирован: 05 окт 2009, 10:51
Ф.И.О.: Тихомиров Дмитрий Викторович
Откуда: Москва
Благодарил (а): 13 раз
Поблагодарили: 17 раз
Контактная информация:

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

Сообщение Marrenoloth » 24 авг 2012, 11:34

Ога! Только реальных таких объектов мало. Тут же тепло приходит и уходит, т.е. его все время нужно будет добавлять. Тогда в итоге получится, что при уставке 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, 11:02
Ф.И.О.: Петров

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

Сообщение darlov » 24 авг 2012, 11:46

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

Аватара пользователя

san
преподаватель
преподаватель
Сообщения: 1400
Зарегистрирован: 01 сен 2008, 17:32
Ф.И.О.: Пупена Александр
Откуда: Киев, Украина
Поблагодарили: 1 раз
Контактная информация:

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

Сообщение san » 24 авг 2012, 12:34

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


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

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

Сообщение darlov » 24 авг 2012, 14:15

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

Во, то что надо.
У сименса сайт сделан на фреймах и поисковики не видят контент, приходится искать по сайту или обмениваться ссылками. Весьма благодарен за ссылку.

Аватара пользователя

san
преподаватель
преподаватель
Сообщения: 1400
Зарегистрирован: 01 сен 2008, 17:32
Ф.И.О.: Пупена Александр
Откуда: Киев, Украина
Поблагодарили: 1 раз
Контактная информация:

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

Сообщение san » 24 авг 2012, 15:02

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

Аватара пользователя

Marrenoloth
частый гость
частый гость
Сообщения: 489
Зарегистрирован: 05 окт 2009, 10:51
Ф.И.О.: Тихомиров Дмитрий Викторович
Откуда: Москва
Благодарил (а): 13 раз
Поблагодарили: 17 раз
Контактная информация:

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

Сообщение Marrenoloth » 27 авг 2012, 15:38

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


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

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

Сообщение Villy1987 » 07 сен 2012, 09:12

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


Sergeyvmm
осмотрелся
осмотрелся
Сообщения: 127
Зарегистрирован: 12 авг 2010, 00:49
Ф.И.О.: Анохин С.А.

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

Сообщение Sergeyvmm » 07 сен 2012, 09:51

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


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

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

Сообщение Villy1987 » 07 сен 2012, 10:02

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


ограничения не помогут, так как я могу не дойти до нужной мне температуры.
пойми мне нужно что бы у меня мощность с 0 росла каждые 5-10 минут на 2-3 % а не что бы сразу с максимального и опускалась....

Аватара пользователя

Marrenoloth
частый гость
частый гость
Сообщения: 489
Зарегистрирован: 05 окт 2009, 10:51
Ф.И.О.: Тихомиров Дмитрий Викторович
Откуда: Москва
Благодарил (а): 13 раз
Поблагодарили: 17 раз
Контактная информация:

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

Сообщение Marrenoloth » 07 сен 2012, 10:05

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


Sergeyvmm
осмотрелся
осмотрелся
Сообщения: 127
Зарегистрирован: 12 авг 2010, 00:49
Ф.И.О.: Анохин С.А.

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

Сообщение Sergeyvmm » 07 сен 2012, 12:16

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


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

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

Сообщение Villy1987 » 07 сен 2012, 14:38

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


с ПЛК еще не приходилось общаться. Зато есть Trace Mode, я все таки решил написать программу на языке ST.... с грамотностью у меня видать хренова, зато с логикой вроде все хорошо.


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

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

Сообщение Villy1987 » 07 сен 2012, 14:39

всем спасибо

Аватара пользователя

TEB
специалист по DEIF
специалист по DEIF
Сообщения: 7884
Зарегистрирован: 17 июн 2008, 15:01
Ф.И.О.: Евгений свет Брониславович
Благодарил (а): 35 раз
Поблагодарили: 63 раза
Контактная информация:

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

Сообщение TEB » 12 сен 2012, 19:37

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


с ПЛК еще не приходилось общаться. Зато есть Trace Mode, я все таки решил написать программу на языке ST.... с грамотностью у меня видать хренова, зато с логикой вроде все хорошо.


Не имеет значение, где это реализуется. Marrenoloth все правильно написал. Только для задания на нагреватель я бы может не заводил отдельный ПИД - там достаточно ПИ-закона.
По вопросам работы Форума можно обратиться ко мне, или по этим контактам.


Sergeyvmm
осмотрелся
осмотрелся
Сообщения: 127
Зарегистрирован: 12 авг 2010, 00:49
Ф.И.О.: Анохин С.А.

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

Сообщение Sergeyvmm » 13 сен 2012, 09:31

Только для задания на нагреватель я бы может не заводил отдельный ПИД - там достаточно ПИ-закона.

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


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



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей