| Делимся опытом Наступив на грабли - сообщи другим! Обмен опытом разработки и ремонта электронных устройств. |
ПИД аля по болгарски
17.09.2008, 09:31
|
#41
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 05.08.2007
Адрес: Болгария Перник
Сообщений: 1,771
Сказал спасибо: 74
Сказали Спасибо 357 раз(а) в 245 сообщении(ях)
|
NOPROBLEM, спасибо за труд. Надюсь ПИД многим станет понятнее. Явно некоторые, я в частности трудно въезжаем, а ПИД надобен, хочеш не хочеш. Товар пошел в производство, если что то не так и придется исправлять отпишусь.
Удачи!
|
|
|
|
17.09.2008, 13:36
|
#42
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 11.07.2006
Адрес: Москва, Тушино
Сообщений: 3,709
Сказал спасибо: 778
Сказали Спасибо 994 раз(а) в 552 сообщении(ях)
|
Вообще-то я никогда не использую при регулировании такое вычисление производной и почти никогда не использую значение с датчика в чистом виде. Дело в том, что случайные помехи обычно вызывают при этом бурную реакцию регулятора. Чтобы его успокоить можно применять сглаживание, как значений с датчика, так и производной до такой степени инерционности, которая физически свойсвенна измеряемой величине. Такой КИХ-фильтр можно реализовать, складывая в разной пропорции задержанные на несколько тактов (сохраненнные в кольцевом буфере) предыдущие значения. Один из таких фильтров иллюстрирует подавление импульсной помехи в измерении и при дифференцировании. Коэффициенты округлены до целого числа для ускорения умножения
-- Прилагается рисунок: --

__________________
От ложного знания к истинному незнанию!
|
|
|
|
19.09.2008, 20:09
|
#43
|
|
Частый гость
Регистрация: 28.02.2005
Сообщений: 12
Сказал спасибо: 0
Сказали Спасибо 5 раз(а) в 5 сообщении(ях)
|
Спрошу в этой же теме...
Преамбула. Досталось наследство в виде ряда аппаратов, использующих в своем составе элементы Пельтье (ЭП) для охлаждения продукта/(камеры, а затем продукта). Температуры до -80 гр.С. В некотрых аппаратах контролируется скорость охлаждения, в некотрых - заданная температура. До меня применили классический ПИ-регулятор, на выходе которого был ШИМ для импульсного источника напряжения. При этом регулятор с одними и теми же настройками не мог отрабатывать весь диапазон температур. В результате область регулирования была разбита на поддиапазоны (в некоторых аппаратах до 4-х штук) с разными настройками.
Амбула. Я столкнулся с тем, настройки КАЖДОГО поддиапазона очень часто варьировались от аппарата к аппарату (одной и той же модели). Это связано с тем, что выход блока питания прямопропорционально связан с напряжением в питающей сети, разбросом характеристик применяемых ЭП и т.д. Более того, в одном аппарате я так и не смог эти настройки подобрать. В результате был написан релейный регулятор. Подход к уставке с обеих сторон определяется скоростью наростания/спада температуры и их ускорением для определения управляющего воздействия. Получился достаточно громоздкий, но рабочий во всем диапазоне температур алгоритм. Серьезный его недостаток заключается в явно выраженной синусоидальной форме значения контролируемого процесса (на это обращают внимание заказчики, и мне это тоже не нравится), хоть и в допускаемых пределах; много буферов хранения промежуточных данных (в ремонтных аппаратах стоят процессоры раннего типа - мало ОЗУ).
Недавно наткнулся на эту ветку. Попалась ссылка на http://learncontrol.com/pid/code.htm Попробовал, вставил в программу, приняв Deriv = Reset = 1, а Gain = 10 (половина максимума управляющего воздействия). Удивительно, но этот алгоритм отработал во всем диапазоне температур с перерегулированием всего навсего 20% и ошибкой 5% (это допускается). Потом попробовал в 2 раза уменьшить период квантования (с 20 до 10 секунд) - алгоритм пошел в разнос. Вообще постоянная времени варьируется при разных температурах от аппарата к аппарату в широких пределах (я лично наблюдал от 10 до 40 секунд). Возник вопрос. Как то можно "научить" программу выбирать правильный период квантования, или "подправлять" коэффициенты при составляющих ПИД-регулятора, или забить и использовать уже отработаный релейный регулятор?
С уважением, Goshman
|
|
|
|
20.09.2008, 00:29
|
#44
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 26.08.2006
Сообщений: 1,404
Сказал спасибо: 1
Сказали Спасибо 89 раз(а) в 69 сообщении(ях)
|
|
Сообщение от Goshman
|
|
Потом попробовал в 2 раза уменьшить период квантования (с 20 до 10 секунд) - алгоритм пошел в разнос
|
Имхо, это отчасти по той причине что сигнал обратной связи – температура, величина не зависящая от периода квантования в вашем алгоритме.
Посмотрите что происходит на примере с интегральной компонентой , уменьшив dt в 2 раза при численном интегрировании (суммированием) выходной значение интегральной компоненты на периоде интегрирования (от 0 до T) возрастет в 2 раза! Чего нет при математическом интегрировании. Вы же в цикле просто суммируете ошибку в 2 раза чаще , наверняка не умножив её на дополнительную величину, пропорциональную периоду квантования. Таким образом получается избыточный рост коэффициента при интегральной компоненте.
|
Цитата:
|
|
Как то можно "научить" программу выбирать правильный период квантования, или "подправлять" коэффициенты при составляющих ПИД-регулятора, или забить и использовать уже отработаный релейный регулятор?
|
Можно научить «не зависеть» от периода квантования, умножая ошибку на dt для интегральной компоненты I=I+Ki*Prop*dt в цикле,
А для дифференциальной компоненты разделив на dt :
Kd*Diff/dt.
Если период квантования задается например в цикле функцией delay(dt) (или иным эквивалентным способом) , то этот метод поможет избавиться от проблем с периодом квантования и его сильным влиянием на работу алгоритма. Посмотрите еще раз как это лаконично сделано в алгоритме приведенном вверху 3-й страницы этой темы.
А подправлять коэффициенты компонент можно например по принципам изложенным в
http://logic-bratsk.ru/radio/pid/irt/main1_10.htm
или http://www.pidregulator.com/chapter3page17.html (Циглера - Николса)
Надеюсь что Вы также прочли хорошую книжку, выложенную в этой теме вверху 4-й страницы уважаемым NOPROBLEM-ом.
|
|
|
|
20.09.2008, 01:40
|
#45
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 11.07.2006
Адрес: Москва, Тушино
Сообщений: 3,709
Сказал спасибо: 778
Сказали Спасибо 994 раз(а) в 552 сообщении(ях)
|
|
Сообщение от Goshman
|
Вообще постоянная времени варьируется при разных температурах от аппарата к аппарату в широких пределах (я лично наблюдал от 10 до 40 секунд).
С уважением, Goshman
|
Полагаю, что такой разброс требуемых настроек может объясняться разной теплоизоляцией и термическим сопротивлением от ПТ к рабочему телу. Нелинейность при изменении температуры я наблюдал при более чем 1000С, но там начинает сказываться излучение, а оно пропорционально 4 степени температуры. Кстати, там получилось отлично, путем построения в процессе настройки гладкой функциональной (полином 2 степени по 3 точкам температуры) зависимости коэффициентов от температуры. Но у Вас вроде нелинейность может быть только от образования/таяния льда в каких-то зазорах, больше мне ничего на ум не приходит. Но если нелинейность велика, то классические методы настройки Вам плохо помогут, только метод "Научного Тыка"
|
Цитата:
|
|
Возник вопрос. Как то можно "научить" программу выбирать правильный период квантования, или "подправлять" коэффициенты при составляющих ПИД-регулятора, или забить и использовать уже отработаный релейный регулятор?
|
Как уже заметил уважаемый tauP10, изменение периода квантования просто меняет масштаб оценки скорости, поскольку по определению она равна dT/dt. Смена периода эквивалентна (в 1 приближении) смене коэффициента при при дифф. составляющей (или Td).
А вот подправлять коэффициенты в процессе работы по результатам регулирования (амплитуде ошибки температуры) ИМХО очень разумно, особенно при Вашем избытке времени  . Думаю, хорошо будет реализовать непрерывную настройку всех трех коэффициентов по Симплекс методу оптимизации. Он не требует сложных вычислений и вполне реализуем на МП, где присутствуют подпрограммы целочисленного умножения и деления.
Удачи!
__________________
От ложного знания к истинному незнанию!
|
|
|
|
21.09.2008, 12:06
|
#46
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 05.08.2007
Адрес: Болгария Перник
Сообщений: 1,771
Сказал спасибо: 74
Сказали Спасибо 357 раз(а) в 245 сообщении(ях)
|
ИМХО если температура далека от желаемой охладители на максимум. Если близка тупо уменшить время квантования-вычисления нового ШИМа, до 1сек скажем или меньше, до 0,1сек примерно. И ограничить шаг изменения ШИМа до около 1-2% от максимума. Написал, Вам проверять......
Удачи!
|
|
|
|
21.09.2008, 13:32
|
#47
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 11.07.2006
Адрес: Москва, Тушино
Сообщений: 3,709
Сказал спасибо: 778
Сказали Спасибо 994 раз(а) в 552 сообщении(ях)
|
|
Сообщение от Popeye
|
ИМХО если температура далека от желаемой охладители на максимум. Если близка тупо уменшить время квантования-вычисления нового ШИМа, до 1сек скажем или меньше, до 0,1сек примерно. И ограничить шаг изменения ШИМа до около 1-2% от максимума. Написал, Вам проверять......
Удачи!
|
Вся проблема в том, что если выключишь охладитель при нужной температуре, то она еще некоторое время продолжает снижаться. Просто охладитель, чтобы охлаждать, должен быть холоднее объекта. А после выключения температура выравнивается, естественно еще охлаждая объект. Вот и приходится ловить эту разницу и выключать при более высокой температуре (релейное управление), либо анализировать скорость охлаждения и выключать с ее учетом (ПД-регулятор). Но беда в том, что при разных температурах и у разных экземпляров настройки должны быть разные  Подозреваю, что они еще и со временем меняться должны учитывая либо старение, либо разные наполнения камер... Вот тут и думается, что процесс постоянной настройки коэффициентов регулятора есть не только кардинальный, но и единственно разумный выход
__________________
От ложного знания к истинному незнанию!
|
|
|
|
22.09.2008, 19:25
|
#48
|
|
Частый гость
Регистрация: 28.02.2005
Сообщений: 12
Сказал спасибо: 0
Сказали Спасибо 5 раз(а) в 5 сообщении(ях)
|
Основная проблемма возникла с передачей аппаратов в отдел производства. И связана она с тем, что для каждого аппарата могут применяться свои настройки регулятора. Квалификации сборщика может быть недостаточно (по мнению начальства) для их корректного определения. Собственно для этого я и применил "релейный" регулятор, в котором контролируемый праметр подводится к уставке с определенной скоростью сверху и снизу, а необходимая мощность вычисляется еще и по ускорению параметра. Работает, сам подстраивается, неплохо отрабатывавет возмущения типа изменения расхода воды через радиаторы ЭП. Но, он громоздкий и есть недостатки что я уже описывал выше. ПИД-регулятор более красив и технологичен, но присутствует сложность настройки. Сейчас в виду недостатка времени реализовал оба алгоритма с возможностью выбора одного из них. Со временем (если оно появится) попробую настройки ПИД-регулятора править "на лету". Хотя, посмотрев предложенную литературу, думаю, что эта задача нетривиальная.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
| Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
|
ПИД регулятор на AVR
|
ua_gruzin |
Микроконтроллеры, АЦП, память и т.д |
52 |
22.03.2012 15:52 |
|
ПИД регулятор
|
masterpc |
Производственное оборудование |
14 |
05.03.2007 16:24 |
|
ПИД регулятор на AVR
|
mishutka |
Микроконтроллеры, АЦП, память и т.д |
40 |
31.12.2006 03:11 |
|
Пид-регулятор и AVR
|
French |
Микроконтроллеры, АЦП, память и т.д |
1 |
06.10.2004 23:30 |
Часовой пояс GMT +4, время: 14:01.
|
|