Я вижу проблему в самой процедуре интегральной подстройки. Сам замысел устранять статическую ошибку ПД-регулятора таким образом содержит незаконные допущения, которые расходятся с практикой использования регуляторов, вот и всё)
В замен я предлагаю осмысленную процедуру подстройки, которая в принципе не плохо работает "в лоб", не требуя от производителя регуляторов думать о тонкостях реализации.
Это тест на реакцию при резкой смене внешних условий.
В коде это выглядит как перегрузка метода setTOut класса PhysModel, где мы задаем внешнюю температуру:
В качестве внешней температуры для тестов используется такой алгоритм:Код:model2 = new PhysModel(random, pr, 0.000, 60, n) { @Override public double setTOut(double time) { // return super.setTOut(time); return functionT(time); } };
Если его не перегружать - работает алгоритм случайного блуждания внешней температуры. А так вы можете задать свою форму для своих тестов.Код:static double functionT(double time) { if (time < 5000) return 10; return 0; }
- ά ν θ ρ ω π ο ς -
Мои универсальные макросы https://github.com/anthrwpos1/macros
Я закоммитил исправленную версию только когда свой пост написал.верноПри запуске Main я так понимаю в консоль выхлоп оценки ошибки выдавался для ПИД и вашего регулятора?Вот добавил синим, причем с параметрами "на глазок" исходя из модели, не оптимизированными.А где аналогичный график с вашим регулятором?
temp2.png
А вот тоже самое со следующими параметрами ПИД: Xp = 0.5, tI = 300, tD = 120
temp2.png
- ά ν θ ρ ω π ο ς -
Мои универсальные макросы https://github.com/anthrwpos1/macros
Понятно, для старой модели ваш регулятор выдавал ошибку порядка 0,3.
Ваш ПИД с моими настройками около 0,2.
Все расчеты в ваших критериях, вашим софтом.
Если действительно интересно, откатитесь к ветке предыдущей (вы же под гитом) и подставьте мои коэффициенты и графики в студию.
Сейчас вы поменяли модель, через 2 часа после моего поста , логично, регулятор надо перенастраивать.... надо опять смотреть... Netbeans под рукой нет.
Величина перерегулирования я надеюсь не критична, главный критерий ошибка?
Сейчас получается, что вы показали какой-то график, но непонятно как из него делать выводы.
Вот статья в которой рассматриваются разнообразные сценарии: https://habr.com/post/143388/
Было бы хорошо сделать что-нибудь в подобном случае, где показать "вот наша температура, а вот жахнули морозы, а вот оттепель" и т.п.
Сейчас же просто график "ПИД vs ПИД++", и неясно что за внешнее воздействие было.
Ну это не новость. Мой регулятор в половине случаев дает ошибку больше, чем ПИД, а в другой половине - меньше.=)Что критично, а что нет - зависит от того, что тестируется и что хочется увидеть в результате.Величина перерегулирования я надеюсь не критична, главный критерий ошибка?
На самом деле я погоняв свой регулятор в различных в том числе и жестких условиях понял, что настройка параметров по легко определяемым физическим параметрам далеко не всегда адекватна.
В тяжелых случаях может понадобиться серьезно корректировать коэффициенты.
Потом, я еще не остановился на финальной формулировке самого вида моего регулятора. Например, должно ли время усреднения PE совпадать с временем крутизны регулирования tX. Должно ли это усреднение использовать компенсацию тренда или нет? Это делает её гораздо реще, но иногда приводит к автогенерации. Сейчас я прикрутил к времени фильтрации адаптивную подстройку, что позволяет использовать и усреднение с компенсацией тренда и подавляет автогенерацию.
- ά ν θ ρ ω π ο ς -
Мои универсальные макросы https://github.com/anthrwpos1/macros
Это график стремления температуры к уставке для модели anthrwpos в последней (новой) реинкарнации. Уставка, кстати, +20°C по шкале oY в последних скринах (по коду на жабе можно догадаться, почему бы об этом не написать - я не знаю)
В модель не вникал, если честно (да и не физик я).
Жду ответа автора на мой пост.
Видимо придется ставить нетбинс ...
Пока видится все это так:
Регулятор ПД+ это регулятор ПИД, в котором "И" нужно поделить на сорок два (https://www.youtube.com/watch?v=fbaPsiU0FCA), чтобы получить ПД+
предполагая, что можно устранить статическую ошибку интегрированием мы неявно полагаем, что она связана только с законом регулирования, а не с физическими ограничениями исполнительного устройства. Например, обогреватель не может греть в минус - поэтому летом интегрировать нельзя. А если бы мог, и еще и не имел бы максимальной мощности - то работало бы отлично и не очень нужно было бы интегральную подстройку ПИД на что-то менять.
Можно придумать заплатку, которая запрещала бы интегрировать летом, или суровой зимой, когда обогреватель уже не справляется. Мои реализации ПИД именно так и делали. Но и в этом случае отработка возврата в нормальное регулирование зачастую происходит с проседанием.
Вопрос из п#34 - ?- Всё точно так-же - подбор трех коэффициентов.С ПИД регулятором все понятно, там все сводится к подбору коэффициентов. А как у вас ?
А что бывает иначе? =)На работе мои реализации ПИД уже давным давно с адаптивными подстройками... и стало еще лучше чем просто ПИД ?
Управление утилизацией тепла ГПУ на обычном ПИД вообще не работает. Или входит в автогенерацию, или машина перегревается потому что регулятор не сообразил вовремя открыть клапан.
- ά ν θ ρ ω π ο ς -
Мои универсальные макросы https://github.com/anthrwpos1/macros