Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 63

Тема: Альтернатива ПИДу. Ненужная ерунда, или давно известный велосипед?

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    По умолчанию

    Цитата Сообщение от anthrwpos Посмотреть сообщение
    ...я настроил параметры моего и ПИД регуляторов
    Комментариев коде явно не хватает, чтобы у желающих посмотреть возникло желание вникнуть , стиль программирования на яве тоже странноватый, например, интерфейс регулятора, где нет уставки (хотел ее вывести на график)...

    А что, если попробовать в вашем примере вот такие коэффициентики ПИДа:
    Код:
    PID_Fine pid = new PID_Fine(4.3, 60, 300, 0.1, 40, 20);  //создаем ПИД-регулятор

  2. #2

    По умолчанию

    Цитата Сообщение от o_nik Посмотреть сообщение
    Комментариев коде явно не хватает, чтобы у желающих посмотреть возникло желание вникнуть , стиль программирования на яве тоже странноватый, например, интерфейс регулятора, где нет уставки (хотел ее вывести на график)...
    Всё так!
    Я сначала тоже думал это же самое написать, но остановился на мысли "как бы разговор не перешёл в плоскость Java программирования".

  3. #3

    По умолчанию

    Цитата Сообщение от Владимир Ситников Посмотреть сообщение
    как бы разговор не перешёл в плоскость Java программирования
    Похоже, уже переходит Только я с Вами сильно дискутировать=спорить не буду, т.к. уже лет 7 на Java не писал.

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

  4. #4
    Пользователь Аватар для anthrwpos
    Регистрация
    13.02.2017
    Адрес
    Ленобл
    Сообщений
    187

    По умолчанию

    Цитата Сообщение от Владимир Ситников Посмотреть сообщение
    Можете пояснить что нарисовано на этих графиках?
    По оси x, очевидно, время. А что по оси Y?
    значение регулируемой величины.
    Например, сдаётся мне, что ваш "волшебный" регулятор может выдать управляющий сигнал "больше 100%" (или меньше 0) (см https://github.com/anthrwpos1/RegTes...g.java#L48-L50 -- возвращается значение pRaw, которое, очевидно, может выходить за границы), и модель подчинится такому управлению и заставит нагреватель сгенерировать больше тепла (или вообще батарею превратит в кондиционер).

    Я бы в обработку модели предложил добавить проверку на то, что регулятор не пытается возвращать управляющий сигнал за пределами 0..1
    Код:
    pHeater = limit(regulator.control(tSensor)) * pHeaterMax;
    limit - это оно и есть - ограничитель выхода регулятора.
    А сам регулятор должен выдавать управление и меньше 0 и больше 1 на случай, если он регулирует не процент включения нагревателя, а какую либо другую величину, которая может изменяться в других пределах.
    Например у меня есть регулятор, который вычисляет температуру теплоносителя. Тут уж диапазоном 0..1 никак не обойтись.
    Как у вас работает датчик -- непонятно (я про dSense0/dSense1). Почему не идёте по своей концепции и не делаете в духе "теплопроводность датчика", "теплоёмкость датчика"?
    этот финт дает более глубокую задержку данных от датчика, которую невозможно компенсировать по производной. Всё как в жестокой реальности)

    PS. На "new PhysReg(50, 200, 300, 0.1, 20, 40, 300);" без боли смотреть невозможно. Что означают все эти цифры?
    В стандартной библиотеке java есть полно конструкторов с простым перечислением кучи параметров. Я лично уже привык смотреть в исходники либо в документацию, чтобы понять что это всё такое.
    Может это конечно плохой стиль, спорить не буду.
    Цитата Сообщение от o_nik Посмотреть сообщение
    Комментариев коде явно не хватает, чтобы у желающих посмотреть возникло желание вникнуть , стиль программирования на яве тоже странноватый, например, интерфейс регулятора, где нет уставки (хотел ее вывести на график)...
    У меня к сожалению очень мало опыта в программировании. Уж что вышло то вышло. Ну и плюс делал второпях, чтобы провести нужные испытания и хоть что нибудь по существу тут задаваемых вопросов ответить. Ну и самому убедиться, что регулятор работает как положено.

    А что, если попробовать в вашем примере вот такие коэффициентики ПИДа:
    Код:
    PID_Fine pid = new PID_Fine(4.3, 60, 300, 0.1, 40, 20);  //создаем ПИД-регулятор
    Я сегодня устранил баг в модели, поэтому там все параметры поменялись. Если вы рассчитывали эти параметры регулятора под старую модель, то нужно пересчитать.
    А если просто так - то сейчас оно выглядит так:
    temp2.png
    уставка черным, график температуры красным.
    Последний раз редактировалось anthrwpos; 29.12.2018 в 16:52.
    - ά ν θ ρ ω π ο ς -
    Мои универсальные макросы https://github.com/anthrwpos1/macros

  5. #5

    По умолчанию

    Цитата Сообщение от anthrwpos Посмотреть сообщение
    Я сегодня устранил баг в модели, поэтому там все параметры поменялись. Если вы рассчитывали эти параметры регулятора под старую модель, то нужно пересчитать.
    Качал с гитхаба сегодня, где-то за 30 - 60 мин до своего поста.

    При запуске Main я так понимаю в консоль выхлоп оценки ошибки выдавался для ПИД и вашего регулятора?
    А где аналогичный график с вашим регулятором?

  6. #6
    Пользователь Аватар для anthrwpos
    Регистрация
    13.02.2017
    Адрес
    Ленобл
    Сообщений
    187

    По умолчанию

    Цитата Сообщение от o_nik Посмотреть сообщение
    Качал с гитхаба сегодня, где-то за 30 - 60 мин до своего поста.
    Я закоммитил исправленную версию только когда свой пост написал.
    При запуске Main я так понимаю в консоль выхлоп оценки ошибки выдавался для ПИД и вашего регулятора?
    верно
    А где аналогичный график с вашим регулятором?
    Вот добавил синим, причем с параметрами "на глазок" исходя из модели, не оптимизированными.
    temp2.png

    А вот тоже самое со следующими параметрами ПИД: Xp = 0.5, tI = 300, tD = 120
    temp2.png
    - ά ν θ ρ ω π ο ς -
    Мои универсальные макросы https://github.com/anthrwpos1/macros

  7. #7

    По умолчанию

    Понятно, для старой модели ваш регулятор выдавал ошибку порядка 0,3.
    Ваш ПИД с моими настройками около 0,2.
    Все расчеты в ваших критериях, вашим софтом.

    Если действительно интересно, откатитесь к ветке предыдущей (вы же под гитом) и подставьте мои коэффициенты и графики в студию.

    Сейчас вы поменяли модель, через 2 часа после моего поста , логично, регулятор надо перенастраивать.... надо опять смотреть... Netbeans под рукой нет.


    Величина перерегулирования я надеюсь не критична, главный критерий ошибка?

  8. #8
    Пользователь Аватар для anthrwpos
    Регистрация
    13.02.2017
    Адрес
    Ленобл
    Сообщений
    187

    По умолчанию

    Цитата Сообщение от o_nik Посмотреть сообщение
    Понятно, для старой модели ваш регулятор выдавал ошибку порядка 0,3.
    Ваш ПИД с моими настройками около 0,2.
    Ну это не новость. Мой регулятор в половине случаев дает ошибку больше, чем ПИД, а в другой половине - меньше.=)
    Величина перерегулирования я надеюсь не критична, главный критерий ошибка?
    Что критично, а что нет - зависит от того, что тестируется и что хочется увидеть в результате.
    На самом деле я погоняв свой регулятор в различных в том числе и жестких условиях понял, что настройка параметров по легко определяемым физическим параметрам далеко не всегда адекватна.
    В тяжелых случаях может понадобиться серьезно корректировать коэффициенты.
    Потом, я еще не остановился на финальной формулировке самого вида моего регулятора. Например, должно ли время усреднения PE совпадать с временем крутизны регулирования tX. Должно ли это усреднение использовать компенсацию тренда или нет? Это делает её гораздо реще, но иногда приводит к автогенерации. Сейчас я прикрутил к времени фильтрации адаптивную подстройку, что позволяет использовать и усреднение с компенсацией тренда и подавляет автогенерацию.
    - ά ν θ ρ ω π ο ς -
    Мои универсальные макросы https://github.com/anthrwpos1/macros

  9. #9
    Пользователь Аватар для anthrwpos
    Регистрация
    13.02.2017
    Адрес
    Ленобл
    Сообщений
    187

    По умолчанию

    Цитата Сообщение от o_nik Посмотреть сообщение
    Если действительно интересно, откатитесь к ветке предыдущей (вы же под гитом) и подставьте мои коэффициенты и графики в студию.
    откатил, действительно ваши параметры дают ошибку 0,19, мои 0,31. График температур такой.
    temp2.png

    Переделал параметры своего регулятора так, чтобы они соответствовали вашим.
    Код:
    PhysReg pr = new PhysReg(14, 300, 60, 0.1, 20, 40, 60);
    ошибка ПИД 0,19, PR - 0,24
    temp2.png

    А при таких параметрах мой регулятор уже выигрывает:
    Код:
    PhysReg pr = new PhysReg(8, 150, 22, 0.1, 20, 40, 22);
    Ошибка ПИД 0,19, PR - 0,16
    temp2.png

    а вот при таких параметрах ПИД ошибка будет около 0,15 у обоих регуляторов.
    Код:
    PID_Fine pid = new PID_Fine(2.7, 74, 150, 0.1, 40, 20);
    Графики уже не буду приводить.
    Да, на графиках температур:
    красный - температура датчика в модели управляемой ПИД
    розовый - температура комнаты в модели управляемой ПИД
    синий - температура датчика в модели управляемой pr
    голубой - температура компаны в модели управляемой pr.
    Последний раз редактировалось anthrwpos; 29.12.2018 в 20:17.
    - ά ν θ ρ ω π ο ς -
    Мои универсальные макросы https://github.com/anthrwpos1/macros

  10. #10

    По умолчанию

    Цитата Сообщение от anthrwpos Посмотреть сообщение
    Переделал параметры своего регулятора так, чтобы они соответствовали вашим.
    Это как?
    Если ваш регулятор алгебраически пересчитывается в ПИД один к одному, значит он и есть ПИД (ну, я выше об этом писал если что).
    Т.е. вы не изобретали регулятора, а придумали (возможно) методику его настройки (при чем, как видно, - не оптимальную)
    Или я не прав?

Страница 1 из 2 12 ПоследняяПоследняя

Похожие темы

  1. Ответов: 37
    Последнее сообщение: 19.10.2018, 11:06
  2. Альтернатива User Managment'a
    от Anjei в разделе СПК1xx (архив)
    Ответов: 3
    Последнее сообщение: 19.08.2016, 15:15
  3. Ответов: 3
    Последнее сообщение: 20.02.2016, 16:29
  4. Альтернатива СП 270 с большей диагональю
    от Alex_Kos в разделе Подбор Оборудования
    Ответов: 7
    Последнее сообщение: 03.07.2013, 13:42
  5. мучает меня давно вопрос...
    от Pasha_99 в разделе Трёп (Курилка)
    Ответов: 5
    Последнее сообщение: 16.07.2009, 15:09

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •