Познаю ПИД
- Войдите на сайт для отправки комментариев
Вс, 11/09/2016 - 16:20
Как оценить правильность подбора коэффициентов для ПИД регулятора?
Для будущего проекта изучаю ПИД регулятор, собрал простейшую схему из светодида и фоторезистора. Задача: иметь стабильный сигнал на фоторезисторе.
Фотография схемы
Скетч
int led = 9, stab=100, ldr=0; //номером пина светодиода, заданная температура, данные с фоторезистора
float Kp=0.1,Ki=0.01,I,x; //коэффициент пропорциональной части, интегральной части, накопленная ошибка, значение на светодиод
void setup()
{
Serial.begin (9600);
pinMode(led, OUTPUT); //светодиод выход
}
void loop()
{
I=I+stab-analogRead(ldr);// накопленная ошибка
x=x+Kp*(stab-analogRead(ldr))+Ki*I; //вычисление значение для светодиода
analogWrite(led,x); //зажигаем светодиод
Serial.print (millis()); //на какой миллисекунде считанное значение
Serial.print (",");
Serial.print (analogRead(ldr)); //считанное значение с фоторезистора
Serial.println();
}
В принципе все работает. Подбираю коэффициенты на глаз, получилось Кр=0,1 и Ki=0,01. При этом не наблюдается видимого моргания светодиода, при возмущении (вставляю лист бумаги между светодиодом и фоторезистором)- видно как система качается и стабилизируется.
Увеличивая коффициенты мигание заметнее.
Как оценить правильность подбора коэффициентов для ПИД регулятора?
Пробывал в таблицу переносить и рисовать график
И считать среднеквадратичное отклонение, но за счет большой ошибки в начале расхождение результатов может быть неправдоподобно. Как понять что новый коэффициент лучше предыдущих- не придумаю. Если тольк брать значение в одинаковые промежутки времения, для одинаковости результатов. Но как то это костыльно.
В идеале конечно хотелось бы чтобы программа прогнала систему по всем значениям коэффициентов и выбрала лучший.
P.S до дифференциальной части пока не добрался.
Как вы собираетесь это сделать в отсутствие объекта управления? Даже профессиональные АСУТП-шники бывает этим занимаются на ином объекте годами, а вы на теоретической модели собрались изобразить на скорую руку.
Объект управления- свечение светодиода.
Хорошо, что занимаются, мне бы хотя бы как они занимаются. Как оценить, что например Кр=0.1 лучше чем Кр=0,2?
А зачем светодиоду ПИД-регулирование? Кроме того, я не очень понимаю, как у вас обратная связь организована.
Кроме того, я не очень понимаю, как у вас обратная связь организована.
Напонило военную кафедру: "Товарищ майор, Вы там в интеграле dx пропустили" - "А это простой интеграл, он и без dx берётся". Так и здесь - светодиод - простой управляемый объекn - он и без обратной связи регулируется :)))
А зачем светодиоду ПИД-регулирование? Кроме того, я не очень понимаю, как у вас обратная связь организована.
Это модель, задача получить на фоторезисторе сигнал 100 регулируя яркость светодиода.
Решение: плавно увеличивайте интенсивность свечения диода шимом, проверяя вход фоторезистора. Как только будет 100, запоминаем занчения шима на led. Гатова, нна!
Кстате, там еще вопрос о том, как ADC дуни воспримет мерцающий диод, интенсивность свечения которого задана шимом. Тоже столкнулся с этой проблемой. ADC шим не понимает.
Так насколько удовлетводяет ваш ПИД требуемым показателям качества, настолько правильно и подобраны.
А вот кто или что там у вас определяет, какие эти самые показатели качества, на тут - неведомо.
Т.е. решайте вопрос с показателями, откуда дальше все уже будет самоочевидно, надеюсь.
http://drive.ispu.ru/elib/lebedev/16.html
Зачем вам ПИД? ПИД используется для инерционных систем например нагрев, или вы не правильно выбрали модель. Для светодиода достаточно поднимать яркость и остановить проуесс при достижении нужной.
Моделируйте процесс используя резистор и термодатчик. Низкоомный резистор с приклеенным датчиком температуры. Он нагревается с задержкой и остывает сам по себе. Примените ПИД на такой модели и добейтесь максимально быстрого нагрева, при минимальных перерегулировках.
Можно усложнить модель. Поставить перед ключевым транзистором нагревательного резистора конденсатор и тогда отключение нагрева будет с задержкой.
- Поменяйте модель!!!
ПИД-регулятор имеет смысл применять тогда, когда свойства объекта управления неизвестны доподлинно или модель управления чрезмерно сложна. ПИД-регулятор в областях его применения является универсальным средством, но всякая подобная универсальность -- это компромисс между гибкостью, простотой и эффективностью (выберите любые два). Правильно подобранный или спроектированный специализированный контроллер в большинстве случаев будет выигрывать у ПИД-регулятора в плане эффективности управления. Воспринимать ПИД-регулятор, как некое сверх-интеллектуальное устройство, способное в любой ситуации организовать эффективное управление само по себе, является ошибкой.
Что, тоже блок управления печкой загнулся?
Решение: плавно увеличивайте интенсивность свечения диода шимом, проверяя вход фоторезистора. Как только будет 100, запоминаем занчения шима на led. Гатова, нна!
Кстате, там еще вопрос о том, как ADC дуни воспримет мерцающий диод, интенсивность свечения которого задана шимом. Тоже столкнулся с этой проблемой. ADC шим не понимает.
Так различные возмущения, свет включили, тень упала и все сигнал не тот. Или задача не 100, а 90. И получить эти 90 максимально быстрее и держать ее точнее. Если просто плавно поднимать и плавно опускать это кастрированный регулятор.
Так насколько удовлетводяет ваш ПИД требуемым показателям качества, настолько правильно и подобраны.
А вот кто или что там у вас определяет, какие эти самые показатели качества, на тут - неведомо.
Т.е. решайте вопрос с показателями, откуда дальше все уже будет самоочевидно, надеюсь.
http://drive.ispu.ru/elib/lebedev/16.html
Спасибо за ссылку. Дело в том, что задача не практическая, а больше для теоретическая. Диаграмма качества регулирования не задана. Задача как достигнуть идеально возможной диаграммы меняя коэффициенты. А вот как их менять и в какую сторону- не понимаю, ставлю наобум. Вижу значения, после которой система становится перерегулированной, впадает в колебания. Но это как то визуально, не имеет какого-то обоснования под собой.
Зачем вам ПИД? ПИД используется для инерционных систем например нагрев
- Поменяйте модель!!!
Разве не инерциальна? На графиках явно вижу как нарастает сигнал, как он спадает, как колеблется. Причем заметна даже частота колебаний.
Вот если чисто качественно, на пальцах .....
время установления тем больше, чем более плавная переходная характристика при скачке.
чем меньше время установления, тем больше аплитуда(ы) выбросов, хуже точность слежения и длинее колебательный процесс.
Наверно можно сказать, что наиболее частым решением явдляется апериодический процесс, т.е. процесс с одним горбом заданного уровня перерегулирования. Попробуйте стремиться к нему.
Господь миловал. Просто наблюдая, как в последнее время ПИД-регулирование пытаются применить везде, до куда руки дотянутся, тихо офигеваю. В системах, где внешнее воздействие, его величина и переодичность случайны (тень упала, свет включили..) ПИД-регулирование контр-эффективно. Более всего оно располагает к ситуации, когда в стабильное состояние объект управления не приходит никогда.
Нет не инерциональна!!!!
Сколько подали на лампочку, столько и светит. Инерциональна, это тогда, когда напряжение, или ШИМ, подняли, а светить начала через секунду. Я не вижу графиков - перезалейте пожалуста картинки, или дайте к ним доступ.
Я не вижу графиков, но предполагаю, что задержка возникает иззатого, что в процессе регулировки надо измерять интенсивность свечения. Так та вам ПИД не поможет. Он будет, скорее всего, только мешать. Ибо ПИД, приближаясь к установки, уменьшает скорость нарастания сигнала.
Я много работал с ПИД. В основном промышленные образцы и приборы, но для особо сложных процессов делел сам (не на Ардуинах конечно). Там много настроек и часто он выручал. Но ПИД очень капризен и если его неправильно настроить, то будет только хуже.
Перезалейте графики, а то я вслепую вам советую. Да и другим наверное они не доступны.
http://microtechnics.ru/nastrojka-koefficientov-pid-regulyatora/
В комментариях даже к этой статье наблюдаются признания тех, кто имеет дело с ПИД-регуляторами в боевых условиях. Как они огребают от ПИД-а на реальных применениях. И только топикстартер считает, что сейчас он изучит ПИД на светодиодике, постигнет дзэн и станет пихать ПИД-регуляторы во все щели без опаски.
Frol3102,
осмелюсь предложить Вам более адекватную модель для изучения ПИД регулирования.
Возьмите обыкновенную (самую недорогую) электрическую духовку и превратите её в печь для пайки пастой. Печь должна точно выдерживать температуры, время и скорости изменения температур. Более того, должна быть возможность вводить и сохранять температурные профили (это как раз "насколько и как быстро нагреть, сколько подержать, насколько и как быстро изменить температуру, сколько опять подержать" и т.п.) т.к. таковые профили у разных паст разные.
Если Вы сумеете сделать такую работу – Вы А) будете понимать ПИД регулирование и Б) приобретёте полезный и весьма недешёвый (если покупать) инструмент.
Евгений, вы предлагаете действительно подходящую задачу, на которй ПИД вполне может продемонстрировать свои лучшие качества. Но вот с настройкой придется, скорее всего, изрядно повозиться. Гемор тот еще.
В любом случае (будет результат получен или нет), после подобной практики от желания скоренько выскочить на форум и по-быстрому ухватить суть на базе простенького примера, ничего не останется, т.к. станет понятно, что ПИД и "по быстрому" не сочетаются никаким образом.
с настройкой придется, скорее всего, изрядно повозиться. Гемор тот еще.
Так, ото ж!
У нас ребята делали охлаждение вычислительных узлов кипящей жикостью (т.н. "охлаждение с фазовым переходом"), ПИДом управляли работой компрессоров по прокачке жидкости. Там там ... в общем через месяц работ от дифференциальной составляющей отказались, осталось ПИ и трах, по-моему ещё продолжается, хотя опытный образец установки уже работает, но руководителя работ по системе охлаждения по-прежнему не устраивает как оно функциониирует и работы не прекращены.
Нет не инерциональна!!!!
Перезалейте графики, а то я вслепую вам советую. Да и другим наверное они не доступны.
перезалил
хорошо, ясно и понятно про пид, и особенно про настройку пид без эмуляции харда у DiHalt http://we.easyelectronics.ru/Theory/prostoy-metod-nastroyki-pid-regulyatora.html
Кстати если уж очень хочется ощутить глубину гемора, то сделайте искуственно инерционным светодиод и/или фотоприемник. Чисто програмно, 3 строчки кода. Можна еще шума добавить и нелинейность характеристики. Тоже програмно. Натрах... т.е. натренеруетесь так, что гуру обзавидуются. Поску сможе посмотреть как влияет инерционность на коэффициенты. У физического стенда инерционность поменять не так просто.
Это все хорошо. Примерно коэффициенты настраиваются.
Но как определить, что стало лучше или хуже- только методом перетыка. А когда процесс идет быстрее реакции глаза оценить его невозможно. ВОт и получается, что от 0,1 до 0,9 примерно все одинаково, а 1,2 уже много. И что происходит от 0,1 до 0,9 условно приемлимо.
А вот если запилить контроллер на операционнике, то целевые значения будут стоять, как вкопанные. Это иллюстрация того, как специализированный контроллер выполняет задачу намного эффективнее ПИДа.
А программный гистерезис с этим не справится?
А вот если запилить контроллер на операционнике, то целевые значения будут стоять, как вкопанные. Это иллюстрация того, как специализированный контроллер выполняет задачу намного эффективнее ПИДа.
Ну Вы это новичкам рассказывайте ))) Собственный шум и дрейф нуля ОУ отменили? И датчик без погрешности? И сравнение "специализированный контроллер" и ПИДа - воще дикость. ПИД - алгоритм, вполне может быть реализован в этом самом специализированом контроллере.
По графикам - явное перерегулирование, нас учили не более 30% должно быть. Колебания в установившемся режиме - сложно сказать, может ошибка дискретизации или шумы датчика. Датчик люминисцентной лампой не подсвечивается слегка?
А чего время идет неравномерно, судя по числам? Это недопустимо! Численное интегрирование по времени предполагает равные интервалы.
С началом массового производства zerro-drift операционников (фиг знает сколько лет тому назад), практически да: "zero drift amplifiers offer initial offset voltages of less than 3uV and almost immeasurable offset voltage drift over time and temperature." Это целый класс приборов, среди которых есть и малошумящие. Почитайте, например, про LTC2050 и если у вас останется желание поговорить про "шум и дрейф", мы обязательно этим займемся.
В случае применения пид-регулятора он ее утрачивает мистическим образом?
Может, только зачем? Схема с датчиком, включенным в обратную связь ОУ самобалансирующаяся. Какой-либо алгоритм ей нужен, как собаке пятая нога.
А чего время идет неравномерно, судя по числам? Это недопустимо! Численное интегрирование по времени предполагает равные интервалы.
Нет. Численному интегрированию всё равно какие интервалы, лишь бы они правильно учитывались. Т.Е. Величина интеграла будет правильной если амплитуду множить текущий интервал. (ну или среднее от двух амплитуд между которыми взят интервал ( ну или по какой из формул будет производиться интегрирование :-))
Да. АЦП отлично читает ШИМ. Только его нужно правильно приготовить - преобразовать в постоянную составляющую с помощью RC фильтра с постоянной времени раз в 100 больше периода ШИМ.
Может, только зачем? Схема с датчиком, включенным в обратную связь ОУ самобалансирующаяся. Какой-либо алгоритм ей нужен, как собаке пятая нога.
Вау! Знатоки в студию! Извините, но ваши утверждения не имеют ни чего общего с терией регулирования. Описанная вами самобалансирующаяся схема будет работать в простейшем случае единичной линейной зависимости. Любая нелинейность в цепи обратной связи будет приводить к колебаниям. На этом принципе построены все функциональные генераторы на аналоговых усилителях. ПИД регудятор как раз и нужен для того, чтобы выбрать эти нелинейности. Да, его можно реализовать на аналоговых элементах, но для этого потребуется 4 операционника : ваш линейный(пропорциональный) + интегратор + дифиренциатор + сумматор у которого на входе будут стоять преременные резисторы - ими вводятся коэффициенты ПИД. И таже головная боль крутить резисторы - настраивать ПИД. Алгоритм именно это и делает. И тут вопрос религии - что ближе душе- аналог или цифра. По трудозатратам цифра легче. Не надо лазить в шкаф и крутить резисторы - можно комфортно, сидя на стуле менять цифры.
Похоже, что вы не знаете принципов работы операционного усилителя. Иначе бы ни одна сила не сподвигла вас извергать такую прорву чепухи. Еще раз по буквам: самобалансирующаяся схема.
Ага. Не знаю. Совсем совсем. Особенно если учесть, что я два года програмировал аналоговую вычислительную машину и решал на ней дифуры. Решение - это как раз результат самобалансировки аналоговой схемы, после ввода параметров. Вот только операционных усилителей интеграторов и дифференциаторов в программе было несколько десятков. Так что не вводите в заблуждение новичков своими поверхностными домыслами. Прежде чем что то писать, почитайте материалы по теме, может быть поможет не садится в лужу.
А чего время идет неравномерно, судя по числам? Это недопустимо! Численное интегрирование по времени предполагает равные интервалы.
Нет. Численному интегрированию всё равно какие интервалы, лишь бы они правильно учитывались. Т.Е. Величина интеграла будет правильной если амплитуду множить текущий интервал.
как лихо задваивает сообщения...
Какое отношение непроверяемые сказания из далекого прошлого имеют к доказательствам?
Какое отношение непроверяемые сказания из далекого прошлого имеют к доказательствам?
Ну конечно же ни какого. Просто слово "самобалансирующаяся схема" мне знакомо с тех далёких пор, а вот гуглю как то не очень. Может ссылок каких либо приведешь для подтверждения? Ну типа вот пример ...
Т.е. вы мне сказочки и офигительные истории из своей жизни (пополам с художественным вымыслом), а я вам ссылки, расчеты, схемы и подверждения? И такая форма спора видится вам равноправной? Уже характеризует.
Ссылок я приводить не буду, а лучше построю модель того, о чем я говорил. Это, в отличие от ваших сказок, легко и просто проверяется и безусловно может являться доказательством.
Цель регулирования -- обеспечение неизмной величины тока, протекающего через нагрузку (R2). Для придания сходства с условиями изначальной задачи, в схеме присутствует оптопара, где светодиод -- это светодиод из эксперимента ТСа, а фототранзистор -- это оптический датчик. Характеристики светодиода таковы, что в области рабочих значений прибора, мощность излучения пропорциональна току, который через этот светодиод протекает. Ток через нагрузочный резистор фотоприемника зависит от величины светового потока, попадающего в рабочую область датчика.
Для моделирования различных возмущений и неидеальности оптического канала, источник напряжения V2 имеет переменную составляющую с частотой 50 гц, величина которой равна двум вольтам. Без "регулятора" это привело бы к непостоятнству тока через нагрузку (R2).
На графике выше -- зеленым изображается напряжение V2, красным ток через светодиод, а синим -- ток через R2. Можно видеть, как ОУ выполняет регулирование, изменяя ток через светодиод в противофазе с возмущающим воздействием. При этом, ток через R2 остается неизменным. Таким образом, цель регулирования достигнута.
Теперь поясните, что за херь вы несли в сообщении №29, если никаких автоколебаний регулятора на модели не наблюдается ? Регулирование осуществляется четко и точно и ограничино лишь быстродействием регулятора. К слову заметить, ОУ питается тем же "нестабильным" напряжением с переменной составляющей, как и фотодатчик, что уж точно стабильности не добавляет. Тем не менее, регулятор справляется и с этой "нелинейностью". Все это без настроек, коэффициентов и плясок с бубнами.
К чему вобще здесь эта схема стабилизации напряжения на R2? В ней нет интегрирующей составляющей, это не ПИД. С чего Вы про стабилизацию тока пишите - непонятно. Изменится величина R2 и ток тоже. Оптрон похоже типа нелинейній элемент в ОС? Так он в линейном режиме работает, как Вы же сами пишете, к тому же он включен не в ОС... Замените его релюхой, как сильно нелинейным звеном, и получите колебания. Воще о чем диспут, о возможности колебательной неустойчивости в САР? смешно. О том что иногда и пропорционального регулирования хватает, как на схеме? да, иногда хватает, а иногда и нет. О влиянии нелинейных элементов на устойчивость регулирования? да влияют и как правило ухудшают.
ТС добивается постоянства светового потока с помощью пид-регулятора. Я ранее заметил, что для таких задач (как и многих других) специализированный регулятор может обеспечивать характеристики лучше, чем самый настроенный пид-регулятор. Данная "схема стабилизации напряжения на R2" приведена для доказательства моих слов.
А мне, напротив, все понятно. Понятно, что вы потеряли нить разговора.
Да, возмет вот так и изменится сама-собой. Ничего нелепее не могли придумать? К тому-же, обратная связь в пид-регулятор заведена с этой же точки. ПИД точно так же сойдет с ума, если "изменится величина R2".
Вы в состоянии читать схемы? Регулирование без ОС невозможно в данном случае. Обратную связь обеспечивает фототранзистор, который является составной частью оптрона. Я вынужден объяснять элементарные вещи.
Нелинейность привносится с помощью источника V2, который имеет переменную составляющую в выдаваемом им напряжении. Не будь регулирования (на основе обратной связи), никакой "стабилизации напряжения" не было бы и в помине.
Не улавливаю интриги. Или вы при помощи ПИД-регулятора от таких колебаний избавитесь? К чему эта релюха здесь появилась?
Мы не о "иногда" говорим, а о данной конкретной задаче регулирования интенсивности светового потока.
Мы тут говорим о теме топика- Познаю ПИД
, а вот кто-то с поста 24 начал нести фигню о составной части ПИДа и выдавать ее за некую сокровенную и великую истину ...
уже достала болтология ....
и про двигатели лучше не пиши ..... не выставляй себя воинствующей глупостью
По графикам - явное перерегулирование, нас учили не более 30% должно быть. Колебания в установившемся режиме - сложно сказать, может ошибка дискретизации или шумы датчика. Датчик люминисцентной лампой не подсвечивается слегка?
А чего время идет неравномерно, судя по числам? Это недопустимо! Численное интегрирование по времени предполагает равные интервалы.
Ок, убавлю коэффициент в пропорциональной части и поиграюсь в интегральной. Да, датчик подсвечивается люминисцентной лампой, оказываетс модель не так проста как кажется.
Отсечка времени идет каждый раз как проходит строку вывода чисел в порт. Почему неравномерно я не знаю, наверно вычисления при разных значениях чисел идут разное время.
Ребята, я учусь на том что есть. Не думаю, что я дойду до операционных усилителей.
А программный гистерезис с этим не справится?
В смысле в какой-то вилке значений (95-105, вместо 100) забить на регулировку и принять результат как удовлетворяющий?
Спасибо, я в курсе.
"Великая истина" заключалась в краткой ремарке, что ПИД не является аутперформером абсолютно для всех применений. Какую вы еще здесь великость узрели, для меня загадка.
Настолько, что именно ей вы и решили заняться?
После того, как ремень ГРМ вы объявили элементом обратной связи в двигателе, я не уверен, что должен прислушиваться к вашему мнению.
Чорт! Ремень ГРМ! Совсем забыл...
Сколько слов и рисунков! Поставьте емкость или индуктивность куда-нибудь в цепь обратной связи и полУчите колебания.
Я целиком и полностью согласен с утверждением, что ПИД не нужен для многих применений. Всё определяется функцией зависимости регулируемого параметра от возмущений.
Транзисторов с диодами не надо? А то вдруг не загенерит?
Если бы я предложил внести в алгоритм ПИД-регулятора функцию случайного изменения коэффициентов в произвольные моменты времени, то вы бы сказали, что я спятил. Но мысль навесить в предложенный мной регулятор индуктивностей, не кажется вам асбурдной. Между тем -- это примерно одинаковые по смыслу действия.
мне-то что за беда....
что у вас нет понимания работы двигателя, это было сразу ясно и сразу о том сказано
Вы главное не лезте с глупостями, а что там у меня с пониманием, пусть вас совсем не заботит.
Всем привет!Понадобился Ардуино для проэкта, но я вообще не работал с ним, UNO Atmega 328P похоже совсем пустой, по интернету накопал софт(драивера , загрузчик и т.д.), поставил драйвер , комп увидел СОМ1, настроил битрейд порт, но программы не видят Ардуино, разные пробовал всё время ошибка, парни что может быть?Стоит виндоза 7\32, подскажите что делать кому не трудно.
но программы не видят Ардуино, разные пробовал всё время ошибка