Как стать автором
Обновить

Комментарии 42

На openedu есть курс «Современная промышленная электроника». Там лабораторные работы с баком и ПИД регулятором есть. Объект смоделировали прямо внутри S7-300 стенда.
Если вдруг интересно:)
Картинки не увеличиваются.
Можете про модель объекта подробнее растолковать? Как она там вычисляется? Мне не охота файл качать.
Всё основано на формуле Q=cm(t2-t1)
Увеличим K и/или Kp — теперь «мощности» хватило, но без интегральной составляющей возникли высокочастотные колебания.


Чую если уменьшить шаг решения по времени — в/ч колебания уйдут.

Шаг решения, кстати, иногда нельзя так просто уменьшить. Недавно сталкивался с проблемой, когда минимальный шаг ограничивался самим датчиком. С какой частотой данные выдаёт, с такой и приходилось считать.

Шаг решения, кстати, иногда нельзя так просто уменьшить. Недавно сталкивался с проблемой, когда минимальный шаг ограничивался самим датчиком. С какой частотой данные выдаёт, с такой и приходилось считать.

Речь идет о шаге решения в данной математической модели. Тут он — 1 секунда, и получаемые в/ч колебания являются следствием того что за один шаг состояние объекта — температура получает слишком большое приращение, в итоге модель ведет себя не совсем корректно.

И я про то же. У нас в своё время был датчик GPS, к которому мы попробовали прикрутить ПИД-регулятор (тогда нам это казалось хорошей идеей) и у него частота выдачи данных по умолчанию была 1с (которую, правда, можно было уменьшить аж до 0.1).


Я к тому, что в некоторых случаях шаг в 1с для математической модели может действительно соответствовать правде и уменьшать его может быть некорректно.


Upd. А, кажется понял о чём вы. Ну, работа над корректностью модели — это всегда приключение, особенно если модель самопальная.

Есть период опроса датчика/датчиков, а есть шаг решения математической модели, это разные вещи.
Под шагом решения я подразумеваю период с которым в мат. модели обсчитывается состояние объекта.
Вы путаете шаг модели с частотой дискретизации вашего контроллера. Мир — аналоговый и поэтому модель мира должна выполняться с минимальным шагом — так она будет ближе к реальности.
А вот частота дискретизации — то есть 1с опроса датчика — это уже ваша проблема, которую нужно решать вам. Мир она не заботит — температура за одну секунду уйдет на свои градусы независимо от того, насколько часто вы ее будете измерять.
Строго говоря, у меня не секунда, а условная единица времени. Но если говорить о нагревательных элементах, то сильно увеличивать частоту дискретизации нет смысла — процессы нагрева весьма инерционные.
Зависит от массы того, что нагреваете и как нагреваете. Железная болванка резистивным нагревательным элементом — это одно. Бумажный лист лучём лазера — это другое.
Ага. Представил, как лазер направляется на лист бумаги, а там стоит датчик температуры, и всё это управляется. )
А представьте, что вместо датчика температуры у вас модель, аналогичная той, что у вас в статье. И с помощью этой модели вы можете управлять мощностью лазера и более-менее контролировать температуру бумаги без каких-либо датчиков вообще.
Получение устройств на таком принципе тоже является целью моделирования. Как наиболее известный пример — управление асинхронными моторами без датчиков обратной связи.
а условная единица времени.

Тут важнее соотношение постоянной времени объекта*коэф. передачи к шагу интегрирования.

процессы нагрева весьма инерционные.

угу, постоянные времени в несколько сотен секунд для них обычное дело, но это не значит что шаг решения можно брать таким же.

Кстати о том что смутило в в/ч колебаниях.
У Вас линейная система, в том плане что ПИД регулятор + объект управления — образуют систему диффуров с постоянными коэффициентами, а решение этой системы всегда есть сумма экспонент, т.е. в лучшем случае на выходе будут гармонические колебания, а тут мягко говоря график на синус совсем не похож, из чего возникает подозрение на слишком большой шаг интегрирования.

Это в случае непрерывной функции управления. У меня же, (как и в реальных нагревателях) стоит ограничение по мощности нагревателя. Мало ли что там алгоритм насчитает, а выше потолка не прыгнешь.
> У меня же, (как и в реальных нагревателях) стоит ограничение по мощности нагревателя.

1) Ограничение мощности нагревателя не отменяет линейность системы. Собственно при максимуме управляющего воздействия объект встанет на упор.
2) в/ч колебания с периодом в два шага решения это как то подозрительно.
Я так не думаю. Если функция управления не непрерывная, она не может являться решением системы линейных дифференциальных уравнений.
Простой пример: в идеальном случае, при управлении нагревателем, ПИД-регулятор может выдавать как положительные сигналы (нагрев), там и отрицательные (охлаждение). Но в реальности опции «охлаждение» нет. Охлаждение происходит за счет того, что нагрев не производится какое-то время, и тело охлаждается по естественным причинам. Но простому ПИД-регулятору на это плевать, он формирует свои сигналы.
Простой пример: в идеальном случае, при управлении нагревателем, ПИД-регулятор может выдавать как положительные сигналы (нагрев), так и отрицательные (охлаждение).

Если ПИД регулятор начинает выдавать то + то — для заданных 100 как в примере с в/ч колебаниями это значит система пошла в разнос, чего вобщем то не видно.
Плюсом у Вас за 3 шага интегрирования система почти достигла заданное значение. Это говорит о том что шаг интегрирования примерно равен постоянной времени объекта -> шаг решения слишком большой.

Ну, если я уменьшу шаг интегрирования, то из-за масштаба ни хрена не будет видно в большинстве случаев. Тут баланс наглядности и размера шага.

для примера с в/ч колебаниями это не критично, но при уменьшении шага уйдут эти самые в/ч колебания вызванные слишком большим шагом решения.

Все-таки симулировать надо в для этого приспособленных средах. Например Matlab Simulink.

Для ПИД регуляторов там есть соответствующий блок и куча примеров.
uk.mathworks.com/help/simulink/slref/inverted-pendulum-with-animation.html
uk.mathworks.com/help/simulink/slref/engine-timing-model-with-closed-loop-control.html
uk.mathworks.com/help/simulink/slref/anti-windup-control-using-a-pid-controller.html

Вашу модель там можно построить и промоделировать за минуты. Даже на статью не тянет. При этом вы еще и бесплатным довеском получаете готовый Си код для микроконтроллеров.
Все-таки симулировать надо в для этого приспособленных средах. Например Matlab Simulink.

Эт почему? Если можешь сам составить адекватную модель и понимаешь как ее реализовать почему бы и не в екселе, си, и.т.д.
Не говоря уж о том что того же матлаба (кстати сколько он стоит?) под рукой может и не оказаться.

Эт почему? Если можешь сам составить адекватную модель и понимаешь как ее реализовать почему бы и не в екселе, си, и.т.д.

Потому, что можно и TCP/IP стек написать на ассемблере. Только нужно ли?
Есть вещи, для которых хорошо приспособлен Excel, а есть вещи, для которых он уже не очень подходит, и вопрос заключается в том, сколько времени будет потрачено на решение задачи. Вы говорите о модели, а Simulink подразумевает Model-based Design, следовательно вы можете ожидать, что там возможностей для создания и симулирования моделей гораздо больше, чем в Excele. Начав хотя бы с того, что там есть кнопочка Play.

Не говоря уж о том что того же матлаба (кстати сколько он стоит?) под рукой может и не оказаться.


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

Насчет стоимости — если вы решаете задачу в рамках студенческого проекта — то обычно вы его получаете бесплатно в рамках институтской лицензии. Домашняя лицензия с Симулинком — от 154 евро — стоимость на уровне того же офиса.

Да чё Вы в этот матлаб рогом упёрлись?
Для студентов одна сосиска на 12 вилок: XCOS в SCILAB!
Так же понюхать тему можно и в VisSim v5. И многих других проектах.
Результаты в Google:
SCILAB pid controller — 65 700
xcos pid controller — 13 300
Simulink pid controller — 949 000

Если уж нюхать, то лучше нюхать с теми, кто уже нанюхался.
photoshop pid controller — 1 700 000

Наверное, не надо экстраполировать.
Да, примером с excel я как раз и хотел показать, что количеством страниц в гугле, да даже количеством пользователей продукта, руководствоваться как главным критерием не стоит.
Ну можно поставить кавычки и тогда будет более реалистично.
Все-таки симулировать надо в для этого приспособленных средах. Например Matlab Simulink.
Сколько на него стоит лицензия, интересно.
Я же написал выше. Не читали?

А вы точно пробовали искать? На первой же странице гугла: вот раз, вот два.

А вы точно умеете читать?
Поискал я статьи на данном ресурсе на тему ПИД-регуляторов.
В модели не хватает весьма важного параметра — времени на стабилизацию датчика. Реальный датчик имеет 10-15 секундную задержку от момента когда измеряемая величина изменилась, до момента когда показания датчика стали истинными. И эта задержка доставляет массу «приятностей» при настройке ПИД регулятора в реальных системах.
НЛО прилетело и опубликовало эту надпись здесь
Вот тут (и вообще у petuhoff, насколько я бегло пробежался) упоминается SimInTech, говорят, лицензию частным лицам достаточно просто получить. Ну а так, помимо simulink'a у нас была МВТУ 3.0, как оказалось из комментария рядом — папа (или дедушка) SimInTech'a. Может, ее можно еще на просторах интернета найти.

Плюс различных сред моделирования в том, что они наглядно позволяют составить модель системы «что-куда-после чего». То есть видно, где задание, где регулятор, где объект управления, где обратная связь. Это я к тому, что «кому интересно — поиграйтесь» имеет перед глазами таблицы, из которых мне лично непонятно, что куда и за чем идет, где стоит датчик, где регулятор и как это все задано. Это мне напомнило еще досовскую программу для моделирования, которая графики выводила в текстовый файл символами A, B, C и т.д.
Специально собрал вашу систему в Симулинке. Без нагрева с шагом 1с на периоде 150с ведет себя также, как и ваша.


Благодаря визуализации сразу видно, что иметь один Kq — это немного неправильно. По идее есть теплоемкость и есть коэффициент теплопередачи тело-окружающая среда. Это два разных коэффициента.

Добавляем внешний нагрев 10Вт — стабилизируется где-то на 75 градусах.


Добавляем ПИД регулятор с параметрами Kp=1, Ki=0.1, Kd=1. Целевая температура 100 градусов.


При увеличении Kp до 10 моделирование явно показывает отсутствие сходимости, а не высокочастотные колебания. Доверять такой симуляции нельзя.


Вот если убрать дифференциальный коэффициент и оставить Kp=Ki=1, то получаем проблемы с устойчивостью — долгие и медленно затухающие колебания.

Но гораздо интересней воспользоваться возможностями симулятора и добавить в схему интегратор

И тогда мы можем изменять шаг моделирования как угодно и даже дать возможность симулятору самому определять шаг за вас, не опасаясь проблем сходимости. Модель при этом будет вести себя абсолютно одинаково:

И теперь можно не думать о ступеньках.

Но теперь задаем в ПИД контроллере Kp=10 и Ki=0.1 и получаем результат:

Результат — промоделировали ПИД регулятор и получили наш отклик: резкий, как понос. :-)

Попробуйте сделать так в Excel.
Вспомнил про интересную лабу в универе, где с помощью различных систем(Релейная, П-регулятор, ПИД-регулятор) необходимо было в своем вымышленном доме смоделировать работу нагревательных устройств (батареи, обогреватели и т.д) для поддержания заданной температуры. Причем, можно было открывать окна, двери и т.д. что бы наблюдать за изменением поведения системы.
Помню, что было дико интересно))

Спасибо, но где файл?

Ниже

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации