Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Автонастройка ПИД
Форум разработчиков электроники ELECTRONIX.ru > Цифровая обработка сигналов - ЦОС (DSP) > Алгоритмы ЦОС (DSP)
Beginning
Хочу реализовать алгоритм автоматической настройки коэффициентов ПИД регулятора.
За основу взял метод анализа процесса колебаний вокруг заданного значения.
Из анализа получаем два параметра – dT(размах температуры), t(время периода).
В сети гуляет документ ”Автоматическая настройка регулятора ТРМ101”. В нём описаны формулы расчёта коэффициентов – но формулы не полные.
Вырезка:
Цитата
Из значений параметров автоколебательного процесса вычисляются параметры модели объекта: коэффициент объекта Км и постоянная времени объекта Тм, зная которые, а также коэффициент α, прибор вычисляет в первом приближении параметры ПИД-регулятора:
Хп= k1 * F1(Kм, Tм, α);
Ти= k2 * F2(Kм, Tм, α);
Тд = Ти * α,
где F1 и F2 – некоторые функции оптимальных параметров регулятора в зависимости от параметров объекта;
k1 и k2, α = Тд /Ти – заданные пользователем коэффициенты (по умолчанию k1 = 0,32, k2 = 5, α = 0,1…0,25).

Вопрос – что такое коэффициент объекта Км и постоянная времени объекта Тм?
Что за функции - F1 и F2. Разуметься вопрос относиться к тем, кто работал с ОВЕН.
Ещё нашёл один документ где приводятся простые формулы:
Цитата
kP = 1.2 * dT; kI = 1.5 * t; kD = 0.2 * t;

Насколько эти формулы корректны?
Насколько вообще точен этот способ самонастройки?
Кто может поделиться опытом в этом вопросе.
ukpyr
несколько книг по ПИД: http://depositfiles.com/en/files/4a2oa0cfk , может что-то найдете...
DS
Тут же имелась, кажется, книга Гудвина в закромах Родины ? Там все подробненько разжевано.
IKop
Цитата(Beginning @ Sep 23 2010, 22:56) *
Хочу реализовать алгоритм автоматической настройки коэффициентов ПИД регулятора.
За основу взял метод анализа процесса колебаний вокруг заданного значения.
Из анализа получаем два параметра – dT(размах температуры), t(время периода).

Насколько эти формулы корректны?
Насколько вообще точен этот способ самонастройки?
Кто может поделиться опытом в этом вопросе.


Занимаюсь почти тем-же только для регулировки оборотов двигателя, для приведенных выше формул нашел рисунки тут . У меня получился нормальный переход с одной скорости на другую, но запауск с 0 происходит с большим перерегулированием или рывками. В вашем случае (нагрев) таких проблем не должно возникнуть...
Tanya
Цитата(Beginning @ Sep 23 2010, 23:56) *
Насколько эти формулы корректны?
Насколько вообще точен этот способ самонастройки?
Кто может поделиться опытом в этом вопросе.

Я вот. Никогда не применяла. И не буду. Для себя. Никогда. Ведь основной вопрос такой - какая Вам нужна форма перехода с одного значения задатчика на другое. Как может автонастройка знать это?



Цитата(IKop @ Sep 24 2010, 01:24) *
В вашем случае (нагрев) таких проблем не должно возникнуть...

А почему Вы так считаете?
Beginning
Я создал плату контроллера с функцией ПИД для управления трёх – ходовым клапаном. Создал стенд с лампочкой – эмулятор нагревателя. Лампочка упровляеться контроллерно-симисторовой платкой – триммер. Прикрепил датчик DS18B20 к лампочке и проверяю, как работает ПИД. Вобщем всё наглядно и совпадает с теорией. Работа ПИД сильно зависит от правильных коэффициентов – и ещё нескольких мелочей – которые никогда не упоминаются и в общем то связаны с конкретной целевой системой.
Вначале начитавшись километра ереси про ПИД – решил, что это полная ахинея и неделю пытался придумать свой регулятор. Да.. прикольно получалось – метод предсказания кривых. Когда понял что зашёл слишком далеко, решил вернуться к ПИД. Нашёл правильный документ – и всё стало понятно. Очень помогли размышления над своим регулятором.
При правильных настроенных коэффициентах на заданную температуру выходит чётко и быстро. Например на 80 градусов выходит ~ за 7 секунд с перерегулированием <1C и минимальными счелчками реле. Сначала игрался с П, потом с ПИ регулятором. Коэффициенты подбирал вручную. Потом добавил Д.
Цитата(IKop)
с 0 происходит с большим перерегулированием или рывками. В вашем случае (нагрев) таких проблем не должно возникнуть...

Я думаю у вас коэффициент пропорциональности большой или интеграл не ограничен или и то и другое вместе (за Д сказать ничего не могу, мало опыта). Я например интеграл ограничиваю 0-100% открытия задвижки, хотя в некоторых источниках советуют 70%. У меня датчик прикручен к лампочке (на стенде) поэтому система похожа на вашу. При неправильных коэффициентах – перерегулирование может быть бесконечным.
Цитата(Tanya)
Я вот. Никогда не применяла. И не буду. Для себя. Никогда. Ведь основной вопрос такой - какая Вам нужна форма перехода с одного значения задатчика на другое. Как может автонастройка знать это?

Почему не хотите применять? Есть негативный опыт? Расскажите. Ну, автонастройка знать может исходя из зависимостей, заложенных в математические формулы. Грубо говоря, математика. Но если сильно напрячься и представить математику на практике, то можно понять, почему именно так и ели не так, то почему.
Tanya
Цитата(Beginning @ Sep 24 2010, 10:37) *
Я думаю у вас коэффициент пропорциональности большой или интеграл не ограничен или и то и другое вместе (за Д сказать ничего не могу, мало опыта). Я например интеграл ограничиваю 0-100% открытия задвижки, хотя в некоторых источниках советуют 70%. У меня датчик прикручен к лампочке (на стенде) поэтому система похожа на вашу. При неправильных коэффициентах – перерегулирование может быть бесконечным.

Почему не хотите применять?

Начну с конца. Кажется, написала, почему. Добавлю еще. Я не считаю себя глупее программы автонастройки. Настраивать нужно, добиваясь определенно цели. А она может быть разная.
Вот Вы упомянули ограничение интегральной составляющей... А она в стационарном случае дает львиную долю мощности.
Beginning
Цитата(Tanya)
А она может быть разная.

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

Тут есть два подводных камня – гораздо удобнее донастраивать когда уже есть определённо неплохое приближение (хотя в некоторых случаях ручная настройка (эксперементы) практически невозможны – когда имеешь дело с очень массивными объектами с огромной инерцией), но самое главное это то что настраивать будут другие – которые могут и ничего не знать про ПИД.
Цитата(Tanya)
Вот Вы упомянули ограничение интегральной составляющей

Ну, если честно я бы вообще включил этот закон в ПИД – бессмысленно увеличивать интеграл, когда интегральная составляющая вышла за пределы управляющего воздействия – это только дестабилизирует систему.
Tanya
Цитата(Beginning @ Sep 24 2010, 11:11) *
Ну.. в общем случае цели определены изначально раз и навсегда – максимально быстро и максимально точно выйти на заданный параметр, а остальные варианты считаются как бы приближением (несовершенством) к этим двум целям.

Это не так - объекты и цели могут быть разные.
Цитата(Beginning @ Sep 24 2010, 11:11) *
Тут есть два подводных камня – гораздо удобнее донастраивать когда уже есть определённо неплохое приближение (хотя в некоторых случаях ручная настройка (эксперементы) практически невозможны – когда имеешь дело с очень массивными объектами с огромной инерцией), но самое главное это то что настраивать будут другие – которые могут и ничего не знать про ПИД.

А что Вам скажут "другие", когда Ваш алгоритм настройки им что-нибудь испортит?
Цитата(Beginning @ Sep 24 2010, 11:11) *
Ну, если честно я бы вообще включил этот закон в ПИД – бессмысленно увеличивать интеграл, когда интегральная составляющая вышла за пределы управляющего воздействия – это только дестабилизирует систему.

Вы, кажется мне, не очень правильно применяете ПИД. При больших (относительное понятие - на самом деле, при любых) изменениях задатчика ПИД не должен применяться. Нужно ограничивать скорость изменения задатчика. Тогда все будет нормально.
Beginning
Цитата(Tanya)
Это не так - объекты и цели могут быть разные.

Вобщемто я и не утверждал обратного. Конечно, объекты могут быть разные, и цели тоже, глупо утверждать обратное, но цели ПИД по определению заданны изначально. Т.к. речь идёт о ПИД – то цели определены –и я их описал.
Цитата(Tanya)
А что Вам скажут "другие", когда Ваш алгоритм настройки им что-нибудь испортит?

Настройка может "испортить" перерегулированием. Но на то она и настройка – что может перерегулировать. В ручной настройке – те же закономерности. Лечится это двумя способами . На время настройки – система должна быть в состоянии когда перерегулирование ей не страшно. Второй способ - не допускать перерегулированиею Т.е. вызвать синусоиду на параметре, например температуре, ниже заданной. Т.е Заданная настройка 80С, а коэффициенты настраивать при 60С. Разумеется, требуется дополнительный контроль.
Цитата(Tanya)
Вы, кажется мне, не очень правильно применяете ПИД. При больших (относительное понятие - на самом деле, при любых) изменениях задатчика ПИД не должен применяться. Нужно ограничивать скорость изменения задатчика.

Не понял, что вы имели ввиду. Поясните.
Tanya
Цитата(Beginning @ Sep 24 2010, 12:26) *
Вобщемто я и не утверждал обратного. Конечно, объекты могут быть разные, и цели тоже, глупо утверждать обратное, но цели ПИД по определению заданны изначально. Т.к. речь идёт о ПИД – то цели определены –и я их описал.

Жизнь обширнее и сложнее наших представлений о ней.
Например, нужно сделать регулятор, повышающий температуру с заданной скоростью. И отклонения от скорости должны быть минимизированы... и пр. И регулируют не только температуру.
Цитата(Beginning @ Sep 24 2010, 12:26) *
На время настройки – система должна быть в состоянии когда перерегулирование ей не страшно.

А представьте, что это недопустимо.
Цитата(Beginning @ Sep 24 2010, 12:26) *
Не понял, что вы имели ввиду. Поясните.

Что тут пояснять.. Задатчик не должен прыгать скачком, а должен плавно изменять значение с ограниченной скоростью.
Beginning
Цитата
Жизнь обширнее и сложнее наших представлений о ней.Например, нужно сделать регулятор, повышающий температуру с заданной скоростью. И отклонения от скорости должны быть минимизированы... и пр. И регулируют не только температуру.

Если честно, то я так и подумал что вы приведёте этот пример. Более того – в том пирборе который я реализовываю один из вариантов работы это плавное изменение температуры.
Но! Это не ПИД. Т.е. эту функцию не реализует ПИД. Я планирую выкрутиться из этой ситуации следующим образом – аппроксимировать кривую плавного изменения и получившиеся значения загонять в ПИД как установочные значения. Поэкспериментирую – посмотрю что получиться. Кстати немаловажным критерием будет являться частота щёлкания реле. Если картина будет неудовлетворительная, придётся "апгрейдить" формулы ПИД.
Цитата
А представьте, что это недопустимо.

Представил. Как вы будете настраивать ПИД в ручном режиме без перерегулирования? Допустим, нагревательный элемент имеет хорошую инерцию.
Цитата
Что тут пояснять.. Задатчик не должен прыгать скачком, а должен плавно изменять значение с ограниченной скоростью.

Всё равно не понял что вы хотели сказать.
Как ваше утверждение относиться кэтому:
Цитата(Beginning)
Ну, если честно я бы вообще включил этот закон в ПИД – бессмысленно увеличивать интеграл, когда интегральная составляющая вышла за пределы управляющего воздействия – это только дестабилизирует систему.

Поясню на примере. Вам надо нагреть комнату допустим до 50С. Текущая температура 10С. Вы включаете калорифер. Т.к. комната инерционный объект – температура медленно повышаться. Когда она достигнет нужной температуры – интегральная состовляющая может быть в десятки – сотни раз больше возможного изменения температуры калорифера. И для приведения интеграла в норму температура должно очень долго быть перерегулирована.
vvs157
Цитата(Beginning @ Sep 24 2010, 12:26) *
Не понял, что вы имели ввиду. Поясните.
Пример. Печка на максимальную температуру 1600 С. Вы поставили на задатчике 800 С для нагрева от комнатной температуры. Печка скорее всего на оптимальных параметрах "улетит" за 1000. При этом скорее всего, то, что там обрабатывается будет повреждено. Поэтому ничего, кроме плавного увеличения уставки не остается.
ПИ(Д) оптимален только на малых отклонениях от установленного значения, когда система описывается линейным диф.уравнением невысого порядка. На больших ошибках система как правило становится нелиненой. И если ваша автоматика определила коэффициенты на относительно больших перерегулированиях, то, скорее всего, на малых (а именно это и есть рабочий режим регулятора) эти коэффициенты будут далеко не оптимальны.
Tanya
Цитата(Beginning @ Sep 24 2010, 13:02) *
Всё равно не понял что вы хотели сказать.

Я поняла, что Вы не поняли.
Применительно к Вашему примеру это должно выглядеть так - задатчик плавно меняет уставку - 10.1, 10.2 градусов, 12... 50.
Со скоростью, которая не приводит к зашкаливанию И-компоненты. Возможны варианты..
Oldring
Цитата(Beginning @ Sep 24 2010, 11:11) *
Ну, если честно я бы вообще включил этот закон в ПИД – бессмысленно увеличивать интеграл, когда интегральная составляющая вышла за пределы управляющего воздействия – это только дестабилизирует систему.


Будете смеяться, но именно так и делают по-науке. Ограничивают накопление состояния регулятора при выходе на ограничение управляющего воздействия. Не обязательно на предел управляющего воздействия, можно и при выходе на ограничение скорости изменения управляющего воздействия, например. По этому поводу существует своя теория, как надо регулироавть при наличии таких ограничений.
Beginning
Цитата(vvs157)
Печка скорее всего на оптимальных параметрах "улетит" за 1000.

Нету опыта с такой системой. Но насколько я понял – правильно настроенный ПИД не допускает перерегулирования. Я это наблюдал на своём стенде – когда подобрал правильные коэффициенты – работало как часы при любой разнице температур.
Цитата
=vvs157Поэтому ничего, кроме плавного увеличения уставки не остается.

Это достигается при завышении зоны пропорциональности. Замечу что эт не идеальная настройка ПИД т.к. при этом время выхода на заданную температуру увеличиваеться.
Цитата(vvs157)
И если ваша автоматика определила коэффициенты на относительно больших перерегулированиях, то, скорее всего, на малых (а именно это и есть рабочий режим регулятора) эти коэффициенты будут далеко не оптимальны.

Можете поделиться опытом использования самонастройки? Очень интересно выслушать также умозаключения по поводу поведения объекта. Т.е. Почему вы решили что:" эти коэффициенты будут далеко не оптимальны"

Цитата(Tanya)
Со скоростью, которая не приводит к зашкаливанию И-компоненты. Возможны варианты..

A! Теперь наверно понял чт вы имели ввиду. Если нам надо например температура 50С то для ПИД мы не ставим 50, а повышаем 20->50. Это примерно то что я предложил для плавного регулирования.
Но тогда получаем следующее – что бы определить с какой скоростью нам повышать задатчик нам нужно знать с какой скоростью растёт температура, а это мы не знаем. Если скорость роста температуры будет отличаться от скорости изменения задатчика – то имеем то, от чего хотели уйти – интегральная составляющая начнёт расти. Второе неприятное следствие – это значительное замедление скорости выхода на заданную температуру. И строго говоря, это уже не ПИД как токовой. Возможны еще, какие подводные камни. Вы применяли подобный алгоритм? Очень интересно выслушать мнения о его поведении.
Tanya
Цитата(Beginning @ Sep 24 2010, 13:37) *
Но тогда получаем следующее – что бы определить с какой скоростью нам повышать задатчик нам нужно знать с какой скоростью растёт температура, а это мы не знаем. Если скорость роста температуры будет отличаться от скорости изменения задатчика – то имеем то, от чего хотели уйти – интегральная составляющая начнёт расти. Второе неприятное следствие – это значительное замедление скорости выхода на заданную температуру. И строго говоря, это уже не ПИД как токовой. Возможны еще, какие подводные камни. Вы применяли подобный алгоритм? Очень интересно выслушать мнения о его поведении.

Если мы ничего не знаем априори, то должны сделать эксперимент - узнать, какая будет скорость, подавая вручную некоторую мощность (не обязательно максимальную - мы ведь можем посчитать...) и измеряя ее.
Строго говоря, это и будет самый настоящий ПИД... Алгоритм такой применяла. И не я одна.
Кроме того, мы можем определить (приблизительно...) стационарную мощность в зависимости от температуры и в нужный момент засунуть соответствующее значение в И-компоненту. А до этого момента (это тонкий момент) греть на полной мощности....
_Pasha
Цитата(Tanya @ Sep 24 2010, 13:57) *
А до этого момента (это тонкий момент) греть на полной мощности....

Почему тонкий? Я, например, памятник себе воздвиг ввел параметры, отвечающие за разметку области температур от комнатной (благо, чисто случайно, она схемотехнически доступна) и до сАмой до уставки - когда тупогреть, когда ограничивать скорость задатчика(благобладаря Вам, кстати), когда мерять для автонастройки ПИД и когда переходить к собсна сабжу.
Tanya
Цитата(_Pasha @ Sep 24 2010, 15:06) *
Почему тонкий?

Просто потому, что определять его лучше экспериментально.
Стало быть, мое бла-бла-бла порождает "благобладарность". Спасибо.
_Pasha
Цитата(Tanya @ Sep 24 2010, 15:35) *
мое бла-бла-бла

Спасибо Вам. Это не бла-бла, это эффект Кассандры. Вы ведь не первый год об этом говорите!
ЗЫ топиктартеру: только у мну "сеансовый" контур ПИД. laughing.gif Иными словами, макс. скорость выхода на уставку не гарантируется. Гарантируется только поддержание температуры в установившемся режиме.
Tanya
Цитата(_Pasha @ Sep 24 2010, 15:43) *
Спасибо Вам. Это не бла-бла, это эффект Кассандры. Вы ведь не первый год об этом говорите!

А как Вы меня еще обозвали...
Вот посмотрела http://ru.wikipedia.org/wiki/%D0%9A%D0%B0%...%B4%D1%80%D0%B0

"Согласно Гомеру, она была красивейшей из дочерей Приама, её пророческий дар он не упоминает."
Еще раз - спасибо.

Упрекаете в том, что пишу одно и то же... Тут много было тем про ПИД в разных аспектах и приложениях. К сожалению, легче еще раз написать, чем искать, куда послать... Еще бы автора послать в то место, где писала, что нужно точно учитывать выданную энергию (мощность) для хорошего регулирования и (в данном случае) наружную температуру.
vvs157
Цитата(Beginning @ Sep 24 2010, 13:37) *
Нету опыта с такой системой. Но насколько я понял – правильно настроенный ПИД не допускает перерегулирования. Я это наблюдал на своём стенде – когда подобрал правильные коэффициенты – работало как часы при любой разнице температур.


Можете поделиться опытом использования самонастройки? Очень интересно выслушать также умозаключения по поводу поведения объекта. Т.е. Почему вы решили что:" эти коэффициенты будут далеко не оптимальны"
Все, о чем Вы говорите справедливо только для линейной (в смысле диф. уравнения) системы. Реальные системы обычно этим не отличаются.
ukpyr
Цитата
Со скоростью, которая не приводит к зашкаливанию И-компоненты. Возможны варианты..
Для ускорения выхода на режим я просто давал полную мощность нагрева если дельта заданной и измеренной тем-ры превышала заданный порог. ПИД регулятор в это время тоже работал, но его выход не учитывался. По достижению зоны регулирования управление выходом переключается на ПИД. Превышение заданной температуры можно обрабатывать аналогично - полностью выключать нагрев.
Beginning
Вот расчёт по методу Циглера-Николосу:
для ПИД-регулятора: Kp=0,60*Kc, Ki=2,0*Kp/T, Kd=Kp*T/8
Где Кс - зона пропорциональности при появление автоколебаний. T-период.
Peter Pavlov
Интересно поделиться своим опытом. Делаю автоматику для тепловентиляции. Чистый ПИД не работал никогда. Более важна получалась задержка обратной связи. К примеру давая мощность по линейной составляющей, температура не менялась 5-10 мин, затем как только начиналась менятся температура, можно систему выключать - и при этом все равно перерегулировка гарантирована. Уменьшение К ситуацию не лечила. О полной стабилизации речь вообще не шла. В итоге родился ПИД подобный алгоритм, где скорость изменения мощности фиксирована для 3х диапазонов грубо/точно/останов, аккумуляторы ограничены. Интегральную составляющую не использую. При рассогласовании можность меняется не по линейному закону а с фиксированной скоростью. В итоге работает нормально, не оптимально по времени, но не боится почти любых косяков в оборудовании. Перерегулировок нет, колебательного процесса на клапане нет.
Designer56
Цитата(Peter Pavlov @ Sep 27 2010, 00:41) *
Интересно поделиться своим опытом. Делаю автоматику для тепловентиляции. Чистый ПИД не работал никогда. ......

А Бесекерского почитать не пробовали?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.