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

Нечеткая логика и конечные автоматы против ПИД-регулятора. Избиение младенцев продолжается

Время на прочтение14 мин
Количество просмотров22K
Всего голосов 34: ↑33 и ↓1+32
Комментарии82

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

Довольно интересный и неожиданный результат. А то все эти конечные автоматы сейчас могут показаться устаревшим наследием советской школы, когда компьютеров то особо ещё не было, а ракеты запускать уже надо было. Тем не менее, оказывается, в некоторых классах задач они себя показывают очень даже хорошо.
К сожалению, довольно поверхностно знаком с ТАУ, но стараюсь изучать, так как тема полезная. У меня такой вопрос, а какие ещё существуют(и более-менее нередко используются в промышленности) виды регуляторов, которые могут работать оптимальнее пресловутого ПИД? Я изучал основы ТАУ применительно к импульсным преобразователям, и там в передаточной функции некоторых топологий есть ноль в правой полуплоскости. И вроде бы именно цифровые методы управления в этом случае решают проблему. Но, к сожалению, мне не попалось описания реализации этих цифровых регуляторов.

Линейно-квадратичные (LQR) и Линейно-квадратично-гауссовы (LQG) регуляторы довольно широко используется.

Какие то маленькие коэффицинты ПИД регулятора. Если задать Kp=300, Kd=80, Ki=0 (интеграл тут нафиг не нужен, т.к. сам обьект — интегратор), то вполне себе получаю то же время переходного поцесса около 1.2с.

Действительно! Я же пределы при отимизации для ПИД ограничил значением -50 +50! Копировал блок и не обратил внимание. Сейчас пресчитаем!

Ki еще обнулите, здесь интеграл только мешает.

поставил Kp=219, Kd=56, Ki=0.
До уровня 0.991добегает за 1.1с.


А у при этих коэффициентов, только за 1.2 сек, тоже лучше. А дискретизациям расчтеа такаяже 0.001?
Шаг решения точно не помню, то ли 0.01 то ли 0.001.
Да, в коэффициентах опечатался 219 = 210.
Первая оптимизаця еще лучше нашла ответ. 0.31 сек! Правда сработал как переключатель релейный, пока оставил интегриальную составляющую -0.001..+0.001. сейчас вообще без интегратора посчитаю.
Первая оптимизаця еще лучше нашла ответ. 0.31 сек!

Да ну? У Вас где то ошибка — скорее всего в ограничении уровня на выходе регулятора. При постоянном входном сигнале = 10 выход объекта до уровня 1.0 минимум за ~0.83с добегает.
Может модели чуть отличаются? если на 1 секунде на нее отправить ступеньку в 1 то модель до -1 за 0.18 сек убегает.
эм, а это как так?
Первые два звена — на их выходе будем иметь линейно нарастающий сигнал идущий в положительную область. Далее идет растроение сигнала, причем нижняя ветвь — имеет коэффициент передачи примерно в 20 раз больше чем верхние две, т.е. сигнал на выходе сумматора обязан быть положительным.

P.S. Если верхнюю мешанину свернуть получаем вот такую схему:
Я в Simulink модель собрал тоже самое 0.18 секунды до -1, при константе 10 на входе.

а на собранную в симулинке схему можно глянуть?

На выходе интегратора (0.01/p) при наличии на входе объекта единичной функции будет положительный линейно нарастающий сигнал.
Далее идут две параллельные ветви:
1) Два верхних звена с перекрестными связями дадут следующую пф:


W(p) = [ -0.01*0.26*w1-0.04*0.16*w2-(0.16*0.01*2.27+0.26*0.005*0.04)*w1*w2 ] / [1-0.005*2.27*w1*w2],
где:
w1=1/(1.21+p)
w2=1/(0.59+p)

Коэффициент передачи чт ото около -0.018.
2) Самая нижняя ветвь с коэффициентом передачи 0.37.


Итого — реакция на единичную функцию на входе объекта может быть только положительной.

Сама модель на рисунке выше, я повторял задачку из книги гостева, просто пресобирая модель Simulink. Но перед моделью еще стоит усилитель на — 20 (почему то он вынесен из модели наружу) В общей модели с ограничителем максимальное воздействие 10. После усилителя становится — 200, и предается на вход модели, которая на рисунке, при таком входе как раз и добегает до -1, за 0.18 сек

Ну вот теперь все сходится. Если входное воздействие -200 а не +10, то выход объекта побежит в отрицательную сторону в 20 раз быстрее.
Теперь вопрос, чем Вы все таки пытаетесь управлять? П.Ф. объекта регулирования W(p)? или -20*W(p)? и где этот коэффициент -20 в статье?

Там такой текст есть:
" Общая схема объекта вместе с системой управления будет выглядеть так, как показано на рисунке 2. Усилитель со значением – 20, модель исполнительного механизма (опять-таки взятая «as is» из книги В.И. Гостева)."
Если бы я делал модель, я тоже этот усилитель внутри модели поставил бы, но взял как в оригинале, вдруг в этом половой смысл был.

Нда, в самом начале мелким шрифтом :))


вдруг в этом половой смысл был.

… мягко говоря нет слов. Смысл вижу только один — внести путаницу.


P.S. для ограничения ±200 и Kp=210, Kd=56 на уровень 0.991 выходит примерно за 0.5с. Теоретический максимум ~ 0.1с. Ну и те результаты что приведены выше получается что рассчитаны для ограничения выхода ПИД регулятора в 20 раз меньше чем для FL регулятора.
Итого: ПИД с ограничениями управляющего сигнала ±10 вывел объект на режим быстрее чем FL с ограничением ±200. Иронично :)))

В качестве хаба указан Матлаб, а в качестве тегов Матлаб и Симулинк, но ни того ни другого здесь нет.

Вы бы сделали свое моделирование в Симулинке, тогда можно было бы поиграться…

На сколько я понимаю, там коллектив продвигает свою альтернативу Matlab/Simulink, в которой и выполняется всё моделирование.

Было бы интересней, если бы вы написали пару статей о генерации кода в этой среде и запуске на какой-либо распространенной платформе.

Про Ардуино вот здесь: Мы завели дискуссию в discord https://discord.gg/aAw4Dd на тему совместной работы SimInTech и Arduino. Если это тема для вас интересна, подключайтесь.
Параллельно запущен чат канал в Телеге https://t.me/simintech для общих вопросов.

Ссылка на дискорд с ардуино почему то из хабра не работает, попробую еще раз
https://discord.com/invite/aAw4Dd
Есши не сработает и сейчас тогда только через телегу

Про ардуино на дискорде — здесь правильная сысылка discord.gg/rzWY6n

Сколько лет вы уже эту книгу мучаете? :)


Ограничивая воздействие, изменяем переходной процесс, увеличивая перерегулирование

При наличии насыщения на выходе рекомендуется вводить anti-windup схемы для интегральной составляющей. Как раз, чтобы не было роста перерегулирования.

Все это бесконечно далеко от реальных задач управления, к сожалению. Когда ты попытаешься применить все это на практике в реальной системе управления, ты поймешь. Я свою научную и рабочую карьеру начинал примерно 20 лет назад с нейросетевых и fuzzy систем управления, и применял их как раз к газотурбинному двигателю. В результате нескольких лет работы получился ПИД-регулятор )) С переменными коэффициентами, но все-таки ПИД-регулятор. Никакие нейро- и fuzzy-регуляторы в реальной системе неприменимы. Сейчас под управлением моих систем с моими алгоритмами работает порядка 6 тысяч газотурбинных двигателей по всему миру )
В питере, там где по лицензии турбины сименс собирают, мне говорили, что нечеткую логику используют. Но может это потому, что они еще в начале пути. Усоврешенствуют процесс и придут к ПИД.
Никакой нечеткой логики в Сименсе нет. Разве что под «нечеткой логикой» понимать их убогий нечитаемый код, представляющий из себя ядреную смесь творчества турков и индусов, подпёртую кривыми и косыми украинскими костылями ))))

Пишу, потому что мы год потратили на разбор и переделку софта для 25-тимегаваттной Сименсовской турбины, блин ))

А так втутри там ПИД-регулятор, причем крайне тупой — наш (мой) намного умнее )
Даже не удивлен, европа она такая сверху обертка и ценник ломовой, внизу дешевый труд иженегров из бандустанов.
Я просто с Сименсом почти 20 лет работаю и хорошо знаю их внутреннюю кухню и команды разработчиков — постоянно общаемся ) Русские там тоже есть, но их там воспринимают как Богов с Олимпа на фоне индусов и турков )) Украинцы там тоже на высоком уровне, но их мало, и они занимаются больше системными вещами — основная масса кодеров те самые индусы и турки. Пишут — закачаешься! Потом на их «код» вынуждены вешать кучу костылей и подпорок, когда уже наладка и внедрение идут в аврале, и нормально исправлять времени просто нет.
А вы бы не хотели бы статейку на данную тему написать тут? Было бы интересно почитать про ваш опыт.
Нет, не хочу — там куча ноу-хау, которые не в моих интересах раскрывать )) В этой области никто ни с кем ничем не делится — это большие деньги, стоимость входа на рынок очень высокая, конкуренты друг от друга свои решения скрывают и прячут, нигде никаких реальных решений в открытом доступе нет, и даже в патентах написано совсем не то, что используется на самом деле ) У меня по этой теме 6 патентов если что, так что знаю о чем пишу.
Самое смешное, что тут в коментариях задали вопрос, почему у меня коэффиценты ПИД маленькие, и я нашел ошибку — искусственно сузид диапазоно поиска оптимальных коэффициентов ПИД регулятора, по ходу сейчас весе перпроверю и тоже получу ПИД как лучший регулятор. :)))) А все потому, что SimInTech не нужно 10 лет работать она сам посчитает! :)))))
и тоже получу ПИД как лучший регулятор.

Это потому что у Вас объект управления «классический». Т.е. по сути интегратор + звено третьего порядка (если учесть что коэффициенты передачи при верхней части схемы мизерные, то вобще можно сказать что первого порядка). Зачем для управления таким объектом нечеткая логика? Если есть классические методы ТАУ (уже давно разработанные и обкатанные), которые дают результат выше которого не прыгнуть?
Именно это я и пытаюсь исследовать, можно ли что то еще выжать, профессор же не зря эту модель в книге привел, как пример.
К сожалению, наши профессора пишут книги, в жизни не видя предмет своей писанины…
Объект не совсем классический, просто модель сильно упрощенная. На самом деле газотурбинный двигатель как объект управления сильно нелинейный, чего я в этой модели вообще не увидел. И ПИД-регулятор для него тоже должен быть нелинейным. Плюс в реальности есть масса ограничений на управляющее воздействие (расход топлива), помимо основного есть несколько дополнительных контуров регулирования, есть ограничение на скорость увеличения и уменьшения управляющего воздействия, связанное как с помпажом компрессора, так и с возможностью получить разрушения лопаточного аппарата при некорректном управлении, причем эти ограничения сильно зависят от режима работы двигателя, и т.д. и т.п.
Объект не совсем классический, просто модель сильно упрощенная.

Тот объект который мучает в симуляторе автор — классический линейный объект управления, ибо ни одного нелинейного звена я там не вижу :) а в реальности, да, все нелинейно, ну или почти линейно в определенных диапазонах/при определенных условиях.
В симуляторе — да, сильно упрощенная линейная модель. В реальности ГТД сильно нелинейный объект. Почти линейный он только в малой окрестности рабочей точки, поэтому и можно применять ПИД-регулятор с изменяющимися коэффициентами.
Не линейную модель я тоже исследовал у меня была модель от ЦИАМ им. Баранова, по их словам она (модель) всережимная, я к ней прикрутил не линейную модель трубопровода с нелинейной моделью блоков управления задвижек от АЭС, с импулсным управлением положением. Правда там не турбина, а авиационный двухвальный двигатель. и переходной режим я брал с потолка. Но нечеткий регулятор там тоже сработал лучше чем ПИД. Можно посмотреть здесь...
На практике используются ПИД-регуляторы с адаптивными коэффициентами (они зависят от частоты вращения и температуры воздуха на входе в двигатель), иногда добавляем еще коррекцию по рассогласованию задания и текущей частоты вращения. Коэффициенты ПИД-регуляторов отличаются в зависимости от режима в десятки раз.

Реальный регулятор частоты вращения для турбины имеет порядка 1000 настроек, из которых настройки ПИД — малая часть.

Сейчас глянул файлы с настройками для самой свежей турбины мощностью 32 МВт — они занимают 107 килобайт (порядка 1500 настроек).
Это именно настройки (переменные которые можно менять в управляющем ПО)? Или просто характеристики систему управления типа задержки датчиков, люфты и т.п.
Это именно настройки, которые нужно менять для конкретного типа двигателя — они относятся к двигателю, а не к системе управления.
В модели авиадвигателя двигателя там тоже настроек наверное не меньше в виде всяких итреполяционных таблиц.
А вот в систему управления чистых параметров переменных настраиваемых для регулятора блока регулятора ПИД 51 шт. а там еще и блоки KDRK и SWF всего порядка 100 переменных. Но при этом оптимизация работала, и если заменить ПИД на FL, получалось лучше Картинки реальной системы с АЭС которую использовал, для иллюстрации, что там тоже все нелинейно и совсем не упрощенно было.


А что газотурбинный двигатель делал на АЭС, если не секрет?
ничего, просто гонять большу модель АЭС трудно, а полная модель авиадвигателя упрастемы управления не имела. Поэтом от АЭС взял настоящую завдижку и ПИД и прикрутил ее к модели аиацонного дивагателя. Реальное ПО управления, со всеми невинностями + близкая к реальности модель двигателя от ЦИАМ.
Уверен, что настоящий регулятор газовой турбины будет работать лучше любого лабораторного fuzzy ) Там просто есть сотни нюансов, которые учтены реальным опытом пусков тысяч турбин…

Есть не единичные примеры, когда все эти накопленные поколениями инженеров костыли в виде деястка ПИДов с переключениями и эвристиками проигрывают вдумчиво сделанному хорошим экспертом алгоритму управления. Но инеженры редко знают что-то за пределами ПИД, ЛКР и Калмана с наблюдателем возмущения, да и то знают не всегда правильно. Отсюда и растут все эти франкенштейны настоящих регуляторов.
Но это не всегда и не везде, сугубо моё личное мнение, а я в газотурбинах не разбираюсь.

Есть примеры таких алгоритмов от вдумчивых экспертов в реальных системах управления?

Конечно. Я же сказал: "есть не единичные примеры". :)
Но если вы хотите конкретный пример было-стало, то я его описывать не буду, можете не верить. Или вы хотите узнать, какие вообще есть методы используются в индустрии, кроме ПИД?

Мне просто интересно узнать, в каких областях применяются кабинетные идеальные регуляторы. Например, fuzzy, подобный описанному в этой статье. Вопрос не в ПИД или не ПИД. Понятно, что есть задачи, с которыми ПИД не справится.
Насколько мне известно, нечеткая логика себя на удивление не плохо показала, в летаюших и убивающих объектах.
Еще в стиральных машинах вроде как применяют )

эт каких?

в каких областях применяются кабинетные идеальные регуляторы

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

А мне кажется, Вы просто не можете привести такой пример.
Вот пример когда симуляция помогла настроийть систему управления электродвигателем habr.com/ru/post/460151
Я занимался алгоритмами для систем управления инверторами и скажу, что «хорошим экспертом» по конкретному алгоритму управления можно стать, только хорошо зная объект управления и железо.

Просто я видел множество таких алгоритмов от «экспертов», которые прекрасно работали на бумаге и в моделях, но совсем не работали на практике. Например один такой «эксперт» предложил и успешно защищал вариант очень быстрого управления током в инверторе на основе гистерезисного релейного алгоритма (здесь, кстати, тоже этот вариант проскакивал). Только этот «эксперт» не учел, что в реальности в канале измерения тока присутствуют наводки, в том числе от переключения транзисторов на выходе этого релейного регулятора, умертвляющие эту идею в корне — так как регулятор просто начинал колбаситься. Но с фильтрами релейный алгоритм уже не был лучше других.

Так и у вас — симуляция-симуляцией, но на практике далеко не все идеи работоспособны.
Я уже привел пример последствий применения таких регуляторов, которые в этой статье описаны — помпаж и разрушение лопаточного аппарата турбины ) Порчу инвертора еще можно пережить, а турбина стоит миллионы долларов если что.
Мои инверторы не меньше стоят.
Интересные инверторы — что за звери такие? Прямо 2,5 млн долларов за инвертор?
Так и у вас — симуляция-симуляцией, но на практике далеко не все идеи работоспособны.

Простите, я не понял, это вы мне ответили? О каких моих симуляциях идёт речь?

У меня есть мнение, что специалисту по управлению проще разобраться в предметной области, чем инженеру-предметнику в теории управления. Тут как с програмистами. :) Но это только мое мнение, а мир удивителен и разнообразен.

Смотря какая предметная область. Я по образованию инженер по ядреным реактором. Но для меня сюрпризом оказалось, что электромотор с приводом это какая то сложна научная система и при испытаниях, рвут тяги и сжигают электронику. В детстве прилаживая моторчик с пропеллером для пластмассовй лодки, мен казалось что проще ничего не бывает. Поэтому тут все зависит от базового образования и самого человека. У меня был пример когда нам в замечаниях от конструктора завода написали погрешность модели 40% когда расчет температы на выходе показал 3 градуса, а термопара 5 градусов, при полном перепаде с 2 теплообменниками и турбохолодильной машиной в 300 градусов. Причем по паспорту точность термопары +- 2.5 градуса
а термопара 5 градусов
по паспорту точность термопары +- 2.5 градуса

Это же ±50%! :)

Так модель считала перепад 300 градусов в системе кодиционирования, с турбохолодильником двумя теплообмениками и 3 регуляторами. Он разницу между расчетным и ищмеренным значением, подешил на измеренное. Погрешность модели менее 1% в этом режиме. Я его спорсил а если бы в режиме на выходе 0 градусов? Какая погрешность быда бы.

Возможно, ваш "эксперт" был не тем экспертом? Кто работают с high-gain регулятороми, обычно в курсе их поведения при шумах, области применения, эквивлентном управлении и прочих нюансах. Если что, то релейные алгоритмы очень распространены во многих задачах. Например, отопление.

Конечно не был, но работал в консирукиорском отделе на заводе и принимал нашу модель, составлял отчет. Поэтому чедовеческий фактор важне специализации. Специалист по балистике космических аппаратов, делает испоонителтную систему для алгоритмов управления реакторов, а сейчас предлагает занятся модедирование 3D для молекулярной биологии, и я верю у него получится. А вот тому конструктору с завода бесполезно что то изучать, мне кажется.

Задам вопрос всем, а в особенности vasipup и petuhoff.
А с регуляторами ADRC кто-нибудь работал? Есть хоть какой-нибудь пример, чтобы почитать, как там рассчитывается (моделируется, выпекается, не знаю что ещё) супервайзер?
У меня даже есть код под STM с ADRC регулятором для стабилизации коптера. Только там понятно ноль целых ноль десятых. Куча магических циферок.
Хотя на видео ADRC выглядит ну оооочень внушительно:
Видео

Смотришь, и думаешь «Ну блин, ну как?»

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

Судя по обрывкам статей и вики ADRC это наблюдатель + ПИД.

Смотря что включается в ADRC. Это может быть Active Disturbance Rejection, тогда, как написал FGV, это (часто) номинальный контролер как для системы без возмущений + наблюдатель возмущения. А может быть Adaptive Disturbance Rejection, тогда там вариантов больше.

Про наблюдатели для электропиривода, есть статья от разработчкиа библиотеки «Электропривод» в SimInTech Калачева Юрия Николаевича. У него есть аккаутн на хабре. И я его статью про модельно ориентированное размещал ранеее. elprivod.nmu.org.ua/files/automaticED/kalachev_yu_n_nablyudateli_sostoyaniya_v_vektornom_elektropr.pdf
Спасибо, ознакомлюсь со статьёй.
У меня есть сейчас на руках модель с автоуспокоителем колебания груза на подвеске октакоптера. там дополнительно меряют отклоенени груза и добавляют поправку в ПИД регулытор
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории