Как стать автором
Обновить
3
0
Валерий @ValeriyS

DSP, GPGPU, FPGA, Analog

Отправить сообщение

Даже страшно представить, насколько увеличилась бы скорость операций ввода/вывода, если бы этот человек потратил на улучшение кода 5 часов вместо 5 минут (подсказка - на 360%).

Отличная статья, спасибо! Буквально неделю назад случайно наткнулся на ADRC. Основные идеи ADRC следующие:

  • объект управления является системой второго порядка (двигатели как раз попадают в эту категорию, т.к. ускорение пропорционально приложенному моменту)

  • основная задача ADRC - убрать всё кроме прямой пропорциональности ускорения и момента при меняющейся нагрузке на двигатель (привет PID с gain scheduling)

  • главная фишка ADRC - менять коэффициенты контроллера постоянно наблюдая за реакцией планта на приложенный контроллером сигнал (типа PID с постоянной подстройкой его коэффициентов)

В имеющихся публикациях упоминается нетривиальность реализации ADRC, типа каких-то ноу-хау, которые авторы не имеют права раскрывать. Также не встречал освещения необходимости сохранения типичного для двигателей двухконтурного контроллера (sic!). Здесь я имею в виду первый контур работающий по скорости и второй контур - по позиции. Построить feedback контроллер для планта, поворачивающего фазу на 180°, используя только один контур - практически нереализуемая и не несущая особой пользы затея. В двухконтурной же системе мы имеем два планта первого порядка, где каждый поворачивает фазу в своей петле управления только на 90°, оставляя ещё примерно 90° в качестве запаса по фазе.

Классная статья, спасибо. Очень интересна часть с интеграцией Simulink модели и фреймворка на Azure RTOS.
Возможность использования таких могучих инструментов как-бы предполагает использовать стандартный подход к построению систем с обратной связью:
- измерить частотную характеристику
- построить zero/pole модель (System Identification, функция ssest в Матлаб)
- рассчитать контроллер как zero/pole cancelling для минимально-фазовой части (bi-quad sections, SOS объекты в Матлаб)
- посмотреть и подстроить характеристики sensitivity и disturbance attenuation

Для меня это прямо как чудо, что можно усилиями одного или нескольких человек поднять такую инфраструктуру серво-привода.

"This example, seemingly plucked from a science fiction thriller, mean that: “You can't have a conversation about artificial intelligence, intelligence, machine learning, autonomy if you're not going to talk about ethics and AI” said Hamilton."

Я не поленился прочитать цитируемую статью (длинная, смотрите самый конец). Там прямо сказано, что воображаемый пример приведен из научной фантастики. Я сам лет десять назад читал эту книгу и отлично помню сюжет. Заголовок данного поста, как и его содержание, вводит читателей в заблуждение. С трудом удержался, чтобе не поставить автору поста минус в карму.

Если система представима в виде конечного и вычисляемого набора нулей и полюсов, то необходимым и достаточным критерием устойчивости является отсутствие полюсов в правой полуплоскости, или я что-то упустил в этом утверждении?

Я предполагаю, что:

- количество нулей равно количеству полюсов

- общий знак для gain выбран правильно для обеспечения отрицательной обратной связи

Я не припомню книги, где бы все аспекты освещались целостно и на приличном фундаментальном уровне. Больше всего мне нравятся учебные публикации от MIT, там я чаще всего нахожу ответы по-делу на свои частные проблемы/задачи.

Для контроллеров нелинейных систем все средства хороши, включая FIR и FFT :)

Если мы имеем систему с несколькими степенями свободы (например угол/позиция) и таким же количеством наших элементов воздействия, то сначала надо выполнить decoupling. После этого можно управлять независимо по каждой из степеней свободы. Decoupling - отдельная большая тема, я не хотел бы смешивать всё в одном флаконе :)

Если я понял правильно, здесь мы имеем систему с одним элементом воздействия. Далее не важно, сколько внутренних переменных состояния имеет наш объект, т.к. для линейной системы у нас будет только одна АЧХ/ФЧХ. Если мы знаем полином для этой ЧХ, то можем разложить полином на нули/полюса и так далее.

Для контроллеров нелинейных систем все средства хороши, включая FIR и FFT :)

Да, ваша задача это практически идеальный пример, когда использование IIR фильтра с нулями/полюсами обратными резонансу на 50 Гц было бы верным решением. Мы работали с системами, где подрбных резонансов в полосе пропускания было 3-5 штук. Чем точнее мы их измеряли, тем точнее была компенсация набором IIR фильтров, тем более высокую полосу пропускания можно было получить для feedback loop.

Если есть резкое изменение амплитудной характеристики, значит ваш plant имеет и такое же резкое изменение фазы в данном месте. Просто надо помнить, чо механические системы это набор резонансных элементов, для которых амплитуда и фаза всегда взаимно связаны. Поэтому когда мы компенсируем амплитуду нашего plant с помощью IIR мы заодно компенсируем его фазу.

Даже классический PID контроллер является частным случаем минимально-фазового IIR фильтра :)

Что касается стандартных контроллеров, то нередко у них есть опция включения резонансных фильтров, реализованных как подмножество IIR фильтров. Полной гибкости конечно нет, произвольные нули/полюса так не погасишь.

Сейчас стали появляться контроллеры, позоляющие реализовать практически любую архитектуру управления. Это делается путём компиляции вашей Simulink модели прямо в код, исполняемый в процессоре контроллера. В этом случа мы можем достроить достаточное количество универсальных IIR фильтров с произвольным набором нулей/полюсов.

Ход ваших мыслей абсолютно правильный, я его только немного продолжил бы:

  • Минимально-фазовыми могут быть только IIR фильтры.

  • Если фаза минимальна, то и задержки минимальны.

  • Поэтому IIR фильтры исключительно популярны в системах управления с обратной связью.

Интересно было бы посмотреть на публикацию, где излагается feedback контроллер, построенный на FIR или FFT.

Что, если я скажу вам, что для произвольной АЧХ, определённой до бесконечно высоких частот, существует только одна минимально-фазовая ФЧХ? По работе, я вычислял эту ФЧХ для любой заданной АЧХ. И эта минимально-фазовая ФЧХ может быть апроксимирована с произольно высокой точностью набором минимально-фазовых SOS IIR фильтров (их количество просто будет расти с ростом требований по точности совпадения АЧХ).

Не очень понял ваш комментарий, но наверно вы говорите о System Identification. Это случай, когда мы измерили АЧХ и ФЧХ объекта и хотим представить его в виде набора нулей/полюсов. Тогда, конечно, полной компенсации за счет взаимного уничтожения нулей/полюсов не получится. В данной статье другой случай. У нас есть аналитическое выражение для State Space, котрое мы можем аналитически-же разложить на нули/полюса и построить совершенно идеальный feedback контроллер.

Чаще всего модель заметно отличается от реальной системы, но в данной статье, по-моему, рассматривается идеализированный точный вариант.

Я плохо знаю терминологию на русском языке в этой предметной области, так что не судите строго :)

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

В Матлабе есть функция преобразования State Space модели (A,B,C,D) в SOS - ss2sos. SOS модель можно импортировать и визуализировать в fvtool. Основной смысл SOS - разбить полином на более простые элементы, делая процесс вычислений устойчивым и предсказуемым. Реализация вычислений с помощью SOS секций на PC или FPGA особых затруднений не вызывает.

State Space модель может также быть конвертирована в zero/pole/gain модель. Это позволяет построить идеальный feedback контроллер путём использования в контроллере полюсов на местах нулей объекта и нулей на местах полюсов. Добавив в котнтроллер интегратор получаем идеальный feedback контроллер. Это справедливо, конечно, если наш объект (plant) является минимально-фазовой системой, т.е. не имеет нулей вне единичной окружности.

Попробуйте поискать литературу по ключевым словам типа "book Digital Signal Processing MATLAB". Наверняка и на русском языке это есть, может кто ещё из читающих эту тему вам посоветует.

Пример минимально-фазового IIR фильтра 2-го порядка (Fs = 48 kHz):

Numerator:
0.56999999999999995115018691649311222136
-0.208009478672987219161072403039725031704
0.064150573886480918850416799159575020894
Denominator:
1
-1.553554502369669521044670545961707830429
0.981811953909393464456911715387832373381

---------------------------------------------------------------------------------------

Рассчитайте, пожалуйста, FIR с разумно-близкой АЧХ и меньшим чем у IIR набегом фазы:

FIR без задержек должен не иметь нулей на единичной окружности или вне её. Т.е. он фактически превращается в комбинацию минимально-фазовых SOS IIR фильтров. Поэтому не умаляя общности можно говорить, что всё реализовано на IIR фильтрах.
А вообще хотелось бы посмотреть на ваш пример FIR фильтра, который при заданной амлитудной частотной характеристике имеет такую же минимальную задержку, что и минимально-фазовый IIR фильтр :)

Я тоже так думал, пока не пришлось реализовывать систему с обратной связью (feedback control, FBC). Для FBC принципиально иметь минимальную задержку в петле обратной связи, поэтому FIR, FFT и прочие прелести сильно вредят устойчивости. Гораздо больший запас по фазе получается в цифровыми фильтрами типа IIR. Что касается аналоговых фильтров, то им соответствуют биквадратные цифровые IIR фильтры (Second Order Section, SOS).

Круто. К сожалению не могу поделиться предложенным мной подходом к линеаризации - это интеллектуальная собственность компании, где я работаю.

Вместо полинома лучше использовать разложение частотной характеристики объекта управления на биквадратные секции. Тогда контроллер можно строить как инверсию нулей в полюса и наоборот. Кроме того, биквадратное предсталение (SOS в Матлабе) позволяет решить проблему стабильности вычислений.

Я правильно вас понял, что фразы про молоко достаточно, чтобы сказать, что мой комментарий в целом неверен?

В том-то и дело, что фактический процент налога заметно выше заявленных 0.9%:

https://julianalee.com/reinfo/property-taxes.htm :

"The property tax for a home in Santa Clara County can be estimated by multiplying the purchase price by 1.25%. The property tax is 1% but there are typically 0.25% special assessments added."

Наш скромный дом оценён для налогообложения в ~$800k. Т.е. мы должны бы были платить ~$800k x 1% = ~ $8000 в год. За 2022 год заплатили $10580.

Как было справедливо указано в данной статье, во многих других штатах цена такого же дома в 2-4 раза ниже, общая площадь нашего дома ~100 кв. метров (1095 sq.ft.).

Я не акцентировал свой комментарий на цене дома, скорее на постоянно растущем фактическом проценте налога.

Это то, что обычно называется Santa Clara downtown.

Информация

В рейтинге
Не участвует
Откуда
Santa Clara, California, США
Зарегистрирован
Активность