Русский
Русский
English
Статистика
Реклама

Matlab

MATLAB. Пиратство в России. Религия в ИТ. Как управлять инженерами и как их мотивировать?

30.10.2020 20:07:38 | Автор: admin

Вы думаете, что MATLAB только для ученых и студентов? Тогда вы отстали от жизни. Мы встретились с техническим директором компании ЦИТМ Экспонента, единственного представителя MathWorks в России, чтобы это обсудить.

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

В статье приведен краткий и творчески переработанный текст интервью. Если хочется подробностей или лень читать, смотрите полную версию на моем YouTube-канале.

Фарида Рословец:
Есть мнение, что MATLAB только для студентов и ученых. Можешь это прокомментировать?

Денис Жегалин:
Нас в вузе тоже учили матлабу, самым основам, и, если бы я так и остался с этим знанием, я бы тоже так думал. Но на четвертом курсе я попал на практику в Сименс и тут мне показывают, что вся разработка алгоритмов управления автомобильным двигателем строится на MATLAB, Simulink и Stateflow, и я такой Чтооо?. Добило меня, когда я понял, что автомобильные концерны ставят друг другу ТЗ в виде симулинк-моделей. У меня тогда что-то сломалось в голове и мое мнение о матлабе поменялось.

Для каких задач матлаб чаще всего используют?

Представь, что ты хочешь разработать алгоритм, который работает в каком-то окружении. Это может система радиолокации, связи, управления, компьютерного зрения и т.д. Вот, например, как ты разработаешь алгоритм управления впрыском без двигателя под рукой? А даже если двигатель есть и у тебя при эксперименте поршень вылетает из цилиндра и ломает двигатель, это печально. И вот представь, что у тебя есть возможность математически описать окружение алгоритма в виде моделей и разрабатывать алгоритм по ним на уровне системы. В этом случае матлаб и симулинк становятся крайне необходимыми.

Какой среди ваших клиентов процент гос. рынка?

Думаю, около 80-90? Я думаю, что коммерческие часто идут на торренты, скачивают матлаб и пользуются.

Вопрос пиратства для вас острый?

Для нас это очень болезненный вопрос. Когда мы только начинали работать, мы в принципе не могли представить, как можно продать MATLAB на какую-то существенную сумму. То есть не просто оборудовать класс для студентов, а продать что-то нормальное в коммерческую компанию. Сначала мы нащупали тренинги, когда мы не просто отдаем софт, а еще и обучаем. Тренингов у нас 50 штук сейчас, и это расслабляет людей. Они понимают, что хотя бы освоят инструмент нормально.

Но когда начался политический кризис, наши компании немного напряглись, так как мы поставляем американский софт, с которым может что-то произойти. Мы поняли, что теперь просто тренинги это не решение проблемы, и решили открыть направление разработки под ключ, причем такое, которое будет проводиться вместе с нашими клиентами.

Инженерный консалтинг?

Да. Некоторым клиентам нужно помочь организовать процесс разработки в МATLAB Simulink, необходимо организовать сам процесс, командную работу и так далее. Второй вариант это когда нужно вместе с клиентом решить его задачу. Мы разрабатываем проект и при этом передаем экспертизу. То есть заказчик получает готовый продукт и учится у нашего инженера. Эта схема сейчас работает и клиенты довольны.

Пиратов меньше стало?

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

Когда я анализировала HeadHunter, все вакансии даже по системам управления или обработке сигналов всегда или/или. Либо матлаб, либо C, либо матлаб, либо R, либо матлаб либо, либо Python, то есть нет четкого требования. Это такой завуалированный ход? Можно из этого сделать вывод, что эта компании работает на MATLAB?

Ну да, зачем они стали бы еще писать MATLAB? Написали просто C, и все. Я прихожу в любую компанию: Матлаб видели? Да. Работаете? Да. Лицензий ноль. Куда бы я не пришел, везде пиратство, почти 90% случаев. Даже в тех компаниях, куда уже продали лицензию, пиратство есть. Нам иногда присылают запросы технической поддержки с пиратских лицензий.

По поводу олдскул-инженеров. Ты сказал, что 85% ваших заказчиков это госкомпании, и вам приходится с этими старыми инженерами работать, приходится к ним приходить, доказывать, что это нужно. Вот как ты им объясняешь?

Это всегда по-разному. Я думаю, что здесь часто работает харизма. Потому что, если начинаешь технически продавливать, гордость человека часто не позволяет ему принять что-то. Он тоже умный, он все умеет, и ты не прав. Однако, если с ним хоть немножко провести время вместе, пообщаться, посмотреть, что он делает, проникнуться его болями, которые есть, и показать, что, оказывается, можно что-то поудобнее, побыстрее сделать. Просто показать, что ему нужно и все. И людей отпускает.

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

Знаешь, обычно они не приходят в одиночку. Когда мы беседуем, сидит и молодежь, которая больше рубит, и пожилые люди. В какой-то момент молодежь тоже проникается. Я коммерческий человек, в своей речи использую термины, которые отличаются от тех, что используется в компании, где люди работают. Молодежь объясняет своим старшим коллегам: Вспомните, мы вот это с вами делали. Это можно сделать, гораздо быстрее. Тогда приходит взаимопонимание. Я не говорю, что это всегда и везде работает, но я вижу, что такое случается.

Почему о вас так мало знают коммерческие компании? Я взаимодействую, например, с большим количеством Data Science-специалистов из крупных компаний, они знать не знают, что такое Экспонента. Почему вы не развиваетесь, не растите охват?

С начала существования компании прошло всего три года. До этого мы были частью компании Softline (прим.: международная IT-компания), которая очень большая, известная. Какое-то время должно пройти, прежде чем мы сможем поднять новый бренд.

Давай поговорим про конкурентов. Я тебе прочитаю такой текст: Когда вы настраиваете чужой продукт без доступа к разработчику, вы бьетесь головой о стену, найти автора не представляется возможным физически, исправить по вашему желанию ничего нельзя. Потому что западному разработчику на одну тысячную процента мирового рынка просто наплевать. А когда вы можете зайти к разработчикам, поговорить о ваших проблемах, и для вас внесут изменения в ядро и допишут нужные функции это бесценно. Вячеслав Петухов, компания SimInTech. Что ты по этому поводу думаешь? Что ты можешь на это ответить?

Первое: над оптимизацией ядра МATLAB работает огромное количество гениальных инженеров, которые день ото дня улучшают его. Второе: все надстройки, которые на этом ядре крутятся функции, разные тулбоксы, блоки Simulink все это можно создавать и добавлять самостоятельно. Когда к нам обратилась компания с заказом по моделированию нефтегазовой колонны, мы взяли и создали эту библиотеку под ключ, просто взяли и разработали. И здесь даже не нужны разработчики MATLAB, библиотеку мы сделали без сами.

А исправление багов?

Баги очень быстро исправляются, если не в ближайшее время, то в следующем релизе точно. Поддержка MathWorks одна из лучших поддержек в мире, это раз. Во-вторых, оперативную поддержку осуществляем мы. Сначала нам приходит вопрос, мы сами воссоздаем, тестируем, и дальше уже передаем туда. А найти какой-то баг, который не решаем такого вообще, в принципе, не может быть, мы не видели такого ни разу за 10 лет.

Поэтому то, что говорит товарищ Петухов, про не достучаться это неправда. Мы открытые люди, готовы принять любые комментарии и объяснить, как стоит делать. Мы не разработчики матлаба, но, если речь о библиотеках, функциях или каких-то надстройках вообще не вопрос, мы что угодно сделаем.

Есть мнение, что первая и самая древняя стратегия управления людьми это Библия. Ты согласен с этой мыслью?

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

Генеральный директор вашей компании является соучредителем церкви. Ты в ней состоишь. Тебе это как-то помогает управлять?

Принцип, который я у Иисуса Христа беру как верующий человек, заключается в том, что моя задача на этом месте работы это максимально послужить моим инженерам и другим коллегам, чтобы у них работа получилась хорошо. То есть, моя задача не управлять сверху. Понятна идея, да? Ну и послужить целям компании, чтобы бизнес шел вперед это мое обязательство перед Богом

Почему с религиозными людьми удобнее работать, какие игрушки и железки есть в офисе представителя крупнейшего инженерного продукта? Ответы на эти и многие другие вопросы Вы найдете в полной версии интервью.

Кстати, интервью с главным конкурентом уже на Хабре! Посмотрите на альтернативный взгляд.

Подробнее..

SimInTech первая среда моделирования в России, импортозамещение, конкуренция с MATLAB

06.10.2020 14:22:26 | Автор: admin

Инженеры по всему миру ведут разработку в среде MATLAB, это их любимый инструмент. А может ли российская IT-индустрия предложить достойную альтернативу дорогому американскому софту?

С этим вопросом я пришла к Вячеславу Петухову, основателю компании 3В Сервис, которая производит отечественную среду моделирования и разработки SimInTech. После попытки продать свою разработку в Америке он вернулся в Россию и делает конкурента MATLAB здесь.

Поговорили о трудностях внедрения сложного IT-продукта на российский рынок, маркетинге на грани, принципах работы SimInTech и её преимуществах перед MATLAB.


Полную версию, которая охватывает очень много интересных вопросов, вы можете посмотреть на моем ютуб-канале. Здесь же я приведу в сжатом виде некоторые интересные моменты, творчески переработанные под печатный формат.

Фаря:
На чём написана среда SimInTech?

Вячеслав Петухов:
Изначально и сейчас она написана на Паскале.

Серьёзно? Кто-то на нем еще пишет?

Да. Он спокойно себе развивается, Скайп был написан на Delphi. Когда мы начинали разработку это была чуть ли не первая среда, в которой можно было быстро набрать код, не заморачиваясь, и заняться сутью.

Если сравнивать с MATLAB, то какие библиотеки SimInTech, по твоему мнению, самые сильные сейчас, какие еще недоработанные, какие планируется доработать?

Математическое ядро уже готово, можно использовать. Готова гидравлика. Кипение воды в трубах и работа турбины это основа, то, с чего всё начиналось. Один заказчик долго пытался посчитать с помощью MATLAB, но в итоге у него ничего не заработало, у нас эта задачка буквально через день была решена.

В целом у нас нет ничего неудачного, но есть области, где мы еще не копали. Допустим, в MATLAB есть тулбокс для расчета динамики летательных аппаратов, а у нас нет. Но это не потому, что у нас что-то не хватает, просто мы этим не занимаемся.

А что на счетавтоматической генерации кода? MATLAB этим очень кичится.

Это смешно. Матлабовская кодогенерация это просто смех. Если говорить про наш продукт, то теперь операторы АЭС открывают ноутбук на станции, открывают схему в SimIntech, подключают к стойке, которая управляет реактором, и правят эту схему. Программиста нет.

***

Мне кажется, это очень интересная история, что вы делаете свой сложный российский продукт, но почему у вас такой жесткий маркетинг? Почему в каждую дырку (отверстие) нужно обязательно вставлять MATLAB?

Потому что изначально все наши коммерческие проекты начинались тем, где обкакивался MATLAB. Я считаю, что MATLAB у нас используют все, это стандарт де-факто, они на рынке, все их знают. И вот мы приходим и говорим: У нас есть всё то же самое, только лучше. Но часто возникает проблема, если приходишь с российским продуктом: Это что, импортозамещение? Взяли, денег намыли, теперь нам пытаются впарить это

Вот одна из твоих цитат из ВКонтакте:

И при этом ты говоришь, что по отношению к SimInTech понятие импортозамещение употреблять не стоит. Хотя тут сам на это и намекаешь.

Здесь написано, что ВУЗ заплатил 25000000 . За что? Зачем ВУЗу на 25000000 покупать MATLAB?

А зачем ему SimInTech покупать?

SimInTech не надо покупать. Качай и учи. Передаточные функции, фазочастотный анализ, устойчивость. Это всё можно делать бесплатно. У нас можно качать демоверсию и в ней всё это делать.

И сколько эта демоверсия доступна?

Нет ограничений по времени, но есть ограничение по сложности 250 блоков. Для обучения это выше крыши. Не надо тратить деньги на американцев.

Часто вижу твои комментарии в соцсетях и на Хабре с возмущениями про MATLAB. Они, что-то делали и MATLAB посчитать не смог, а вот у нас считает. Но для человека, который работает в MATLAB, это значит, что он просто недоразобрался. Открываешь документацию, и все получается.

Это понятно. Но моя задача тебе продать. Как еще я тебе продам, если ты пользуешься MATLAB? Ты позовёшь своих инженеров и скажешь им: Вот пришли ребята, хотят нам предложить аналог MATLAB. А у инженера в матлабе наработана библиотека и куча всего. Он откроет SimInTech и скажет: Ой, да у вас интерфейс не такой, да у вас линии неправильные рисуются и т.д.

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

Наш заказчик к нам придёт, потому что у него проблема с MATLAB. А те, у кого нет проблем с MATLAB, кого всё устраивает, в принципе, не наши заказчики. Они не придут. Мне нужно, чтобы все знали, что SimInTech это то же самое, что MATLAB, но лучше.

То есть ты за счёт MATLAB пиаришься?

Ну да.

***

А зачем ты приходил к конкурентам в Софтлайн (дистрибьюторы MATLAB)?

Я предлагал им гениальную бизнес-идею. Я знаю, что у них где-то порядка 50% прибыли уезжает в Америку. Давайте оставим эти 50% здесь и на эти деньги мы разработаем всё, что угодно.

Чем закончилась ваша встреча?

Их директор сказал: Мне не интересно, у меня и так всё хорошо. Не захотел участвовать в процессе маркетингового сопровождения: уроки, презентации, материалы, учебная литература. Я хотел, чтобы Софтлайн, как он продаёт MATLAB, продавал SimInTech. Деньги, которые сейчас уходят в Америку, можно было бы оставлять у себя и делить с нами.

Очень амбициозно

Если вам понравилось, приглашаю к просмотру полной версии.
Пишите в комменты, что вы думаете о разработке отечественных аналогов продвинутого импортного ПО.

Подробнее..

3. ЧАСТОТНЕ ХАРАКТЕРИСТИКИ СИСТЕМ АВТОМАТИЧЕСКОГО УПРАВЛЕНИЯ (АФЧХ, ЛАХ, ФЧХ) ч. 3.1

07.12.2020 02:05:58 | Автор: admin

Лекции по курсу Управление Техническими Системами, читает Козлов Олег Степанович на кафедре Ядерные реакторы и энергетические установки, факультета Энергомашиностроения МГТУ им. Н.Э. Баумана. За что ему огромная благодарность.


Данные лекции только готовятся к публикации в виде книги, а поскольку здесь есть специалисты по ТАУ, студенты и просто интересующиеся предметом, то любая критика приветствуется.


В предыдущих сериях:
1. Введение в теорию автоматического управления.
2. Математическое описание систем автоматического управления 2.1 2.3, 2.3 2.8, 2.9 2.13


В этом разделе мы будем изучать частотные характеристики, тема сегодняшней статьи:
3.1. Амплитудно-фазовая частотная характеристика: годограф АФЧХ, ЛАХ, ФЧХ


Будет интересно познавательно и жестко.




3.1. Амплитудно-фазовая частотная характеристика: годограф АФЧХ, ЛАХ, ФЧХ


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



Рис. 3.1.1 Схематическое представление синусаидального воздействия

Формула синусаидального воздействия может быть записана как:

$sin(\omega \cdot t+\phi) = sin \left[ \omega(t + \frac{\phi}{\omega}) \right] = sin \left[ \omega(t + \Delta t) \right];$



Рисунок 3.1.2 График представления синусаидального воздействия

$\phi $ сдвиг фазы (не редконазывают фаза);
$A$ амплитуда;
$A \equiv A(\omega); \phi \equiv \phi( \omega) $ т.е. амплитуда на выходе звена(системы) и сдвиг фазы зависят от частоты входного воздействия x(t).


Используем показательную форму записи функции единичного гармонического воздействия и отклика на это воздействие (рис. 3.1.1):

$sin(\omega \cdot t) = e^{i \cdot \omega \cdot t}$


$$display$$\left \{ \begin{align} x(t)&= e^{i \cdot \omega \cdot t} = cos (\omega \cdot t) + i \cdot sin(\omega \cdot t)\\ y(t)&= A\cdot sin(\omega \cdot t+ \phi) \Rightarrow A \cdot e^{i(\omega \cdot t+\phi)}=A \cdot e^{i\cdot \omega \cdot t} \cdot e^{i \cdot\phi} = A(\omega) \cdot e^{i \cdot \omega \cdot t} \cdot e^{i \cdot \phi(\omega)} \end{align} \right.\ \ \ \ \ \mathbf{(3.1.1)} $$display$$


Определим связь между передаточной функцией и гармоничным воздействием, пользуясь показательной формой.
Рассмотрим звено уравнение динамики которого имеет следующий вид:

$T^2_2y''(t)+T_1y'(t) = K[\tau \cdot x'(t)+x(t)].\ \ \ \ \ \mathbf{(3.1.2)} $


В показательной форме:

$(T^2_2\cdot s^2+T_1 \cdot s+1)\cdot Y(s) = K[\tau \cdot s+1] \cdot X(s)$


Передаточная функция:

$W(s)= \frac{K(\tau \cdot s +1)}{T^2_2 \cdot s^2+T_1 \cdot s+1}\ \ \ \ \ \mathbf{(3.1.3)} $


Запишем в показательной $x, x', y, y', y''$ форме используя соотношения 3.1.1:

$x(t)=e^{i \cdot \omega \cdot t};\\ x'(t)=i \cdot \omega \cdot e^{i \cdot \omega \cdot t};\\ y(t) = A \cdot e^{i \cdot \omega \cdot t} \cdot e^{i \cdot \phi};\\ y'(t)=A \cdot i \cdot \omega \cdot e^{i \cdot \omega \cdot t} \cdot e^{i \cdot \phi};\\ y''(t)=A \cdot (i \cdot \omega)^2 \cdot e^{i \cdot \omega \cdot t} \cdot e^{i \cdot \phi};$


Подставим эти соотношения в (3.1.1) получим:

$T^2_2\cdot A \cdot (i \cdot \omega)^2 \cdot e^{i \cdot \omega \cdot t} \cdot e^{i \cdot \phi} +T_1\cdot A \cdot i \cdot \omega \cdot e^{i \cdot \omega \cdot t} \cdot e^{i \cdot \phi} + A \cdot e^{i \cdot \omega \cdot t} \cdot e^{i \cdot \phi}= \\ =K[\tau \cdot i \cdot \omega \cdot e^{i \cdot \omega \cdot t}+e^{i \cdot \omega \cdot t}] \Rightarrow \\ A \cdot e^{i \cdot \phi} \cdot [T^2_2\cdot (i \cdot \omega)^2+ T_1 \cdot (i \cdot \omega)+1] = K[\tau \cdot (i \cdot \omega)+1] \\ $


Поскольку $A \equiv A(\omega); \phi \equiv \phi( \omega) $ (амплитуда на выходе звена(системы) и сдвиг фазы зависят от частоты входного воздействия), то можно записать:

$A(\omega) \cdot e^{i \cdot \phi(\omega)}=\frac{K[\tau \cdot i \cdot \omega+1]} {T^2_2(i \cdot \omega)^2+ T_1(i \cdot \omega)+1}\ \ \ \ \ \mathbf{(3.1.4)}$


если вспомнить, что в преобразования Лапаласа $s = i \cdot \omega$, то:

$\frac{K[\tau \cdot i \cdot \omega+1]} {T^2_2(i \cdot \omega)^2+ T_1(i \cdot \omega)+1} = \frac{K[\tau \cdot s+1]} {T^2_2 \cdot s^2+ T_1\cdot s+1} =W(s);$


Получаем выражение для передаточной функции

$A(\omega) \cdot e^{i \cdot \phi(\omega)} = W(i \cdot \omega) =W(s)\ \ \ \ \ \mathbf{(3.1.5)}$


$W(i \cdot \omega) $ Амплитудно-фазовая частотная характеистика (АФЧХ)
Иногда $W(i \cdot \omega) $ называют частотной передаточной функцией.
Модуль АФЧХ=$mod W(i \cdot \omega) $ тождественно равен амплитуде выходного сигнала:

$A(\omega) = |W(i \cdot \omega)|\ \ \ \ \ \mathbf{(3.1.6)}$


Сдвиг фазы выходного сигнала:

$\phi(\omega) = arg( W(i \cdot \omega))\ \ \ \ \ \mathbf{(3.1.7)} $


Обычно АФЧХ $W(i \cdot w)$ изображается на комплексной плоскости. Формулы (3.1.6) и (3.1.7) позволяют изобразить $W(i \cdot w)$ в полярных координатах $(r, \phi).()$
Так же можно изображать в традиционных декартовых координатах:

$W(i \cdot \omega) = \underbrace { U(\omega)}_{Re} + i \cdot \underbrace { V(\omega)}_{Im} \ \ \ \ \ \mathbf{(3.1.8)} $


Если использовать для представления W(s) форму W(s)=KN(s)/L(s), где L(s)- полиномы по степеням s, (причем свободные члены равны 1), а К общий коэффициент усиления звена (системы), то

$W(i \cdot\omega) = \frac{K \cdot N(i \cdot\omega)}{L(i \cdot \omega)} \Rightarrow | W (i \cdot \omega)| = \frac{K|N(i \cdot \omega)|}{|L(i \cdot \omega)|} = A(\omega)\ \ \ \ \ \mathbf{(3.1.9)} $


Сдвиг фазы $\phi(\omega)$ можно определить по виду многочленов $N(i \cdot \omega)$ и $L(i \cdot \omega)$ (см. формулу (3.1.9)) т.е. как разность фаз (аргументов) числителя и знаменателя:

$\phi(\omega) = arg(N(i \cdot\omega))-arg(L(i \cdot \omega))\ \ \ \ \ \mathbf{(3.1.10)}$


Постоим АФЧХ для абстрактного звена (системы) с передаточной функцией:

$W(s) = W(i \cdot \omega) = W(s) |_{s =i \cdot \omega} = \frac{K \cdot N(i \cdot \omega)}{L(i \cdot \omega))}$


Подставляя в формулу различные значения $\omega$ получаем набор векторов, на комплексной плоскости

Рисунок 3.1.3 Годограф абстрактного звена.

Рассмотрим действительную и мнимую части полученных векторов Из рисунка 3.1.3 видно, что:

$$display$$\left \{ \begin{align} u( \omega)&= A( \omega) \cdot cos( \phi(\omega)) \\ v(\omega)&= A( \omega) \cdot sin( \phi(\omega)) \end{align} \right.$$display$$


Амплитуда и сдвиг фазы рассчитываются, для векторов соответсвующих положительным частотам и лежащих в 4 квадранте $\omega_1,\omega_2, \omega_3$ по формулам:

$$display$$\left \{ \begin{align} A( \omega)&= \sqrt {u^2( \omega)+v^2( \omega)} ,\\ \phi(\omega)&= arctg \frac{v(\omega)}{u(\omega)} .\end{align} \right.$$display$$


В общем случае для любых углов сдвига, необходимо учитывать переход между квадрантами на плоскости, формула принимает вид:

$\phi(\omega) = -\pi \cdot j + arctg \frac{v(\omega)}{u(\omega)}\ \ \ \ \ \mathbf{(3.1.11)}$


где:
j = 0, 2, 3, 4..., если вектор в I и IV квадрант;
j = 1, 3, 4, 4..., если вектор в II и III квадранте.

Во всех технических системах отклик системы как правило отстает от входного воздействия, то есть сдвиг фазы всегда отрицательный. Исходя из формулы 3.1.10 степень полинома L(s) выше, чем полинома N(s). Поскольку обычно степень полинома L(s) выше, чем полинома N(s), то с увеличением частоты на входе в звено (в систему) сдвиг фазы обычно отрицателен, т.е. сигнал на выходе звена еще больше отстает по фазе от входного сигнала при увеличении частоты.
В предельном случае, если частота растет до бесконечности, мы можем вообще не получить выходного воздействий. Обычно при величина амплитуды на выходе звена стремится к 0, то есть lim A() = 0.


$W(i \cdot \omega)$ при замене $\omega$ на $-\omega$ имеет зеркальное изображение.


Анализируя годографы АФЧХ при $\omega$ > 0 (сплошная линия на рисунке 3.1.3) и при $\omega$ < 0 (пунктирная линия) видим, что:
$u(\omega) = u(-\omega)$ четная функция, следовательно график симметричен относительно оси ординат, а
$v(\omega) = -v(-\omega)$ нечетная функция и ее график центрально-симметричен относительно начала координат.



Рисунок 3.1.4 Зеркальная симметрия относительно оси ординат.

Рисунок 3.1.5 Центральная симметрия относительно начала координат.

Кроме анализа свойств звена (системы) по годографу АФЧХ широкое распространение получили анализ логарифмической амплитудной характеристики (ЛАХ) и фазочастотной характеристики (ФЧХ).


ЛАХ определяется как Lm()=20lgA().


Поскольку зачастую удобнее использовать десятичные логарифмы (lg), чем натуральные(ln), в теории управления (также и в акустике) значительно чаще используется специальная единица децибел (1/10 часть Бела):
+1Бел единица, характеризующая увеличение в 10 раз.
+1дБ (децибел) соответствует увеличению в $\sqrt[10]{10}$ раз.


В формуле Lm()=20lgA() величина Lm() измеряется также в децибелах. Происхождение множителя 20 таково: A() амплитуда, линейная величина, а мощность квадратичная величина (например, напряжение в сети измеряется в Вольтах, а мощность ($N = \frac{U^2}{R}$) пропорциональна квадрату напряжения, поэтому в формуле для Lm() стоит множитель 20 (чтобы привести ЛАХ (Lm()) к традиционной мощностной характеристике).


Если $Lm(_1)$ больше $Lm(_2)$ на 20 дБ, то это означает, амплитуда $А(_1)$ больше амплитуды $А(_2)$ в 10 раз, $\frac{А(_1)}{ А(_2)} =10$

Окончательно: Lm()=20lgW(i)= 20lgA()


Из этого следует, что +1 децибел (+1 дБ) соответствует увеличению амплитуды в $\sqrt[20]{10}$ раз (очень малая величина); -1 дБ уменьшение амплитуды в $\sqrt[20]{10}$ раз.


Графики A() и () имеют вид:



Рисунок 3.1.6 пример графика АЧХ

Рисунок 3.1.7 пример графика ФЧХ

Учитывая, что обычно изменяется на порядки и значение A() также на порядки, график Lm() строится, фактически, в логарифмических координатах, т.е. Lm() =Lm(lg()), например:



Рисунок 3.1.8 пример графика ЛАХ

Наклон ( 40 дБ/дек) соответствует уменьшению амплитуды в 100 раз при увеличении частоты в 10 раз.



Рисунок 3.1.9 пример графика ЛФЧХ

Рассмотренные характеристики Lm(), то есть ЛАХ и ФЧХ имеют широкое распространение при анализе динамических свойств звена (системы), например, при анализе устойчивости САР (см. раздел Устойчивость систем автоматического управления).



Рисунок 3.1.10 пример ЛАХ и ФЧХ для сложной системы

Пример 1


В качестве примера построим АФЧХ для демпфера, модель которого, разобрана в этой статье.... Добавим на схему блок Построение частотных характеристик качестве входа возьмем возмущающее воздействие, в качестве выхода положение положение груза. Для наглядности иллюстрации примем в качестве выхода положение в миллиметрах (х1000), поскольку модель у нас размерная и результат получается в метрах уже достаточно маленьким примерно 0.004 метра. см. рис. 3.11



Рисунок 3.1.11 Схема для построения частотных характеристик.

Параметры блока Построение частотных характеристик приведены на рисунке 3.1.12, для илюстации зависимости АЧХ и ЛАХ. Результат работы блока график с выбранными параметрам изображен на рисунке 3.1.13:



Рисунок 3.1.12 Парамеметры блока Частотные характеристики.

Рисунок 3.1.13 Частотные харатктеристики в АЧХ, ЛАХ, ФЧХ в линейном масштабе по .

Анализ графика в линейном масштабе по чаще всего не очень удобен, поскольку весь график собиается в узкой области, а дальше график абсолютной амплитуды практически сливается с 0. Если мы хотим исследовать частоты хотя бы до 1000 Гц, мы увидем практически вертикальные и горизонтальные прямые. Изменения масштаба шакалы АЧХ и на логарифмический позволяет более удобно исследовать частотные характеристики (см. рис. 3.1.14).


На рисунке 3.1.14 представлены частотные характеристики демпфера в логарифмическом масштабе и иллюстарция соотношения между абсолютной величиной амплитуды АФЧХ и ЛАХ в децибелах.



Рисунок 3.1.14 Частотные харатктеристики в АЧХ, ЛАХ, ФЧХ в логарифмитическом масштабе по .

Пример 2


Постоим частотные характеристики для чуть более сложной модели. А именно гидравлического демпфера рассмотренного в предыдущей лекции....

Для начала посмотрим модель в виде блоков.


Модель подготовленная для анализа представлена на рисунке 3.1.15. В отличие от исходной модели, описанной ранее, входное воздействие задается блоком ступенька с скачком с 0 до 1 на 10 секунде расчтеа. В блоке линейная функции происходит пересчет сигнала ступенька:
0 соответствует 200 бар в камере, (конечное состояние в предыдущем примере),
1 соответствует 400 бар в камере.
Это сделано для того, что бы можно было подавать синусоидальный сигнал и не получать отрицательное давление в камере плунжера. Так же для наглядности графика, мы усиливаем выходное перемещение переводя его из метров в миллиметры.



Рисунок 3.1.15 Модель гидравлического демпфера.

Частотные характеристики рассчитанные в конце рассчета приведены на рисунке 3.1.16. Видно что характеристики отличаются от простого пружинного демпфера сравните с 3.1.14



Рисунок 3.1.16 Частотные хараткеристики гидравлического депфера

Блок "Построение частотных характеристик" осуществляет расчет характеристик для линеаризованной модели, в окрестности заданной точки, это означает что частотные характеристики системы в разные моменты времени могут отличатся для нелинейных моделей. Например в нашем случае характеристики в начале рассчета будут отличатся от характеристик полученных в конце рассчета.


Для подробных и нелинейных моделей, блок Построение частотных характеристик, может не работать из за наличия разрывов и нелинейностей в модели. Например для точной модели демпфера, которую мы проверяли в предыдущей статье. В этом случае возможно построить частотные характеристики непосредственно моделированием, путем подачи синусоидального сигнала с разной частотой и измерения отклика. В SimInTech для этого используется блок Гармонический анализатор, который подключается к входу модели и генерирует синусоидальной воздействие, в этот же блок направляется отклик системы и производится вычисление необходимых параметров для построения различных характеристик системы, которые можно вывести на графики с помощью блока фазовый портрет.


Модель гидравлического демпфера собранного из библиотечных блоков SimInTech представлена на рисунке 3.1.7


Рисунок 3.1.17 Модель гидравлическогго демпфера для рассчета частотных характеристик.

Расчеты с моделью показывают, что при сохранении общего вида графиков, значения полученные при для подробной модели отличаются от линеаризованной модели, (см. рис. 3.18 3.19)



Рисунок 3.1.18 АЧХ подробной модели привода, полученная прямым моделированием.

Рисунок 3.1.19 ЛАХ подробной модели привода, полученная прямым моделированием.

Использование прямого моделирования, для получения характеристик, является более надежным способом и работает не только с линейными моделями, но может быть использован для построения характеристик некоторых реальных объектов, если их можно подключить к среде моделирования и воздействовать в реальном режиме времени. Однако затраты на вычисления значительно больше. Например для получения характеристик демпфера пришлось выполнить процесса 40 000 секунд модельного времени, на обычном компьютере это заняло порядка 35 минут. График процесса перемещения плунжера в процессе вычисления характеристик приведен на рисунке 3.1.20.


Рисунок 3.1.20 Перемещения плунжера в процессем моделирования.

Блок Гармонический анализаторимеет выходы:
Re(w*t) текущее значение действительной части амплитудно-фазовой частотной характеристики исследуемой системы;
Im(w*t) текущее значение мнимой части амплитудно-фазовой частотной характеристики.
Это позволяет построить годограф исследуемой системы с помощью фазового портрета. (см. рис. 3.1.21)



Рисунок 3.1.21 Годограф системы гидравличесого демпфера.

Модели, использованные для илюстарции в лекции можно взять здесь...

Продолжение следует.

Подробнее..

3. Частотные характеристики звеньев и систем автоматического упрвления (регулирования). ч. 3.2 Простейшие типовые звенья

11.01.2021 02:05:19 | Автор: admin

Лекции по курсу Управление Техническими Системами читает Козлов Олег Степанович на кафедре Ядерные реакторы и энергетические установки факультета Энергомашиностроения МГТУ им. Н.Э. Баумана. За что ему огромная благодарность!


Данные лекции готовятся к публикации в виде книги, а поскольку здесь есть специалисты по ТАУ, студенты и просто интересующиеся предметом, то любая критика приветствуется.


В предыдущих сериях:
1. Введение в теорию автоматического управления.
2. Математическое описание систем автоматического управления 2.1 2.3, 2.3 2.8, 2.9 2.13
3. ЧАСТОТНЕ ХАРАКТЕРИСТИКИ ЗВЕНЬЕВ И СИСТЕМ АВТОМАТИЧЕСКОГО УПРАВЛЕНИЯ (РЕГУЛИРОВАНИЯ)
3.1. Амплитудно-фазовая частотная характеристика: годограф, АФЧХ, ЛАХ, ФЧХ


Тема сегодняшней статьи:
3.2. Типовые звенья систем автоматического управления (регулирования). Классификация типовых звеньев. Простейшие типовые звенья.


Понятие типовые звенья в теории управления техническими системами, в основном, связано с описанием САУ (САР) в переменных вход выход, т.е. описание систем в передаточных функциях. Любую линейную САУ (САР) или линеаризованную САР можно структурно расчленить на простейшие элементы (звенья), соединенные между собой соответствующими последовательными, параллельными связями, местными и локальными обратными связями, сумматорами, сравнивающими устройствами и т.д.

Достигнуто общепринятое соглашение, что наиболее удобно расчленять структурную схему САР на звенья 1-го и 2-го порядков. Принято называть такие простейшие звенья типовыми.


С другой стороны реальная линеаризованная (линейная) система состоит из набора отдельных узлов и агрегатов, соединенных соответствующими связями, причем порядок уравнений динамики вышеуказанных узлов и агрегатов может быть и выше второго. В этом случае звенья (узлы и агрегаты) САР можно классифицировать по их свойствам.


Различают 3 типа звеньев:


  • позиционные;
  • интегрирующие;
  • дифференцирующие.

Существуют также особые звенья, которые будут рассмотрены позднее.


Учитывая, что передаточная функция линейного (линеаризованного) звена может быть записана как:

$W(s) = \frac{K \cdot N(s)}{L(s)}, $


где: $ N(s)$ и $L(s)$ полиномы по степеням s, причем коэффициенты при низшей степени s в полиномах $N(s)$, $L(s) $ равны 1), классификацию на типы звеньев можно объяснить видом полиномов $N(s); L(s)$ или (что эквивалентно) видом коэффициентов в соответствующих уравнениях динамики звена.
Подробнее о передаточной функции смотри здесь....

Позиционным звеном считают звено, полиномы N(s) и L(s) содержат свободные члены (равные 1). Например:

$W(s) = \frac{s^2+3s+1}{2s^3+5s^2+s+1}$

или в уравнении динамики (x(t) входной сигнал, y(t) выходной):

$2\cdot y'''(t)+5 \cdot y''(t)+y'(t)+y(t) = x''(t)+3 \cdot x'(t)+x(t) $


Из типовых звеньев (1-ого и 2-ого порядка) к позиционным звеньям относятся: идеальное усилительное звено, апериодические звенья 1-го и 2-го порядка, колебательное звено и форсирующее звено.


Дифференцирующим звеном считается звено, в котором полином L(s) содержит свободный член (равный 1), а полином N(s) не содержит свободного члена ($b_0=0$).
Например:

$W(s) = \frac{s^2+3s}{2s^3+5s^2+s+1}$

или в уравнении динамики:

$2\cdot y'''(t)+5 \cdot y''(t)+y'(t)+y(t)= x''(t)+3 \cdot x'(t)$

Из типовых звеньев к дифференцирующим звеньям относятся идеальное дифференцирующее звено, инерционно-дифференцирующее звено.

Интегрирующим звеном считается звено, в котором полином N(s) содержит свободный член ($b_0=1$), а полином L(s), не содержит свободного члена ($a_0=0$). Например:

$W(s) = \frac{s^2+3s+1}{2s^3+5s^2+s}$

или в уравнении динамики:

$2\cdot y'''(t)+5 \cdot y''(t)+y'(t)= x''(t)+3 \cdot x'(t)+x(t)$

Из типовых звеньев к интегрирующим звеньям относятся идеальное интегрирующее звено, инерционно интегрирующее звено.

Из типовых звеньев к интегрирующим звеньям относятся идеальное интегрирующее звено, инерционно интегрирующее звено.


Пример переходного процесса при единичном ступенчатом воздействи на три разных звена приведенных выше:


3.2.1. Идеальное усилительное звено


Уравнение динамики каждого звена имеет вид: $y(t)=k\cdot x(t)$, т.е. уравнение не является дифференциальным, следовательно, данное звено является безинерционным.


Переходя к изображениям $x(t) \rightarrow X(s); \ \ \ y(t) \rightarrow Y(s)$, получаем:
$Y(s)=k\cdot X(s)$ уравнение динамики звена в изображениях.
Передаточная функция идеального усилительного звена:

$W(s) = \frac{Y(s)}{X(s)}=k$


АФЧХ не зависит от , поскольку:

$W(iw) =W(s)\mid_{s = iw} =K$



Рисунок 3.2.1 АФЧХ идеального усилительного звена

Годограф АФЧХ вырождается в точку: U() =K; V() =0;
A() modW(i) =W(i)=K =>
Lm()=20lgA() =20lgK; =>
() = const = 0 т.е. фазового сдвига нет. Следовательно, данное звено является безынерционным чисто усилительным звеном.


Рисунок 3.2.2 ФЧХ идеального усилительного звена

Рисунок 3.2.3 АЧХ идеального усилительного звена

Рисунок 3.2.4 ЛАХ идеального усилительного звена

Найдем весовую w(t) и переходную h(t) функции звена (подробнее смотри здесь...)
весовая функция:

$w(t) = L^{-1} \cdot[W(s)] = L^{-1}\cdot[K] = K \cdot L^{-1}[1] =K\cdot \delta(t).$



Рисунок 3.2.5 Весовая функция идеального усилительного звена

Переходная функция:

$h(t) = L^{-1}[H(s)]=L^{-1}[\frac{W(s)}{s}]=L^{-1}[\frac{K}{s}] =K \cdot L^{-1}{\frac{1}{s}} = K\cdot 1(t)$



Рисунок 3.2.6 Переходная функция идеального усилительного звена

3.2.2. Идеальное дифференцирующее звено


Уравнение динамики звена имеет вид:

$y(x) = K \cdot\tau\cdot x'(t)$


где: $\tau $ постоянная времени.

Переходя к изображениям:

$x(t) \rightarrow X(s); \\ x'(t) \rightarrow s \cdot X(s) \\ y(t) \rightarrow Y(s) \Rightarrow \\$


Уравнение динамики звена в изображениях:

$\mathbf{Y(s) = K \cdot \tau \cdot X(s)}$


Передаточная функция идеального дифференцирующего звена:

$W(s) = \frac{Y(s)}{X(s)}= K \cdot \tau\cdot s$


АФЧХ:

$W(iw) = W(s) |_{s =i \cdot \omega} = i \cdot K \cdot \tau \cdot s \Rightarrow \\ U(\omega) =0; \\ V(\omega) =K \cdot \tau \cdot \omega; \Rightarrow \\ A(\omega) = \sqrt{U(\omega)^2+ V(\omega)^2} = K \cdot \tau \cdot \omega; \\ \phi(\omega) = arctg \left(\frac{V(\omega)}{U(\omega)}\right) = \frac{\pi}{2}$


Графики годографа АФЧХ, A() и () имеют вид:



Рисунок 3.2.7 АФЧХ идеального дифференцирующего звена

Рисунок 3.2.8 АЧХ идеального дифференцирующего звена

Рисунок 3.2.9 ФЧХ идеального дифференцирующего звена

Логарифмическая амплитудная характеристики ЛАХ:$Lm()=20 \cdot lg(A()) =20 \cdot lg (K \cdot \tau)+20 \cdot lg ( \omega)$:



Рисунок 3.2.10 ЛАХ идеального дифференцирующего звена

Из рисунка 3.2.9 видно, что данное звено обеспечивает опережение по фазе на $\pi$/2 (при любой частоте входного сигнала).


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


Найдем весовую функцию звена:

$w(t) =L^{-1}[W(s)] =L^{-1}[K\cdot \tau \cdot s \cdot [1]] \Rightarrow \\ \mathbf{w(t) = K\cdot \tau \cdot \delta'(t)}$


Учитывая, что (t) имеет вид как на рис.3.2.11 (зависимость показана утрированно), а весовая функция пропорциональна производной от (t):



Рисунок 3.2.11 Качественный вид производной дельта-функции.

Рисунок 3.2.12 Весовая функция идеального дифференцирующего звена.

Найдем переходную функцию звена:

$h(t) =L^{-1}[H(s)] =L^{-1}\left[\frac{W(s)}{s}\right] = L^{-1}\left[\frac{K\cdot \tau \cdot s}{s} \cdot [1]\right] \Rightarrow \\ \mathbf{h(t) = K\cdot \tau \cdot \delta(t)}$



Рисунок 3.2.13 Переходная функция идеального дифференцирующего звена

Иногда идеальное дифференцирующее звено представляется в виде $W(s) =\tau \cdot s$ или $W(s) =K\cdot s$. В последнем варианте коэффициент К имеет смысл постоянной времени.


3.2.3. Идеальное интегрирующее звено


Уравнение динамики такого звена имеет вид:

$T \cdot \frac{dy(t)}{dt} = K \cdot x(t),$

или в изображениях:

$T \cdot s \cdot Y(s) = K \cdot X(s)$


передаточная функция идеального интегрирующего звена:

$W(s) = \frac{K}{T \cdot s}$


АФЧХ:

$W(i \cdot \omega) = W(s) |_{s=i\cdot \omega} = \frac{K}{i \cdot T \cdot \omega}$

Умножая числитель и знаменатель на i, получаем:

$W(i \cdot \omega) = - i \cdot \frac{K}{T \cdot \omega}; \\ U(\omega) =0 \\ V(\omega) = - \frac{K}{T \cdot \omega}$


Годограф АФЧХ имеет вид:



Рисунок 3.2.14 АФЧХ идеального интегрирующего звена

Рисунок 3.2.15 ФЧХ идеального интегрирующего звена

$\phi (\omega) = const = -\frac{\pi}{2}$

данное звено всегда дает отставание по фазе на угол $-\frac{\pi}{2}$.

$A(\omega) = \frac{K}{T \cdot \omega}$



Рисунок 3.2.16 АЧХ идеального интегрирующего звена

Рисунок 3.2.17 ЛАХ идеального интегрирующего звена

Найдем весовую функцию звена:

$w(t) =L^{-1}[W(s) \cdot [1]] =L^{-1}\left[\frac{K}{T \cdot s} \cdot [1] \right] \Rightarrow \\ \mathbf{w(t) = \frac {K}{T} \cdot 1(t)}$



Рисунок 3.2.18 Весовая функция идеального интегрирующего звена

Найдем переходную функцию звена:

$h(t) =L^{-1}\left[\frac{W(s)}{s} \cdot [1]\right] =L^{-1}\left[\frac{K}{T \cdot s^2} \cdot [1] \right] \Rightarrow \\ \mathbf{h(t) = \frac {K}{T} \cdot t}$



Рисунок 3.2.19 Переходная функция идеального интегрирующего звена

Примерами устройств, близкими к идеальному усилительному звену можно считать: широкополосный электронный усилитель (приближенно); механический редуктор без учета инерционности и нелинейных эффектов; жесткую механическую муфту и т.д.


Примером идеального дифференцирующего звена можно считать тахогенератор:

$u(t) = \tau \cdot \frac{d \phi(t)}{dt}$


где u(t) напряжение на клеммах тахогенератора; (t) угол поворота якоря (ротора) тахогенератора.

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


Пример интегрирующего и дифференцирующего звена на основе конденсатора


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


В качестве примера интегрирующего звена можно рассмотреть конденсатор, где входным воздействием является ток, а выходным результатом является напряжение на клеймах конденсатора. Действительно, при малом токе и большой емкости конденсатора, в случае ступенчатого изменения тока с 0, мы получаем график напряжения, совпадающий по форме с переходной функцией интегрирующего звена. На рисунке 3.2.20 представлена такая модель, где ток ступенькой меняется на 5 секунде расчета.



Рисунок 3.2.20 Интегрирующие звено на базе конденсатора.

Если построить с помощью гармонического анализатора ЛАХ и ФЧХ, мы увидим, что угол наклона ЛАХ составляет -20dB/dec, а угол сдвига фазы равен $-\frac{\pi}{2}$ или 90 градусов на графике. см. рис. 3.2.21



Рисунок 3.2.21 ЛАХ и ФЧХ интегрирующего звена на базе конденсатора.

Тот же самый конденсатор, при определенных параметрах сети, может выступать в качестве идеального дифференцирующего звена, если в качестве входного воздействия подавать напряжение, а в качестве результирующий величины использовать ток в цепи. Электрическая схема использования конденсатора в качестве дифференцирующего звена с гармоническим анализатором приведена на рисунке 3.2.22. На графиках гармонического анализатора видно, что угол наклона ЛАХ составляет 20dB/dec, а угол сдвига фазы равен $\frac{\pi}{2}$ или 90 градусов на графике.



Рисунок 3.2.22 ЛАХ и ФЧХ дифферцируещего звена на базе конденсатора.

В следующий лекции будет уже атомный реактор.


Примеры моделей, использованные в данной лекции можно взять в этом архиве...

Подробнее..

Как мы дом смоделировали

14.01.2021 12:05:51 | Автор: admin

Несколько лет назад я задумался, что моя работа стала ремеслом. Для того, чтобы разнообразить серые будни повысить свою стоимость как специалиста я поступил в магистратуру и сразу стал вопрос ребром - как после 15 лет после окончания первого ВТУЗа по написать ВКР, за которую не было бы стыдно?

Введение

Так получилось, что практически все 15 лет с того момента, как стал инженером, я занимался обслуживанием теплосчётчиков, стоящих в подвалах многоквартирных жилых домов (МКД). Данных накопилось достаточно, чтобы их смело назвать big data.

Не буду расписывать подробно физику процесса теплопотерь зданий и сооружений, только напишу некоторые допущения, на которые пришлось пойти:

  1. Температура внутри дома. Большая инженерная проблема. Где измерять правильно? сколько точек в каких местах? Я решил ввести "средний градус по больнице" и взял это как 24 градуса.

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

  3. Частота измерений. Тут думать не пришлось, решили что суточный архив теплосчётчика - будет достаточно. Жилой дом - достаточно стационарная штука, медленно греется, медленно остывает.

  4. Данные должны быть очищены. Бывает так, что теплосчётчик "не работает". Иногда это связано с его неисправностью, иногда - с режимами наладки. Для моделирования лучше использовать валидные данные - например, когда он допущен к коммерческому расчёту.

  5. Данные ограничены периодом с начала декабря 2013 по 27 марта 2017 года. As is.

  6. Обработка данных в Statistica. Такую задачу мне поставил научрук, академическую лицензию я приобрёл.

Немного теории

Из мировой практики [1] выделим два подходящих для поставленной задачи метода измерения:

Анализ показаний приборов учета теплопотребления МКД. Основывается на долгосрочных измерениях энергопотребления всего здания в целом с помощью приборов учета.

Расчетно-экспериментальный метод на базе компьютерного моделирования. Основывается на проведении компьютерного моделирования энергопотребления, чаще всего здания в целом.

Мы оба метода объединили: вывели на основании показаний теплосчётчика удельную характеристику теплопотребления дома и создали простую математическую модель.

Потребление тепла МКД зависит от наружной температуры, больше перепад больше потребление. Так же, очевидно, потребление зависит от величины дома, энергоснабжающая организация в своих расчётах использует суммарную жилую площадь, мы привели полученные величины к жилой площади дома. Используя [2] уравнение теплового баланса, вывели формулу 1 коэффициента теплоотдачи [3]

G=Q/(t*(Tвн-Tнар)*S)

где G коэффициент теплоотдачи, Вт/м2*С;

Q количество тепла за сутки из данных, ГКал;

Твн средняя температура в жилых помещениях МКД, принятая за плюс 24С;

Тнар среднесуточная температура внешней среды за учитываемые сутки, С;

вннар) тепловой напор, С;

S жилая площадь, м2;

t количество часов в сутках, 24 часа.

Очевидно, что коэффициент теплоотдачи является функцией от теплового напора, формула 2 :

G=f(Tвн-Tнар )

Так как вид функции неизвестен, мы можем её попробовать найти её аналитическим путём.

Разработка методики расчётов

По полноте данных, 830 суточных записей - максимальное количество данных за вышеозначенный период был выбран дом : двухподъездный четырёхэтажный дом 1965 года постройки. Материал стен силикатный кирпич, кровля скатная, фасад утеплён минераловатной плитой и закрыт сайдингом.

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

Пропуск данных в отопительном сезоне 2015-2016 гг. объясняется неисправностью узла учёта, то есть данные за этот период удалены во время очистки как некорректные.

По формуле 2 построим облако точек [4] наблюдений используя программу Statistica, диаграмма рассеяния изображена на рисунке ниже.

Так как наблюдения на диаграмме рассеяния приведены за разные годы, очевидно, что распределение подчиняется некоторой зависимости. Программа Statistica позволяет на основании данных создать аппроксимирующие уравнения с разными степенями подгонки. Регрессионная граница - предсказанный интервал вокруг подогнанной (регрессионной) линии. Можно ввести значение вероятности (Уровень) того, что "истинная" подогнанная линия (для совокупности) попадет между границами. Стандартная ошибка для подогнанной линии (которая отражает прогнозируемые значения при данной линейной или полиномиальной подгонке) вычисляется на основе модели полиномиальной регрессии (предполагается, что данные и их полиномиальные преобразования распределены нормально).

Проверим распределение переменной G на нормальность:

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

Промежуточный итог

Само полученное уравнение регрессии является математической моделью теплопотребления выбранного МКД.

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

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

Буду благодарен за критику.

Ссылки на источники

1. Наумов, А. Л. Определение класса энергетической эффективности эксплуатируемых жилых многоквартирных домов / А. Л. Наумов, Д. В. Капко // Энергосбережение. 2015. 8. С. 2430.

2. Mukashev A., Dynamic method of the heating devices efficiency measurement // Mukashev A., Pugovkin A., Kuprekov S., Petrova N.,Abramchuk S, International Scientific Conference Environmental and Climate Technologies, CONECT2017,Riga.

3. П.А. Зорин Контроль энергоэффективности теплоснабжения зданий типовой застройки / П.А. Зорин, С.В. Купреков, А.В. Пуговкин, О.В. Стукач, сборник материалов XIV Международной научно-практической конференции Электронные методы и системы управления, Томск: Томск. гос. ун-т систем упр. и радиоэлектроники, 2018, том 2, С.302-305.

4. О.В. Стукач Программный комплекс Statistica в решении задач управления качеством: Учебное пособие; Национальный исследовательский Томский политехнический университет. Томск: Изд-во Томского политехнического университета, 2011. 163 с.

Подробнее..

Реализация моделей динамических систем средствами контроллера

17.02.2021 14:23:34 | Автор: admin

За основу задания динамических свойств систем может быть принята любая из форм представления операторов: дифференциальные уравнения (ДУ), передаточные функции (ПФ), временные характеристики (ВХ) или частотные характеристики (ЧХ), однако для конкретных задач целесообразно выбирать наиболее рациональную форму [1].
Возможные преобразования форм представления моделей вход-выход показаны на Рисунок 1. Сплошные линии орграфа показывают однозначные преобразования, штриховые - неоднозначные преобразования экспериментальных данных. Результаты последних преобразований зависят от выбора структуры оператора и алгоритма обработки данных.

Рисунок 1. Орграф взаимосвязи форм представления моделей. Модели могут описывать поведение регуляторов систем управления [4], наблюдателей [3], корректирующих звеньев, фильтров [5], и др. динамических систем. В этой работе рассматриваются MATLAB преобразования форм представления моделей и реализация моделей средствами контроллеров.

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

Дискретная модель в форме пространства состояний представляется разностными уравнениями первого порядка

Связь переменных уравнений (2) показана на блок схеме Рисунок 2, где X переменные состояния; 1/z задержка на один такт.

Рисунок 2. Структура дискретной модели объекта в форме пространства состояний.

Система разностных уравнений
Раскроем уравнения (2) подстановкой в уравнения матриц (1) объекта:

По разностным уравнениям (3) построим Simulink модель дискретного объекта с периодом дискретизации 1 с (см. Рисунок 3).

Рисунок 3. Дискретная модель объекта (1) и реакция y[n] объекта на синусоидальное u[n] воздействие.

Импульсная передаточная функция
Воспользуемся преобразованием форм MATLAB для перевода дискретной модели из пространства состояний в формат импульсной передаточной функции, затем в формат непрерывной ПФ и, наконец, в формат пространства состояний непрерывной модели. Ниже показан код m-программы c промежуточными результатами, сдвинутыми вправо на 1 Tab.
Ad = [1.1 -0.5 0.12
1.0 0.0 0.0
0.0 1.0 0.0];

Bd = [-0.4
0.6
0.5];

Cd = [1 0 0];

Dd = 0;

Wo_ss_d = ss(Ad,Bd,Cd,Dd,1); % структура дискретной модели с периодом 1 с
Wo_tf_d = tf(Wo_ss_d) % дискретная ПФ

Непрерывная передаточная функция

Wo_tf_c = d2c(Wo_tf_d) % непрерывная ПФ

Непрерывная модель в форме пространства состояний
Wo_ss_c = ss(Wo_tf_c) % непрерывная модель в форме пространства состояний
Wo_ss_c =
A =
x1 x2 x3 (4)
x1 -2.12 -1.213 -0.819
x2 2 0 0
x3 0 0.5 0
B =
u1
x1 2
x2 0
x3 0
C =
x1 x2 x3
y1 0.009016 -0.2697 -0.8307
D =
u1
y1 0

Continuous-time state-space model.

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

Приведенный многоступенчатый перевод дискретной модели (1, 2, 3) в непрерывную модель пространства состояний (4) можно выполнить одной командой d2c: Wo_ss_c = d2c(Wo_ss_d). В этом варианте получится набор матриц с другими коэффициентами относительно многоступенчатого варианта, но это не является ошибкой, поскольку одна и та же ПФ (с одинаковым составом нулей и полюсов) может быть представлена в форме пространства состояний разными вариантами коэффициентов матриц A, B, C, D. Нули и полюса ПФ можно вычислить командами MATLAB: zeros, poles, eig.

Система дифференциальных уравнений
Матрицы (4) непрерывной модели связывают переменные состояния x(t) с входом y(t) и выходом u(t) модели следующим образом.

Раскроем систему дифференциальных уравнений (5) подстановкой коэффициентов матриц (4):

Как в случае построения дискретной Simulink модели (Рисунок 3) по разностным уравнениям (3), построим Simulink модель непрерывного объекта (см. Рисунок 4) по дифференциальным уравнениям (6).

Рисунок 4. Непрерывная модель объекта (1) и реакция y(t) объекта на синусоидальное u(t) воздействие (синий график). Для сравнения, показан коричневый график y[n] дискретного объекта Рисунок 3, график y(t) сдвинут вправо на 0.5 с - половину дискреты.

Перевод модели в частотную область
В MATLAB по данным модели пространства состояний или передаточным функциям можно построить соответствующие амплитудно-фазовые частотные характеристики (АФЧХ). Примеры перевода для рассматриваемого объекта показаны ниже.
bode(Wo_ss_d) % АФЧХ дискретного объекта представленного в форме пространства состояний
bode(Wo_tf_d) % АФЧХ дискретного объекта представленного в форме ПФ
bode(Wo_ss_c) % АФЧХ непрерывного объекта представленного в форме пространства состояний
bode(Wo_tf_c) % АФЧХ непрерывного объекта представленного в форме ПФ
grid % нанесение координатной сетки

Рисунок 5. Амплитудно-фазовые частотные характеристики непрерывного объекта (слева) и дискретного объекта (справа).

Построение передаточной функции по частотным характеристикам
Имеется множество вариантов обратного перевода модели из частотной области. Вот один из них.
[mag,phase,freq] = bode(Wo_tf_c) % выделение амплитуды, фазы и частоты АФЧХ
complex_f = frd(mag.exp(jphase.pi/180),freq) % модель объекта в частотной области tfest(complex_f,3) % ПФ непрерывного объекта, 3 - порядок объекта

В этом примере зависимости амплитуды mag и фазы phase от частоты freq вычислены оператором bode для ПФ Wo_tf_c. Оператор frd сформировал структуру complex_f - зависимость комплексных аргументов mag.exp(jphase.pi/180) от частоты, которая использовалась оператором tfest для построения ПФ непрерывного объекта третьего порядка. Полученная ПФ точно совпадает с исходной ПФ Wo_tf_c. Как упоминалось во введении, при использовании экспериментальных зависимостей (амплитуды и фазы от частоты) мы бы получили неоднозначный вариант ПФ.

Перевод модели во временную область
MATLAB предлагает множество вариантов вычисления реакции объекта на входное воздействие. Вот один из них реакция (Рисунок 6) на единичное ступенчатое воздействие вычисляется оператором step:
% [y,t] = step(Wo_tf_c) % выделение данных реакции на единичное воздействие
step(Wo_tf_c) % построение графика реакции на единичное воздействие

Рисунок 6. Реакция модели непрерывного объекта (ПФ: Wo_tf_c) на единичное ступенчатое воздействие.

Построение передаточной функции по временным характеристикам
Обратное преобразование построение передаточной функции по временным характеристикам входа и выхода объекта выполняется командами iddata и tfest.

Перевод импульсной передаточной функции в код контроллера
Модель Рисунок 3 импульсной передаточной функции (3a) дискретного объекта (1) можно представить в виде схемы показанной на Рисунок 7.

Рисунок 7. Модель импульсной передаточной функции

. Блок z-1 реализует задержку на 1 такт. Для рассматриваемого объекта установлен период дискретизации в 1 с.

Работа схемы Рисунок 7 подобна реализации Рисунок 8, в которой блок fcn, содержащий m-функцию пользователя, выполняет совместно с z-1 блоками работу рассматриваемой импульсной ПФ.

Рисунок 8. Simulink модель эквивалентной импульсной передаточной функции с fcn блоком, содержащим представленный m-код. Следующая программа вычисляет реакцию объекта, представленного импульсной ПФ. Полученная реакция (Рисунок 9) полностью совпадает с реакциями дискретных моделей рассматриваемого объекта и соответствует реакциям непрерывных моделей этого же объекта (Рисунок 10).

b2 = -0.4; b1 = -0.24; b0 = 0.072; % коэффициенты полинома числителя ИПФ

a3 = 1; a2 = -1.1; a1 = 0.5; a0 = -0.12; % коэффициенты полинома знаменателя ИПФ

y = zeros(1,50); % резервирование памяти для хранения реакции
u = ones(1,50); % единичное воздействие

ym1 = 0; ym2 = 0; ym3 = 0 % начальные значения

for i = 1:50

y(i) = a3*ym1; (7)

ym1 = b2*u(i)-a2*y(i)+ym2;

ym2 = b1*u(i)-a1*y(i)+ym3;

ym3 = b0*u(i)-a0*y(i);

end

% График реакции дискретных моделей

if 1
% Построение графиков
figure (1) % активное окно графопостроителя
clf % очистка предыдущих данных
plot(y,'xb') % график y[n] m-файла
hold on
plot(out.ScopeData1.signals(3).values) % график y[n] Simulink модели, ver.1
plot(out.ScopeData1.signals(4).values) % график y[n] Simulink модели, ver.2
plot(out.ScopeData1.signals(5).values) % график y[n] Simulink модели, ver.3
plot(out.ScopeData1.signals(6).values) % график y[n] Simulink модели, ver.4
legend('m-file','Simulink v.1','Simulink v.2','Simulink v.3','Simulink v.4')
grid
xlabel('Номер отсчета')
ylabel('Амплитуда реакции'),
title('Сравнение реакций дискретных моделей')
end

Рисунок 9. 100% совпадение реакций дискретных моделей и вычислений m-программы.

Рисунок 10. Варианты построения эквивалентных Simulink моделей рассматриваемого объекта.

Порядок программирования динамических моделей контроллерами
Для построения модели динамической системы средствами контроллеров предлагается выполнить следующее.

  1. Средствами MATLAB преобразовать динамическую систему в форму импульсной передаточной функции для требуемого шага дискретизации (3a).

  2. Выделить коэффициенты полиномов числителя и знаменателя импульсной ПФ (Рисунок 7)

  3. Средствами контроллера реализовать последовательность вычисления импульсной ПФ (7)

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

Заключение
Рассмотренные варианты преобразования форм представления динамических моделей в интегрированной среде MATLAB могут быть использованы для реализации моделей средствами контроллеров путем построения кода эквивалентной импульсной передаточной функции (Рисунок 11).

Рисунок 11. Операторы MATLAB преобразования моделей и построения эквивалентного кода для программирования контроллеров.

БИБЛИОГРАФИЧЕСКИЙ СПИСОК

  1. А.А.Алексеев, Д.Х.Имаев, Н.Н.Кузьмин, В.Б.Яковлев. Теория управления: Учеб./СПб.: Изд-во СПбГЭТУ ЛЭТИ, 1999. 435 с.

  2. Help MATLAB.

  3. Dr. Bob Davidov. Синтез наблюдателя состояний. http://portalnp.ru/2021/01/10862

  4. Dr. Bob Davidov. Аналитическое конструирование линейно-квадратичного регулятора http://portalnp.ru/2021/01/10857

  5. Dr. Bob Davidov. Фильтр Калмана в линейно-квадратичном гауссовском управлении. http://portalnp.ru/2021/02/10877

Подробнее..

Google Books Ngram Viewer как инструмент для ретроспективных исследований

08.02.2021 00:09:10 | Автор: admin
Активность использования термина "transistor" c 1800 года и до наших днейАктивность использования термина "transistor" c 1800 года и до наших дней

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


Пример с языками программирования удобен ещё и потому, что для них имеются различные официальные рейтинги. Этих рейтингов много, они используют разные способы оценки популярности и естественно дают различающиеся результаты. Эти результаты к тому же подвержены достаточно сильному случайному дрейфу. Если посмотреть результаты разных рейтингов на какую-то конкретную дату, то создаётся впечатление, что мы ничего толком не знаем, и мир непостижим. Но ситуация немного меняется, если рассмотреть всё в динамике. В динамике становится видно, где дрейф, а где проглядывают какие-то реальные закономерности.

Одним из способов составления рейтингов популярности является анализ частоты поисковых запросов. Такой способ при всей его кажущейся наивности, при разумном использовании позволяет получать довольно устойчивые оценки. На этом, например, построен рейтинг языков программирования PYPL. Рейтинг строится на основе анализа запросов для поиска мануалов по тем или иным языкам. Но никакой общепит не сравнится с авторской кухней. Иногда хочется чего-то особенного, чего в существующих рейтингах может не быть. Например, рейтинг PYPL не включает в себя Fortran. Да, этот язык явно не лидер, хотя из других рейтингов известно, что он стабильно входит в верхние 50 строчек по популярности. Не проблема. Аналогичную картинку можно получить самостоятельно, не прибегая к помощи сторонних агентств, используя инструмент Google Trends. Вот, например, если посмотреть в динамике, можно увидеть хвост популярности Fortran (синий) и для масштаба относительно стабильный, хотя и немного снижающийся спрос на Matlab (красный). У Matlab, кстати, отчётливо видны сезонные пики два раза в год. По всей видимости перед зимней и весенней сессиями:

Глядя на такие картинки, невольно обращаешь внимание на левую границу, глубже которой невозможно копнуть, а именно на 2004 год. Поскольку анализируются запросы в Google, заглянуть в более древние периоды истории с помощью этого инструмента не получится. А ведь так любопытно взглянуть на период, когда Fortran был ещё на пике популярности. Но увы, наша машина времени туда попасть не может. Она была запущена на полную мощность только в 2004 году и все более ранние периоды для неё закрыты.

Из-за отсутствия информации по каким-либо другим инструментам ретроспективного поиска, я всегда думал, что возможность заглянуть в более ранние периоды отсутствует. Но, как оказалось, такая возможность имеется, причём инструмент предлагает всё та же компания Google. Называется он Google Books Ngram Viewer. Это инструмент статистического анализа информации, содержащейся в массиве книг из Google Books. В некотором смысле это гениальное решение, ведь печатные книги существуют уже несколько столетий, и имея их полные оцифрованные тексты, вполне можно использовать их как источник статистической информации о прошлых исторических периодах. Теперь хотя бы понятно, зачем Google создал и поддерживает проект Google Books. Общая цель здесь та же, что и поиска, и у сервисов: владение информацией. Но, к счастью, с нами готовы поделиться какой-то её частью.

Что предлагается:

Предлагается поисковая строка, куда нужно вводить запрос. Вводим запрос получаем график популярности данного слова в книгах. Начиная с 1800 (!!) года и до нашего времени. Поисковые запросы можно вводить через запятую тогда мы получим несколько линий на графике, соответствующих данным понятиям, и сможем оценить их динамику. Вот, например, тот же Fortran:

По умолчанию поиск чувствителен к регистру, то есть Fortran (написание названия для современных версий языка) и FORTRAN (написания названия для старых версий) это будут два разных слова. Можно выключить чувствительность к регистру, либо использовать арифметические выражения над введёнными поисковыми запросами, то есть написать FORTRAN+Fortran:

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

Также, как и упоминание о транзисторах ещё до их официального появления:

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

Если не придираться к деталям, а смотреть какие-то общие тенденции, то в целом всё выглядит довольно реалистично. Например, можно увидеть, как упоминание Fortran в литературе сменяется на MATLAB:

Поскольку поиск по умолчанию выдаёт все вхождения заданного слова, забота о корректном учёте синонимов лежит на пользователе. В некоторых случаях провести такое разделение невозможно. Так, например, поиск просто по слову chip очевидно выдаёт слишком много случаев, когда слово употреблялось в других значениях, а поиск по слову microchip, хотя и явно точнее, не учитывает всех вариаций наименования предмета и не может использоваться для корректного количественного сопоставления с другими сущностями:

Например, если мы решим таким образом сопоставить популярность в литературе таких слов как Fortran+FORTRAN, MATLAB и Julia, то для первых двух это явно будет название языка программирования, а в последнем случае в первую очередь что-то совсем другое, включая различные имена собственные:

В этой смеси выделить именно язык программирования Julia проблематично. Введя дополнительное слово, мы сильно урежем допустимые вариации его использования, а не вводя получим неразделимую смесь. На данном этапе это неустранимое ограничение данного сервиса. В будущем конечно хотелось бы иметь возможность поиска понятий с учётом их смысла, примерно как в Google Trends. Искренне надеюсь, что прямо сейчас ведётся работа в этом направлении, просто результат ещё недостаточно хорош для показа.

Но всё-таки, даже с учётом различающейся вариативности контекстов сравниваемых слов, какую-то картину всё же можно получить. Например, сравнивая выдачу по таким понятиям, как electric, software и experiment мы увидим чёткую картину по использованию понятия software, которое не применялось до середины XX века, немного размытую картину по понятию electric поскольку оно могло использоваться в различных смыслах и контекстах, вплоть до художественной литературы, и примерно одинаковый уровень для experiment. Видимо, эксперименты производили и обсуждали на страницах книг с 1800 года и до наших дней с примерно одинаковой частотой. В последние десятилетия даже чуть реже, чем раньше:

Гораздо более чёткую картину даёт использование уникальных слов-маркеров, для которых известно, в связи с чем и в какое время их могли употреблять, а в какое ещё не могли. Таким образом, кстати, можно ещё и проверить адекватность выдачи. Вот пример для Stalingrad, Sputnik и perestroyka:

Ну что же, все пики вроде бы на своих местах. Интереса к перестройке в мировой литературе было явно меньше, чем к первым запускам спутников Земли. Похоже на правду.

Если взять какие-то более размытые понятия, например, genetic и neural, то даже несмотря на какой-то шум от возможного использования этих слов в других смыслах, виден явный подъём с середины XX века:

Интересно также оценить отражение вклада отдельных личностей в совокупность мировых печатных материалов. Но получится это далеко не со всеми деятелями, а только с имеющими какие-то необычные фамилии и не имеющими других известных однофамильцев. Вот, например, вклад Циолковского (одного из основоположников космонавтики и выдающегося философа-космиста) и Вистелиуса (основоположника математической геологии). Циолковский явно имеет большую известность и цитируемость в западной литературе:

Но даже если взять какую-то уникальную персоналию, то выдача будет зашумлена всем, что потом назвали в её честь. Вот пример по ключевому слову Lomonosov:

Явно в начале здесь вклад самого Михаила Васильевича (наверное, какие-то ссылки на его работы), потом названного в честь него университета, а потом ещё города и суперкомпьютера.

Для кириллических понятий можно осуществлять поиск по массиву русскоязычной литературы, но поскольку в Google Books пока что не очень большой её охват, а также есть риск, что распознавание текста выполнено не настолько качественно, как и для англоязычной, данную возможность пока скорее стоит рассматривать как демо-версию будущих возможностей сервиса.

По настройкам:

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

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

Какие на данный момент есть проблемы:

1) Не учитывается контекст запроса. С одной стороны это хорошо, заставляет исследователя самого строить модель возможного использования слова. Поиск идёт более осознанно. С другой стороны, некоторые сущности без контекста разделить просто нельзя, то есть сейчас некоторые операции анализа просто нельзя выполнить, так как поиск по слову выдаёт неразделимую смесь нескольких понятий.

2) Нельзя перейти к конкретным текстам. И просто ради любопытства, и для проверки качества распознавания и поиска было бы интересно увидеть аномальные встречи заданного слова, когда его по идее ещё не должно было возникнуть. Возвращаясь к тому же Фортрану увидеть его упоминания до выхода первой версии.

3) Есть риск смещённости оценок из-за возможной неоднородности охвата оцифрованной литературы. Например, если имеется неоднородность по охвату различных областей знания, языков, исторических периодов. Было бы интересно увидеть какое-то процентное соотношение базы поиска к общей информации, хранимой в данный момент всеми библиотеками.

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

Какие промежуточные выводы можно сделать:

1) Объекты с уникальными и неизменными именами гораздо проще найти и оценить. Создавая новый язык программирования, программу или какое-то другое произведение давайте ему уникальное имя и старайтесь потом не менять.

2) Носители уникальных фамилий находятся в более выигрышном положении в плане обнаружения их заслуг (и в проигрышном в плане маскировки среди однофамильцев). Если у вас неоднозначно записываемая фамилия, то чем раньше вы определитесь с её эталонным написанием, тем проще будет потом найти ваши работы.

3) Практика наименования одного объекта в честь другого в долгосрочной перспективе может приводить к сложности оценки вклада как первого, так и второго. По крайней мере, при использовании поисковых машин, не умеющих понимать контекст вопроса

На этом всё. Надеюсь, данная заметка была полезна. Инструмент работает, и при осознанном использовании позволяет лучше понимать мир и его динамику. При не очень осознанном использовании может просто использоваться как игрушка. Но игрушка всё-таки развивающая. Почему бы и нет.


В ходе работы пришла пара интересных мыслей:

1) Наверное, примерно так и должна быть устроена мировая библиотека будущего. Фактически, это уже её прототип.

2) Сервис позволяет оценивать вклад отдельных понятий в общую совокупность всех записанных человеческих текстов, то есть фактически когда-либо высказанных мыслей представителей нашей цивилизации. Но как назвать эту совокупность?

Подробнее..

Делаем звук в наушниках объёмным. Цифровая обработка сигналов для домашнего применения

23.01.2021 20:10:06 | Автор: admin

Если вы когда-нибудь прослушивали музыку через наушники и через колонки, то наверняка обращали внимание, что звучит она по-разному. В наушниках часто возникает ощущение, что источник звука находится где-то внутри головы. Бывают и другие негативные эффекты: некоторые старые записи сделаны так, что, например, гитара полностью смикширована в левый канал, а ударные - в правый. На колонках это звучит нормально - как будто гитарист стоит примерно там где один из громкоговорителей, но в наушниках - это весьма неприятно, потому что неестественно: в природе не бывает такого, чтобы звук слышало только одно ухо.

Скажу больше: подавляющее большинство коммерческих аудиозаписей рассчитаны именно на прослушивание через колонки. То есть звукорежиссёр при подготовке записи делает всё, чтобы она правильно (в соответствии с задумками автора) звучала в студийных мониторах, а как оно будет в наушниках - с большой вероятностью даже не проверит.

Казалось бы, если нравится - всегда можно слушать через колонки. Но увы, бывают ограничения: хочется послушать музыку в офисе, в транспорте, да или просто поздно вечером, когда дети/родители/соседи уже давно спят. Кроме того, стоимость качественных акустических систем в разы превышает стоимость качественных наушников. А есть ещё может понадобиться отдельный усилитель, акустическая обработка комнаты и т. д. Иногда колонки просто негде разместить в квартире... С наушниками всё проще.

Что делать?

Одну минуточку! Но ведь когда мы слушаем музыку через колонки (или вообще сидим в концертном зале), каждого уха достигает совершенно определённый акустический сигнал. Значит если записать этот сигнал с помощью маленького микрофона, расположенного внутри каждой ушной раковины, и потом воспроизвести через хорошие наушники, то мы получим то же самое ощущение присутствия в зале. Разве что за исключением низкочастотных сигналов, ощущаемых грудной клеткой. Впрочем, это слишком сложная процедура, хотя такие записи (их называют бинауральными) иногда делают, и даже продают.

А что если воспроизвести через колонки какой-то тестовый сигнал, записать его этими самыми крошечными микрофонами в ушах, определить, как сигнал преобразовался, и потом аналогичным образом преобразовывать любимую музыку перед проигрыванием через наушники?

HRTF и HRIR

Представьте себе, что у вас есть только одна колонка, и она стоит, допустим, справа от вашего монитора. Подадим на неё короткий импульс. Излучаемый акустический сигнал обозначим как x(t). Тогда Вашего правого уха соответствующая акустическая волна достигнет чуть раньше, чем левого. Кроме того, от левого уха колонку будет заслонять ваша голова, в результате туда попадёт чуть более "глухой" и более тихий звук. На самом деле, до правого уха этот звук тоже не дойдёт неизменным: помимо прямого сигнала, будет ещё сигнал, отражённый от виска, от ушной раковины и т. д. Об отражениях от монитора, стола, стен, потолка, пола и мебели говорить пока не будем, представим себе, что их нет. Обозначим сигнал, принятый левым ухом, как XL(t), а правым ухом - XR(t). Эти сигналы можно представить как исходный сигнал, преобразованный двумя разными функциями: XL(t)=FL(x(t)) и XR(t)=FR(x(t)).

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

XL(t) = hL(t) * x(t) и XR(t) = hR(t) * x(t),

где hL(t) и hR(t) - импульсная характеристика фильтров соответственно для левого и правого уха.

Но как узнать вид этих передаточных функции или импульсных характеристик? К счастью, это уже было сделано (и не один раз). Например, в 2003-м году в институте IRCAM (Франция) были обследованы несколько десятков человек. Каждого из них сажали на стул в специальной акустической безэховой камере, устанавливали в уши крошечные микрофоны, а дальше воспроизводили тестовые сигналы с помощью небольшого, но сравнительно качественного студийного монитора, закреплённого на специальном сервоприводе так, чтобы можно было перемещать его в двух плоскостях, сохраняя неизменным расстояние до слушателя. Таким образом звук приходил к голове испытуемого под разными углами. Записанные сигналы обрабатывались, производилась коррекция для исключения неидеальности характеристик микрофонов и акустической системы. В результате для каждого человека было получено почти по две сотни импульсных характеристик. Их называют Head-Related Impulse Response - импульсная характеристика относительно головы. В литературе чаще встречается термин HRTF, это почти то же самое.

Казалось бы, задача решена. Ищем в базе данных IRCAM импульсную характеристику, снятую на уровне глаз с азимута, скажем, 30 градусов, всю прослушиваемую музыку пропускаем через соответствующий FIR-фильтр и подаём на хорошие наушники с плоской АЧХ. К сожалению, всё несколько сложнее

Реальные наушники

В мире есть пара десятков крупных брендов, предлагающих качественные головные телефоны - Sennheizer, AKG, Beyerdynamic, Sony и т. д. Многие из них занимаются этим бизнесом не один десяток лет и придерживаются определённых традиций. Одна из них - фонограмма должна звучать в наушниках аналогично колонкам: никакие частоты не должны "выпячиваться" или "проваливаться" по сравнению с прослушиванием аналогичной фонограммы на качественных акустических системах с плоской АЧХ. Проблема в том, что для этого приходится делать наушники с кривой АЧХ. Например, часто в качестве оптимальной АЧХ наушников принимают одну из семейства кривых "Harman Target Curves". Таким образом, фактически, производители наушников уже давно и достаточно успешно рещают задачу имитации "прямой" импульсной характеристики, то есть звук из правой колонки воспринимается также, как звук из правого наушника. "Обратный" звук - такой, который попадает из правой колонки в левое ухо, в обычных наушниках отсутствует. Именно его нам и нужно сформировать, обладая знанием об HRTF.

На самом деле, помимо имитации "прямой" HRTF осуществляется ещё и некая стандартная эквализация, но об этом поговорим как-нибудь в другой раз.

Немного рассуждений

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

Итак, у нас есть комплект импульсных характеристик: hR(t) и hL(t). Мы предполагаем, что "прямая" HRTF (то есть hR(t) в нашем примере) имитируется за счёт конструкции головных телефонов, иначе говоря, наушники производят преобразование вида FR(), то есть делают свёртку сигнала с hR(t). Теперь нам нужно придумать фильтр, который сделает так, чтобы в левое ухо попал сигнал XL(t) - как если бы мы слушали колонки. Обозначим импульсную характеристику этого фильтр как hcorr(t). Должно выполняться равенство: hcorr(t)*hR(t)*x(t)=hL(t)*x(t). Здесь появляется свёртка с hR(t), так как левый наушник имеет точно такую же конструкцию как правый и преобразует сигнал точно также. Сократим лишнее (со свёрткой так можно): hcorr(t)*hR(t)=hL(t).

У меня в институте не было курса по цифровой обработке сигналов, но о преобразовании Фурье нам, конечно, рассказывали в рамках курса мат. анализа. Поэтому я помню, что преобразование Фурье - это фактически переход из временной области в частотную, а свёртка во временной области эквивалентна умножению в частотной области. Обозначим преобразование Фурье как fft(). Тогда:
fft(hcorr(t)) fft(hR(t)) = fft(hL(t))
(символом обозначаем поэлементное умножение).
Тут здорово то, что в частотной области не возбраняется не только поэлементное умножение, но и деление:
fft(hcorr(t)) = fft(hL(t)) / fft(hR(t)).

Дальше остаётся перейти снова во временную область (выполнить обратное преобразование Фурье), и мы получаем импульсную характеристику необходимого нам фильтра!

Если углубиться в теорию, то выяснится, что такой фокус - перейти в частотную область, поделить и перейти обратно во временную область - не всегда возможен. Забегая вперёд скажу: в данном случае возможен.

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

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

Второй важный момент: для локализации звука (то есть определения направления) не имеет особого значения АЧХ самих наушников (как и их "target curve") - она сократилась в наших уравнениях. Однако, необходимо, чтобы левый и правый наушники были максимально похожи. Поэтому, никто не мешает до или после данного фильтра использовать обычную эквализацию, чтобы получить именно такой спектр звука, какой нам хочется. Заодно можно компенсировать недостатки АЧХ наушников и/или недостатки записи.

О существующих решениях

Я не претендую на полный обзор, но кое-что перечислить всё-таки нужно. Во-первых есть много плагинов для разных программных аудио-плееров и редакторов, осуществляющих так называемый cross-feed. Подавляющее большинство из них - просто подмешивают звук противоположного канала. Иногда слегка его фильтруют и/или добавляют задержку. К сожалению. я не нашёл ни одного плагина такого типа, позволяющего сформировать звуковую картину, аналогичную прослушиванию на хороших колонках, когда можно с закрытыми глазами показать, где "находится" каждый из исполнителей. Возможно, причина в том, что у меня не самая типичная голова - значительно шире среднестатистической (замучился выбирать велосипедный шлем для катания зимой).

Единственный готовый инструмент из тех, что я пробовал, обеспечивший хорошую локализацию в пространстве - Dolby Headphones. Существует плагин-обёртка для известного в узких кругах аудиоплеера foobar2000, позволяющая обрабатывать звук соответствующей библиотекой от Dolby. Но у неё есть два недостатка. Во-первых, она искажает АЧХ. Есть подозрение, что она рассчитана именно на наушники с ровной АЧХ (как в рассуждениях выше). Это можно выправлять эквалайзером, но как-то неаккуратненько. Второй недостаток - сомнительная легальность. Наверное, можно купить программный пакет, в который входит эта библиотека от Dolby, но не знаю, насколько будет правомерно использовать её отдельно. Также есть очевидные сложности с использованием на ОС, отличных от Windows. Можно, конечно, снять импульсные характеристики, и использовать их, но это уже reverse-engineering, что тоже не всегда легально.

Разбираемся в нюансах и кодим

Если хочется наконец попробовать, и лень читать все эти буквы - в конце есть ссылка на GitHub, но лучше всё-таки прочитать, т. к. комментариев в коде немного, а readme.md я пока не написал.

Традиционно подобные фильтры часто делают в Matlab. Я никогда раньше с ним не работал, но решил повозиться с открытым аналогом - GNU Octave. Итак, за дело.

Для начала посмотрим, как выглядят импульсы от IRCAM. Виртуальные колонки у меня будут стоять под углом +-30 градусов - это классическая расстановка, когда колонки и слушатель образуют равносторонний треугольник. Вначале был соблазн взять единственный стерео-файл, в котором записаны сигналы для правого и левого уха, но оказалось, что импульсы правого и левого каналов могут ощутимо различаться (вероятно, вследствие асимметрии головы у большинства людей), поэтому стоит брать один и тот же канал, например, левый и файлы, снятые под разными углами. Я после ряда проб и ошибок выбрал файлы IRC_1006_R_R0195_T030_P000.wav и IRC_1006_R_R0195_T330_P000.wav, но, повторюсь, у меня не самая типичная голова, поэтому Вам с большой вероятностью лучше подойдёт какая-нибудь другая пара импульсов.

Здесь 1006 - идентификатор испытуемого, 0195 - расстояние от громкоговорителя до головы в сантиметрах, 030/330 - азимут (0 - колонка ровно перед слушателем, 90 слева, 180 - сзади, 270 - справа), 000 - нулевой угол над горизонтом. Также на сайте IRCAM доступны xml-файлы с описанием испытуемых - рост, расстояние между ушами, длина волос, размер ушных раковин и т. п. Посмотрим как выглядят эти импульсы.

Direct impulseDirect impulseOpposite impulseOpposite impulse

Длина импульсов составляет 8192 сэмпла, при частоте дискретизации 44.1кГц. Получается 186мс, что соответствует длине волны 63м. Очевидно, что длина сильно избыточна, поскольку при такой длине волны (на 2 с лишним порядка больше размера головы!) никакого стереоэффекта нет, и оба уха слышат идентичный сигнал. Поэтому при загрузке файлов их можно сразу обрезать до 1024..4096 семплов. Например так:

channel_idx = 1; % Channel index, used from input files: 1 - left, 2 - rightmax_impulse_len = 4096;[impulse, fs] = audioread(fname);len = min(rows(impulse), max_impulse_len);

Данные ненужного канала тоже выкинем.

impulse = impulse(1 : len, channel_idx);

Далее проведём наши вычисления на основе быстрого преобразования Фурье:

fft_div = fft(impulse_opposite) ./ fft(impulse_direct);impulse_tf = real(ifft(fft_div));

По-умному это называется deconvolution или system identification (т. к. позволяет определить свойства системы на основе входного и выходного сигналов). Посмотрим, что получается:

FFT deconvolutionFFT deconvolution

Что-то получилось :) Скажу больше, оно в целом даже работает как ожидалось. Однако, отношение сигнал-шум в этом импульсе не радует глаз. Перфекционист внутри меня негодует... Можно провести свёртку, и проверить, что hcorr(t) * hR(t) = hL(t).
Посмотрим, как будет выглядеть "сигнал ошибки":

plot(conv(impulsedirect, impulsetf)(1:4096) - impulseopposite);
FFT errorFFT error

Не скажу, что идеально, ошибка порядка нескольких процентов. Видимо не всё так просто...

Пришлось засесть за Гугл и найти учебники по цифровой обработке сигналов. Оказывается, проблема известна уже чуть ли не пол века: деконволюция через преобразование Фурье даёт большие ошибки. К счастью, более подходящие методы тоже давно известны. Один из классических - метод наименьших квадратов (МНК) с использованием матрицы Тёплица и её инверсией методом Дурбина-Левинсона. Было найдено несколько готовых реализаций для Matlab, из которых получилось сделать то, что хотелось (подробности здесь приводить не буду, если интересно - можно посмотреть на гитхабе).

Сам импульс, полученный с помощью МНК:

LMS deconvolutionLMS deconvolution

И "сигнал ошибки":

LMS errorLMS error

Теперь получше, ошибка около одного процента.

Попробуем увеличить масштаб картинки с полученным импульсом:

LMS deconvolution, zoomed-inLMS deconvolution, zoomed-in

Мне кажется, в этом импульсе многовато высокочастотных составляющих. Что ж, попробуем обрезать всё, что выше 20кГц (за пределами диапазона слышимых частот) с помощью ФНЧ:

lpf = remez(2 * round(fs / 600), [0 20000 / (fs / 2) 21000 / (fs / 2) 1], [1 1 0 0]); % For Matlab environment change "remez" to "firpm". filteredImpulse=conv(impulse_tf, lpf, 'same');
LMS deconvolution, LPFLMS deconvolution, LPF

Выглядит ещё лучше.
Я слабо верю, что можно услышать разницу с использованием ФНЧ и без. На ресурсоёмкость это тоже не должно влиять. В общем, решение спорное, но я захотел сделать так.

Так, мы совсем забыли о длине Мы же говорили, что 8192 сэмпла - это безумно большой запас, а сами сделали всего лишь вдвое меньше. Причём значительная часть энергии в импульсном отклике этого фильтра - банальный шум! Думаю, здесь стоит применить так называемую оконную функцию, например, функцию Блэкмана.

Честно говоря, я не стал выяснять, какая оконная функция здесь подходит лучше всего, но функция Блэкмана используется, например, в программе DRC, выполняющей похожую задачу, и я решил поступить также. Надеюсь, автор DRC посвятил этому вопросу больше времени :)
Не уверен, будет ли слышно разницу, но перфекционизм...

Сначала определим, где будет центр оконной функции. Для этого возьмём медиану группового времени задержки, которое даёт наш фильтр:

avgDelay = round(median(grpdelay(impulse_tf)));

Теперь сформируем собственно оконную функцию и поэлементно умножим на неё наш импульс.

wnd = window(@blackman, 2 * (size(impulse_tf)(1) - avgDelay));% Cut the window in sizewnd = flipud(wnd(1:size(impulse_tf)));% Apply windowimpulse_tf = impulse_tf .* wnd;
LMS deconvolution, LPF, windowingLMS deconvolution, LPF, windowing

Неплохо. Часть лишнего удалось убрать. Думаю, если уменьшить длину импульса ещё в 2..4 раза, то будет совсем красиво. Но тут надо оценивать на слух - я отчётливо слышал разницу в зависимости от длины импульса. Впрочем, это могли быть артефакты фильтрации на лету при прослушивании.

Дальше имеет смысл визуально сравнить полученный импульс после свёртки с исходным (примерно это мы делали при попытке использовать FFT). Я вывел на один график сами импульсы, и их же в частотной области, то есть после преобразования Фурье - отдельно модуль (то есть по сути АЧХ), действительную часть и мнимую часть:

Выглядит годно. Заметные отличия (и то если увеличить :)) - в области самых верхних частот, где мы собственно применили ФНЧ. То есть, похоже, что всё правильно.

Осталось сохранить полученный импульс в два стерео-файла, отличающихся только переменой правого и левого каналов.

impulse_tf_stereo_L(:, 2) = impulse_tf;impulse_tf_stereo_L(1, 1) = 1;impulse_tf_stereo_R(:, 1) = impulse_tf;impulse_tf_stereo_R(1, 2) = 1;audiowrite(strcat(directory, fname_direct, '_TF_stereo_L.wav'), impulse_tf_stereo_L, fs);audiowrite(strcat(directory, fname_direct, '_TF_stereo_R.wav'), impulse_tf_stereo_R, fs);

Теперь осталось проверить, что собственно получилось. Для этого я использовал уже упоминавшийся аудиоплеер foobar2000 с плагином "Stereo Convolver". Настроен он у меня следующим образом:

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

Если результат в плане пространственного разрешения фонограмм не понравился - можно попробовать выбрать другой импульс из базы IRCAM и попробовать снова. Либо закрыть эту страницу и заняться чем-нибудь более интересным.

Заключение

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

Есть и кое-какие мысли по дальнейшему развитию подхода.

Весь использованный код для GNU Octave выложен на GitHub.

Да, пара иллюстраций позаимствована с Википедии. Вроде бы лицензия это допускает.

Ссылки

Подробнее..

SpatialTransformerNetworksв MATLAB

01.12.2020 16:10:27 | Автор: admin

В данной статье будут подниматься темы построения пользовательских слоёв нейронных сетей, использование автоматического дифференцирования и работы со стандартными слоями глубокого обучения нейронных сетей в MATLABна основе классификатора с использованием пространственной трансформационной сети.

SpatialTransformerNetwork(STN) один из примеров дифференцируемых LEGO-модулей, на основе которых можно строить и улучшать свою нейросеть. STN, применяя обучаемое аффинное преобразование с последующей интерполяцией, лишает изображения пространственной инвариантности. Грубо говоря, задача STNсостоит в том, чтобы так повернуть или уменьшить/увеличить исходное изображение, чтобы основная сеть-классификатор смогла проще определить нужный объект. Блок STNможет быть помещен в сверточную нейронную сеть (CNN), работая в ней по большей части самостоятельно, обучаясь на градиентах, приходящих от основной сети (более детально с данной темой можно ознакомиться по ссылкам: Хабри Мануал).

В нашем случае задачей является классифицировать 99 классов лобовых стёкол автомобилей, но, для начала, начнём с чего-нибудь попроще. Для того, чтобы ознакомится с данной тематикой возьмём базу данных MNIST из рукописных цифр и построим сеть из нейронных слоёв глубокого обучения MATLABи пользовательского слоя аффинной трансформации изображения (ознакомиться со списком всех имеющихся слоёв и их функционалом можно по ссылке).

Для реализации пользовательского слоя трансформации мы воспользуемся шаблоном пользовательского слоя и возможностью MATLABдля автоматического дифференцирования и построения обратного распространения производной от ошибки, которая реализуется за счёт массивов глубокого обучения для пользовательских учебных циклов - dlarray(ознакомиться с шаблоном можно по ссылке, ознакомиться с dlarrayструктурами можно по ссылке).

Для того, чтобы реализовать возможности dlarray, нам необходимо вручную прописать аффинную трансформацию изображения так как функции MATLAB, реализующие данную возможность, не поддерживают структуры dlarray. Далее представлена написанная нами функция трансформации, весь проект доступен по ссылке.

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

Также важно уточнить, какие конкретно изменения накладываются на изображения разными числами матрицы преобразования. Первая строка накладывает трансформации по оси Y, а вторая по Х. Параметры выполняют изменение размера (приближение, отдаление), поворот и смещение изображения. Более детально матрица трансформации описана в таблице.

Y

Размер

Поворот

Смещение

Х

Поворот

Размер

Смещение

Теперь, когда мы разобрались с теоретической составляющей, перейдём к реализации сети с использованием STN. На рисунках ниже представлены структура построенной сети и результаты обучения для базы данных MNIST.

Структура сети.Структура сети.Результаты обучения.Результаты обучения.

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

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

Первое различие между входными данными это то, что числа это изображения в градиенте серого, а стёкла изображения формата RGB, следовательно, нам необходимо изменить слой трансформации, добавив цикл. Будем применять отдельно трансформацию к каждому из слоёв изображения. Также, для упрощения обучения, добавим в слой трансформации веса, на которые будем домножать матрицу трансформации, и установим эти веса в 2, за исключением весов смещения изображения, их установим в 0, для того чтобы сеть училась, в первую очередь, поворачивать и изменять масштаб изображения. Также, если взять данные веса меньше, то сеть дольше будет перестраивать веса STNв поисках полезной информации, так как полезная информация у нас находится по краям изображения, а не в центре, в отличии от сети с числами. Далее нам необходимо заменить часть классификатора, так как он является слишком слабым для наших входных данных. Чтобы не изменять структуру самого STN- мы приведём изображение к виду, похожему на числа, добавив слой нормализации и dropoutдля уменьшения объёма входных данных в STN.

Сравнивая данные на входе у сети с числами и стёклами, можно увидеть, что на стёклах диапазон значений варьируется от [0;255], а в числах от [0;1], а также в числах большая часть матрицы это нули. Примеры данных на входе показаны ниже.

Данные на входе у сети с числами.Данные на входе у сети с числами.Данные на входе у сети со стёклами.Данные на входе у сети со стёклами.

Опираясь на вышеприведённые данные, нормализация будет выполняться по принципу деления входных данных на 255 и обнуления всех значений меньше 0.3 и больше 0.75, а также от трёхмерного изображения мы оставим только одно измерение. На изображении ниже видно, что подаётся на входе и что остаётся после слоя нормализации.

Вход и выход слоя нормализации.Вход и выход слоя нормализации.

Также в связи с тем, что у нас не так много данных для тестирования и обучения сети, мы искусственно увеличим их объём за счёт аффинной трансформации, а именно, поворота изображения на случайный градус в пределах [-10;10] и прибавления случайного числа к матрице изображения для изменения цветовой палитры в пределах [-50; 50]. В функции чтения мы воспользуемся стандартными функциями MATLAB, так как в ней нам не требуется оперировать dlarrayструктурами. Ниже представлена используемая функция чтения входных изображений.

Ниже представлены структура сети с внесёнными изменениями и результаты обучения этой сети.

Структура сети.Структура сети.Результаты обучения.Результаты обучения.

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

Для сравнения, возьмём и протестируем сеть без использования STN, оставив только имеющийся у нас классификатор. Ниже представлены результаты обучения этой сети.

Результаты обучения.Результаты обучения.

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

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

Подробнее..

Введение в моделирование динамики квадро-, гекса- и октокоптеров

28.09.2020 02:15:18 | Автор: admin

Что бы разбавить зубодробительную математику лекций Козлова Олега Степановича "Управление в технических системах", публикуем здесь пример применения знаний из этих лекций на практике.


В данной статье, Александр Щекатуров, ученик Олега Степановича описывает создание модели октокоптера, попутно раскрывая секреты и демонстрируя приемы работы в среде структурного моделирования физических систем.



В настоящей статье приведено описание логически завершённой, но всего лишь части полной работы по моделированию, но этой части достаточно для введения в тему динамического моделирования БПЛА коптерного типа.


Здесь опущено моделирование эффектов прецессии, принимается что и реактивный момент каждой ВМГ равен нулю, а именно: каждая ВМГ имеет два двигателя и винта, вращающихся с одинаковой скоростью в противоположные стороны. Не моделируются отказы оборудования и предполагается что объект находится только в воздухе (в штатном режиме полёта), режимы посадки и взлёта, аварийные ситуации, захват груза и разгрузка в приведённой модели не реализованы, а также не рассматриваются вопросы подробного моделирования датчиков, фильтрации сигналов и шумов, изгиб рамы коптера и/или винтов, работа на запредельных нагрузках, написание драйверов к той или иной аппаратуре и т.д. и т.п., всё это темы более расширенной статьи или даже книги.



1 Постановка задачи


Дано: объект массой порядка 1025 кг, с 4, 6 или 8-ю парными соосными винтомоторными группами (ВМГ), расположенными по традиционной схеме квадро, гекса или октокоптера на жёсткой раме, с 8, 12 или 16 двигателями типа T-motors Antigravity 6007 KV320 или аналогичными и соответствующими им винтами (исходим из грузоподъёмности одной ВМГ порядка 2 кг на 50% газа). Предположим что конструкция аппарата до конца не определена.


Требуется: сконструировать и реализовать модель динамики объекта параметрически, в общем виде и в объёме, достаточном для проектирования полётного контроллера и наземного пульта управления коптером.



2 Основные положения модели


В литературе и сети приведено довольно много моделей квадрокоптеров, есть некоторые модели гекса- и октокоптеров. Однако, изложенного в системном и методичном виде со всеми подробностями практически ничего нет (по крайней мере, в русскоязычном сегменте, из тех материалов что удалось найти). Наиболее методично теоретический подход к моделированию мультироторного БПЛА изложен в работах [1] и [2].


Опуская некоторые выкладки, изложенные в этих работах (они легко гуглятся), можно выделить следующие допущения и упрощения, принятые в модели:


  1. Двигатель моделируется как инерционное звено (апериодическое звено) первого порядка, на вход которому подается заданное значение угловой скорости, а на выходе текущее (измеренное) значение угловой скорости вращения. Интегрируя скорость вращения, можно получить и текущий угол поворота если это зачем-то нужно. Силу тяги ВМГ развивает пропорциональную квадрату угловой скорости (равно как и реактивный момент каждого двигателя, но в нашем случае он будет 0), а именно:

    $F_M(t)=C_T \cdot \omega^2(t), \\ M_M(t)=C_Q \cdot \omega^2(t),$


    где, для выбранной винтомоторной группы (согласно её характеристике):
    $C_T=2.02268 \cdot 10^{-4}H \cdot c^2 $,
    $M_M 0 \ \ Н \cdot м\cdot с^2$ реактивный момент двигателя,
    $(t)$ текущая угловая скорость, рад/с.
  2. Мультироторный аппарат моделируется как твёрдое тело и представляет собой жёсткую (недеформируемую) раму постоянной массы, симметричную по трём главным осям, с прикрепленными к ней ВМГ в одной плоскости, в которой находится и центр масс аппарата. При этом ВМГ расположены на восьми лучах (4 из них одной длины, а другие 4 могут быть другой длины) и жестко закреплены относительно рамы. Таким образом можно говорить о том, что радиус-векторы центров ВМГ и орты силы тяги каждой ВМГ суть геометрические константы в системе координат, связанной с коптером. Другими словами, величина $F_M (t)$ [Н], вычисленная в модели ВМГ, является модулем вектора силы, приложенного всегда в определенном направлении и в определенной точке коптера. В процессе полета это направление будет меняться, конечно, но относительно рамы коптера (и связанной с ней системы координат) оно остаётся неизменным.
  3. Используется две системы координат: а) неподвижная инерциальная, связанная с Землёй и б) подвижная, связанная с коптером. Системы координат обозначим буквами I и B (от английских слов inertial инерциальный и body тело). При этом оси систем направлены: $x_I$-вправо, $y_I$-на наблюдателя, $z_I$-вниз, $x_B$ вправо вдоль луча первой ВМГ, $y_B$-на наблюдателя вдоль луча третьей ВМГ, $z_B$-сверху вниз при нормальной ориентации коптера (см. рисунок):

    Тогда, в системе координат B векторы центров ВМГ будут равны:

    $\vec {r_{M1}} = (l_1,0,0)^T, \ \ \ \ \vec {r_{M2}}=\frac{1}{\sqrt 2} (l_2,l_2,0)^T \\ \vec {r_{M3}} = (0,l_1,0)^T, \ \ \ \ \vec {r_{M4}}=\frac{1}{\sqrt 2} (-l_2,l_2,0)^T \\ \vec {r_{M5}} = (l_1,0,0)^T, \ \ \ \ \vec {r_{M6}}=\frac{1}{\sqrt 2} (-l_2,-l_2,0)^T \\ \vec {r_{M7}} = (0,-l_1,0)^T, \ \ \ \ \vec {r_{M8}}=\frac{1}{\sqrt 2} (l_2,-l_2,0)^T $


    где $l_1$ длина луча у 1, 3, 4 и 5-й ВМГ, а $l_2$ длина лучей у 2, 4, 6 и 8-й ВМГ.

    Для того чтобы коптер управлялся (хотя бы немного) по курсу, в нашем случае отсутствия реактивного момента двигателей, вектора сил тяги каждой ВМГ должны быть немного отклонены от вертикального направления (повёрнуты вокруг каждого луча на небольшой угол порядка 15 градусов, причем в разные стороны четные в одну а нечетные в другую). Если обозначить этот угол как $\gamma $, орты можно получить в следующем виде:

    $\vec{e_{M1}}=(0,-sin(\gamma),-cos(\gamma))^T, \ \ \ \vec{e_{M2}}=(-\frac{sin(\gamma)}{\sqrt2},\frac{sin(\gamma)}{\sqrt2},-cos(\gamma))^T,\\ \vec{e_{M3}}=(sin(\gamma),0,-cos(\gamma))^T, \ \ \ \vec{e_{M4}}=(-\frac{sin(\gamma)}{\sqrt2},-\frac{sin(\gamma)}{\sqrt2},-cos(\gamma))^T,\\ \vec{e_{M5}}=(0,sin(\gamma),-cos(\gamma))^T, \ \ \ \vec{e_{M6}}=(\frac{sin(\gamma)}{\sqrt2},-\frac{sin(\gamma)}{\sqrt2},-cos(\gamma))^T,\\ \vec{e_{M7}}=(-sin(\gamma),0,-cos(\gamma))^T, \ \ \ \vec{e_{M8}}=(\frac{sin(\gamma)}{\sqrt2},\frac{sin(\gamma)}{\sqrt2},-cos(\gamma))^T.$


    На основе этих геометрических констант (напомним, они являются константами только в системе координат B, связанной с коптером) строится весь дальнейший каркас модели, поэтому они важны. В общем случае, винтомоторных групп может быть другое количество и направлены они могут быть в других направлениях, и располагаться у коптера в других местах.
    О применяемых системах координат подробно изложено в [1].
  4. Силы, которые будут учтены в модели. На коптер действуют:
    4.1) Сила тяжести. Направлена всегда вниз вдоль оси инерциальной системы координат $z_I$. Сила тяжести постоянная величина, зависит только от массы коптера. Масса коптера принимается постоянной и не меняется (хотя в процессе моделирования её можно будет менять, имитируя дополнительный полезный груз, навешенный на коптер).
    4.2) Силы тяги ВМГ их всего 8, они направлены вдоль своих направлений, модуль сил вычисляется в зависимости от угловой скорости вращения соответствующей ВМГ.
    4.3) Сила сопротивления воздуха (и/или ветер) моделируется как состоящая из двух компонент. Сила сопротивления воздуха прямо пропорциональна плотности воздуха, квадрату линейной скорости объекта в воздухе и характерной площади сечения в выбранном направлении (коэффициент формы). Сила ветра внешняя возмущающая сила, задается произвольным образом или при помощи дополнительной модели ветра (в настоящей статье не рассматривается).
    4.4) Внешняя сила или возмущение произвольное внешнее воздействие. В модели такая возможность заложена как простой способ в дальнейшем проверять на устойчивость регуляторы по каждому из направлений.
  5. Моменты, учитываемые в модели:
    5.1) Реактивный момент двигателей ВМГ. В нашей модели он равен нулю, из-за парности двигателей и винтов в каждой ВМГ в общем случае следует учитывать. В некоторых аппаратах этот момент используется и для управления по курсу.
    5.2) Явление прецессии в рассматриваемой модели он нулевой, в общем случае его нужно считать.
    5.3) Момент сопротивления воздуха аналогично силе сопротивления воздуха, прямо пропорционален плотности воздуха, квадрату угловой скорости коптера и коэффициенту формы.
    5.4) Опрокидывающий момент от ветровой нагрузки.
    5.5) Внешний возмущающий момент для отладки регуляторов.
    5.6) Моменты от сил тяги ВМГ. Поскольку винты расположены не в центре масс коптера, каждый из них будет создавать свой поворотный момент. Это, пожалуй, основной фактор, который управляет ориентацией коптера в пространстве.

3 Нелинейные уравнения динамики октокоптера


С учетом принятых допущений, и того что коптер моделируется как единое твёрдое тело, основа модели динамики коптера очень проста это второй закон Ньютона, который в векторной форме выглядит следующим образом, всего два простых уравнения:


$\frac{d \vec{p}(t)}{dt}=\vec{F}(t), \\ \frac{d \vec{L}(t)}{dt}=\vec{M}(t), $


где $\vec {p}(t))=m \cdot \vec{v}(t)$ импульс коптера, а $\vec{L} (t)=I(t)\cdot \vec{\omega}(t)$ момент импульса коптера, $m$ его масса, $I(t)$ тензор инерции (линейный оператор момента инерции). $\vec{F}(t)$ и $\vec{M}(t)$ суть суммы всех сил и всех моментов, действующих на коптер.

Легко видеть, что всё было бы очень просто и очевидно, если бы правые части были небольшими, а тензор инерции не зависел бы от ориентации коптера (как если бы коптер был шаром). Но из-за вращения коптера, а также из-за обилия сил и моментов, конечные уравнения, записанные в инерциальной системе координат, получатся очень громоздкими, даже без учета прецессии и реактивных моментов ВМГ. Поэтому используется следующий математический приём уравнения, записанные в инерциальной системе координат, переводятся в систему координат B, связанную с коптером, в которой слагаемые правой части (их запись) получается гораздо более лаконичной и удобной. Подробнее этот приём описан в [1], приведём здесь лишь основные соотношения.


Подставив в приведенные уравнения второго закона Ньютона значения для импульса и момента импульса коптера, для инерциальной системы координат получим:

$\frac{d \vec{v_I}(t)}{dt}=\frac{1}{m}\vec{F_I}(t),\\ \frac{d \vec{\omega_I}(t)}{dt}= I^{-1}(\vec{M_I}(t)-\frac{dI_I}{dt}\cdot \vec{\omega_I}).$


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

В математике есть два основных подхода к преобразованию векторов из одной системы координат в другую и обратно матрицы поворота и кватернионы. Последние более универсальны, первые проще. В настоящей модели используются матрицы поворота. Если ориентацию коптера представить тремя углами: крена (roll), тангажа (pitch) и рыскания/курса (yaw), а матрицы преобразования из системы I в B и обратно обозначить как $R_{IB}$ и $R_BI=R_IB^T$, то любой вектор записанный для системы координат I, можно перевести в систему координат B, и наоборот, используя умножение соответствующей матрицы на вектор, например: $\vec{F_I }(t)=R_{BI} \vec{F_B}(t)$, или $\vec{F_B }(t)=R_{IB} \vec{F_I}(t)$.


Чтобы лучше понимать написанное далее, прокомментируем ещё раз как понимать матрицы поворота и вектора в пространстве: система координат I неподвижна, относительно неё летает и вращается коптер, а вместе с ним и связанная система координат B. Просуммировав все силы, которые действуют на коптер, можно получить вектор $\vec F(t)$ (аналогично и с моментом сил), и в каждый момент времени он является вектором с вполне определенной длиной и направлением в пространстве. Но раскладывая его на проекции по осям в разных системах координат мы получим разные величины проекций. Всё что делает матрица поворота это переводит одни проекции вектора в другие, при этом сам вектор никуда не поворачивается и не изменяет своей длины, в выбранный момент времени. Если проекции сравнить с тенями вектора, то матрицы поворота преобразуют одни тени в другие, всё. Больше они ничего не делают и сложностей кроме вычислительных не представляют.


Нам они нужны только из-за того, что вычислять и суммировать силы и моменты сил, действующие на коптер, гораздо проще в связанной системе координат B. В ней же проще провести численное интегрирование уравнений, чтобы получить величины угловой и линейной скоростей коптера $\vec{_B}(t)$ и $\vec{v_B}(t)$, а потом обратной матрицей поворота вычислить (вычислить алгебраически матрицы поворота это простые уравнения) эти же скорости для инерциальной системы координат I и там уже, интегрируя дальше, вычислить линейные и угловые координаты коптера.


Приведем используемое выражение для матрицы поворота из системы I в B, записав для краткости функции косинуса и синуса как cos() = c() и sin() = s():

$R_{IB}=\\ =\left( \begin{array}{ccc} c(\theta)\cdot s(\psi) & c(\theta)\cdot s(\psi) & -s(\theta)\\ s(\varphi) \cdot s(\theta) \cdot c(\psi)- c(\varphi) \cdot s(\psi)&s(\varphi) \cdot s(\theta) \cdot s(\psi) + c(\varphi) \cdot C(\psi) & s(\varphi) \cdot c(\theta)\\ c(\varphi) \cdot s(\theta) \cdot c(\psi) + s(\varphi) \cdot s(\psi)&s(\varphi) \cdot s(\theta) \cdot s(\psi) - s(\varphi) \cdot c(\psi) & c(\varphi) \cdot c(\theta) \end{array} \right)$


Отметим еще раз, что в каждый момент времени эта матрица, очевидно, будет получаться разной т.к. меняются углы ориентации коптера. Но это просто алгебраические вычисления, без никаких дифференциальных уравнений. Сама матрица не константа, и у неё есть производная по времени.

Реализованная методом структурного моделирования, матрица в среде SimInTech выглядит как показано на рисунке 1.



Рисунок 1. Матрица поворота из системы I в систему координат B

Тогда, для вектора линейной скорости можно записать:

$\vec {v_B} (t)=R_{IB} \cdot \vec {v_I}(t),$

а для момента импульса

$\vec {L_B} (t)=R_{IB} \cdot \vec{L_I }(t). $

Опуская промежуточные выкладки (в том числе производную матрицы поворота, которая получается равной в итоге векторному произведению угловой скорости объекта на саму матрицу поворота, взятое с обратным знаком), для первого из рассматриваемых уравнений динамики получим следующее выражение в связанной с коптером системе координат B:

$\frac{d\vec{v_B}}{dt} =- \vec{\omega_B}(t) \times \vec{v_B}(t)+ \frac{1}{m}\vec{F_B}(t),$


а для второго уравнения, учитывая что $\vec{L_B } (t)=I_B\cdot \vec{\omega_B} (t)$,
и так как во вращающейся связанной системе координат тензор инерции константа и его производная по времени равна нулю, а $\frac{d\vec{L_B } (t)}{dt}=I_B\cdot \frac{d\vec{\omega_B} (t)}{dt}$ получим:

$\frac{d\vec{\omega_B}}{dt} =-I_B^{-1}( \vec{M_B}(t) - \vec{\omega_B}(t) \times (I_B \cdot \vec{\omega_B}(t))).$


Итого, запись II закона Ньютона для вращающейся системы B, по сравнению с исходными уравнениями, дополнилась двумя векторными произведениями.


Переменными состояния коптера в такой записи являются две векторных величины (или 6 скалярных) вектор линейной скорости и вектор угловой скорости. Алгебраически это будет 6 переменных три проекции линейной скорости и три проекции угловой скорости. И мы имеем записанную в форме Коши систему из 6 нелинейных уравнений первого порядка, которую легко можно реализовать в среде структурного моделирования SimInTech или Simulink или Scilab и даже успешно решить её тем или иным методом интегрирования.


Получив значения скоростей коптера (сначала в системе B), их можно матрицей обратного поворота преобразовать к системе I, еще раз проинтегрировать и получить уже значения координат и, следовательно, положение объекта в пространстве, в инерциальной системе координат.


Единственное что мы еще не сделали по уравнениям не записали выражения для сил и моментов, действующих на коптер. Сделаем это ниже, в системе координат B. Согласно допущениям, учитываем и обозначим индексами: M работу двигателей, только в части создаваемой силы тяги и моментов от неё, D силу сопротивления воздуха (вместе с ветром), O внешнее возмущение, вообще нулевое, и задаваемое произвольно пользователем, силу тяжести она поворотного момента сил не создаёт:

$\vec {F_B}(t) = \vec {F_M}(t)+\vec {F_D}(t)+\vec {F_O}(t)+m\cdot g \cdot R_{IB}\cdot\vec{e_{IZ}}\\ \vec {M_B}(t) = \vec {M_M}(t)+\vec {M_D}(t)+\vec {M_O}(t) $


Сила тяжести в связанной системе координат будет поворачиваться в зависимости от ориентации коптера.

Распишем подробнее чему равны слагаемые:

$\vec {F_M}(t) = C_T\cdot\omega_{M1}^2(t)\cdot \vec {e_{M1}}+ C_T\cdot\omega_{M2}^2(t)\cdot \vec {e_{M2}}+ C_T\cdot\omega_{M3}^2(t)\cdot \vec {e_{M3}}+\\ +C_T\cdot\omega_{M4}^2(t)\cdot \vec {e_{M4}}+ C_T\cdot\omega_{M5}^2(t)\cdot \vec {e_{M5}}+ C_T\cdot\omega_{M6}^2(t)\cdot \vec {e_{M6}}+\\ +C_T\cdot\omega_{M7}^2(t)\cdot \vec {e_{M7}}+ C_T\cdot\omega_{M8}^2(t)\cdot \vec {e_{M8}}$


Здесь уже фигурируют угловые скорости вращения ВМГ, а не коптера. Напомним, что орты сил тяги у нас записаны для системы координат B и там являются константами очевидно, что их можно вычислить 1 раз, общий коэффициент вынести здесь за скобку и сильно упростить вычисления. Если бы мы записывали уравнения динамики в системе I, то данное выражение обросло бы ещё 8-ю умножениями на матрицу поворота каждого орта и это пришлось бы считать на каждом шаге расчета.

Сила сопротивления воздуха (при отсутствии ветра):

$\vec{F_{D}} =-0.5 \rho \cdot C_D \cdot \left( \begin{array}{c} A_{yz}\cdot v_x \cdot |v_x|\\ A_{xz}\cdot v_y \cdot |v_y| \\ A_{xy}\cdot v_z \cdot |v_z| \end{array} \right)$


Внешнее возмущение нулевое, по желанию пользователя, он может сам установить то или иное значение позже, до расчета, или в процессе моделирования.

Момент сил тяги двигателей запишем как:

$\vec {M_M}(t) =\vec{r_{M1}} \times \vec {e_{M1}} \cdot C_T\cdot\omega_{M1}^2(t) + \vec{r_{M2}} \times \vec {e_{M2}} \cdot C_T\cdot\omega_{M2}^2(t)+\\ +\vec{r_{M3}} \times \vec {e_{M3}} \cdot C_T\cdot\omega_{M3}^2(t)+ \vec{r_{M4}} \times \vec {e_{M4}} \cdot C_T\cdot\omega_{M4}^2(t)+\\ +\vec{r_{M5}} \times \vec {e_{M5}} \cdot C_T\cdot\omega_{M5}^2(t)+ \vec{r_{M6}} \times \vec {e_{M6}} \cdot C_T\cdot\omega_{M6}^2(t)+\\ \vec{r_{M7}} \times \vec {e_{M7}} \cdot C_T\cdot\omega_{M7}^2(t)+ \vec{r_{M8}} \times \vec {e_{M8}} \cdot C_T\cdot\omega_{M8}^2(t)$


Момент сопротивления воздуха (подробнее см. [1]):

$\vec{M_{D}} =-0.5 \rho \cdot C_D \cdot \left( \begin{array}{c} A_{yz}\cdot v_x \cdot |v_x| \cdot l_x\\ A_{xz}\cdot v_y \cdot |v_y| \cdot l_y\\ 8A_{xy}\cdot v_z \cdot |v_z| \cdot l_z \end{array} \right)$


Ещё раз отметим, что расчет прецессии и реактивных моментов ВМГ в данной статье для краткости изложения опущен.


Чтобы не ошибиться при переходе от векторных уравнений к скалярным, записанным по осям, проще воспользоваться пакетом типа MathCAD или Maple, в котором большинство преобразований можно выполнить автоматизированно, в символьном виде и получить требуемые 6 уравнений динамики, записанные по осям подвижной системы координат B.


В наиболее компактной форме полученные и решаемые уравнения динамики выглядят так:

$\frac{d\vec{v_B}}{dt}=\frac{1}{m}\left(\vec{F_M}(t) +\vec{F_D}(t) + \vec{F_O}(t)\right)+ gR_{IB}\vec{e_Iz} -\vec{\omega_B}(t)\times\vec{v_B}(t),\\ \frac{d\vec{\omega_B}}{dt} = I_B^{-1}\left (\vec{M_M}(t) +\vec{M_D}(t)- \vec{\omega_B}(t)\times(I_B\cdot\vec{\omega_B}(t) \right).$


Интегрируя их и получив значения скоростей в системе В, можно посчитать скорость и углы ориентации в инерциальной системе координат I:

$\vec{v_I}(t) = R_{BI}\cdot \vec{v_B}(t),\\ \left( \begin{array}{c} \dot{\varphi} \\ \dot{\theta} \\ \dot{\psi} \end{array} \right) = W_{BI} \cdot\vec{\omega_B}(t).$


Про матрицу преобразования из угловой скорости коптера в скорости поворота по углам Эйлера $W_{BI}$ подробнее см. в [1].

3 Реализация уравнений динамики в среде струкутурного моделирования


Переходим к самому интересному к реализации полученных уравнений динамики средствами среды динамического моделирования SimInTech. Как известно, любую задачу можно всегда решить несколькими способами, и чем она сложнее и многомернее тем больше количество способов. В настоящей статье предложен один из вариантов решения, он не единственный, и в некоторых местах не самый оптимальный. Выбор решения определялся простотой реализации с одной стороны, и удобством для методичного рассказа, с другой.


Итак, что мы получили с точки зрения математики в системе координат B мы имеем 2 векторных дифференциальных уравнения, которые при переходе к проекциям (и скалярным уравнениям) дают 6 нелинейных дифференциальных уравнений первого порядка, относительно 6 переменных: трёх скоростей и трёх угловых скоростей. Это так называемая 6DOF задача, т.е. задача с шестью степенями свободы. Сначала можно подумать, что раз у коптера имеется 6 степеней свободы, то должно быть и 6 переменных состояния (дифференциальных переменных). Но это так только на первый взгляд. Кроме скоростей, дальше нам придется получить еще и координаты (три линейных и три угла положения в пространстве) для чего еще раз проинтегрировать скорости. Таким образом, всего у коптера есть 12 степеней свободы. А если учесть еще то, что правые части дифференциальных уравнений есть ни что иное как ускорения коптера по осям, то получим как бы 18 степеней свободы. Это важно понимать, так как в дальнейшем для построения регулятора нам потребуются все 12 фазовых координат объекта плюс ещё 6 измеренных (или вычисленных) ускорения коптера.


3.1 Решение дифференциальных уравнений методом структурного моделирования


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


На рисунке 2 представлена основа динамической части модели октокоптера, которую формируют 6+3+3 блоков типа интегратор. Первые шесть блоков, получая на вход правые части дифференциальных уравнений (вычислим их ниже) ускорения коптера по осям $a_{Bx},a_{By},a_{Bz},_{Bx},_{By},_{Bz}$, занимаются интегрированием и вычислением скоростей коптера по этим же осям (тоже, в связанной с коптером системе В).


Следующие три интегратора принимают линейные скорости в системе координат I (полученные алгебраически из скоростей в системе B путём применения матрицы поворота) и, интегрируя их, получают координаты центра масс коптера в инерциальной системе координат


И, еще три блока типа интегратор занимаются вычислением углов ориентации коптера, интегрируя их производные (угловые скорости) в системе I, полученные из угловых скоростей коптера в системе B применением матрицы $W_{BI}$. Здесь же реализовано и вычисление нужных тригонометрических функций от углов поворота.



Рисунок 2. Структура модели октокоптера

Обилие блоков в память и из памяти обусловлено многократным использованием в других частях модели полученных величин например, по рисунку 1 видно что тригонометрические функции от углов ориентации используются многократно и оптимально вычислить их в одном месте схемы а потом уже использовать по мере необходимости.


Если бы у нас была более простая ситуация одно дифференциальное уравнение второго порядка (классический второй закон Ньютона a = F/m), например в проекции на ось x, то его решение таким же способом выглядело бы как на рисунке 3:



Рисунок 3. Двойное интегрирование

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


В субмодели W(B->I) реализована матрица преобразования из угловой скорости в системе B в производные углов Эйлера, см. рисунок 4 и [1] для подробностей.



Рисунок 4. Матрица $W_{BI}$

3.2 Правые части уравнений модели коптера


Для замыкания модели необходимо посчитать и реализовать все правые части у шести основных уравнений, то есть спроецировать полученные в разделе 2 векторные уравнения на оси $x_B,y_B,z_B$ и результат нарисовать в схеме SimInTech. Опуская выкладки (их читатель может выполнить самостоятельно на листке бумаги, или при помощи какого-то символьного математического ПО), приведем окончательный вид уравнений. Из-за громоздкости, приводить будем по слагаемым в правых частях.


Сила тяги винтомоторных групп $\vec{F_M }(t):$

$F_{Мх}(t)=\frac{1}{\sqrt{2}} \left(-F_{М2}(t)-F_{M4}(t)+F_{M6}(t)+F_{M8}(t)\right) \cdot sin(\gamma)+\\ +\left(F_{M3}(t)-F_{M7}(t) \right)\cdot sin(\gamma),\\ F_{Му}(t)=\frac{1}{\sqrt{2}} \left(F_{М2}(t)-F_{M4}(t)-F_{M6}(t)+F_{M8}(t)\right) \cdot sin(\gamma)+\\ + \left( F_{M5}(t)-F_{M1}(t) \right ) \cdot sin(\gamma),\\ F_{Мz}(t)= \left(F_{M1}(t)+F_{М2}(t)+F_{M3}(t)+F_{M4}(t)+\\ +F_{M5}(t)+F_{M6}(t)+F_{M8}(t)+F_{M8}(t)\right) \cdot cos(\gamma),$


где $F_{Mi}(t)$ сила тяги i-ой ВМГ в текущий момент времени.

Сила сопротивления воздуха $\vec{F_D}(t)$ при отсутствии ветра формулы приведены выше, проекции будут равны:

$$display$$F_{Dx}(t) = 0.5 \cdot \rho \cdot C_D\cdot A_{yz}\cdot v_x\cdot |v_x|,\\ F_{Dу}(t) = 0.5 \cdot \rho \cdot C_D\cdot A_{xz}\cdot v_у\cdot |v_у|,\\ F_{Dz}(t) = 0.5 \cdot \rho \cdot C_D\cdot A_{xy}\cdot v_z\cdot |v_z|.\\$$display$$



Сила тяжести, в проекции на оси подвижной системы координат, слагаемое $g\cdot R_{IB}\cdot \vec {e_{Iz}}$ очевидно будет равно:

$g\cdot R_{IB}\cdot \vec {e_{Iz}} =\left( \begin{array}{c} -sin(\theta)\\ sin(\phi)\cdot cos(\theta) \\ cos(\phi)\cdot cos(\theta) \end{array} \right)$


И последнее слагаемое в уравнении линейной скорости коптера векторное произведение скоростей:

$-\vec{\omega_B}(t)\times \vec{v_B}(t) =\left( \begin{array}{c} v_{Bz}\cdot \omega_{By} - v_{By} \cdot \omega_{Bz} \\ v_{Bx}\cdot \omega_{Bz} - v_{Bz} \cdot \omega_{Bx} \\ v_{By}\cdot \omega_{Bx} - v_{Bx} \cdot \omega_{By} \end{array} \right).$


Если аккуратно подставить полученные проекции в уравнение для производной линейной скорости коптера, и дальше реализовать всё это в SimInTech, по осям, получим следующие структурные схемы, представленные на рисунках 5, 6 и 7 (показаны проекции только на ось $x_B$, на другие оси результат аналогичен с точностью до слагаемых):



Рисунок 5. Линейное ускорение коптера по оси $x_{B}$.

Рисунок 6. Сила тяги ВМГ по оси $x_{B}$.

Рисунок 7. Сила сопротивления воздуха по оси $x_{B}$.

Итого, на данном этапе мы до конца реализовали одно из шести основных уравнений (согласно рисунку 2 вычислили вход в первый интегратор). Остальные оборванные там входы для сил вычисляются аналогично. Рассмотрим уравнение для моментов и для вычисления угловой скорости, а точнее его слагаемые в правой части:

$\vec{M_m}(t)+\vec{M_D}(t)-\vec{\omega_B}(t) \times(I_B \cdot \vec{\omega_B})$


Сумма моментов сил тяги всех ВМГ:

$M_{Mx}(t)=\left[ \frac{l_2}{\sqrt2} \left( -F_{M2}(t)-F_{M4}(t)+F_{M6}(t)+F_{M8}(t) \right) +\\ +l_1(F_{M7}(t)-F_{M3}(t))\right] \cdot cos(\gamma), \\ M_{Mу}(t)=\left[ \frac{l_2}{\sqrt2} \left( F_{M2}(t)-F_{M4}(t)-F_{M6}(t)+F_{M8}(t) \right) +\\ +l_1(F_{M1}(t)-F_{M5}(t))\right] \cdot cos(\gamma),\\ M_{Mz}(t)= \left[ l_2 ( F_{M2}(t)+F_{M4}(t)+F_{M6}(t)+F_{M8}(t)) +\\ -l_1(F_{M1}(t)+F_{M3}(t)+F_{M5}(t)+F_{M7}(t)) \right] \cdot sin(\gamma). $

где $ F_{Mi} (t)$ сила тяги i-ой ВМГ в текущий момент времени, $l_1,l_2$ -плечи сил (длины лучей рамы коптера для нечетных и четных ВМГ).

Момент сопротивления воздуха (при отсутствии ветра):

$M_{Dx}(t) = 0.5 \cdot \rho \cdot C_D\cdot A_{yz}\cdot \omega_{Bx}\cdot |\omega_{Bx}|\cdot l_x,\\ M_{Dу}(t) = 0.5 \cdot \rho \cdot C_D\cdot A_{xz}\cdot \omega_{By}\cdot |\omega_{By}|\cdot l_y,\\ M_{Dz}(t) = 0.5 \cdot \rho \cdot C_D\cdot 8\cdot A_{xy}\cdot \cdot \omega_{Bz}\cdot |\omega_{Bz}|\cdot l_z.$


Векторное произведение угловой скорости на произведение тензора инерции и угловой скорости:

$-\vec{\omega_B}(t)\times (I_B \cdot\vec{\omega_B}(t)) =\left( \begin{array}{c} (I_{yy}-I_{zz})\cdot \omega_{By}\cdot \omega_{Bz} \\ (I_{zz}-I_{xx})\cdot \omega_{Bx}\cdot \omega_{Bz} \\ (I_{xx}-I_{yy})\cdot \omega_{Bx}\cdot \omega_{By} \end{array} \right).$


Итого, после подстановки этих слагаемых в дифференциальное уравнение для угловой скорости, и реализации полученного в среде SimInTech, получим следующие структурные схемы:



Рисунок 8. Угловое ускорение коптера вокруг оси $x_{B}$.

Рисунок 9. Момент сил тяг ВМГ вокруг оси $x_{B}$.

Рисунок 10. Сила сопротивления воздуха при вращении вокруг $x_{B}$.

3.3 Система уравнений динамики октокоптера в структурном виде


Итого, если представить все реализованные уравнения рядом на схеме, получим следующую картину (рисунок 11). Как видно, она довольно громоздка, даже без включения сюда других дифференциальных уравнений для вычисления координат коптера и углов поворота. А поскольку в дальнейшем на каждое уравнение будут навешиваться еще дополнительные сервисные вычисления (ускорений, различных составляющих сил и моментов, для отладки модели и регуляторов), целесообразнее эти уравнения структурно разделить на 6+ субмоделей, что и было сделано, в каждой из которых решается своё уравнение, см. рисунок 12.




Рисунок 11. Уравнения динамики коптера в связанной системе координат В.

Рисунок 12. Модель динамики коптера, верхний уровень.

В принципе, все приведенные уравнений и структуры можно было реализовать и средствами языка программирования SimInTech, но тогда они были бы не так наглядны.


Входными величинами здесь являются силы тяги двигателей (они считаются вне этих уравнений, в зависимости от текущей скорости вращения каждой ВМГ и её силовой характеристики), внешняя возмущающая сила и момент сил (задаются пользователем произвольно) и сила тяжести. Также, возможно ещё влияние ветра/прецессия/реактивный момент или что-то ещё в настоящей статье это не рассматривается, для краткости мы ограничились силами тяги двигателей и притяжения Земли.


Выходными величинами являются ускорения, скорости и положение (координаты) коптера ускорения и скорости в системах координат B и I, положение в системе I (положение коптера в системе B практической ценности почти не имеет т.к. сама система движется вместе с коптером и совпадает по положению с ним то есть там положение коптера всегда будет нулевым).


В продолжении мы рассмотрим создание системы управления для октокоптера, а так же рассмотрим принципы создания видеокадров управления.



Модель коптера, рассмторенную в статье, можно взять по этой ссылке.


Список литературы


  1. Design, Modeling and Control of an Octocopter, Oscar Oscarson, Royal Institute of Technology 2015
  2. Development, Modelling and Control of a Multirotor Vehicle, Markus Mikkelsen, Ume University 2015.
Подробнее..

2. Математическое описание систем автоматического управления ч. 2.9 2.13

21.10.2020 00:21:19 | Автор: admin

Лекции по курсу Управление Техническими Системами, читает Козлов Олег Степанович на кафедре Ядерные реакторы и энергетические установки, факультета Энергомашиностроения МГТУ им. Н.Э. Баумана. За что ему огромная благодарность.


Данные лекции только готовятся к публикации в виде книги, а поскольку здесь есть специалисты по ТАУ, студенты и просто интересующиеся предметом, то любая критика приветствуется.


В предыдущих сериях:
1. Введение в теорию автоматического управления
2. Математическое описание систем автоматического управления 2.1 2.3
3. Математическое описание систем автоматического управления 2.3 2.8


В это части будут рассмотрены:
2.9. Использование обратных преобразований Лапласа для решения уравнений динамики САР (звена).
2.10. Весовая и переходная функции звена (системы).
2.11. Определение переходного процесса в системе (САР) (звене) через весовую и переходную функции.
2.12. Mетод переменных состояния.
2.13. Переход от описания переменных вход-выход к переменным состояния.


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




2.9. Использование обратных преобразований Лапласа для решения уравнений динамики САР (звена).


Рассмотрим динамическое звено САР изображенное на рисунке 2.9.1



Рис. 2.9.1 Звено САР

Предположим, что уравнение динамики имеет вид:

$T_2^2\cdot y''(t)+T_1\cdot y'(t)+y(t)=k\cdot[\tau \cdot x'(t)+x(t)];$


где: $T_2,T_1, \tau$ постоянные времени;
$k$ коэффициент усиления.

Пусть известны отображения:

$x(t) \to X(t)\\ y(t) \to Y(t)$


Найдем изображения для производных: $x',y',y'':$

$x'(t) \to s \cdot X(s) + добавка\\ y'(t) \to s \cdot Y(s) + добавка\\ y''(t) \to s^2 \cdot Y(s) + добавка$


Подставим полученные выражения в уравнение динамики и получим уравнение динамики в изображениях:

$T_2^2 \cdot s^2\cdot Y(s) + T_1 \cdot s \cdot Y(s) + Y(s) + \sum добавок = k \cdot[s \cdot \tau \cdot X(s) +X(s)] +k \cdot добавки\\ (T_2^2 \cdot s^2 + T_1 \cdot s + 1) \cdot Y(s)+ \sum добавок =k \cdot(s \cdot \tau +1)\cdot X(s) +k \cdot добавки\\ Y(s) = \underbrace{\frac{k \cdot(s \cdot \tau +1)}{T_2^2 \cdot s^2 + T_1 \cdot s + 1}}_{W(s)}\cdot X(s) + \underbrace{\frac{k \cdot добавки-\sum добавок}{T_2^2 \cdot s^2 + T_1 \cdot s + 1}}_{B(s)} $


B(s) слагаемое, которое определяется начальными условиями, при нулевых начальных условиях B(s)=0.
W(s) передаточная функция.

$Y(s) = W(s) \cdot X(s); \ \ \ \ W(s) = \frac{Y(s) - изображение \ выходного \ сигнала} {X(s)- изображение\ входного \ воздействия}$


Передаточной функцией САР (звена) называется отношение изображений выходного сигнала к входному воздействию при нулевых н.у.


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


Пример


Построить выходной сигнал звена САР при единичном входном воздействии и нулевых начальных условиях, если уравнение динамики звена имеет следующий вид:

$T \cdot y'(t)+y(t) = k \cdot x(t) $


начальные условия:

$ при \ t \le0: x(0)=0,y(0)=0. $


входное воздействие: $x(t) = 1(t)$ единичное ступенчатое воздействие.

Выполним преобразование Лапласа:

$x(t) \to X(s) = \frac{1}{s} \\ y(t) \to Y(s) \\ y' \to s \cdot Y(s)$


Подставим в уравнение динамики и получим уравнение динамики в изображениях:

$(T \cdot s+1) \cdot Y(s) = k \cdot X(s) \\ Y(s) = \frac{k}{T\cdot s+1} \cdot X(s) = \frac{k}{T\cdot s+1} \cdot \frac{1}{s}\\ Y(s) = \frac{k}{s(T\cdot s+1)}$


Для получения выходного сигнала из уравнения в изображениях выполним обратное преобразования Лапласа:

$y(t) = L^{-1}[Y(s)] = L^{-1}\left[\frac{k}{s(T\cdot s+1)}\right] =\frac{1}{T}k \cdot L^{-1}\left[\frac{1}{s(s+\frac{1}{T})}\right] \Longrightarrow \\ y(t) = \frac{k}{T}(1-e^{-\frac{t}{T}}) \cdot T = k \cdot(1-e^{-\frac{t}{T}}).$



Рисунок 2.9.2 График переходного процесса.

2.10. Весовая и переходная функции звена (системы).


Определение: Весовой функцией звена (системы) называется реакция системы при нулевых н.у. на единичное импульсное воздействие.



Рисунок 2.10.1 Весовая функция.

Определение: Переходной функцией звена (системы) при н.у. называется реакция на единичное ступенчатое воздействие.



Рисунок 2.10.2 Переходная функция.

Рисунок 2.10.3 Пример весовой функции.

Рисунок 2.10.4 Пример перходной функции.

На этом месте можно вспомнить, что преобразование Лапласа это интеграл от 0 до бесконечности по времени (см. предыдущий текст), а импульсное воздействие при таком интегрировании превращается в 1 $L[\delta(t)] =1$ тогда в изображениях получаем что:

$Y(s) =W(s) \cdot \underbrace{X_{имп}(s)}_1 \Rightarrow Y(s) = W(s)$


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

Рисунок 2.10.5 Весовая функция как передаточная в изображениях.

Рисунок 2.10.6 Ступенчатое воздействие.

Для единичного ступенчатого воздействия преобразование Лапласа тоже известно (см. предыдущий текст):

$L[1(t)] = \frac{1}{s}$


тогда в изображениях получаем, что реакция системы $Н(s)$ на ступенчатое воздействие, рассчитывается так:

$Н(s) =W(s) \cdot \underbrace{X_{ступ}(s)}_{1/s} \Rightarrow Н(s) = \frac {W(s)}{s},$


Реакция системы на единичное ступенчатое воздействие рассчитывается обратным преобразованием Лапласа:

$h(t) = L^{-1}\left[\frac{W(s)}{s}\right]$

2.11. Определение переходного процесса в системе (САР) (звене) через весовую и переходную функции. Формула Дюамеля-Карсона


Предположим, что на вход системы поступает произвольное воздействие x(t), заранее известное. Найти реакцию системы y(t), если известны входное воздействие x(t) и весовая функция w(t).



Рисунок 2.11 Демонстрация расчета по формуле Дюамеля-Карсона

Решение.


Представим, что входное воздействие представляет собой последовательность прямоугольных импульсов до времени t и ступеньки высотой x(t) в момент времени t. см.рис. 2.11 Для каждого импульса мы можем записать реакцию системы через весовую функциию:

$Y_k \approx Y_{k-1}+x(t) \cdot w(t-\Delta\tau) \cdot\Delta\tau$

где:
$Y_{k-1} $ значение отклика по завершению предыущего импульса;
$t= k \cdot \Delta\tau$ время завершения текущего импульса;
$w(t-\Delta\tau) $ значение весовой функции в начале текущего импульса.

Тогда для определения занчения отклика в произвольный момент времени необходимо сложить все импульсы и ступенчатое воздействие в момент времени t:

$Y(t) = h(0)x(t)+ \sum_{k=0}^{n}x(k\cdot \Delta\tau)\cdot w(t-k\cdot \Delta\tau) \cdot \Delta\tau;$


Переходя к пределам

$n \to \infty, \Delta\tau \to0$

получаем интеграл:

$y(t) = h(0)x(t)+\int_0^t x(\tau)\cdot w(t-\tau)d\tau$


если перейти от t к бесконечности мы получим формулу интеграла Дюамеля-Карсона, или по другому интеграла свертки который обеспечивает вычисление оригинала функции по произвдению изображения двух функций:

$Y(s) = L[y(t)];\\ W(s) =L[w(t)];\\ X(s) = L[x(t)];\\ если \ \ Y(s) = W(s)\cdot X(s),\ \ то\\ y(t) =\int_0^\infty x(\tau)\cdot w(t-\tau)d\tau $


где $\tau$ вспомогательное время


Для вывода аналогичной зависмости от переходной функции вспомним что изображение весовой и переходной функции связаны соотношением: $H(s) =\frac{W(s)}{s} $ запишем выражение изображения для отклика в операторной форме:


$y(t) = L^{-1} [W(s) \cdot Y(s)]=L^{-1} \left[s \cdot \frac{W(s)}{s} \cdot Y(s) \right] \\ свойства\ \ преобразований \ \ Лапласа \ \ x(t) \to X(s), \ \ \frac {d}{dt}x(t) \to s \cdot X(s)\ \ to \\ y(t)= \frac {d}{dt}L^{-1} \left[ H(s) \cdot Y(s)\right]$


Используя интеграл свертки получаем, что при известной переходной функции (h(t)) и известному входному воздействию х(t) выходное воздействие рассчитывается как:

$y(t) = \frac{d}{dt} \int_0^\infty x(t)\cdot h(t-\tau)d\tau$


2.12. Mетод переменных состояния.


До этого мы рассматривали системы с одной передаточной функцией, но жизнь всегда сложнее и как правило в системах есть несколько передаточных функций несколько входных воздейстий и несколько реакций системы. (см. рис. 2.12.1)



Рисунок 2.12.1 Моногомерная система автоматического управления.

В этом случае наиболее удобной формой пердставления систем для их анализа и расчета оказался метод переменных состояния. Для этого метода, вместо передаточных функций связывающих вход с выходом используются дополнительные переменные состояния, которые описывают систему. В этом случае можно говорить, что состояние системы это та минимальная информация о прошлом, которая необходима для полного описания будущего поведения (т.е. выходов) системы, если поведение ее входов известно. см. рис. 2.12.2


Рисунок 2.12.2 Перменные состояния в многомерной системе.

В методе состояний, производные всех переменных состояния, в общем случае зависит от всех переменных и всех входных воздействия, и могут быть записаны в представленной ниже системы обыкновенных дифференциальных уравнений (ОДУ) первой степени. Эта система уравнений называю системой ОДУ в форме Коши:

$\left \{ \begin{gathered} x_1'(t) = a_{11}\cdot x_1(t)+ a_{12}\cdot x_1(t)+..+a_{1n}\cdot x_n(t)+b_{11}\cdot u_1(t)+..b_{1m}u_m(t)\\ x_2'(t) = a_{21}\cdot x_1(t)+ a_{22}\cdot x_2(t)+..+a_{2n}\cdot x_n(t)+b_{21}\cdot u_1(t)+..b_{2m}u_m(t)\\ ...................................................................\\ x_n'(t) = a_{n1}\cdot x_1(t)+ a_{n2}\cdot x_n(t)+..+a_{nn}\cdot x_n(t)+b_{21}\cdot u_1(t)+..b_{nm}u_m(t)\\ \end{gathered} \right. $


Выход из системы зависит от переменных состояния и, в общем случае от входных воздействий и описывается следующей системой уравнений:

$\left \{ \begin{gathered} y_1(t) = c_{11}\cdot x_1(t)+ c_{12}\cdot x_1(t)+..+c_{1n}\cdot x_n(t)+d_{11}\cdot u_1(t)+..d_{1m}u_m(t)\\ y_2(t) = c_{21}\cdot x_1(t)+ c_{22}\cdot x_2(t)+..+c_{2n}\cdot x_n(t)+d_{21}\cdot u_1(t)+..d_{2m}u_m(t)\\ ...................................................................\\ y_p(t) = c_{p1}\cdot x_1(t)+ c_{p2}\cdot x_n(t)+..+cp_{pn}\cdot x_n(t)+d_{p1}\cdot u_1(t)+..d_{pm}u_m(t)\\ \end{gathered} \right.$


где:
n количество перемнных состояния,
m количество входных воздействий,
p количество выходных переменных;


Данная система уравнений может быть записана в матричной форме:

$\left \{ \begin{gathered} x'= A\cdot x+B\cdot u\\ y= C\cdot x+D\cdot u\ \end{gathered} \right. $


где:
$u=\left[ \begin{gathered} u_1(t)\\ u_2(t)\\ ..\\ u_m(t)\\ \end{gathered} \right]$ вектор входа (или вектор управления);
$x'=\left[ \begin{gathered} x'_1(t)\\ x'_2(t)\\ ..\\ x'_n(t)\\ \end{gathered} \right]$ вектор столбец производных переменных состояния;
$x=\left[ \begin{gathered} x_1(t)\\ x_2(t)\\ ..\\ x_n(t)\\ \end{gathered} \right]$ вектор столбец переменных состояния;
$y=\left[ \begin{gathered} y_1(t)\\ y_2(t)\\ ..\\ y_p(t)\\ \end{gathered} \right]$ вектор выхода;
$А=\left[ \begin{gathered} а_{11} \ \ а_{12} \ \ ... \ \ a_{1n}\\ а_{21} \ \ а_{22} \ \ ... \ \ a_{2n}\\ .. .. .. ........ \\ а_{n1} \ \ а_{n2} \ \ ... \ \ a_{nn}\\ \end{gathered} \right]$ собственная матрица системы [n x n],
$a_{ij} $ постоянные коэффициенты;
$B=\left[ \begin{gathered} b_{11} \ \ b_{12} \ \ ... \ \ b_{1m}\\ b_{21} \ \ b_{22} \ \ ... \ \ b_{2m}\\ .. .. .. ........ \\ b_{n1} \ \ b_{n2} \ \ ... \ \ b_{nm}\\ \end{gathered} \right]$ матрица входа [n x m],
$b_{ij} $ постоянные коэффициенты;
$C=\left[ \begin{gathered} c_{11} \ \ c_{12} \ \ ... \ \ c_{1n}\\ c_{21} \ \ c_{22} \ \ ... \ \ c_{2n}\\ .. .. .. ........ \\ c_{p1} \ \ c_{p2} \ \ ... \ \ c_{pn}\\ \end{gathered} \right]$ матрица выхода а [p x n],
$c_{ij} $ постоянные коэффициенты;
$D=\left[ \begin{gathered} d_{11} \ \ d_{12} \ \ ... \ \ d_{1m}\\ d_{21} \ \ d_{22} \ \ ... \ \ d_{2m}\\ .. .. .. ........ \\ d_{p1} \ \ d_{p2} \ \ ... \ \ d_{pm}\\ \end{gathered} \right]$ матрица обхода [p x m],
$d_{ij} $ постоянные коэффициенты;


В нашем случае почти всегда все элементы матрицы D будут нулевыми: D = 0.


Такое описание системы позволяет с одной стороны стандартным образом описывать различные технические системы. Явная формула для расчета производных позволяет достаточно просто осуществлять численное интегрирование по времени. И это используется в различных программах моделирования


Другое использование данного представления для простых систем, описанных в переменных вход-выход, зачастую позволяет устранить технические трудности, связанные с решением ОДУ высокой степени.

Еще одним преимуществом данного описания, является то, что уравнения в форме Коши можно получить из законов физики


Пример решения задачи в форме коши.


Рассмотрим задачу моделирования гидравлического привода, при следующих условиях:


Дано:
Цилиндрический плунжер диаметром 10 мм, с приведенной массой 100 кг, работает на пружину жесткостью 200 Н/мм и демпфер с коэффициентом вязкого трения 1000 Н/(м/с). Полость начальным объемом 20 см3 соединяется с источником давлния дросселем диаметром диаметр которого 0,2 мм. Коэффициент расхода дросселя 0.62. Плотность рабочей жидкости = 850 кг/м3.
Определить:
Перемещение дросселя, если в источнике давление происходит скачек 200 бар. см. рис. 2.12.13



Рисунок 2.12.3 Гидравлическая система.

Уравенение движение плунжера:

$m \cdot \frac{d^2x}{dt}=p \cdot Ap - c_{pr} - b_{tr} \cdot \frac{dx}{dt}$


Где: $A_p$ площадь плунжера, $c_{pr}$ жесткость пружины, $b_{tr}$ коэффициент вязкого трения, p давление в камере.

Поскольку дифференциальное движения это уравнение второго порядка, превратим его в систему из двух уравнений первого порядка, добавив новую переменную скорость $v = \frac{dx}{dt}v = $, тогда $\frac{d^2x}{dt} = v'$

$$display$$\left \{ \begin{align} x' &= v \\ v' &=\frac{A_p}{m}\cdot p-\frac{c_{pr}}{m}\cdot x-\frac{b_{tr}}{m}\cdot v) \end{align} \right.$$display$$


Уравнение давления в камере, для упрощения принимаем что изменениям объема камеры из-за перемещения плунжера можно пренебречь:

$p'=\frac{E}{V}(Q - A_p \cdot x')$


Где: Q расход в камеру, V объем камеры.

Расход через дроссель:

$Q = \mu\cdot f \sqrt{\frac{2}{\rho}(p_n-p)}$

\Где: f площадь дросселя, $p_n$ давление в источнике, p давление в камере.
Уравнение дросселя не линейное, по условию задачи, давление входное изменяется скачком, от 0 до 200 бар, проведем линеаризацию в окрестности точки давления 100 бар тогда:

$Q_{100} = \mu\cdot f \sqrt{\frac{2}{\rho}(p_{100}-0)} \ \ K_{100} =\frac{Q_{100}}{p_{100}} \\ Q\approx \frac{Q_{100}}{p_{100}}(p_n-p) = K_{100}(p_n-p), \ \ где: K_{100} =\frac{Q_{100}}{p_{100}}$


Подставляем линеаризованную формул расхода в формулу давления:

$p'=\frac{E}{V}(K_{100} (p_n-p)- A_p \cdot v)\\ p' = - \frac{E}{V}A_p \cdot v - \frac{E}{V}K_{100} \cdot p + \frac{E}{V}K_{100} \cdot p_n$


Таким образом общая система уравнений в форме Коши, для рис 2.12.3 привода принимает вид:

$$display$$\left \{ \begin{align} x' &= v \\ v' &=-\frac{c_{pr}}{m}\cdot x-\frac{b_{tr}}{m}\cdot v+\frac{A_p}{m}\cdot p\\ p' &= - \frac{E}{V}A_p \cdot v - \frac{E}{V}K_{100} \cdot p + \frac{E}{V}K_{100} \cdot p_n \end{align} \right.$$display$$


Матрицы A, B, С, В для матричной формы системы уравнений принимают вид:


$$display$$\left \{ \begin{align} x' &= v \\ v' &=-\frac{c_{pr}}{m}\cdot x-\frac{b_{tr}}{m}\cdot v+\frac{A_p}{m}\cdot p\\ p' &= - \frac{E}{V}A_p \cdot v - \frac{E}{V}K_{100} \cdot p + \frac{E}{V}K_{100} \cdot p_n \end{align} \right.\\ A =\left[ \begin{array}{cccc} 0& 1 & 0\\ -\frac{c_{pr}}{m}& -\frac{b_{tr}}{m} &\frac{A_p}{m}\\ 0& - \frac{E}{V}A_p & - \frac{E}{V}K_{100} \end{array} \right]; B = \left[ \begin{array}{cccc} &0 \\ &0\\ & \frac{E}{V}K_{100} \end{array} \right]; C= \left[ 1,0,0 \right]; D =[0].$$display$$


Проверим моделированием в SimInTech составленную модель. На рисунке 2.12.13 представлена расчетная схема содержащая три модели:
1 Честная модель со всеми уравнениями без упрощений.
2 Модель в блоке Переменные состояние (в матричной форме).
3 Модель в динамическом блоке с линеаризованным дросселем.



Рисунок 2.12.4 Расчетная схема .

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



Рисунок 2.12.5 Глобальный скрипт проекта.

Модель на внутреннем языке программирования представлена на рис. 2.12.6. В данной модели используется описание модели в форме Коши. Так же выполняется учет изменения объема дросселя на каждом шаге расчета, за счет перемещения плунжера (Vk = V0+Ap*x.)



Рисунок 2.12.6 Скрипт расчета модели в форме Коши.

Модель в матричном форме задается с использованием глобальных констант в виде формул. (Матрица в SimInTech задается в виде последовательности из ее столбцов) см. рис. 2.12.7



Рисунок 2.12.7 Настройка блока расчета системы уравнений в пременных состояния в матричной форме.

Результаты расчета показывают, что модель в матричной форме и модель на скриптовом языке в форме Коши, практически полностью совпадают, это означает, что учет изменения объема полости практически не влияют на результаты. Кривые 2 и З совпадают.
Процедура линеаризация расхода через дроссель вызывает заметное отличие в результатах. 1-й график c честной моделью дросселя, отличается от графиков 2 и 3. (см. рис. 2.12.8)



Рисунок 2.12.8 Результаты расчета трех моделей гидравлического плунжера.

Сравним полученные модели, с моделью созданной из библиотечных блоков SimInTech, в которых учитываются так же изменение свойств реальной рабочей жидкости масла АМГ-10. Сама модель представлена на рис. 2.12.9, набор графиков на рисунке 2.12.10



Рисунок 2.12.9 Модель демпфера из библиотечных блоков.

Рисунок 2.12.10 Результаты рассчета моделей демпфера. График 4 модель из библиотечных блоков.

На графиках видно, что уточненная модель отличается от предыдущих, однако погрешность модели составлят наших упрощенных моделей составляют примерно 10%, в лишь в некоторые моменты времени.


2.13. Переход от описания переменных вход-выход к переменным состояния и обратно


Рассмотрим несколько вариантов перехода от описания вход-выход, к переменным состояния:

$L(p)\cdot y(t)=N(p)\cdot u(t)$


Вариант прехода зависит от правой части уравнения с переменными вход-выход:


$a_n\cdot y^{(n)}(t)+...+a_1\cdot y'(t)+a_0\cdot y(t)=b_m\cdot u^{(m)}(t)+...b_1\cdot u'(t)+b_0\cdot u(t)$


2.13.1. Правая часть содержит только b0*u(t)


В этом варианте, в уравнениях в правой части отсутствуют члены с производными входной величины u(t). Пример с плунжером выше так же относится к этому варианту.


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

$a_3 \cdot y'''(t)+ a_2 \cdot y''(t)+a_1 \cdot y'(t)+a_0 \cdot y(t) = b_0 \cdot u(t)$


Для перехода к форме Коши ведем новые переменные:

$x_1(t) = y(t);\\ x_2(t) =y'(t) = x_1'(t);\\ x_3(t) = y''(t) =x_2'(t);$

И перепишем уравнение относительно y'''(t):

$ y'''(t) = x_3'=- \frac{a_2}{a_3} \cdot \underbrace{y''(t)}_{x_3} - \frac{a_1}{a_3} \cdot \underbrace{y'(t)}_{x_2} - \frac{a_0}{a_3} \cdot \underbrace{y(t)}_{x_1}+ \frac{b_0}{a_3} \cdot u(t) $


Используя эти переменные можно перейти от дифференциального уравнения 3-го прядка, к системе из 3-х уравнений первого порядка в форме Коши:

$$display$$\left \{ \begin{align} x_1' &= x_2 \\ x_2' &= x_3\\ x_3' &=-\frac{a_0}{a_3}\cdot x_1-\frac{a_{1}}{a_3}\cdot x_2-\frac{a_2}{a_3}\cdot x_3+ \frac{b_0}{a_3}\cdot u(t)\\ \end{align} \right.$$display$$


Соотвественно матрицы для матричного вида уравнений в переменных сосотяния:


$$display$$A =\left[ \begin{array}{cccc} 0& 1 & 0\\ 0& 0 &1\\ -\frac{a_0}{a_3}& -\frac{a_1}{a_3} & -\frac{a_2}{a_3} \end{array} \right]_{[3 \times 3]}; B = \left[ \begin{array} {}&0 \\ &0\\ & \frac{b_0}{a_3} \end{array} \right]_{[3 \times 1]}; C= \left[ 1,0,0 \right]_{[1 \times 3]}; D =[0].$$display$$


2.13.2. Правая часть общего вида


Более сложный случай, когда в уравнениях есть производные от входных воздействий и уравнение в общем случае выглядит так:

$a_n\cdot y^{(n)}(t)+...+a_1\cdot y'(t)+a_0\cdot y(t)=b_m\cdot u^{(m)}(t)+...b_1\cdot u'(t)+b_0\cdot u(t)$


Сделаем преобразования: перейдем к уравнениям динамики в изображениях:

$\left[ \begin{gathered} y(t) \to Y(s)\\ y'(t) \to s \cdot Y(s)\\ y''(t) \to s^2\cdot Y(s)\\ ..\\ y^{n}(t) \to s^{n} \cdot Y(s)\\ \end{gathered} \right] ; \left[ \begin{gathered} u(t) \to U(s)\\ u'(t) \to s \cdot U(s)\\ u''(t) \to s^2\cdot U(s)\\ ..\\ u^{m}(t) \to s^{m} \cdot U(s)\\ \end{gathered} \right]$


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

$L(s) \cdot Y(s) =N(s) \cdot U(s)$

где:

$L(s) = a_n\cdot s^{n}+a_{n-1}\cdot s^{n-1}_....+a_1\cdot s+a_0;\\ N(s)=b_m\cdot s^{m}(t)+b_{m-1}\cdot s^{m-1}+...b_1\cdot s+b_0;$


Разделим уравнение в изображениях на произведение полиномов $L(s) \cdot N(s)$, получим:

$\frac{Y(s)}{N(s)} = \frac{U(s)}{L(s)} =X_1(s)$


Где: $X_1(s) $ некоторая комплексная величина (отношение двух комплексных величин). Можно считать, что $X_1(s) $ отображение величины $x_1(t) \to X_1(s) $. Тогда входная величина может быть в изображениях представлена как:

$\frac{U(s)}{L(s)} = X_1(s) \Rightarrow U(s) = X_1(s) \cdot L(s);$


Вренемся к оригиналу от изображений получим: $u(t) = \alpha (p) x_1(t)$,
где: $\alpha (p) $ дифференциальный оператор.


$u(t) = a_n \cdot\underbrace{ x_1^{(n)}}_{x_n'}+ a_{n-1} \cdot \underbrace{x_1^{(n-1)}}_{x_n}+...+a_2 \cdot \underbrace{ x_1''}_{x_3}+a_1 \cdot \underbrace{x_1'}_{x_2}+ a_0 \cdot x_1$


А это дифференциальное уравнение n-го порядка мы можем преобразовать к системе из n дифференциальных уравнений первого порядка, как это мы делали выше:

$$display$$\left \{ \begin{eqnarray} x_1'&=& x_2\\ x_2'&= &x_3\\ &.....\\ x_n'&=&-\frac{1}{a_n}[a_0 \cdot x_1+a_1 \cdot x_2+a_2\cdot x_3+..+a_{n-1}\cdot x_n]+\frac{u(t)}{a_n} \ \end{eqnarray} \right.$$display$$


Таким образом, мы получили систему уравнение в форе Коши, относительно переменных состояния $X_1$:

$ X_1=\left[ \begin{gathered} x_1(t)\\ x_2(t)\\ ..\\ x_n(t)\\ \end{gathered} \right]$


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

$\frac{Y(s)}{N(s)} = X_1(s) \Rightarrow Y(s) =N(s) \cdot X_1(s);$


Перейдем от изображения к оригиналам:

$y(t)=N(p) \cdot X_1(t)\\ y(t) = b_m \cdot\underbrace{ x_1^{(m)}}_{x_{m+1}}+ b_{m-1} \cdot \underbrace{x_1^{(m-1)}}_{x_m}+...+b_2 \cdot \underbrace{ x_1''}_{x_3}+b_1 \cdot \underbrace{x_1'}_{x_2}+ b_0 \cdot x_1\\ y(t) = b_m \cdot x_{m+1}+ b_{m-1} \cdot x_{m}+...+b_2 \cdot x_3+b_1 \cdot x_1+ b_0 \cdot x_1\\$


Если обозначить вектор $С = [b_{m+1},b_m, ..b_2,b_1,b_0]$, то мы получим уравнения переменных состояниях в матричной форме, где D = 0:

$$display$$\left \{ \begin{eqnarray} x'&=& A\cdot x+B\cdot u\\ y&=& C\cdot x +D \cdot u\end{eqnarray} \right. $$display$$


Пример:



Рисунок 2.13.1 Передаточная функция.


Имеется передаточная функция (рис. 2.13.1) в изображениях :

$W(s) = \frac{s+1}{2 \cdot s^3+s^2+3 \cdot s+1}$

Необходимо преобразовать передаточную функцию к системе уравнений в форме Коши

В изображения реакция системы связана с входным воздействие соотношением:

$Y(s) = W(s) \cdot U(s); \Rightarrow Y(s) = \frac{N(s)}{L(s)} \cdot U(s) \Rightarrow \\ \Rightarrow Y(s) \cdot L(s) = U(s) \cdot N(s)$


Разделим в последнем правую и левую часть на произведения $L(s) \cdot N(s)L $, и введем новую перменную $Х_1$:

$X_1(s) = \frac {Y(s)}{N(s)} = \frac{U(s)}{L(s)} \Rightarrow \\ \Rightarrow U(s) = X_1(s) \cdot L(s)$

Полиномы N(s) и L(s) равны:

$ N(s)= s+1\\ L(s)=2 \cdot s^3+s^2+3 \cdot s+1 \\ \Rightarrow U(s) = X_1(s) \cdot (2 \cdot s^3+s^2+3 \cdot s+1) $


Перейдем в последнем выражении от изображения к оригиналам и ведем новые переменные (состояния):

$u(t) = 2 \cdot \underbrace{x_1'''(t)}_{x'_3} + \underbrace{x_1''(t)}_{x_3} +3 \cdot \underbrace{x_1'(t)}_{x_2}+\underbrace{x_1(t)}_{x_1}$


Переходим от уравнения третьего порядка к системе трех уравнений первого порядкак:

$$display$$\left \{ \begin{eqnarray} x_1'&=&x_2\\ x_2'&=&x_3\\ x_3'&=&- \frac{1}{2} \left[ x_1+3 \cdot x_2+x_3 \right]+\frac {1}{2} \cdot u(t) \end{eqnarray} \right. $$display$$


Или в матричной форме:

$$display$$x' = A \cdot x+ B \cdot u\\ А=\left[ \begin{gathered} 0&\ \ 1&\ \ 0\\ 0&\ \ 0&\ \ 1\\ - \frac{1}{2}& \ \ - \frac{3}{2}& \ \ - \frac{1}{2}\\ \end{gathered} \right]; B = \left[ \begin{gathered} 0 \\ 0\\ \frac{1}{2} \\ \end{gathered} \right];\\ $$display$$


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

$X_1(s) = \frac {Y(s)}{N(s)} = \frac{U(s)}{L(s)} \Rightarrow \\ \Rightarrow Y(s) = X_1(s) \cdot N(s) = X_1(s) \cdot (s+1)$

Перейдем от изображений к оригиналу:

$y(t) = \underbrace {x_1'(t)}_{x_2}+\underbrace {x_1(t)}_{x_1} = x_1(t)+x_2(t)$



Таким образом второе уравнение матричной системы выглядит так:

$y =C \cdot x+ D \cdot u;\\ C=[1 \ \ 1 \ \ 0]; \ \ D = 0;$


Проверим в SimInTech сравнив передаточную функцию и блок переменных состояния, и убедимся, что графики совпадают см. рис. 2.13.2



Рисунок 2.13.2 Сравнение переходного процеса у блока передаточной функции и блока переменных состояния.


Полезные ссылки:


Модель демпфера из лекции можно взять здесь...
Волченко Ю.М. Теоремы операционного исчисления.
Интеграл Дюамеля и физический смысл функции веса
Лекция. Векторно-матричные модели систем управления в непрерывном времени
Л. С. Шихобалов. Учебное пособие МАТРИЦ И ОПРЕДЕЛИТЕЛИ
Характеристическое уравнение матрицы
Подробное описание моделирования гидравлического демпфера.
Подробнее..

Динамика квадро-, гекса- и октокоптеров. Моделирование системы управления

03.11.2020 00:14:12 | Автор: admin
Продолжение статьи "Введение в моделирование динамики квадро-, гекса- и октокоптеров".
В этой части автор Александр Щекатуров, рассказывает основные принципы создания системы управления и ее моделирования в структурном виде. Всем кто одолел первые части лекций по теории управления в технических система, все будет ясно и понятно (ну почти). Лекции на хабре лежат по ссылкам:
1. Введение в теорию автоматического управления.
2. Математическое описание систем автоматического управления 2.1 2.3, 2.3 2.8, 2.9 2.13

В данной статье мы попробуем применить эти данные на практике. Имя модель коптера,
мы разберемся как воздействовать на коптер, что бы он летел в нужную нам сторону.




4 Управление моделью коптера


Всё что было описано в предыдущей части это, по сути, формулировка внутреннего закона полета коптера отвечающего на вопрос как именно объект будет менять свои ускорения, скорости и координаты в зависимости от приложенных сил и моментов. Т.е. мы записали уравнение F(t) = ma(t) (и аналогичное для суммарного момента и углового ускорения) для октокоптера заданной геометрической конструкции. В эти уравнения входят некоторые константы масса коптера, его моменты инерции по главным осям (составляющие тензора инерции), угол отклонения силы тяги ВМГ от вертикали, длины лучей рамы коптера, и некоторые другие массогабаритные характеристики. Как правило, это константы, за редким исключением. Но т.к. задача поставлена в общем виде, мы не подставили ещё конкретных чисел, а все эти величины заменили на символы (символьные константы и/или переменные), и теперь требуется их задать числами для работоспособности модели. Для двигателей это будет коэффициент пропорциональности между квадратом угловой скорости и силой тяги, для массы коптера масса рамы плюс массы всех ВМГ и т.д.


4.1 Переменные проекта сигналы модели


В SimInTech используется плоский неструктурированный список сигналов, и/или структурированная (объектно-ориентированная) база сигналов для задания констант и переменных модели, если в ней есть типовые (повторяющиеся) элементы. В данной модели были и тем и другим способом заведены следующие сигналы (переменные и константы), см. рисунки 13 и 14:



Рисунок 13. Сигналы проекта

Рисунок 14. База сигналов проекта

Среди повторяющихся элементов в коптере явно можно выделить ВМГ они все однотипны и параметризуются одинаковыми (по смыслу) переменными. Также, для регуляторов, которых будет всего 6 (по числу каналов регулирования) тоже можно выделить однотипные элементы. Если это будут ПИД-регуляторы, то коэффициенты пропорциональности P, I, D будут в наличии у каждого из регуляторов, со своим конкретным значением.


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


Рассмотрим немного подробнее параметризацию двигателей (см. рисунок 15). Всего в базе 8 групп сигналов, по 15 сигналов в каждой то есть 120 переменных и констант, описывающих состояние всех двигателей. Важными и задаваемыми пользователем (разработчиком модели) являются wnom, wmin номинальная и минимальная частоты вращения. В дальнейшем эти значения используются в модели двигателя, ограничивая снизу текущую частоту вращения, и для расчета текущих оборотов ВМГ в единицах измерения. Остальные переменные расчитываются в модели и зависят от времени. В эту же категорию можно в дальнейшем добавить и коэффициенты пропорциональности между квадратом угловой скорости и силой тяги ВМГ.



Рисунок 15. Категория Двигатели

4.2 Оптимальное управление


С точки зрения управления коптер представляет собой не самую простую конструкцию мы имеем 8 двигателей, которыми можно управлять индивидуально, но практически каждый из них влияет на все 12 из переменных состояния (фазовых координат) коптера. То есть, если мы будем рулить одним из двигателей менять его обороты в большую или меньшую сторону, это будет оказывать воздействие на каждую из координат x, y, z и на каждую из трёх угловых скоростей. Кроме случаев, когда вектор тяги параллелен какой-либо из координатных плоскостей системы B тогда на 4 из 12 переменных состояния данная сила тяги воздействовать не будет. И, если бы мы делали всё методами классической теории управления, то можно было бы записать 8х12 = 96 передаточных функций между 8 входными воздействиями и 12 выходными (переменными состояния) коптера.


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


Задача оптимального управления заключается в том, чтобы перевести коптер из точки А в точку Б с минимальным перерегулированием, по оптимальной (как правило кратчайшей) траектории и за минимальное время. При этом налагаются ограничения на максимальную скорость, ускорения и углы наклона коптера (отклонение от горизонтальности). Проблема заключается в том, что в прямую сторону можно довольно несложно посчитать как воздействует каждый из двигателей (8 переменных 8 частот вращения) на каждую из 12 переменных состояния. А если учитывать еще и ускорения, то на каждую из 18 переменных. Но в задаче управления требуется наоборот при заданных начальных и конечных координатах требуется вычислить как именно надо управлять двигателями чтобы коптер перешел из одного состояния в другое.


Если не сильно вдаваться в теоретические дебри теории оптимального управления и нелинейного программирования, такую задачу можно свести и решить методом множителей Лагранжа, а точнее условиями и методом Каруша-Куна-Такера, где ограничения, накладываемые на переменные, представляют собой неравенства.


Чтобы упростить изложение, приведем краткий ход решения задачи. Для начала запишем матрицу Г размерностью 6х8 по количеству каналов управления (6) и количеству ВМГ (8), которая будет отображать как именно каждый из двигателей влияет на каждый из каналов управления:

$$display$$Г =\left( \begin{gathered} f1x & f2x & f3x & f4x & f5x & f6x & f7x & f8x \\ f1y & f2y & f3y & f4y & f5y & f6y & f7y & f8y \\ f1z & f2z & f3z & f4z & f5z & f6z & f7z & f8z \\ m1x & m2x & m3x & m4x & m5x & m6x & m7x & m8x \\ m1y & m2y & m3y & m4y & m5y & m6y & m7y & m8y \\ m1z & m2z & m3z & m4z & m5z & m6z & m7z & m8z \\ \end{gathered} \right). $$display$$

$\overrightarrow{f_i(t)} =C_T \cdot \overrightarrow{e_{Mi}} \\ \overrightarrow{m_i(t)} =C_T \cdot \overrightarrow{r_{Mi}} \times \overrightarrow{e_{Mi}}$


Где: fi|x,y,z это коэффициент перед $_{Mi}^2 (t)$ для вычисления силы, которую создаёт i-ая ВМГ в соответствующем направлении, а mi|x,y,z коэффициент перед $_{Mi}^2 (t) $для вычисления момента сил, который создаёт i-ая ВМГ в том же направлении:


Примечание: если у ВМГ будет еще реактивный момент, то у $m_i$ будет еще одно слагаемое.


Легко видеть, что матрица Г показывает зависимость между квадратом угловой скорости i-ой ВМГ и управляющими (силовыми) воздействиями по каждому из каналов управления: $u(t)=Г\cdot _M^2 (t) $. Нам же нужно получить обратное решение зависимость угловой скорости i-ого двигателя от поданного управляющего воздействия по какому-либо из каналов управления. В общем виде эта задача имеет бесконечное множество решений, однако среди этого бесконечного множества можно выделить по тому или иному критерию или способу оптимальное решение.



Рисунок 16. Структура регулятора

Методами теории оптимального управления (подробнее см. [1, раздел 4.1.1]) задача решается поиском так называемой обратной псевдоинверсной матрицы $А^+$, которая вычисляется как: $inline$А^+= Г^Т (Г \cdot Г^Т)^{-1}$inline$. Она же и является оптимальным решением поставленной задачи с наложенными ограничениями на решение.


На практике, для заданной геометрии коптера и полученных 48 чисел в матрице Г, получаем другие 48 чисел, которые определяют правило управления (микширования) двигателей, при поступлении той или иной команды по какому-либо каналу управления. На рисунке 16 представлена общая схема построения регулятора. Задатчик положения вырабатывает нужные координаты, в которые требуется привести коптер. Они сравниваются по какому-то алгоритму с измеренными координатами и управляющий алгоритм вырабатывает 6 управляющих воздействий, по каждому из каналов управления.


На основе посчитанной псевдообратной матрицы $ А^+$, блок управления двигателями вычисляет текущие заданные значения угловых скоростей для каждого из 8 двигателей, как бы суммируя пришедшие 6 команд по каналам управления и определенным образом микшируя двигатели при этом. Сформированные 8 угловых скоростей отправляются на задатчик оборотов двигателей и осуществляется регулирование и управление коптером (см. рисунок 16).


Управляющие команды по каждому из каналов управления формируются как рассогласование между заданной координатой (углом) и текущей, измеренной координатой. Это в самом простом варианте. В более сложном управляющий алгоритм должен иметь в своём составе алгоритм приоритетности стабилизации положения коптера над алгоритмом перемещения в пространстве. Дело в том, что по каждому из каналов есть запас (располагаемая у ВМГ возможность) управления. И, если (например) мы сделаем приоритетным перемещение по оси х то при большом рассогласовании между текущей координатой x и заданной регулятор будет стремиться наклонить всё больше и больше коптер вокруг оси y, и при определенном наклоне уже не хватит возможностей двигателей обеспечивать стабилизацию коптера и регулирование высоты полёта. Для коптера с конкретными параметрами двигателей, винтов, массы и размеров это всё можно вычислить и наложить нужные ограничения на управляющие воздействия ui(t), а также их приоритет. Но это выходит за рамки данной статьи, где мы делаем модель в общем виде. Просто отметим, что стабилизация положения для коптера самая важная задача, перемещение уже вторична, поскольку без стабильного положения переместиться куда-либо целенаправленно будет невозможно.


Выпишем аналитические выражения для элементов первых двух столбцов матрицы Г в случае рассматриваемого октокоптера (без реактивного момента ВМГ и без прецессии!):


$$display$$\begin{gathered} &f1x =&0; \ \ &f2x =&-\frac{1}{\sqrt{2}}C_T \cdot sin(\gamma);\\ &f1y =& -C_T \cdot sin(\gamma); \ \ &f2y =&\frac{1}{\sqrt{2}}C_T \cdot sin(\gamma);\\ &f1z =& -C_T \cdot cos(\gamma); \ \ &f2z =&-C_T \cdot cos(\gamma);\\ &m1x =& 0; \ \ &m2x =&-\frac{1}{\sqrt{2}}C_T \cdot cos(\gamma) \cdot l_2;\\ &m1y =& -C_T \cdot cos(\gamma) \cdot \_1; \ \ &m2y =& \frac{1}{\sqrt{2}}C_T \cdot cos(\gamma) \cdot l_2;\\ &m1z =& -C_T \cdot sin(\gamma) \cdot \_1; \ \ &m2z =&C_T \cdot sin(\gamma) \cdot l_2;\\ \end{gathered}$$display$$


Видно, что первая ВМГ (ось силы тяги которой параллельна плоскости yz) не создаёт никакой силы вдоль оси x и никакого момента вокруг оси x (т.к. пересекает её). Поэтому при управлении по оси x или для создания вращательного момента вокруг оси x первый двигатель бесполезен. Аналогично будет с 5-ым двигателем, а для 3-его и 7-ого будет такая же картина для оси y (всё справедливо в системе координат В).


image

Аналитические выражения для матрицы А^+ будут гораздо более громоздкими и большого смысла не имеют проще вычислить численно матрицу Г, а потом и искомую А^+. В нашем случае для одного из вариантов октокоптера, она получилась равной:

$$display$$A^+ =\left( \begin{gathered} 0&-191.9&-5.029&0&7.112&-67.86 \\ -191.9&191.9&-7.112&-5.029&5.029&67.86 \\ 191.9&0&-5.029&-7.112&0&-67.86 \\ -191.9&-191.9&-7.112&-5.029&-5.029&67.86 \\ 0&191.9&-5.029&0&-7.112&-67.8 \\ -191.9&-191.9&-7.112&5.029&-5.029&67.86 \\ 191.9&0&-5.029&7.112&0&-67.86\\ -191.9&191.9&-7.112&5.029&5.029&67.86\\ \end{gathered} \right).$$display$$


Смысл матрицы примерно в следующем: она показывает на какое количество (рад/с)^2 надо изменить частоту вращения каждой i-ой ВМГ (из 8), чтобы осуществить единичное управляющее воздействие на объект по тому или иному каналу управления. Например, если мы хотим к коптеру приложить силу 1 Н по каналу управления x (первая колонка), то угловую скорость 1-го двигателя и 5-го менять не надо, а к текущим угловым скоростям других двигателей надо добавить или отнять примерно 13,8 рад/с. Это довольно приличное изменение угловой скорости, и вообще управляемость по каналам x, y появилась здесь как побочное следствие того, что каждая из ВМГ повёрнута вокруг своего луча еще на 3 градуса.


Если бы все ВМГ были расположены вертикально, то первые две колонки матрицы А^+ получились бы бесконечными т.е. коптер с вертикально расположенными ВМГ по горизонтальным осям не управляется вообще! Управление по этим осям (в инерциальном пространстве) достигается поворотом коптера вокруг осей и перенаправлением суммарного вектора тяги в какую-либо сторону.


Третья колонка управление по оси z, имеет отрицательные числа т.к. ось z направлена вниз, а вектора силы тяги ВМГ вверх. Обратим внимание, что абсолютные значения чисел третьей колонки гораздо меньше, чем первой и второй и все имеют один и тот же знак. Это означает что коптер имеет гораздо лучшую управляемость по вертикальной оси, что очевидно, т.к. все ВМГ как раз и работают практически в эту сторону (а не влево-вправо-вперёд-назад). Четвёртая колонка и пятая это управляемость коптера по крену и тангажу, последняя шестая по курсу. Видно, что по курсу коптер гораздо слабее управляем, чем по крену и тангажу. Но для наших целей, и для целей настоящей обучающей статьи, этого было достаточно. Подбором направлений сил тяги ВМГ (и перевычислением матриц для новой геометрии) можно этот баланс менять.


Обратим также внимание на то, что теоретически при вычисленном и приведенном здесь количественно микшировании двигателей, достигается только управление по выбранному каналу, без влияния на другие каналы управления. Т.е. при выбранном расположении ВМГ у октокоптера, в некоторых малых пределах можно изменять направление вектора тяги, без создания поворотных моментов т.е. не наклоняя сам коптер, и он будет горизонтально лететь и управляться без наклонов. Но только в очень узком диапазоне скоростей и внешних возмущений.


Общая структура регулятора приведена на рисунках 17 и 18.



Рисунок 17. Общая схема регулятора

Рисунок 18. Схема каналов регулятора

В самом простейшем случае на 6 входов регулятора поступают заданные фазовые координаты, они сравниваются с текущими (измеренными) и в общем случае в соответствии с матрицей А^+ и ПИД-регулированием по каждому из каналов, вырабатывается 6 управляющих векторов, по 8 переменных в каждом, которые суммируются и получаем итоговый вектор управления с заданными угловыми скоростями для каждого из двигателей. На практике, не всё так просто


4.3 Регулятор высоты


Регулятор высоты можно выделить отдельно от других, поскольку он задействует примерно одинаково все двигатели, и даже без матриц Г и А^+ понятно: для того чтобы коптер летел вверх, надо увеличивать газ, а чтобы вниз уменьшать обороты ВМГ. В качестве простейшего регулятора высоты можно взять обычный ПИД-регулятор, который справится с управлением при верно подобранных коэффициентах. На рисунке 19 показан один из вариантов регулятора, с доработкой ограничения вертикальной скорости, если текущая позиция отличается от заданной более чем на 5 метров.



Рисунок 18. Регулятор высоты, один из вариантов

В чем основная идея регулятора: на вход подается текущая величина рассогласования между заданной высотой и измеренной высотой, подаётся текущая вертикальная скорость и ограничение на вертикальную скорость. Если рассогласование больше 5 метров, то регулятор работает в режиме ограничения скорости и стремится к тому, чтобы вертикальная скорость vz стала равной +OGRV м/с или -OGRV м/с в зависимости от направления полёта. Если рассогласование менее 5 м, то регулятор стремится к нулевой скорости полёта и сведению в ноль рассогласования по высоте.


Выходной сигнал регулятора подается с коэффициентами матрицы $А^+$ (согласно третьей колонке) на каждый из 8 двигателей.


4.4 Регулятор ориентации коптера


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


В стабильном состоянии по каждой из осей $x_B$ и $y_B$ угол наклона должен быть нулевым, угловая скорость должна быть нулевой, и приложенный момент сил тоже должен быть нулевым. Регулятор ориентации должен быть достаточно быстродействующим чтобы успевать парировать внешние возмущающие моменты и не давать коптеру сильно отклоняться от нулевой позиции, т.к. любой наклон коптера приводит к уменьшению вертикальной составляющей силы тяги и к уводу коптера в соответствующую сторону вбок.


Для сведения к нулю трёх составляющих угла, скорости и момента они должны быть входными сигналами в регулятор. Один из вариантов представлен на рисунке 19. Заданное значение равно нулю, и в стабильном состоянии выходной сигнал сумматора будет равен нулю. Если появляется какое-то ненулевой состояние, то выход регулятора будет также отличен от нуля, далее он домножается на вектор, равный 4-ой колонке псевдообратной матрицы А^+, представленной выше и формируется вектор усилий на 8 ВМГ, который должен компенсировать возникший дисбаланс поворота вокруг оси $x_B$.



Рисунок 19. Регулятор крена

Рисунок 20. Коэффициенты блока типа Размножитель в регуляторе крена

Аналогично выполнен и регулятор по каналу тангажа (представлен на рисунке 21).



Рисунок 21. Регулятор тангажа

Рисунок 22. Коэффициенты блока типа Размножитель в регуляторе тангажа

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


4.5 Регулятор положения коптера в пространстве


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


Во-первых, они работают в системе координат В, а в общем случае коптер вращается в пространстве (по курсу) и направления осей x и y системы В не совпадают с такими же осями в системе I. Поэтому рассогласование его позиции в системе I надо переводить в систему В и дополнительно подготавливать задание на регулятор положения по осям x и y.


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


В-третьих, у классического коптера с винтами, расположенными в одной плоскости и параллельными силами тяги, направленными вверх, практически нет возможности создавать боковую силу тяги т.е. по существу, коптер является неуправляемым по осям X и Y. В нашем варианте, когда винты довернуты еще на 3 градуса вокруг своих лучей, у них появляется небольшая сила тяги направленная в стороны, и микшированием двигателей можно создавать боковую силу тяги. Однако, она очень несущественна, почти нулевая об этом свидетельствуют большие числа в 1 и 2 колонках матрицы А+ для того, чтобы создать силу тяги величиной 1Н в сторону, нужно изменить частоту вращения двигателей почти на 15 рад/с (квадрат частоты вращения на 191 (1/с)2). С точки зрения управления, это слишком большая величина. Поэтому коптеры управляются по направлениям X и Y при помощи других каналов управления поворачиваясь вокруг осей X и Y (об этом напишем дальше).


Но структурно если делать регулятор по каналам Х и Y типовым образом, регулятор может быть выполнен аналогично регуляторам ориентации на выходе формируется управляющее воздействие по каналу X (Y) и домножается на вектор 1 (или 2) колонку матрицы $А^+$, а полученные 8 сигналов подаются на ВМГ.


Один из вариантов регулятора по каналу X и Y представлены на рисунке 23 и 24.



Рисунок 23. Регулятор по каналу Х

Рисунок 24. Регулятор по каналу Y

Регуляторы двухрежимные, при отклонении от заданной позиции более чем на 5 метров, переключаются в режим работы V и поддерживают скорость по направлению на уровне REGX_OGRV (или REGY_OGRV) м/с. При этом, интегрирующая ветка регулятора отключается. При переходе в режим позиции, интегрирующая ветка включается в работу с некоторой задержкой чтобы коптер успел подлететь к заданной точке и не набралась существенная величина на интеграторе за время подлета.


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


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


В сумме, на выходе всех 6 каналов управления (по курсу регулятор во многом аналогичен регуляторам ориентации и для сокращения материала не приводим его здесь) мы имеем по каналу регулятора высоты некоторую базовую желаемую частоту вращения для каждой из 8 ВМГ, и некоторую добавку, сформированную остальными 5-ю каналами управления. Единственный нюанс микшированные добавки, т.к. это не прямая добавка к частоте вращения, а добавка к квадрату частоты вращения, и для того чтобы вычислить добавку именно к частоте вращения, надо еще дополнительно проделать несложные математические вычисления, см. рисунок 25:



Рисунок 25. Суммирование каналов управления

Сложность вычисления в том, что добавка частоты вращения зависит и от нужного квадрата добавки, и от самой базовой частоты вращения и чтобы вычислить итоговую частоту вращения как сумму базовой и добавки надо предварительно сделать еще ряд вычислений:

$\omega_i = \omega_{ibase} + \Delta \omega_i \\ \Delta \omega_i = \sqrt{(\Delta \omega_i)^2+(\omega_{ibase})^2} - \sqrt{(\omega_{ibase})^2}$


где квадраты скоростей это сигналы, выходы каналов управления.


Таким образом, в зависимости от текущего уровня базовой частоты вращения (которая определяется в основном массой коптера и, возможно, груза и получается на выходе из регулятора высоты), определяется нужная добавка угловой скорости для каждой из ВМГ, суммируется с базовой частотой вращения и отправляется как задатчик на регулятор двигателя каждой из ВМГ.


4.6 Регулятор положения коптера в пространстве по каналам крена и тангажа


Опишем кратко подход, который используется для формирования задания по крену и тангажу для того, чтобы коптер летел в заданном направлении. Для простоты, предположим что курс коптера нулевой (угол равен нулю всегда), тогда для того чтобы коптер двигался вдоль оси X, требуется изменить его угол тангажа , а для того чтобы он двигался вдоль оси Y, требуется изменить угол крена.


Путем несложных выкладок, можно получить следующие формулы для вычисления угла наклона:

$\phi_{звд} = arcsin(y_{задI}); \\ \theta_{зад} = arcsin(\frac{x_{задI}}{cos(\phi_{зад})})$


где $y_{задI}$ и $x_{задI}$ рассогласования заданных значений координат и измеренных в инерциальной системе отсчета, а выражения под арксинусом дополнительно ограничиваются некоторой величиной (полученной исходя из запасов управляемости коптера по крену и тангажу), например, диапазоном $\left[ -\frac{\pi}{16};+\frac{\pi}{16}\right]$ .


Если такие величины подать вместо нулевого значения на вход регуляторам крена и тангажа, то регулятор будет дополнительно доворачивать коптер на небольшой угол, для полета вдоль своих осей X и Y. Если учитывать еще и возможность изменения курса, то формулы получатся посложнее, но смысл управления будет тем же самым. Реализация такого управления показана на рисунке 26.



Рисунок 26. Формирование задания на крен и тангаж
Модель коптера можно взять по этой ссылке здесь...:
Видео модели коптера можно посмотреть здесь

Список литературы


  1. Первая часть. Введение в моделирование динамики квадро-, гекса- и октокоптеров
  2. Design, Modeling and Control of an Octocopter, Oscar Oscarson, Royal Institute of Technology 2015
  3. Development, Modelling and Control of a Multirotor Vehicle, Markus Mikkelsen, Ume University 2015.
Подробнее..

3. Частотные характеристики систем автоматического управления. ч. 3.3 Апериодическое звено 1го порядка

25.01.2021 00:11:48 | Автор: admin

3.3. Апериодическое звено 1го порядка (инерционное звено)

Вывод свойств(характеристик) апериодического звена сделаем на примере фрагмента (части) ядерного реактора, а именно входной камеры смешения.

Рисунок 3.3.1 Расчетная схема камеры смешенияРисунок 3.3.1 Расчетная схема камеры смешения

Сделаем следующие допущения:

  1. расход теплоносителя постоянен: G = const;

  2. теплоемкость теплоносителя C_p = const;

  3. входящий в камеру смешения теплоноситель полностью перемешивается в камере смешения, т.е. температура жидкости, поступающей в каждый тепловыделяющий канал, одинакова;

  4. теплообмен камеры смешения с окружающей средой пренебрежимо мал.

Уравнение теплового баланса:

\rho \cdot C_p \cdot V \cdot \frac{dT(t)}{dt} = G \cdot C_p \cdot \left[T_{ВХ}(t) -T_{ВХ}(t) \right] \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \mathbf{(3.3.1)}

где: \rho - плотность теплоносителя, кг/м^3
C_p удельная теплоемкость, Дж/(кг \cdot K)
V объем камеры смешения, м^3 ;
G расход теплоносителя, кг/с ;
T_{ВХ}(t), T_{ВХ}(t) температура теплоносителя на входе и выходе, K соответственно;
T(t) температура (перемешанного) теплоносителя в камере смешения T(t) T_{ВХ}(t) .

Условие стационара когда левая часть уравнения равна нулю:

\frac{dT(t)}{dt} =0 \Rightarrow T_{ВХ}=T_{ВХ} =T_0 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \mathbf{(3.3.2)}

Введем новые переменные:

\tilde{T}_{ВХ} = \frac{T_{ВХ}(t)-{T}_{ВХ}(0)}{{T}_{ВХ}(0)}=\frac{T_{ВХ}(t)-T_0}{T_0}; \Rightarrow T_{ВХ}(t)= T_0 \left[1+ \tilde{T}_{ВХ}\right];\\ \tilde{T}=\tilde{T}_{ВХ} = \frac{T_{ВХ}(t)-{T}_{0}}{{T}_{0}}; \Rightarrow T_{ВХ}(t)= T_0 \left[1+ \tilde{T}_{ВХ}\right]=T(t);

Подставляя эти соотношения в (3.3.1), получаем:

\rho \cdot C_p \cdot V \cdot T_0 \cdot \frac{d\tilde{T} }{dt} = G \cdot C_P \left[ T_0+T_0 \cdot \tilde{T}_{ВХ}(t) - T_0 - T_0 \cdot \tilde{T}(t)\right] = \\ =G \cdot C_P \cdot T_0 \left[ \tilde{T}_{ВХ} - \tilde{T}(t)\right];

Сокращая на T_0 и C_p , получаем:

\rho \cdot V \cdot \frac{d\tilde{T} }{dt} = G \cdot \left[ \tilde{T}_{ВХ}(t) - \tilde{T}(t)\right] \Rightarrow \\ \frac{\rho \cdot V}{G} \cdot \frac{d\tilde{T} }{dt}+ \tilde{T}(t) = \tilde{T}_{ВХ}(t)

Введем новую переменную \tau - постоянная времени:

\tau = \frac{\rho \cdot V}{G}\tau \cdot \frac{d\tilde{T}(t)}{dt} +\tilde{T}(t) = \tilde{T}_{ВХ}(t) \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \mathbf{(3.3.3)}

Таким образом получили линейное дифференциальное уравнение, причем переменные {T}_{ВХ}(t) и \tilde{T}(t) - нормализованные, что обеспечивает равенство их нулю при t 0

\tau постоянная времени;
\frac{d\tilde{T}(t)}{dt} аналог y(t);
\tilde{T}(t) аналог y(t);
\tilde{T}_{ВХ}(t) аналог x(t);

Уравнение (3.3.3) соответствует типовому апериодическому звену 1-го порядка, в котором коэффициент K = 1. В общем случае уравнение динамики апериодического звена 1-го порядка имеет вид:

T \cdot y'(t)+y(t) = K \cdot x(t) \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \mathbf{(3.3.4)}

Если начальные условия нулевые, томожно перевести в изображения:

y(t) \rightarrow Y(s) \\ y'(t) \rightarrow s \cdot Y(s) \\ x(t) \rightarrow X(s)

Уравнение динамики в изображениях:

 [ T \cdot s +1 ] \cdot Y(s) = K \cdot X(s) \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \mathbf{(3.3.5)}

Уравнение динамики в изображениях:

W(s) = \frac{Y(s)}{X(s)} = \frac{K}{T \cdot s+1}\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \mathbf{(3.3.6)}

Найдем выражение для АФЧХ:

s = i \cdot \omega \Rightarrow W(i \cdot \omega) = W(s)\mid_{s = i \cdot w} = \frac{K}{T \cdot i \cdot \omega+1} \ \ \ \ \ \ \mathbf{(3.3.7)}

Умножим на комплексно сопряженное значение (1 - i \cdot T \cdot \omega) :

W(i \cdot \omega) =\frac{K \cdot(1- i\cdot T \cdot \omega)} {(1+ i \cdot T \cdot \omega)(1 - i \cdot T \cdot \omega)} = \underbrace {\frac{K}{1+T^2 \cdot \omega^2}}_{Re =u(\omega)} - i \cdot \underbrace {\frac{K\cdot T \cdot \omega}{1+T^2 \cdot \omega^2}}_{Im =v(\omega)}\Rightarrow u(\omega) = \frac{K}{1+T^2 \cdot \omega ^2} \ \ \ \ \ \mathbf{(3.3.8.a)}\\ v(\omega)= -\frac{K \cdot T \cdot \omega}{1+ T^2 \cdot \omega^2}\ \ \ \ \ \mathbf{(3.3.8.b)}

Анализируя поведениеu()иv()при \omega \rightarrow 0 и при \omega \rightarrow \infty , получаем:

\omega \rightarrow 0 \Rightarrow \left \{ \begin{gathered} u(\omega) \rightarrow K \\ v(\omega) \rightarrow 0\ \end{gathered} \right.\omega \rightarrow \infty \Rightarrow \left \{ \begin{gathered} u(\omega) \rightarrow 0 \\ v(\omega) \rightarrow 0\ \end{gathered} \right.

Подставляя в формулы (3.3.8) различные значения частоты , найдем соответствующие значенияu() иv(). Построим эти вектора на комплексной плоскости:

Рисунок 3.3.2 Годограф АФЧХ апериодического звена 1-го порядкаРисунок 3.3.2 Годограф АФЧХ апериодического звена 1-го порядка

Анализ показывает, что годограф АФЧХ полукруг радиусомK/2. Формулы для дейстивительной части вектора u(\omega) и мнимой части вектораv(\omega), позволяют вычислить частоту, на которой вектор находится в нижней точке окружности \omega_3 (см. рис. 3.3.2).

\omega_3 = \frac{1}{T} \Rightarrow \left \{ \begin{gathered} u(\omega_3) = \frac{K}{2} \\ v(\omega_3) = - \frac{K}{2} \ \end{gathered} \right.

Угол сдвига фазы при данной частоте: \phi_3 = \phi(\omega_3)=\frac{\pi}{2}

Найдем зависимость амплитуды от частоты:

A(\omega) = \sqrt{ \left( \frac{K}{1+T^2 \cdot \omega^2} \right)^2+\left( \frac{K\cdot T \cdot \omega}{1+T^2 \cdot \omega^2} \right)^2} = \frac{K}{\sqrt{1+T^2\cdot \omega^2}}\ \ \ \ \mathbf{(3.3.9)}

Учитывая, что годограф АФЧХ находится вIV-ой квадранте:

\phi(\omega)= - arctg \frac{v(\omega)}{u(\omega)} =-arctg\frac{K \cdot T\cdot \omega \cdot(1+T^2\cdot \omega^2)}{K \cdot(1+T^2 \cdot \omega^2)} \Rightarrow\\\phi(\omega) =-arctg(T \cdot\omega) \ \ \ \ \ \ \ \ \ \ \ \ \mathbf{(3.3.10)} Рисунок 3.3.3 АЧХ апериодического звена 1-го порядкаРисунок 3.3.3 АЧХ апериодического звена 1-го порядкаРисунок 3.3.4 ФЧХ апериодического звена 1-го порядкаРисунок 3.3.4 ФЧХ апериодического звена 1-го порядка

Логарифмическая амплитудная характеристика (ЛАХ) и фазочастотная характеристика (ФЧХ).

Lm(\omega) = 20\cdot lg (A(\omega))=20 \cdot lg \frac{K}{\sqrt{1+T^2\cdot \omega^2}} \Rightarrow \\Lm(\omega)=20\cdot lg(K) - 20 \cdot lg \sqrt{1+T^2 \cdot \omega^2} \ \ \ \ \ \ \ \ \ \ \ \ \ \mathbf{3.3.11}Рисунок 3.3.5 ЛАХ и ЛФЧХ апериодического звена 1-го порядкаРисунок 3.3.5 ЛАХ и ЛФЧХ апериодического звена 1-го порядка

Анализируя частотные свойства данного звена, видим, что

  1. при << \frac{1}{T} свойства звена приблизительно совпадают со свойствами идеального усилительного звена, т.е.W(i\cdot \omega) \ \approx K \Rightarrow W(s) \approx K K=> W(s) K.

  2. при >>\frac{1}{T}свойства звена приблизительно совпадают со свойствами идеального интегрирующего звена, т.е.W(i\cdot \omega) \ \approx \frac{K}{i \cdot \omega \cdot T} \Rightarrow W(s) \approx \frac{K}{T \cdot s}.

  3. при \approx \frac{1}{T} на свойства звена оказывают примерно равное влияние свойства идеального усилительного и идеального интегрирующего звена.

Принято называть частоту, при которой происходит излом ЛАХ

\omega_{сопр} = \frac{1}{T}сопрягающей частотой,

причем не трудно показать, что присопр величина амплитуды А(сопр) меньше амплитуды при нулевой частоте A(0) = Kв\sqrt{2}раз:

A(\omega_{сопр}) = \frac{K}{\sqrt{2}}

Частотой срезасрназывают такое значение частоты, при которой модуль (амплитуда) выходного сигнала (воздействия) равна 1.

A(\omega_{ср})=\frac{K}{\sqrt{1+T^2 \cdot \omega_{ср} ^2}}=1 \Rightarrow\\ \omega_{ср} =\frac{\sqrt{K^2-1}}{T}

ЕслиK>>1 , то частота среза  \omega_{ср} = \frac{K}{T}

Если K<1 , то частоты среза не существует !

Найдем переходную функцию звена (реакция на единичное ступенчатое воздействие):

h(t) = L^{-1} \left[ H(s)\right] = L^{-1} \left[ \frac{ W(s)}{h}\right] = L^{-1} \left[ \frac{K}{s \cdot (T\cdot s+1)}\right]

Используя обратное преобразования Лапласа (см. пример в разделе 2) получим:

h(t) = K \cdot \left[ 1- e^{-\frac{t}{T}}\right]

Тогда, дифференцируя по времени, получаем весовую функцию(t):

w(t) = \frac{K}{T} \cdot e^{-t/T} \cdot1(t)

Множитель 1(t) обеспечивает равенство нулю приt 0

Рис.3.3.6 Переходная функция апериодического звена 1-го порядкаРис.3.3.6 Переходная функция апериодического звена 1-го порядкаРис.3.3.7 Весовая функция апериодического звена 1-го порядкаРис.3.3.7 Весовая функция апериодического звена 1-го порядка

Постоянная времени Т характеризует инерционность переходных процессов в звене. Чем больше Т, тем инерционнее звено (т.е. медленнее идет переходной процесс).

Примерами апериодического звена 1- го порядка являются:

1) пассивныеRLилиRCцепочки (см. рисунок 3.3.8);

Рисунок 3.3.8 Примеры апериодических звеньев 1-го порядкаРисунок 3.3.8 Примеры апериодических звеньев 1-го порядка

2) упрощенная модель гидротурбины, гдеx(t) - приводной момент;y(t) скорость вращения ротора турбины;

3) электродвигатель (постоянного тока или асинхронный) с учетом инерционности якоря (ротора), гдеx(t) напряжение в обмотке возбуждения, аy(t) скорость вращения якоря (ротора) выходного вала;

4) тепловые датчики, например, термопара, где:x(t) температура одного (горячего) спая, аy(t) термо Э.Д.С.

5) выходная камера смешения в реакторе (приближенно)

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

c \frac{dT(t)}{dt} = N_{out}(t)-\alpha_{v}[T(t)-T_*]

где: T(t) температура топлива;

\alpha_v объемный коэффициент теплоотдачи;

N_{out} выделяющаяся энергия;

T_* температура кипения теплоносителя.

Пример

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

Рассмотрим расчет характеристик камеры смешения, в которую подается вода при температуре 20 С и атмосферном давлении.

В качестве единичного воздействия будем считать изменение температуры на 1 C.

Свойства воды при 20 градусах и атмосферном давлении:

  • теплоёмкость:C_p= 4183 \frac{Дж}{кг \cdot град} ;

  • плотность:\rho = 998.2 \frac{кг}{м^3} .

Параметры системы:

  • объем камеры смешения:V= 0.1 м^3 ;

  • массовый расход воды: G = 50 \frac{кг}{с} .

Решим задачу в двух приближениях:

  • В первом случае используем стандартный блок Инерционное звено первого порядка, который есть в любой системе структурного моделирования, и модель общего вида.

  • Во втором воспользуемся расчетным тепло-гидравлическим кодом НS, который используется для создания профессиональных моделей в атомной отрасли.

Параметры блока Инерционное звено первого порядка задаем с помощью скриптового языка при инициализации проекта, где рассчитывается постоянная времени. (см. рис. 3.3.9). В качестве входного воздействия задаем ступеньку на пятой секунде расчета величиной 0.05, что соответствует повышению на 1 C от начальных 20 C .

На схеме присутствует также блок Построение частотных характеристик, обеспечивающий расчет ЛАХ и ФЧХ в заданном диапазоне 0.1 1000 1/с.

Расчетная схема и результаты расчета приведены на рисунке 3.3.9:

Рисунок 3.3.9 Частотный анализ модели камеры смешения в виде стандартного апериодического звенаРисунок 3.3.9 Частотный анализ модели камеры смешения в виде стандартного апериодического звена

Видно, что расчетные характеристики в модели совпадают с теоретическими:

1)Постоянная времениT= 1.996

2)Сопрягающая частотаwсп= 1/T= 0,5009

Годограф звена, построенный с помощью Гармонического анализатора, представлен на рисунке 3.3.10, Видно, что получена полуокружность с центром в точке(0, 0.5) и диаметром К = 1, как и предсказано в теоретической части.

Рисунок 3.3.10 Годограф модели камеры смешения в виде Инерционного звена первого порядка.Рисунок 3.3.10 Годограф модели камеры смешения в виде Инерционного звена первого порядка.

Второй вариант модели в камере смешения моделируется с помощью тепло-гидравлическогорасчетного кода - НS. Данный код входит в состав Среды динамического моделирования технических системSimTech. В коде решается более подробная система уравнений теплофизики, описание можно посмотреть здесь. Модель камеры смешения будет состоять из 4 элементов:

  1. Блок Подпитка обеспечивает подачу теплоносителя с заданными параметрами и заданным расходом. В нашем случае это вода при атмосферном давлении и температурой 20 C.

  2. Блок Внутренний узел (Node_1), - модель камеры смешения.

  3. Блок Канал общего вида моделирует обобщенно каналы отвода теплоносителя от камеры смешения (состоит из 10 участков).

  4. Блок Граничный узел задает температуру и давление на выходе из каналов. В нашем случае атмосферное давление и температуру.

Общий вид модели приведен на рисунке 3.3.11 Цветовая шкала показывает распределение давления в канале, который идет после камеры смешения. Исходя из уравнений физики, система рассчитывает перепад давления, соответствующий заданному расходу по каналу (50 кг/с) с учетом его геометрии, свойств жидкости, шероховатости и т.п.

Рисунок 3.3.11 Модель камеры смешения в коде НS.Рисунок 3.3.11 Модель камеры смешения в коде НS.

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

Рисунок 3.3.12 Температура в узле в начальный период расчета.Рисунок 3.3.12 Температура в узле в начальный период расчета.

Все дело в том, что система у нас динамическая, и распределение расхода и температур по узлам модели в начале расчёта не соответствует стационарному состоянию. И некоторое время происходят колебания расходов и, соответственно, температур до достижения равновесия.

Чтобы в расчётах не учитывать данные колебания, и не заставлять пользователя задавать вручную состояние каждой точки системы, используется специальный инструмент Файл рестарта. В этот файл сохраняются состояния системы в конце расчета или с заданным шагом.И эти состояния можно загрузить при старте системы. Если сохранить состояние системы, находящейся в стационаре один раз, то потом можно использовать его для начала расчёта, тем самым избегая колебаний системы. Для этого необходимо:

  1. В настройках проекта задать имя файла, в который мы хотим сохранить стационарное состояние в конце расчета.

  2. В следующих расчетах указать этот файл как начальное состояние при старте нового расчета, и изменить в нем модельное время на 0 (см. рис. 3.3.13).

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

Рисунок 3.3.13 Настройка файлов рестартов.Рисунок 3.3.13 Настройка файлов рестартов.

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

Для того, чтобы сравнить модель в виде динамического звена и модель в тепло-гидравлическом коде, сделаем пакет из двух проектов:

  • гидравлическая модель в коде НS;

  • модель виде одного звена.

Обмен данными будет идти через базу данных сигналов. Передадим результаты расчета из гидравлического кода в модель с одним звеном и выполним сравнение результатов. Вид пакета представлен на рисунке 6.

В главном скрипте гидравлической схемы пропишем переменнуюT_input температуру на входе в камеру, на 5 секунде расчёта увеличим эту температуру на C. А температуру в узле будем записывать в базу данных сигналов в категориюnodе_HS, переменнаяT_out.

В модели общего вида прочитаем значение сигнала в базе данныхnodе_HS_T_out.

Сравним с выходом из апериодического звена (модель камеры смешения) и выведем на один график.

Рисунок 3.3.13 Пакет для сравнения моделей узла смешения.Рисунок 3.3.13 Пакет для сравнения моделей узла смешения.

Результаты совместного расчета представлены на рисунке 3.3.14

Если на общем графике в масштабе 20 21 C графики практически совпадают, то анализ графика сравнения показывает наличие расхождения в момент ступенчатого изменения температуры. Причем максимальное расхождение 0.0085 C отмечено именно в момент переключения, а потом происходит выравнивание температуры (см. рис. 3.3.14).

Рисунок 3.3.14 Сравнение переходного процесса для разных моделей камеры смешения.Рисунок 3.3.14 Сравнение переходного процесса для разных моделей камеры смешения.

Разница связанна как раз с более сложной и детализированной моделью в тепло-гидравлическом коде НS. Дело в том, что в реальности и плотность и теплоёмкость воды не являются постоянными, а зависят от параметров давления и температуры, и даже изменение температуры на один градус ведет к изменению подведения.

Если в масштабе посмотреть на поведение давления в камере смешения и расхода из нее, мы увидим, что несмотря на то, что расход в камеру задавался постоянным, увеличение температуры скачком привело к возникновению колебательного процесса в давлении и массовом расходе из камеры (см. рис. 3.3.15).

Рисунок 3.3.15 Колебания давления и расхода при ступенчатом изменении температуры.Рисунок 3.3.15 Колебания давления и расхода при ступенчатом изменении температуры.

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

Проведем исследования с помощью блока "Гармонический анализатор". Создадим пакет проектов, состоящий из:

  1. тепло-гидравлической модели (см. рис. 3.3.11);

  2. модели частотного анализа. (см. рис. 3.3.16).

Рисунок 3.3.16 Модель частотного анализа внешней системы.Рисунок 3.3.16 Модель частотного анализа внешней системы.

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

Особенностью данной модели является то, что в начале расчёта на низких частотах нам нужен большой шаг интегрирования, чтобы считать медленный процессы быстрее. В начале анализа у нас частота 0.001 Гц.

А в конце процесса частота 1000 Гц, и нам нужно сократить шаг интегрирования, чтобы получить достаточное количество точек в синусоидальном сигнале при высокой частоте.

Поэтому в базу данных записывается не только тестовое воздействие, но и текущая частота (см. рис. 3.3.17).Это позволяет при увеличении частоты воздействия уменьшить минимальный шаг расчета тепло-гидравлической схемы.Скрипт модели приведен на рисунке 3.3.17.

Рисунок 3.3.17 Скрипт гидравлической модели.Рисунок 3.3.17 Скрипт гидравлической модели.

Как работает этот скрипт?

Начальное значение температуры 20 C.

Если частота воздействия больше 100, то минимальный шаг модели 0.00001, иначе (при частоте воздействия меньше 100) минимальный шаг модели 0.0001.

Температура в блоке подпиткиT_inputрассчитывается как сумма начальной температуры 20C и величины воздействияnode_inputиз базы данных сигналов, которое формирует блок гармонического анализатора в диапазоне -1 +1 C.

Температура в узле передаётся в базу данных для гармонического анализатора.

Результат длительного расчёта представлен на рисунке 3.3.18.

Рисунок 3.3.18. Результаты анализа частотного анализа гидравлической модели. Рисунок 3.3.18. Результаты анализа частотного анализа гидравлической модели.

Мы видим, что несмотря на различия в математических моделях, частотные характеристики камеры смешения в тепло-гидравлическом коде отлично совпадают в диапазоне частот 0.001 до 50 Гц. Сравни с рисунком 3.3.9

Однако на частотах выше 70 ФЧХ ведет себя не так, как в идеальном апериодическом звене. Если открыть график давления в камере смешения и график массового расхода в канале, можно наблюдать увеличение амплитуды колебаний с ростом частоты воздействия (см. рис. 3.3.19).

Рисунок 3.3.19 Давление в узле и расход в выходном канале с ростом частоты воздействия по температуре.Рисунок 3.3.19 Давление в узле и расход в выходном канале с ростом частоты воздействия по температуре.

Таким образом изначальная модель, в которой можно было пренебречь колебаниями давления и массового расхода, с ростом частоты воздействий выше 50 Гц превращается в модель, где принятые допущения уже не работают.

Выводы.

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

Однако нужно внимательно смотреть за параметрами процессов, и определять диапазоны, где принятые упрощения настолько изменяют систему, что делают модель не верной .

Примеры моделей из лекции для самостоятельного изучения.

Предыдущая лекция.

Ссылки по теме моделирования систем:

Подробнее..

Синхронные двигатели с постоянными магнитами на роторе управление(синус иили трапеция)

03.02.2021 00:17:16 | Автор: admin

В продолжение темы модельно ориетированного проектирования, публикую очередную статью Калачева Юрия Николаевича, автора книги Моделирование в электроприводе. Инструкция по пониманию.Данный текст еще готовится к публикации в специализированных издания, но читатели хабра увидят его первые.

В зарубежной литературе можно встретить два термина, связанных с этими двигателями:

  1. PMSM(PermanentMagnetSynchronousMotor),что на языке Пушкина означает:синхронный двигательcпостоянными магнитами(СДПМ),и это понятно.

  2. BLDC(BrushLessDirectCurrent),что переводится с языка Шекспира,какБесколлекторный(бесщеточный)ДвигательПостоянногоТока(БДПТ),и это непонятно.Причем здесь постоянный ток?

С этими названиями и у нас,и за рубежом существует немалая путаница.

Например,терминPMSM(СДПМ)может применяться для обозначения двигателя с постоянными магнитами на роторе,независимо от формы его ЭДС,на так же часто его применяют,подразумевая исключительно синусоидальную форму ЭДС двигателя.

ТерминBLDC(БДПТ)может применяться для обозначения двигателя с постоянными магнитами на роторе и трапецеидальной ЭДС,а может вообще обозначать не двигатель,а некий мехатронный узел,включающий в себя:

  • двигатель с постоянными магнитами и трапецеидальной ЭДС

  • датчик положения ротора

  • управляемый по сигналам этого датчика полупроводниковый коммутатор.

Собственно этот мехатронный узел,который может,как и двигатель постоянного тока,управляться постоянным напряжением и породил сам терминBLDC(БДПТ).

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

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

Например,в книге Г.Б.ОнищенкоЭлектрические двигателина стр. 47 вентильнымназывается двигатель соответствующий терминуBLDC(БДПТ),что предполагает трапецеидальную ЭДС,и это понимаемо.

Но двигатели типа5ДВМ сам производитель(ЧЭАЗ)называетвентильными,хотя при этом утверждает,что они имеют синусоидальную ЭДС.

А вот википедия: Вентильный двигатель следует отличать от бесколлекторного двигателя постоянного тока(БДПТ),который имеет трапецеидальное распределение магнитного поля в зазоре....

Ну, ...приехали...

Какой термин,какой форме ЭДС соответствуетнепонятно.

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

Как человек занимающийся управлением этими двигателями хочу предложить:

  • во избежание путаницы забыть терминвентильный двигатель

  • термином БДПТ обозначать не двигатель,а исключительно описанный выше мехатронный узел(аналог двигателя постоянного тока)

  • делить синхронные двигатели с постоянными магнитами на роторе (СДПМ)по типу ЭДС на две группы:

    1) с синусоидальной ЭДС(далее,для краткости, -СДПМс)

    2) с трапецеидальной ЭДС(далее,для краткости, -СДПМт)

Управление

При управлении двигателями с синусоидальной ЭДСиспользуется векторное регулирование(подробно описано в книжке по ссылке). С точки зрения возможностей и качества управления это наилучший вариант.

Однако идвигатели с трапецеидальной ЭДСв силу более простой конструкции статорных обмоток и возможности более простого управления применяются довольно часто.

Конструкция двигателей

Ротор синхронных двигателей обоих типов устроен одинаково.Он представляют собой магнит с различным количеством пар полюсов.

А вот конструкция статорных обмоток,которая собственно и определяет форму ЭДС,у разных типов различна(см.Рис1.).

Рисунок 1. Конструкции статорных обмотокРисунок 1. Конструкции статорных обмоток

Статорная обмотка двигателя с трапецеидальной ЭДС проще и технологичнее,за счёт этого цена такого двигателя несколько ниже.

Далее остановимся более подробно на двигателе с трапецеидальной ЭДС(СДПМт)

Двигатель с одной парой полюсов будет выглядеть в разрезе так,как показано на Рис.2.

Рисунок 2. Схема двигател с одной парой полюсов я в разрезеРисунок 2. Схема двигател с одной парой полюсов я в разрезе

На статоре СДПМт намотаны три обмотки(А,В,С),сдвинутые в пространстве на120.Каждая обмотка состоит из двух секций,включённых встречно.Таким образом,при протекании тока в обмотке она создаёт внутри двигателя два полюса(положительный и отрицательный),к которым и притягивается магнитный ротор.Поочередное изменение токов в обмотках переключает полюса обмоток и заставляет ротор двигаться вслед за полем.На этом и основан принцип работы двигателя.

В дальнейшем будем считать нулевым то угловое положение ротора\theta_Rпри котором вектор потока ротора совпадает по направлению с осью фазыА(осью обмоткиА).

Уравнения равновесия статорных обмоток СДПМт в системе АВС

Уравнения равновесия статорных обмоток двигателя при его включении взвездув неподвижных фазных координатахАВСимеют вид(1).

\left \{ \begin{gathered} U_{A\Phi} =\frac{d \Psi_А}{dt} + I_AR_{\Phi} \\U_{B\Phi} =\frac{d \Psi_B}{dt} + I_BR_{\Phi} \\U_{C\Phi} =\frac{d \Psi_C}{dt} + I_CR_{\Phi}\ \end{gathered} \right. \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \mathbf{(1)}

Здесь:

  • U_{A \Phi},U_{B\Phi},U_{C\Phi} -фазные напряжения

  • \Psi_A,\Psi_B,\Psi_c-потокосцепления фазных обмоток

  • I_A,I_B,I_C-токи фаз

  • R_\Phi- активное сопротивление фазной обмотки.

Поток в обмотке каждой фазы формируется из следующих составляющих:

  • поток,наводимый собственным током фазы

  • поток,наводимый магнитными полями других фазных обмоток

  • поток,наводимый в обмотке магнитами ротора.

Проиллюстрируем это системой(2):

\left \{ \begin{gathered} \Psi_{A} = L_AI_A+L_{AB}I_B+L_{AC}I_C +\Psi_{fA}\\ \Psi_{B} = L_BI_B+L_{AB}I_A+L_{BC}I_C+\Psi_{fB} \\ \Psi_{C} = L_CI_C+L_{AC}I_A+L_{BC}I_B+\Psi_{fC} \end{gathered} \right. \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \mathbf{(2)}
  • Где:

    L_{A},L_{B},L_{C} -индуктивность фазных обмоток

    L_{AB},L_{BC},L_{AC} -взаимные индуктивности обмоток

    \Psi_{fA},\Psi_{fB},\Psi_{fC}-потокосцепления, наводимые в обмотках магнитом ротора.

В общем случае все индуктивности системы(2)могут являться переменными функциями угла поворота поля_e.

В частном случаеВ частном случае для неявнополюсного двигателя(при цилиндрическом роторе)индуктивности и взаимные индуктивности обмоток не зависят от угла.

Обозначив
L_\Phi - индуктивность фазной обмотки,

L_{\Phi\Phi} -взаимная индуктивность двух фазных обмоток,
и подставив выражения(2)в систему(1),получим выражение(3):

\left \{ \begin{gathered} U_{A\Phi} =L_\Phi\frac{d I_А}{dt}+L_{\Phi\Phi}\frac{d I_B}{dt}+L_{\Phi\Phi}\frac{d I_C}{dt}+\frac{d \Psi_{fA}}{dt} + I_AR_{\Phi} \\ U_{B\Phi} =L_\Phi\frac{d I_B}{dt}+L_{\Phi\Phi}\frac{d I_A}{dt}+L_{\Phi\Phi}\frac{d I_C}{dt}+\frac{d \Psi_{fB}}{dt}+ I_BR_{\Phi}\\ U_{C\Phi} =L_\Phi\frac{d I_C}{dt}+L_{\Phi\Phi}\frac{d I_A}{dt}+L_{\Phi\Phi}\frac{d I_B}{dt}+\frac{d \Psi_{fC}}{dt}+ I_СR_{\Phi}\ \end{gathered} \right. \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \mathbf{(3)}

Заметив,что производные по времени от потокосцеплений магнитов ротора

\left(\frac{d \Psi_{fA}}{dt},\frac{d \Psi_{fB}}{dt},\frac{d \Psi_{fС}}{dt}\right) - есть не что иное,как наводимая магнитами

ротора в этих обмотках ЭДС,систему(3)можно переписать в виде(4).

\left \{ \begin{gathered} U_{A\Phi} =L_\Phi\frac{d I_А}{dt}+L_{\Phi\Phi}\frac{d I_B}{dt}+L_{\Phi\Phi}\frac{d I_C}{dt}+E_A + I_AR_{\Phi} \\ U_{B\Phi} =L_\Phi\frac{d I_B}{dt}+L_{\Phi\Phi}\frac{d I_A}{dt}+L_{\Phi\Phi}\frac{d I_C}{dt}+E_B+ I_BR_{\Phi}\\ U_{C\Phi} =L_\Phi\frac{d I_C}{dt}+L_{\Phi\Phi}\frac{d I_A}{dt}+L_{\Phi\Phi}\frac{d I_B}{dt}+E_C+ I_СR_{\Phi}\ \end{gathered} \right. \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \mathbf{(4)}

Теперь введем понятие единичной функции формы ЭДС.

Единичная функция формы ЭДС-это функция от угла поля(_e), имеющая единичную амплитуду и повторяющая по форме ЭДС. Для фазА,В,Собозначим эти функции: обозначим эти функции E_{1A},E_{1B},E_{1C} .

Используя единичные функции формы,мгновенные ЭДС в фазах можно представить выражением(5):

\left \{ \begin{gathered} E_{A} = \psi_f\omega_eE_{1A}=\psi_fZ_p\omega_RE_{1A} \\ E_{B} = \psi_f\omega_eE_{1B}=\psi_fZ_p\omega_RE_{1B} \\ E_{C} = \psi_f\omega_eE_{1C}=\psi_fZ_p\omega_RE_{1C} \end{gathered} \right. \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \mathbf{(5)}
  • Где:

    \psi_f-амплитуда потокосцепления ротора и фазной обмотки

    \omega_e- скорость вращения поля

    \omega_R- скорость вращения ротора

    Z_P- число пар полюсов двигателя.

Зависимости единичных функций формы ЭДС обмоток СДПМт от угла поворота поля представлены На Рис.3.

Рис. 3. Единичные функции форм ЭДСРис. 3. Единичные функции форм ЭДС

Вывод формулы для расчета электромагнитного момента БДПТ

Момент,создаваемый двигателем,является суммой моментов,создаваемых его обмотками.

Посмотрим на уравнение равновесия обмоткиАиз системы(4).

 U_{A\Phi} =L_\Phi\frac{d I_A}{dt}+L_{\Phi\Phi}\frac{d I_B}{dt}+L_{\Phi\Phi}\frac{d I_C}{dt}+E_A + I_AR_{\Phi}

Умножив обе его части на ток обмотки,получим уравнение для мгновенной электрической мощности обмотки:

 P_{A\Phi} =I_A \left( L_\Phi\frac{d I_A}{dt}+L_{\Phi\Phi}\frac{d I_B}{dt}+L_{\Phi\Phi}\frac{d I_C}{dt}\right ) + I_A^2R_{\Phi}+I_AE_A

Рассмотрим составляющие этой мощности:

  • I_A \left( L_\Phi\frac{d I_A}{dt}+L_{\Phi\Phi}\frac{d I_B}{dt}+L_{\Phi\Phi}\frac{d I_C}{dt}\right)- реактивная мощность обмотки

  • I_A^2R_{\Phi} - активная мощность, рассеивающаясяв обмотке

  • I_AE_A- мощность,создающая электромагнитный момент.

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

I_AE_A + I_BE_B+I_CE_C = M_{em}\omega_R \Rightarrow M_{em} =\frac{I_AE_A + I_BE_B+I_CE_C}{\omega_R} \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \mathbf{(6)}
  • Где:

    M_{em}- электромагнитный момент двигателя

    \omega_R - угловая скорость вращения ротора.

Подставив в формулу(6)значения ЭДС из соотношений(5),получим формулу вычисления электромагнитного момента ротора(7).

M_{em} =\psi_fZ_p \left(I_AE_{1A} + I_BE_{1B}+I_CE_{1C}\right) \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \mathbf{(7)}

Коммутация обмоток СДПМт

В соответствии с формулой(7)момент СДПМт пропорционален сумме произведений фазных токов на функции формы соответствующих ЭДС.

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

Для примера рассмотрим на Рис.3участок угловой траектории от /6до /2.На этом участке ЭДС в фазеАимеет максимально отрицательное значение,а в фазеВмаксимально положительное.Следовательно,для получения положительного момента на этом участке угловой траектории надо обеспечить в фазеАотрицательное,а в фазеВположительное значение тока.Для этого фазуАможно подключить на отрицательный,а фазуВна положительный полюса внешнего источника постоянного напряжения(Udc).При этом фазаСне используется(отключена от источникаUdc).

Величина тока,протекающего через обмотки,будет в свою очередь определяться прикладываемым к обмоткам напряжением,величиной ЭДС и параметрами обмоток.

Если рассуждать таким образом,то можно составить таблицу коммутаций обмоток,обеспечивающих в зависимости от положения ротора момент нужного знака(Табл. 1).

Таблица1. Закон коммутацииТаблица1. Закон коммутации

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

Логическая обработка сигналов ДПР позволяет определить-в каком из шести секторов в данный момент находится ротор.

Работа ДПР поясняется Табл. 2.

Таблица 2. Работа ДПР (определение сектора)Таблица 2. Работа ДПР (определение сектора)

Возможная структура системы управления моментом БДПТ

ОпределяющАлгоритм,описанный в Табл.1,предполагает протекание одного и того же тока в двух фазах двигателя при единичном значении функции формы ЭДС в обмотках фаз.Поэтому выражение(7)можно переписать в виде(8).

M_{em} =2 \cdot Z_p\psi_fI_\Phi \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \mathbf{(8)}

Где: I_\Phi - значение тока в фазах.

То есть значение момента пропорционально величине тока в обмотках двигателя.

Вытекающая из формулы(8)структура системы управления моментом в приводе с СДПМт изображена на Рис.4.

Рисунок 4. Система управления моментом БДПТРисунок 4. Система управления моментом БДПТ

Данная структура позволяет получить нужный момент,формируя в обмотках двигателя ток необходимой амплитуды,при сохранении алгоритма коммутации(Табл.1).

Эта задача решается с помощью создания на базе трёхфазного мостового инвертора контура тока с ШИМ.

Регулятор тока(ПИ-рег.)формирует сигнал задания напряжения обмоток(U),которое затем реализуется инвертором с ШИМ в соответствии с алгоритмом коммутации(Табл.1).

В качестве сигнала обратной связи в контуре можно использовать трёхфазно-выпрямленные сигналы датчиков тока фаз или сигнал датчика тока в звене постоянного тока инвертора(I_{fb}).

На основе рассмотренного канала управления моментом можно строить внешние контуры управления скоростью и положением.

Однако

Если бы токи в обмотках спадали до нуля и нарастали до нужного уровня мгновенно,то момент двигателя,определяемый их величиной,в установившемся режиме был бы постоянным.В действительности же реальные переходные процессы при коммутации обмоток приводят к пульсациям момента.В зависимости от параметров обмоток,а также соотношения величин текущей ЭДС и напряжения звена постоянного тока эти пульсации могут быть различны по длительности,амплитуде и знаку.

Кроме этих коммутационных пульсаций в рассматриваемой системе также будут иметь место пульсации момента на частоте ШИМ.

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

Часть модели,а именно-модель цифровой системы управления скоростью приведена ниже,на Рис.5.Регулятор скорости системы(Рег.W)выдает сигнал момента,который отрабатывается структурой,построенной в соответствии с Рис.4.

Рисунок 5. Модель цифровой системы управленияРисунок 5. Модель цифровой системы управления

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

  • Rs = 2.875Ом-сопротивление обмотки фазы;

    Ls = 8.5e-3Гниндуктивность фазы;

    F = 0.175Вбпотокосцепление ротора;

    Zp = 4-число пар полюсов;

    Jr = 0.06 нм- момент инерции ротора.

Напряжение в звене постоянного тока привода было принято равным100В.

В контуре тока электропривода использовалась ШИМ с частотой5кГц.

В процессе регулирования происходило ступенчатое увеличение частоты при постоянном моменте сопротивления на валу двигателя(10Нм).

Графики,полученные в процессе работы модели,приведены на Рис.6.

Рисунок 6. Моделирование работы двигателяРисунок 6. Моделирование работы двигателя

На графике момента видны существенные пульсации.

Отметим,что в основном они связаны именно с переходными процессами при коммутации обмоток и имеют соответственно частоту,ушестеренную по отношению к заданной.

Пульсации,связанные с ШИМ,в данном случае,невелики.

Заметим,что коммутационные пульсации существенно возрастают при увеличении момента,что связано с увеличением тока.

Несколько спасает то,что их влияние на скорость снижает инерция.

А можно ли векторно управлять СДПМт?

Если очень хочется-то можно.
Однако и здесь не без особенностей.
Математика и структура стандартной векторной системы управления исходит из синусоидальности поля в зазоре.При трапецеидальной ЭДС это условие нарушается,правда не очень сильно(трапеция это же почти синус).

А результатом этогопочтибудут,опять же,пульсации момента.

Вид части модели относящейся к цифровой системе векторного управления в средеSimInTechпоказан на Рис.7.

Рисунок 7. Часть модели векторного управления.Рисунок 7. Часть модели векторного управления.

Ниже на Рис.8показан график работы модели уже рассмотренного ранее СДПМт работающего в рассмотренном ранее режиме,но под управлением векторной системы.

В графике момента мы опять наблюдаем пульсации(хотя по сравнению с предыдущим вариантом они несколько уменьшились).

Причины пульсации при векторном управлении и управлении по ДПР различны,но частота все та жеушестеренная по отношению к заданной.

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

Рисунок 8. Работа двигателя при векторном управленииРисунок 8. Работа двигателя при векторном управлении

А можно ли с помощью коммутации обмоток по ДПР управлять двигателем с синусоидальной ЭДС?

С точки зрения автора можноно не нужно.

Наряду с коммутационными пульсациями момента синусоидальность ЭДС(отсутствие плоской вершины трапеции)в данном случае неминуемо вызовет еще и дополнительные пульсации,снижающие качество регулирования даже по сравнению с управляемым по ДПР двигателем СДПМт.

А при векторном управлении двигателем с синусоидальной ЭДС пульсаций момента не будет.

Для подтверждения этого тезиса ниже(Рис.9)приведены графики работы модели двигателя с уже рассмотренными ранее параметрами,но с синусоидальной ЭДС и векторной системой управления скоростью.

Видно,что пульсации момента в этом случае практически отсутствуют.При правильной настройке регуляторов системы они связаны только с ШИМ-преобразованием и для данного случая почти не видны.

Рисунок 8. Работа двигателя с синусоидальной ЭДСРисунок 8. Работа двигателя с синусоидальной ЭДС

Итоги

Для синхронников с страпецеидальной ЭДС-коммутация по ДПР.

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

Для синхронников с синусоидальной ЭДСлучший вариант это векторное регулирование.

Это сочетание идеально для построения точного электропривода(что собственно и так было понятно).

Калачёв Ю.Н.

Модели для самостоятельного изучения можно взять здесь.

Предыдущие статьи по теме:

Модельно ориентированное проектирование. Электропривод с бесколлекторным двигателем постоянного тока

Модельно ориентированное проектирование. Построение активного выпрямителя (на основе математической модели)

Список литературы

[1]А.С.ПушкинПолтава.

Подробнее..

3. Частотные характеристики звеньев и систем автоматического управления. ч. 3.4 Апериодическое звено 2го порядка

24.02.2021 02:21:58 | Автор: admin

Предыдущая часть Апереодическое звено первого порядка.

3.4 Апереодическое звено второго порядка

Апереодическое звено выведем на уже известном примере. Мы разбирали вывод уравнений динамики демпфера в этой лекции. Но повторенье - мать ученья. Сначала будет много жесткой математики, а в конце наглядные модели.

У нас есть модель механического демпфера. Это поршень на пружине, он движется внутри цилиндра, может перемещается вверх-вниз. Его положение это интересующая нас функция Y(t), сверху на него воздействует возмущающая сила (U(t)), на стенках поршня действует сила вязкого трения. (См. рис. 3.4.1)

Рисунок 3.4.1. Расчетная схема амортизатора. Рисунок 3.4.1. Расчетная схема амортизатора.

Выведем передаточную функцию для этого звена. Согласно 2-му закону Ньютона ускорение тела пропорционально сумме сил, действующих на тело:

m \cdot \frac{d^2Y(t)}{dt} = \sum F_j = P+ U(t) +F_{пр}+F_{тр}
  • где:

    m - масса поршня;

    Y(t)- положение поршня (выходная переменная);

    U(t) = X(t)- приложенная сила (входное воздействие);

    P = m \cdot g- сила тяжести;

    F_{пр} = k \cdot Y(t) сила сопротивления пружины;

    F_{тр} = с \cdot \frac{dY}{dt} сила вязкого трения (пропорциональная скорости движения поршня).

Считаем, что в нулевой момент времени поршень находится в равновесии. Тогда начальное положение поршня y0в равновесии, где скорость и ускорения равны 0, можно посчитать из уравнения 2.

0 = m \cdot g + u_0-k \cdot y_0 \Rightarrow y_0= \frac{1}{k} [m\cdot g+u_0]

Перепишем уравнение равновесия в отклонениях от нулевого состояния:

Y(t) =y_0+y(t); \ \ \ U(t) = u_0+u(t);

m \cdot \frac{d^2 y(t)}{dt^2} = \underbrace { m \cdot g+ u_0}+u(t)-\underbrace {k \cdot y_0} -k\cdot y(t) - c \cdot\frac{dy(t)}{dt}

Поскольку мы приняли, что в начальный момент у нас состояние равновесия, а сумма трех сил в состоянии равновесия равна нулю, их можно убрать из уравнения, и в итоге получим:

m \cdot y''(t)+c \cdot y'(t)+k \cdot y(t) = u(t) = x(t)

Приведем данное уравнение к классическому виду:

 \underbrace{\frac{m}{k}}_{T_2^2}\cdot y''(t)+\underbrace{\frac{c}{k}}_{T_1}\cdot y'(t)+y(t)=\underbrace{\frac{1}{k}}_K \cdot x(t)

Уравнение динамики апериодического звена 2го порядка имеет следующий вид:

T_2^2 \cdot y''(t)+T_1 \cdot y'(t)+y(t)=K \cdot x(t) \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \mathbf{(3.4.1)}

при этом:

D = T_1^2-4 \cdot T_2^2 \ge 0 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \mathbf{(3.4.2)}

ЕслиD<0, то звено становится колебательным (см. раздел 3.5)

Переходя к изображениямx(t) \rightarrow X(s); \ \ \ y(t) \rightarrow Y(s)получаем уравнение динамики звена в изображениях:

(T_2^2\cdot s^2+ T_1 \cdot s+1) \cdot Y(s) = K \cdot X(s) \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \mathbf{(3.4.3)}

Передаточная функция звена может быть представлена в двух видах:

W(s) = \frac{Y(s)}{X(s)}= \frac{K}{T_2^2 \cdot s^2+T_1 \cdot s+1} \iff \frac{K}{(T_3 \cdot s+1)(T_4 \cdot s+1)}\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \mathbf{(3.4.4)}

где:

T_3 = \frac{T_1-\sqrt{D} }{2} ;\ \ T_4 = \frac{T_1+\sqrt{D}}{2}Рисунок 3.4.2 Апериодическое звено 2-го порядка (два варианта) Рисунок 3.4.2 Апериодическое звено 2-го порядка (два варианта)

Амплитудно-фазовая частотная характеристика (АФЧХ):

W(i \cdot \omega) = W(s)|_{s =i \cdot \omega} =\frac{K}{(1+i \cdot T_3 \cdot \omega)(1+ i \cdot T_4 \cdot \omega)} \Leftrightarrow \frac{K}{(1-T_2^2 \cdot \omega^2)+i \cdot T_1 \cdot \omega} \ \ \ \ \ \ \ \ \ \ \ \ \ \ \mathbf{(3.4.5)}

Домножив числитель и знаменатель формулы (3.4.5) на комплексно-сопряженные скобки (1-i \cdot T_3 \cdot \omega) и (1-i \cdot T_4 \cdot \omega) , получаем:

W(i\cdot\omega) = \frac{K(1- i \cdot T_3 \cdot \omega)(1- i \cdot T_4 \cdot \omega)}{(1 + T_3^2 \cdot \omega^2)(1+T_4^2\cdot \omega^2)} == \underbrace {\frac{K (1 -T_4\cdot T_3 \cdot \omega^2)}{(1+T^2_3 \cdot \omega^2)(1+T_4^2 \cdot \omega^2)}}_{u(\omega)}- i \cdot \underbrace {\frac{K(T_4+T_3)\omega}{(1+T_3^2\cdot \omega^2)(1+ T_4^2\cdot \omega^2)}}_{v(\omega)}

Диствительная и мнимая части передаточной функции:

u(\omega) = \frac{K(1- T_3 \cdot T_4 \cdot \omega^2)}{(1+T_3^2 \cdot \omega^2)(1+ T_4^2 \cdot \omega^2)}; \ \ \ \ \ v(\omega) = -\frac{K(T_4+ T_3)\omega}{(1+T_3^2 \cdot \omega^2)(1+T_4^2 \cdot \omega^2)} \ \ \ \ \ \ \ \ \ \ \ \ \ \ \mathbf{(3.4.6)}

Анализируя поведениеu()иv()при\omega \rightarrow 0 и при\omega \rightarrow \infty , получаем:

\lim_{\omega \to 0} u(\omega) = K; \ \ \ \ \ \lim_{\omega \to \infty}u(\omega) = 0\omega \rightarrow 0 \Rightarrow \left \{ \begin{gathered} u(\omega) \rightarrow K; \\ v(\omega) \rightarrow 0; \end{gathered} \right. \ \ \ \ \ \ \ \omega \rightarrow \infty \Rightarrow \left \{ \begin{gathered} u(\omega) \rightarrow 0; \\ v(\omega) \rightarrow 0; \end{gathered} \right.

Модуль АФЧХ (амплитуда), то естьmod(W(i)) = |W(i)| из формулы 3.4.5:

A(\omega) = |W(i\cdot \omega) | = \left | \frac{K}{(1+i\cdot T_3 \cdot \omega)(1+i \cdot T_4\cdot \omega)} \right | = \frac{K}{\sqrt{1+ T_3^2 \cdot \omega^2}\cdot \sqrt{1+ T_4^2\cdot \omega^2}}\ \ \ \ \ \ \ \ \ \ \ \ \mathbf{(3.4.7)}

Подставляя в формулы (3.4.6) или в формулу (3.4.5) различные значения можно построить векторы, соответствующие различным значениям :

Рисунок 3.4.3 Годограф АФЧХ апериодического звена 2-го порядкаРисунок 3.4.3 Годограф АФЧХ апериодического звена 2-го порядка

Из формул 3.4.6 очевидно, что на рисунке годографа 3.4.3 :

1) \ \omega_6>\omega_5>\omega_4>\omega_3>\omega_2>\omega_1>0\\ 2) \ \ 0 >\varphi_1>\varphi_2>\varphi_3>\varphi_4>\varphi_5>\varphi_6

Используя формулу 3.4.6 можно показать что u(w_3)=0 при \omega_3 = \frac{1}{\sqrt{T_3\cdot T_4}}

Из рисунка видно, что \varphi(\omega) \in [-\pi;0] .

Формула фазового сдвига:

\varphi(\omega) = - \pi \cdot j+ arctg \frac{v(\omega)}{u(\omega)} \omega\leq \omega_3 \Rightarrow j = 0;\\ \omega>\omega_3 \Rightarrow j=1.

Для фазового сдвига удобно представить апереодическое звено в виде последоваетельного соединения двух звеньев (см. рис. 3.4.2). Известно, что при последовательном соединении звеньев общий сдвиг фазы равен сумме фазовых сдвигов:

 \varphi(\omega)=\varphi_1(\omega)+\varphi_2(\omega) = -arctg (T_3\cdot \omega)-arctg(T_4 \cdot \omega)\ \ \ \ \ \ \ \ \ \ \ \ \mathbf{(3.4.8)}

Логарифмическая амплитудная характеристика (ЛАХ)

Lm(\omega) = 20 \cdot lg \ A(\omega) = 20\cdot lg \ K - 20 \cdot lg \sqrt{1+T_3^2 \cdot \omega^2} - 20 \cdot lg \sqrt{1+T_4^2\cdot \omega^2}\ \ \ \ \ \ \ \ \ \ \ \ \mathbf{(3.4.9)}

Графики А(), (),Lm() имеют вид:

Рисунок 3.4.4 АЧХ и ФЧХ апериодического звена 2-го порядкаРисунок 3.4.4 АЧХ и ФЧХ апериодического звена 2-го порядкаРисунок 3.4.5 ЛАХ и ЛФЧХ апериодического звена 2-го порядкаРисунок 3.4.5 ЛАХ и ЛФЧХ апериодического звена 2-го порядка

В инженерных расчетах часто графикLm() представляют виде отрезков ломаных, тогда:

при \omega < 1 /T_4 - звено близко к идеальному усилительному звену  W(s) \approx K

при  1/T_4 < \omega < 1/T_3 - звено близко к идеальному интегрирующему звену W(s) \approx K/(T\cdot s)

при \omega>1/T_3 - звено близко к дважды интегрирующему звену W(s)\approx K/(T^2 \cdot \omega^2)

В граничном случае (D=0 или T_1 = 2 \cdot T_2) \Rightarrow T_3 = T_4 отмеченные на графикеLm() (см. рис. 3.4.5 выше) точки излома совпадают:

Рисунок 3.4.6 ЛАХ и ЛФЧХ апериодического звена 2-го порядка в граничном случаеРисунок 3.4.6 ЛАХ и ЛФЧХ апериодического звена 2-го порядка в граничном случае

ЕслиD<0 \ (T_1 = 2T_2)звено переходит в разряд колебательных звеньев. Поэтому постоянная Т1в уравнении динамики (3.4.1) играет роль демпфирующего фактора, увеличение Т1(в колебательном звене) приводит к уменьшению или к полному исчезновению колебаний.

Найдем переходную функцию звена  h(t) - реакцию на воздействие единичное воздействие 1(t).

h(t) = L^{-1}[H(s)]=L^{-1} \left[ \frac{W(s)}{s} \right] =L^{-1} \left[ \frac{K}{s(T_3 \cdot s +1)(T_4 \cdot s+1)} \right]

Для нахождения функции по формуле Хэвисайда (см. раздел 2.8 Некоторые способы нахождения оригинала по известному изображению), запишем корни полюса изображения, т.е. те значения s при которых D_0(s) = s(T_3 \cdot s +1)(T_4 \cdot s +1) обращается в ноль:

s_1 = 0; \ \ s_2 =-\frac{1}{T_3}; \ \ s_3 = -\frac{1}{T_4}

Тогда по формуле Хэвисайда:

h(t) = \lim_{s \to 0} \left[ (s + 0) \frac{K}{s(T_3 \cdot s+1)(T_4 \cdot s+1)} \cdot e^{st}\right] \\+ \lim_{s \to -\frac{1}{T_3}} \left[ (s+\frac{1}{T_3}) \frac{K}{s(T_3 \cdot s+1)(T_4 \cdot s +1)}\cdot e^{st} \right] +\\+ \lim_{s \to -\frac{1}{T_4}} \left[ (s+\frac{1}{T_4}) \frac{K}{s(T_3 \cdot s+1)(T_4 \cdot s +1)}\cdot e^{st} \right]

Вычисляя пределы получим формулу для переходной функции звена:

h(t) = K \left[1+ \frac{T_3}{T_4-T3} \cdot e^{- \frac{t}{T_3}}-\frac{T_4}{T_4 -T_3} \cdot e^{-\frac{t}{T_4}} \right] \ \ \ \ \ \ \ \ \ \ \mathbf{(3.4.10)}

Весовая функция получается дифференцированием w(t) =h'(t) :

w(t) = \frac{K}{T_4 - T_3} \cdot \left[ e^{-\frac{t}{T_4}} - e^{- \frac{t}{T_3}} \right] \ \ \ \ \ \ \ \ \ \ \mathbf{(3.4.11)}Рисунок 3.4.7 Переходная функция апериодического звена 2-го порядкаРисунок 3.4.7 Переходная функция апериодического звена 2-го порядка

Примерами апериодического звена 2-го порядка являются:

1) двигатель постоянного тока при учете инерционности самого якоря (механической) и цепи якоря (электрической);

2) электрический усилитель с учетом инерционности (механической и электрической) ротора;

3) двойныеRCилиRLцепочки

Рисунок 3.4.9 Пример апериодического звена 2-го порядкаРисунок 3.4.9 Пример апериодического звена 2-го порядка

Если звено представлено в переменных состояния в матричной форме таким образом:

x' = A \cdot x + B \cdot u; \ \ \ A = \begin{pmatrix} a_{11} & a_{12} \\ a_{21} & a_{22} \\ \end{pmatrix} \Rightarrow \left \{ \begin{gathered} x_1' = a_{11} \cdot x_1+a_{12}\cdot x_2+ B \cdot u \\x_2'= a_{21} \cdot x_1+a_{22}\cdot x_2+ B \cdot u \end{gathered} \right.

то звено будет апериодическим 2-го порядка, если:

 D = (a_{11}+ a_{22})^2 - 4(a_{11}\cdot a_{22} -a_{12}\cdot a_{21}) \ge 0

Пример

В качестве примера возьмём модель демпфера, которую мы уже использовали в лекциях. (см. Рисунок 3.4.10) Структурная схема модели описывает уравнения динамики, описанные в начале статьи. Свойства системы заданы в списке общих сигналов проекта (см. рис. 3.4.11). Для получения из демпфера апериодического звена 2-го порядка необходимо увеличить силу трения таким образом, чтобы (как показано выше) коэффициентT1 был больше, чем 2 хT2. В этом случае D>0 и из колебательного звена мы получим апериодическое 2-го порядка.

Рисунок 3.4.10 Структурная схема модели демпфера.Рисунок 3.4.10 Структурная схема модели демпфера.Рисунок 3.4.11 Параметры моделиРисунок 3.4.11 Параметры модели

Для дальнейшего исследования на схему добавлена модель демпфера в виде звена общего вида, а его свойства заданы в виде формул, выражающих коэффициенты звена через параметры модели.(см. рис. 3.4.12).

Рисунок 3.4.12. Параметры для модели демпфера в виде звенаРисунок 3.4.12. Параметры для модели демпфера в виде звена

Выполним моделирование переходного процесса при ступенчатом изменении приложенной силы и сравним переходные процессы в двух вариантах модели демпфера. График переходного процесса (см. рис. 3.4.13) показывает, что переходные процессы в двух моделях полностью идентичны:

Рисунок 3.4.13 Переходные процессы в двух моделях.Рисунок 3.4.13 Переходные процессы в двух моделях.

График частотных характеристик звена (ЛАХ и ФЧХ) представлен на рисунке 3.4.14На графике видно две точки излома характеристики ЛАХ в которых наклон последовательно меняетсяс 0, до 20дБ/дек и с 20дБ/дек до 40 дБ/дек.

Рисунок 3.4.14 Частотные характеристика ЛАХ и ФЧХРисунок 3.4.14 Частотные характеристика ЛАХ и ФЧХ

Для демонстрации влияния изменения Т1 на свойства звена выполним моделирование, в котором структурная схема является эталонной, а в модели звена будем уменьшать коэффициент силы трения (коэффициентT1).

Источником воздействия будет меандр, с периодом 3 секунды.

Для изменения свойств звена создадим блок на языке программирования. Данный блок, в процессе моделирования, постепенно уменьшает коэффициент Т1 для модели в виде звена. Этот же блокготовит данные для отображения на 3Dграфике переходного процесса.

Общая схема модели приведена на рисунке 3.4.15.

Рисунок 3.4.15 Схема демпфера с изменения свойств блокаРисунок 3.4.15 Схема демпфера с изменения свойств блока

Меандр задает изменение приложенной силы 0 30 Н (входного воздействия) с полупериодом 1.5 сек. График изменения положения приведен на рисунке 3.4.16 Видно, что на первом изменении графики совпадают, но потом по мере накопления отличий в параметрах динамика изменения положения начинает меняться.

Рисунок 3.4.16 Графики положения демпферов.Рисунок 3.4.16 Графики положения демпферов.

Первая часть процесса изображена на рисунке 3.4.17 Видно, что снижение силы трения обеспечивает более быстрое изменении положения демпфера.

Рисунок 3.4.17 Начальная часть графикаРисунок 3.4.17 Начальная часть графика

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

Рисунок 3.4.18 Конечная часть моделированиРисунок 3.4.18 Конечная часть моделировани

ЗDповерхность отображает переходный процесс при ступенчатом увеличении воздействия в блоке меандр.По осиZ отражается положение демпфера, по осиY время после увеличения входного воздействия в блоки меандр, по осиX измененийT1 (уменьшение силы трения).

Рисунок 3.4.19 Поверхность переходного процесса при снижении тренияРисунок 3.4.19 Поверхность переходного процесса при снижении трения

В заключение, сравним переходные процессы для разных параметровT1 (разных коэффициентов трения). Поскольку все основные блоки вSimInTechявляются векторными, создадим модели 7-ми демпферов из одного звена. Для этого в главном окне программы подготовим 7 векторов значений с разными коэффициентами трения. Скрипт приведен на рисунке 3.4.20.

Рисунок 3.4.20 Скрипт модели для задания параметров 7 демпферовРисунок 3.4.20 Скрипт модели для задания параметров 7 демпферов

Четвертый вектор содержит переходное значение T1. Как было показано выше, переходное значениеT1, при котором апереодическое звено второго порядка превращается в колебательное расчитывается по формуле T1 = 2хT2.

В модели, в свойствах блока указываем эти векторы в столбце формулы, и теперь блок может рассчитывать одновременно7демпферов одним блоком. (см. рис. 3.4.21)

Рисунок 3.4.21 Настройка параметров блока для векторного расчетаРисунок 3.4.21 Настройка параметров блока для векторного расчета

Общая схема модели в этом случае будет выглядеть как показано на рисунке 3.4.22 Ступенчатое изменение силы передается в блок Размножитель, где преобразуется в вектор из 7 воздействий. Данный вектор передается в блок, где и происходит расчёт семи вариантов демпфера.

Рисунок 3.4.22 Схема модели 7-и демпферовРисунок 3.4.22 Схема модели 7-и демпферов

Результат переходного процесса представленна рисунке 3.4.23. Видно, что 3 демпфера ведут себя как апериодическое звено второго порядка, 3 демпфера явно превратились в колебательные.

Рисунок 3.4.23 Перемещение 7 демпферов при ступенчатом воздействииРисунок 3.4.23 Перемещение 7 демпферов при ступенчатом воздействии

Характеристики ЛАХ и ФХЧ представлены на рисунке 3.4.24. Наглядно видно, как постепенно, при снижении коэффициента трения исчезают два излома на графике ЛАХ, и звено превращается в колебательное, о котором будем говорить в следующей части.

Рисунок 3.4.25 Частотные характеристики 7-и демпферовРисунок 3.4.25 Частотные характеристики 7-и демпферов

Модели с примерами для самостоятельного изучения можно взять по ссылке.

Предыдущая лекция Апереодическое звено первого порядка.

Подробнее..

3. Частотные характеристики звеньев и систем автоматического регулирования. 3.5 Колебательное звено

07.04.2021 08:12:05 | Автор: admin

Колебательное звено является наиболее интересным случаем из всех типовых звеньев, во-первых,за счет сильной похожести по своим динамическим свойствам на более сложные реальные САУ (САР), во-вторых, близкой идентичности переходных процессов в звене к аналогичным в реальных САР, и, в-третьих, существенной зависимости динамических свойств от величины параметра звена.

Выведем формулу колебательного звена на примере электрического колебательного контура, который изучают в курсе школьной физики. Пример такого контура приведен на рисунке 3.5.1

Рисунок 3.5.1 Модель электического колебательного контураРисунок 3.5.1 Модель электического колебательного контура

Электрическая цепь содержит источник напряжения и последовательно соединённые индуктивность, сопротивление, конденсатор.

Входное ступенчатое воздействиеx(t), формирующее внешнюю Э.Д.С в цепи, подключено к блоку источнику напряжения х(t) =Uвх(t).

Результирующий отклик звена - напряжение на конденсатореy(t) =Uс(t) =Uвых(t).

Согласно второму закону Кирхгофа для замкнутого контура, сумма Э.Д.С равна сумме напряжения на резистивных элементах контура.

U_R+U_C =U_{вх} +\xi_L \Rightarrow \\ \Rightarrow -\xi_L+U_R+U_C= U_{вх}

где:

\xi_L = -L \cdot \frac{dI}{dt}- ЭДС индукции на катушке, (направлено против изменения тока);

U_R=R \cdot I- падение напряжении на сопротивлении.

Поскольку в замкнутом контуре сила тока одинакова на всех элементах, перепишем уравнения, выразив силу тока через напряжение на конденсаторе. Сила тока в цепи равна изменению заряда конденсатора:

I =\frac{dq}{dt} где:

q=C\cdot U_C- заряд кондесатора.

Тогда сила тока в цепи связана с напряжение на конденсаторе соотношением:

I = C \cdot \frac{ dU_c}{dt}

После замены силы тока, ее выражением через U_C получим следующие выражение:

L \cdot C \cdot \frac{d^2U_c}{dt^2} +R\cdot C \cdot \frac{d U_c}{dt}+U_c = U_{вх}

Заменив U_C=y(t) и U_{ВХ} = x(t) получим уравнение колебательного звена:

\underbrace{L \cdot C}_{T_2^2} \cdot y''(t)+\underbrace{R \cdot C}_{T_1} \cdot y'(t) +y(t) =\underbrace{1 \cdot }_Kx(t)

Уравнение динамики звена описывается уравнением, аналогичным рассмотренном в предыдущем разделе (апериодическое звено второго порядка):

T^2_2 \cdot y''(t)+T_1 \cdot y'(t)+ y(t) =K\cdot x(t) \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \mathbf{(3.5.1)}

причем T_1<T_2 , т.е. D= T_1^2-4 \cdot T_2^2 \leq 0

Учитывая, что D \leq0 , удобнее представить уравнение динамики в другой форме, а именно:

Введем новые параметры: T\equiv T_2 и \beta = \frac{T_1}{2 \cdot T_2} , где \beta - параметр (коэффициент) затухания (демпфирования).

Подставляя новые параметры в (3.5.1):

T^2 \cdot y''(t)+2 \cdot \beta \cdot T\cdot y'(t)+y(t) = K \cdot x(t) \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \mathbf{(3.5.2)}

Уравнение 3.5.2 - наиболее удобная форма представления уравнения динамики.

Перейдем к изображениям: x(t) \rightarrow X(s) и y(t) \rightarrow Y(s) уравнение динамики в изображениях Лапласа:

(T^2_2 \cdot s^2+2 \cdot \beta \cdot T \cdot s+1) \cdot Y(s)=K \cdot X(s)

Передаточная функции колебательного звена:

W(s) =\frac{Y(s)}{X(s)}= \frac{ K}{ T^2 \cdot s^2+2 \cdot \beta \cdot T \cdot s + 1} \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \mathbf{(3.5.3)}

Еще раз подчеркнем, что параметр (коэффициент) затухания (демпфирования) 0 \le \beta \le 1 , причем при \beta > 1 свойства колебательного звена совпадают с аналогичными свойствами соответствующего апериодического звена 2-го порядка, а при \beta = 0 звено выражается вконсервативное, в котором могут существовать незатухающие гармонические колебания.

Выражение для АФЧХ получается после подстановки в (3.5.3) значения s=i\cdot \omega :

W(i \cdot \omega)=\frac{K}{T^2 \cdot (i \cdot \omega)^2+2 \cdot \beta \cdot T \cdot i \cdot \omega+1}=\\= \frac{K}{(1-T^2\cdot \omega^2)+2 \cdot \beta \cdot T \cdot i \cdot \omega} \ \ \ \ \ \ \ \ \ \ \ \ \ \ \mathbf{(3.5.4)}

Домножим числитель и знаменатель формулы 3.5.4 на компексно сопряженное выражения для знаменателя (1-T^2\cdot \omega^2) - 2 \cdot \beta \cdot T \cdot i \cdot \omega :

W(i \cdot \omega) = \frac{K(1-T^2\cdot \omega^2) - K \cdot 2 \cdot \beta \cdot T \cdot \omega \cdot i}{(1-T^2\cdot\omega^2)^2+4 \cdot \beta^2 \cdot T^2 \cdot \omega^2}

Выражения для вещественной и мнимой частей принимают вид:

u( \omega) = \frac{K(1-T^2\cdot \omega^2) }{(1-T^2\cdot\omega^2)^2+4 \cdot \beta^2 \cdot T^2 \cdot \omega^2} \ \ \ \ \ \ \ \ \ \ \ \ \ \ \mathbf{(3.5.5)}v(\omega) = \frac{ - 2 \cdot K \cdot \beta \cdot T \cdot \omega }{(1-T^2\cdot\omega^2)^2+4 \cdot \beta^2 \cdot T^2 \ \cdot \omega^2} \ \ \ \ \ \ \ \ \ \ \ \mathbf{(3.5.6)}

Амплитуда АФЧХ

A(\omega) = \sqrt{u(\omega)^2+v(\omega)^2} =\sqrt{\frac{K^2 \left( (1-T^2\cdot \omega^2)+4\cdot K^2 \cdot \beta^2 \cdot T^2 \cdot \omega^2 \right)}{((1-T^2\cdot \omega^2)^2+4 \cdot \beta^2 \cdot T^2 \cdot \omega^2)^2}}A(\omega) = \frac{K }{\sqrt{(1-T^2\cdot \omega^2)^2+4 \cdot \beta^2 \cdot T^2 \cdot \omega^2}} \ \ \ \ \ \ \ \ \ \ \ \ \mathbf{(3.5.7)}

Сдвиг фазы

\varphi (\omega) = \left \{ \begin{gathered} -arctg \frac{2 \cdot \beta \cdot T \cdot \omega}{1- T^2 \cdot \omega^2}, \ если \ \omega \le \frac{1}{T}; \\ -\pi- arctg \frac{2 \cdot \beta \cdot T \cdot \omega}{1- T^2 \cdot \omega^2}, \ \ если \ \ \omega > \frac{1}{T}. \ \end{gathered} \right. \ \ \ \ \ \ \ \ \ \ \ \mathbf{(3.5.8)}

Анализ формул (3.5.5 3.5.8) показывает, что:

\omega \rightarrow 0 \Rightarrow \left \{ \begin{gathered} u(\omega) \rightarrow K; \\ v(\omega) \rightarrow 0; \\ A(\omega) \rightarrow K; \\ \varphi(\omega) \rightarrow 0; \end{gathered} \right. \ \ \ \ \ \ \ \omega \rightarrow \infty \Rightarrow \left \{ \begin{gathered} u(\omega) \rightarrow 0; \\ v(\omega) \rightarrow 0; \\ A(\omega) \rightarrow 0; \\ \varphi(\omega) \rightarrow - \pi; \end{gathered} \right. \ \ \ \ \ \ \ \mathbf{(3.5.9)}

Одной из главных особенностей АФЧХ является возможность существования экстремума в зависимостиA(). Выполним исследование на экстремум:

\frac{dA(\omega)}{d\omega}=\frac{d}{d\omega} \left( \frac{K}{\sqrt{(1-T^2\cdot\omega^2)^2+4\cdot\beta^2\cdot T^2\cdot \omega^2}}\right)=0\frac{\frac{d}{d\omega}K\cdot\sqrt{(1-T^2\cdot\omega^2)^2+4\cdot\beta^2\cdot\omega^2}-K \cdot \frac{d}{d\omega}\sqrt{(1-T^2\cdot\omega^2)^2+4\cdot\beta^2\cdot\omega^2}}{(1-T^2\cdot\omega^2)^2+4\cdot\beta^2\cdot\omega^2} = \\ =\frac{-0.5\cdot K\cdot((1-T^2\cdot\omega^2)^2+4\cdot\beta^2\cdot\omega^2)^{-1.5}\cdot[2\cdot(1-T^2\cdot\omega^2)\cdot(-2)\cdot T^2\cdot \omega+8 \cdot \beta^2\cdot\omega]}{(1-T^2\cdot\omega^2)^2+4\cdot\beta^2\cdot\omega^2}

Очевидно что, для того, что бы выражение равнялось нулю необходиом равенство нлую следующего выражения:

-4\cdot(1-T^2\cdot \omega^2)\cdot T^2 \cdot \omega+8 \cdot \beta^2\cdot T^2 \cdot \omega = 0

Отсюда вырражение для экстермума:

\omega_m=\frac{1}{T}\sqrt{1-2\cdot \beta^2} \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \mathbf{(3.5.10)}

Очевидно, что \omega_m существует если (1- 2 \cdot \beta^2)\ge 0 \Rightarrow \beta \le\frac{\sqrt2}{2}

Если \beta < \frac{\sqrt{2}}{2} , то заивисмость A(\omega) имеет экстремум.

Если \beta >\frac{\sqrt{2}}{2} , экстремума в заивсимости A(\omega) нет.

Вычислим максимальное значение A(\omega) , под ставим выражение для \omega_m 3.5.10 в формулу 3.5.7, получим:

A(\omega_m) =\frac{K}{\sqrt{\left [1 -T^2 \frac{1}{T^2}(1-2\beta^2) \right ]^2+4\beta^2T^2\frac{1}{T^2}(1- 2\beta^2)}} \RightarrowA(\omega_m) = \frac{K}{2 \cdot\beta \sqrt(1- \beta^2)} \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \mathbf{(3.5.11)}

Анализ вышеприведенных соотношений показывает, что при \beta < \frac{\sqrt{2}}{2} графикA(\omega)имеет горб, который при уменьшении \beta растет и при \beta \rightarrow 0 \ \ \ \ \ \ A(\omega) \rightarrow \infty , что означает разрыв в зависимостиA(\omega).

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

Поскольку \beta = \frac{T_1}{T_2} , то очевидна роль постоянных времени :

T_2 раскачивает колебания, а T_1 демпфирует их. Рассмотрим соответствующие графики:

Рисунок 3.5.2 АЧХ колебательного звенаРисунок 3.5.2 АЧХ колебательного звенаРисунок 3.5.3 ФЧХ колебательного звенаРисунок 3.5.3 ФЧХ колебательного звена

Данные графики аналогичны для случаев резонансов в теоретической механике, физике, электротехнике и т.д.

Величину \omega = \frac{1}{T} принято называть частотой свободных колебаний и обозначать 0.

Рассмотрим колебательное звено в котором = 0. Очевидно, что в данном звене при ступечатом воздействии устанавливаются незатухающие колебания, а само звено вырождается в консервативное. При этом согласно формуле 3.5.10 выражение экстремума для такого звена:

\omega_m=\frac{1}{T}\sqrt{1-2\cdot 0^2} = \frac{1}{T}

Величину \omega = \frac{1}{T} принято называть частотой свободных колебаний и обозначать 0.

Подставляя различные значения в формулу (3.5.5) или (3.5.6) построим годограф АФЧХ на комплексной плоскости:

Рисунок 3.5.4 АФЧХ колебательного звенаРисунок 3.5.4 АФЧХ колебательного звенаРисунок 3.5.5 Годограф АФЧХ консервативного звенаРисунок 3.5.5 Годограф АФЧХ консервативного звена

Построение ЛАХ Lm() не может быть сделано так же просто, как для предыдущих позиционных звеньев, т.е. она не сводится к комбинации отрезков прямых.

Будем использовать для построения графика ЛАХнормированную(безразмерную) частоту\tilde{\omega} = \frac{\omega}{\omega_0}, где \omega_0 - частота свободных колебаний, имеющим место в консервативном звене со следующим уравнением динамики:

T^2 \cdot y''(t)+y(t) = K \cdot x(t)

Решим данное уравнение динамики, используя корни характеристического уравнения L(\lambda )=0 :

T^2\cdot \lambda^2+1=0 \Rightarrow \lambda_{1,2} = \pm i\cdot\frac{1}{T} = \pm i \cdot \omega_0y_{собств} = С_1\cdot e^{i \cdot \omega_0\cdot t}+C_2\cdot e^{-i\cdot \omega_0 \cdot t} \approx sin(\omega_0\cdot t)

На этом месте у меня всегда выносится мозг, как могут прыгающие на пружинке шарике, и электроны в электрическом контуре, описаны с помощью одиникового выражения, формулы синуса - соотношения стороно в прямоугольном треуголнике. Как это работает?!

Введя новую переменную\tilde{\omega}в выражение дляLm() = 20 lg (А()):

Lm(\omega) =20\cdot lg(K) - 20 \cdot lg(\sqrt{(1-T^2\cdot \omega^2)^2+4 \cdot \beta^2\cdot T^2\cdot \omega^2}) = =20\cdot lg(K) - 20 \cdot lg(\sqrt{\left (1-\frac{\omega^2}{\omega_0^2} \right)^2+4 \cdot \beta^2\cdot \frac{\omega_2}{\omega_0^2}} \RightarrowLm(\omega) =20\cdot lg(K) - 20 \cdot lg(\sqrt{\left (1-\tilde{\omega}^2 \right)^2+4 \cdot \beta^2\cdot \tilde {\omega}^2} \ \ \ \ \ \ \ \ \ \ \ \mathbf{(3.5.12)}

Таким образом мы получаем выражение, которое не зависит от Т. Такая форма представления позволяет свести различные ЛАХ при различныхТк автомодельному (универсальному) виду графиков.

На рисунке ниже представлен графикLm() в форме (3.5.12), построенный фактически в логарифмических координатах, причем коэффициент усиленияK=1.

Рисунок 3.5.6 ЛАХ колебательного звенаРисунок 3.5.6 ЛАХ колебательного звена

Подчеркнем, что при такой форме представления все ЛАХ при различныхT1иT2можно собирать вместе.

ВеличинаHm(см. рис. 3.5.6) называетсяпревышением:

H_m=20\cdot lg \frac{1}{2\cdot\beta\cdot \sqrt{1-\beta^2}} \ \ \ \ \ \ \ \ \ \ \ \ \ \ \mathbf{(3.5.13)}

Если, \beta <<1, \ \ \beta \approx 0 то в упрощенных расчетах величину превышенияHmможно оценить, как:

H_m = 20 \cdot lg \frac{1}{2\cdot \beta}=-20lg(2\cdot \beta) \ \ \ \ \ \ \ \ \ \ \mathbf{(3.5.14)}

при =m(эта формула работает для ярко выраженных горбов).

Вычислим переходную функцию звенаh(t):

h(t)= L^{-1}[H(s)] =L^{-1}\left[\frac{W(s)}{s}\right] = L^{-1}\left[ \frac{K}{s(T^2\cdot s^2+2 \cdot \beta \cdot s+1)} \right] \Rightarrowh(t) =\frac{K}{T^2}L^{-1} \left[ \frac{1}{s(s^2+\frac{2\cdot \beta}{T}\cdot s)+\frac{1}{T^2}} \right]

Для вычисления переходной функции воспользуемся формулой Хэвисайда сначала найдем полюса s_1,s_2,s_3:

s \cdot \left(s^2+\frac{2 \cdot \beta}{T}+ \frac{1}{T^2} \right) =0 \Rightarrow \\ s_1 =0;\\s_2 = -\frac{\beta}{T}+i \cdot \frac{1}{T}\sqrt{1- \beta^2} \\s_3 = -\frac{\beta}{T}-i \cdot \frac{1}{T}\sqrt{1- \beta^2}

По формуле Хэвисайда

h(t)= \frac{K}{T^2} \sum_1^3 \lim_{s \to s_j } \left[ \frac{(s-s_j)}{s \cdot(s^2+\frac{2 \cdot \beta}{T}\cdot s+\frac{1}{T^2})} \cdot e^{st} \right]\ \ \ \ \ \ \ \ \ \ \ \ \ \mathbf{(3.5.15)}

Разберем отдельно каждый предел:

\lim_{s \to 0} \left [ \frac{(s-0)}{s \cdot(s^2+\frac{2 \cdot \beta}{T}\cdot s+ \frac{1}{T^2})} \cdot e^{st}\right]=\frac{1}{0+0+\frac{1}{T^2}}\cdot1=T^2

Для вычисления 2-го и 3-го предела в формуле Хэвисайда более удобно использовать новые переменные m и n:

m=-\frac{\beta}{T}; \ \ \ \ \ \ \ n = \frac{1}{T}\sqrt{1-\beta^2}

Тогда корни s_1, s_2 выраженные через переменные m и n будут записаны как:

s_2 =m+i\cdot n; \ \ \ \ \ \ \ \ s_3=m-i\cdot n

Разложим квадратный трех член в скобках в занаментели на множетели и использованием корней s_2, s_3 :

s^2+\frac{2\cdot\beta}{T} \cdot s+\frac{1}{T^2} =(s-s_2)\cdot(s-s_3)

тогда 2-й предел в фомуле Хевисайда можно записать как:

\lim_{s \to (m+i \cdot n)} \left [ \frac{s -m-i\cdot n}{s (s - m-i\cdot n)(s-m+i \cdot n)} \cdot e^{s\cdot t}\right] =\\ = \frac{1}{(m+i\cdot n)(m+i\cdot n-m+i \cdot n)} \cdot e^{(m+i \cdot n)\cdot t} = \\ = \frac{1}{(m +i\cdot n)\cdot 2 \cdot i\cdot n} \cdot e^{m\cdot t}\cdot e^{i\cdot n\cdot t}

домножая на комплексно сопряженное число (m-i \cdot n)\cdot i числитель и знаменатель получим значение второго предела:

-\frac{n+m \cdot i}{(m^2+n^2)\cdot 2 \cdot n}\cdot e^{m\cdot t}\cdot e^{i\cdot n \cdot t }

Анологично 3-й предел в формуле Хевисайда можно записать как:

\lim_{s \to (m-i \cdot n)} \left [ \frac{s -m+i\cdot n}{s (s - m-i\cdot n)(s-m+i \cdot n)} \cdot e^{s\cdot t}\right] =\\ = \frac{1}{(m-i\cdot n)(m-i\cdot n-m-i \cdot n)} \cdot e^{(m-i \cdot n)\cdot t} = \\ = -\frac{1}{(m -i\cdot n)\cdot (-2) \cdot i\cdot n} \cdot e^{m\cdot t}\cdot e^{i\cdot n\cdot t}

домножая на комплексно сопряженное число (m+i \cdot n)\cdot i , числитель и знаменатель получим значение третьего предела:

\frac{-n+m\cdot i}{(m^2+n^2)\cdot 2\cdot n}e^{m\cdot t}\cdot e^{-i\cdot n\cdot t}

Отдельно сложим второе и третье слогаемое в формуле Хевисайда:

\sum_2^3 =-\frac{e^{m\cdot t}}{2 \cdot n \cdot (m^2+n^2)} \left [ (n+i \cdot m)\cdot e^{i \cdot n \cdot t}+(n-i \cdot m)\cdot e^{-i \cdot n \cdot t} \right ]==-\frac{e^{m\cdot t}}{2 \cdot n \cdot(m^2+n^2)}\left[ n \cdot e^{i \cdot n \cdot t} +i \cdot m \cdot e^{i \cdot n \cdot t}+n \cdot e^{-i \cdot n \cdot t}-i \cdot m \cdot e^{-i \cdot n \cdot t} \right] == -\frac{e^{m \cdot t}}{2 \cdot n \cdot (m^2+n^2)} \left [ n\cdot(\underbrace{e^{i \cdot n \cdot t}+ e^{-i\cdot n \cdot t}}_{2 \cdot cos(n \cdot t)})+ i \cdot m \cdot(\underbrace{e^{i \cdot n \cdot t}-e^{-i \cdot n \cdot t}}_{2\cdot i \cdot sin(n \cdot t)})\right ]== -\frac{e^{m \cdot t}}{2 \cdot n \cdot(m^2+n^2)}\left [n \cdot cos (n \cdot t)- m \cdot sin(n \cdot t)\right ] == -\frac{e^{m \cdot t}}{2 \cdot n \cdot(m^2+n^2)}\left [cos (n \cdot t)- \frac{m}{n} \cdot sin(n \cdot t)\right ]

подставляя значения n и m:

(m^2+n^2)=\frac{\beta^2}{T^2}+\frac{1-\beta^2}{T^2}=\frac{1}{T^2}\\ \frac{m}{n}=-\frac{\beta}{T}\cdot \frac{T}{\sqrt{1-\beta^2}}

и собирая все слагаемые формулы 3.5.15 получаем:

h(t)=\frac{K}{T^2}\left [T^2 - T^2 \cdot e^{m \cdot t} (cos(n \cdot t)+\frac{\beta}{\sqrt{1-\beta^2}}\cdot sin(n \cdot t)) \right] \Rightarrow h(t) = K \left [ 1 -e^{-\frac{\beta}{T}\cdot t} \left(cos \frac{\sqrt{1-\beta^2}}{T}\cdot t+\frac{\beta}{\sqrt{1-\beta^2}}sin\frac{\sqrt{1-\beta^2}}{T} \cdot t \right) \right ] \ \ \ \ \ \mathbf{(3.5.16)}

Введем новую переменную \omega_c = \frac{1}{T}\sqrt{1-\beta^2} и перепишем формулу для переходной функции:

h(t) = K \left [1 -e^{-\frac{\beta}{T} \cdot t} \left( cos(\omega_c \cdot t)+\frac{\beta}{\sqrt{1 -\beta^2}}sin(\omega_c \cdot t)\right) \right ] \ \ \ \ \ \ \ \mathbf{(3.5.16.a)}

Величина \omega_c = \frac{1}{T}\sqrt{1-\beta^2} называется частотой собственной колебаний при 0<\beta< 1 .

Таким образом в описании колебательного звена появилосьтриновых частоты \omega_m < \omega_m <\omega_c

  • \omega_0 - частота свободных колебаний;

  • \omega_m- частота, соответствующая максимальной амплитуде;

  • \omega_c- частота собственных колебаний.

Причем \omega_m < \omega_m <\omega_c

Рассмотрим предельные случаи для (т.е. = 1 и = 0):

Если \beta \to 0 , то \omega_c \to \omega_0=\frac{1}{T} :

h(t) = K \left [1 -e^{0\cdot t} \left ( cos \frac{t}{T} +0 \cdot sin \frac{t}{T} \right ) \right]h(t) = K \left [ 1 - cos \frac{t}{T}\right ] \ \ \ \ \ \ \ \ \ \ \ \mathbf{(3.5.17)}

3.5.17 - переходная функция консервативного звена.

Рисунок 3.5.6 Переходная функция консервативного звенаРисунок 3.5.6 Переходная функция консервативного звена

Если \beta \to 1 , то \omega_c \to 0 , т.е. собственных колебаний в звененет, процесс без колебательный.В этом случае возникают трудности со вторым слагаемым в круглых скобках формулы (3.5.16).

Раскрываем неопределенность типа\frac{0}{0}:

\lim_{\beta \to 1 } \left[ \frac{\beta}{\sqrt{1-\beta^2}} \cdot sin \left (\frac{\sqrt{1-\beta^2}}{T} \cdot t \right ) \right ] = \lim_{\beta \to 1} \left [ \frac{\beta \cdot t}{T} \cdot \frac{sin(\frac{\sqrt{1-\beta^2}}{T}\cdot t)}{\underbrace{\frac{\sqrt{1-\beta^2}}{T}}_{\approx \frac{sin x}{x}}} \right ]=\frac{t}{T}h(t)_{\beta=1} = K \left [ 1 - e^{-\frac{t}{T}}\cdot \left (1 +\frac{t}{T} \right)\right] \ \ \ \ \ \ \ \ \ \ \ \ \ \mathbf{(3.5.18)}

эта формула соответствует также аналогичной формуле для апериодического звена 2-го порядка приD= 0 (совпадающиеполюса).

Рисунок 3.5.8 Переходная функция колебательного звена (при = 1)Рисунок 3.5.8 Переходная функция колебательного звена (при = 1)Рисунок 3.5.9 Переходная функция колебательного звена (при 0 < < 1)Рисунок 3.5.9 Переходная функция колебательного звена (при 0 < < 1)

Если 0<\beta<1 , то \beta =T\cdot \frac{\omega_c}{\pi} \cdot \ln \frac{A_1}{A_2}

Дифференцируя во времени формулы (3.5.16 3.5.18), найдем соответствующие весовые функции для крайних значений \beta (w(t)):

Если \beta =0 \Rightarrow

 w(h)_{\beta =0} = h'(t)= \frac{K}{T} sin \left ( \frac{t}{T} \right ) \ \ \ \ \ \ \ \ \ \ \ \mathbf{(3.5.19)}Рисунок 3.5.10 Весовая функция колебательного звена при = 0.Рисунок 3.5.10 Весовая функция колебательного звена при = 0.

Если \beta =1 \Rightarrow

 w(h)_{\beta =1} = h'(t)= K \left [ \frac{1}{T} \cdot e^{-\frac{t}{T}}\cdot \left( 1+ \frac{t}{T} \right) - e^{-\frac{t}{T}} \cdot \frac{t}{T} \right ]w(h)_{\beta =1} = \frac{K}{T^2} \cdot t \cdot e ^{-\frac{t}{T}} \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \mathbf{(3.5.20)}Рисунок 3.5.11 Весовая функция колебательного звена при = 1.Рисунок 3.5.11 Весовая функция колебательного звена при = 1.

Если 0<\beta <1 \Rightarrow

w(t) = h'(t) = \frac{K}{T\cdot \sqrt{1 -\beta^2}}\cdot e^{-\frac{\beta \cdot t}{T}} \sin \left ( \frac{\sqrt{1-\beta^2}}{T} \cdot t \right) \ \ \ \ \ \ \ \ \ \ \mathbf{(3.5.21)}\beta = T\cdot \frac{\omega_c}{\pi}\cdot \ln\frac{B_1}{B_2}Рисунок 3.5.12 Весовая функция колебательного звена при 0 < < 1.Рисунок 3.5.12 Весовая функция колебательного звена при 0 < < 1.

Примерами колебательного звена можно считать:

  1. RCL цепь см. начало статьи;

  2. Упругиемеханические передачи;

  3. Гироскопический маятник;

  4. Управляемый двигатель постоянного тока (при некоторых условиях).

Пример

В качестве примера для исследования колебательного звена возьмем электрический колебательный контур, который был рассмотрен в начале статьи и сравним его с моделью колебательного звена.Модель контура представлена на рисунке 3.5.13:

Рисунок 3.5.13 Модель колебательного контураРисунок 3.5.13 Модель колебательного контура

Схема модели содержит в себе:

  1. модель электрического контура в виде электрической схемы;

  2. модель контура в виде колебательного звена.

Параметры электрической схемы задаются в виде общих сигналов проекта. См. рис. 3.5.14:

Рисунок 3.5.14 Общие сигналы проекта.Рисунок 3.5.14 Общие сигналы проекта.Рисунок 3.5.15. Вычисление параметров для колебательного звена.Рисунок 3.5.15. Вычисление параметров для колебательного звена.

В общем скрипте проекта выполняется вычисление постоянной времениTи коэффициента демпфирования \beta

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

Рисунок 3.5.16. Графики напряжений источника и на конденсаторе.Рисунок 3.5.16. Графики напряжений источника и на конденсаторе.

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

Рисунок 3.5.17 Сравнение модели контура и колебательного звенаРисунок 3.5.17 Сравнение модели контура и колебательного звена

На графике рис. 3.5.16 видно возникновение колебательного процесса и его затухание с течением времени. График на рис. 3.5.17 показывает практически полное совпадение модели в виде электрической схемы и модели в виде колебательного звена:

Выполним гармонический анализ данной модели, аналогично тому, как мы это делали для модели демпфера и камеры смешения реактора демпфера (см. разделы 3.3 Апериодическое звено 1-го порядка. и 3.1 Амплитудно-фазовая частотная характеристика). Расчетная схема для такого анализа приведена на рисунке 3.5.18.

Рисунок 3.5.18. Частотный анализ электрического контураРисунок 3.5.18. Частотный анализ электрического контура

Амплитуда входного тестового сигнала - 1 В, аналогична амплитуде ступенчатого воздействия из предыдущего численного эксперимента.

Результаты анализа представлены на рисунке 3.5.19

Рисунок 3.5.19 Результаты гармонического анализа.Рисунок 3.5.19 Результаты гармонического анализа.

Результаты моделирования показывают практическое совпадение теоретических значений частоты, при которой достигается максимальная амплитуда сигнала, и значений, полученных в результате моделирования электрической схемы: Теоретическое значение = 111,75 Гц Полученное моделированием = 112,2 Гц

Для исследования влияния параметров модели добавим на схему управляющие элементы, которые буду менять сопротивление резистора и емкость конденсатора во время расчёта.

 Рисунок 3.5.20 Модель с изменяемыми параметрами контура. Рисунок 3.5.20 Модель с изменяемыми параметрами контура.

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

Чтобы данная конфигурация заработала, необходимо добавить в скрипт программы код, который заберёт значения с ползунков и передаст их в параметры модели (см. рис 3.5.21)

Рисунок 3.5.21. Скрипт изменения параметров моделиРисунок 3.5.21. Скрипт изменения параметров модели

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

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

Рисунок 3.5.22. Настройки контура для устранения колебанийРисунок 3.5.22. Настройки контура для устранения колебанийРисунок 3.5.23. Графики изменения переходных процессов в контуре при изменении R и С.Рисунок 3.5.23. Графики изменения переходных процессов в контуре при изменении R и С.

При увеличении сопротивления резистора и емкости кондесатора происходит увеличение коэффициента демпфирования, и когда Если \beta >1 \Rightarrow колебательное звено превращается в апериодическое 2-го порядка. (см. график на рис 3.5.23.

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

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

Рисунок 3.5.24 Схема колебательного контура с настройками частоты источника.Рисунок 3.5.24 Схема колебательного контура с настройками частоты источника.

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

Рисунок 3.5.24 Скрипт для управления и отображения частоты.Рисунок 3.5.24 Скрипт для управления и отображения частоты.

Данная модель позволяет независимо настраивать параметры цепи и частоту источника напряжения.

В частности, можно убедится, что при различных настройках колебательного контура максимальная амплитуда колебаний напряжения достигается тогда, когда частота источника совпадает с частотой максимальной амплитуды, рассчитанной по формуле 3.5.10 см.скрипт на рис. 3.5.24.

Видео с управлением данным контуром можно посмотреть по ссылке.

А, например, на следующем графике изображено изменение напряжения на конденсаторе при повышении частоты источника от 0 до 300 Гц с шагом 1 Гц 1 сек.

График построен путем давления в скрипте строки, передвигающей ползунок каждую секунду на 1 единицу (Гц) BarW.Value=Round(time) .

Как видим результат ручного управления совпал с результатом гармонического анализа максиму амплитуды теоретической частоте максимума - 112 Гц.

Примеры проектов для самостоятельного изучения можно взять по ссылке здесь.

Предыдущая лекция. 3.4 Апериодическое звено 2го порядка.

Подробнее..

3. Частотные характеристики звеньев и систем автоматического регулирования. 3.7 Форсирующее звено

01.06.2021 02:22:59 | Автор: admin

Лекции по курсу Управление Техническими Системами читает Козлов Олег Степанович на кафедре Ядерные реакторы и энергетические установки факультета Энергомашиностроения МГТУ им. Н.Э. Баумана. За что ему огромная благодарность!

Данные лекции готовятся к публикации в виде книги, а поскольку здесь есть специалисты по ТАУ, студенты и просто интересующиеся предметом, то любая критика приветствуется. В предыдущих сериях:

1. Введение в теорию автоматического управления.
2. Математическое описание систем автоматического управления 2.1 2.3,2.3 2.8,2.9 2.13.
3. ЧАСТОТНЕ ХАРАКТЕРИСТИКИ ЗВЕНЬЕВ И СИСТЕМ АВТОМАТИЧЕСКОГО УПРАВЛЕНИЯ (РЕГУЛИРОВАНИЯ).
3.1. Амплитудно-фазовая частотная характеристика: годограф, АФЧХ, ЛАХ, ФЧХ.
3.2. Типовые звенья систем автоматического управления (регулирования). Классификация типовых звеньев. Простейшие типовые звенья.
3.3. Апериодическое звено 1го порядка (инерционное звено). На примере входной камеры ядерного реактора.
3.4. Апериодическое звено 2-го порядка.
3.5. Колебательное звено.3.3. Апериодическое звено 1го порядка (инерционное звено). На примере входной камеры ядерного реактора.
3.6. Инерционно-дифференцирующее звено.

Тем сегодняшней статьи: 3.7 Форсирующее звено (идеальное звено с введением производной)

Уравнение динамики форсирующего звена:

y(t) = k \cdot[x(t)+\tau \cdot x'(t)] \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \mathbf{(3.7.1)}

Уравнение динамики в изображениях Лапласа:

Y(s) = k \cdot [\tau\cdot s+1]\cdot X(s)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \mathbf{(3.7.2)}

В общем, данное звено формально можно отнести к позиционным, т.к.a_0=1; b_0 = 0или статическая характеристика имеет вид: y(0)= k \cdot x(0) .

Передаточная функция форсирующего звена:

W(s) =\frac{Y(s)}{X(s)}= k \cdot [\tau \cdot s+1] =k\cdot \tau\cdot s+k \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \mathbf{(3.7.3)}Рисунок 3.7.1 Эквивалентная структурная схема форсирующего звенаРисунок 3.7.1 Эквивалентная структурная схема форсирующего звена

АФЧХ форсирующего звена, получается путем замены s= i \cdot \omega:

W(i\cdot \omega) = k \cdot[1+i\cdot \tau\cdot \omega ] = \underbrace{k}_{Re}+i\cdot\underbrace{k\cdot \tau\cdot\omega}_{Im} \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \mathbf{(3.7.4)}

Модуль АФЧХ:

u(\omega) = k\\ v(\omega)= k \cdot \tau \cdot \omega \left \{ \begin{gathered} U(\omega) = k \\ V(\omega) = k \cdot \tau\cdot \omega\ \end{gathered} \right. \Rightarrow A(\omega) = |W(i\cdot \omega) | = k \cdot \sqrt{1+\tau^2\cdot \omega^2} \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \mathbf{(3.7.5)}

Подставляя в формулы (3.7.4) и (3.7.5) различные значениястроим соответствующие графики:

Рисунок 3.7.2 АФЧХ форсирующего звенаРисунок 3.7.2 АФЧХ форсирующего звенаРисунок 3.7.3 АЧХ и ФЧХ форсирующего звенаРисунок 3.7.3 АЧХ и ФЧХ форсирующего звена

Логарифмическая амплитудная характеристика (ЛАХ):

Lm(\omega) = 20 \cdot lg (A(\omega))=20 \cdot lg (k)+ 20 \cdot lg \sqrt{1+\tau^2\cdot \omega^2} \ \ \ \ \ \ \ \ \ \ \ \mathbf{(3.7.6)}Рисунок 3.7.4 ЛАХ и ЛФЧХ форсирующего звенаРисунок 3.7.4 ЛАХ и ЛФЧХ форсирующего звена

Если \omega_{сопр} <<\frac{1}{\tau} звено приблизительно совпадает с идеальным усилительным звеном - \omega(s)\approx k .

Если \omega_{сопр} >> \frac{1}{\tau} - звено приблизительно совпадает с идеальным дифференцирующим звеном -\omega(s) \approx k \cdot \tau \cdot s

Переходная функция:

h(s) = L^{-1} \left[ H(s) \right] = L^{-1} \left[ \frac{W(s)}{s}\right] = L^{-1}\left[ \frac{k}{s}+\frac{k \cdot \tau \cdot s}{s}\right] = k \cdot Z^{-1}\left[\frac{1}{s}+\tau \right] \Rightarrowh(t) = k \cdot 1(t)+k \cdot \tau \cdot \delta(t)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \mathbf{(3.7.7)}

Весовая функция получается диффернцированием h(t) поt:

w(t) = k \cdot \left[\delta(t)+ \tau\cdot \delta'(t) \right]\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \mathbf{(3.7.8)}

Построим соответствующие графики:

Рисунок 3.7.5 Переходная функция форсирующего звенаРисунок 3.7.5 Переходная функция форсирующего звенаРисунок 3.7.6 Весовая функция форсирующего звенаРисунок 3.7.6 Весовая функция форсирующего звена

Примечание: Данное звено реализуется в ПД-регуляторах, обеспечивающих введение производных в закон управления. ПД-регулятор увеличивает быстродействие замкнутых САР, т.к. управление ведется по рассогласованию и по производной от рассогласования.

Пример

Мы уже запилили 10 лекций по УТС Управление в технических устройствах, но пока не рассмотрели ни одного примера, где было представлено собственно управление. Поскольку рассматриваемое в этой лекции звено используется в виде регулятора, разберем, наконец, в примере непосредственно модель управления техническим устройством, чтобы еще немного переместиться от теории к практической реализации.

Создадим комплексный в проект, в котором будут модель технического объекта (файл проектаnode_НS_2.prt) и модель системы управления (файлpd.prt), объединенные в пакет (файлnode_НS_2.pak)

В качестве технического объекта возьмём модель камеры смешения, используемую как иллюстрацию лекции Апериодическое звено первого порядка, и добавим к модели Узел регулирования температуры (см. рис. 3.7.7)

Рисунок 3.7.7 Модель камеры смешения с узлом регулирования температурыРисунок 3.7.7 Модель камеры смешения с узлом регулирования температуры

Узел регулирования температуры представляет собой дополнительный трубопровод с регулирующим клапаном (Valve_1 см. рис. 3.7.7). С одной стороны трубопровод подключён к узлу камеры смешения, с другой стороны задается граничное условие (ГУ) по давлению и температуре.Давление в ГУ больше давления в камере смешения, и температура то же больше чем на входе в камеру смешения.

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

В системе также установлен датчик температуры в узле камеры смешения. База сигналов проекта содержит два сигнала:

  • Температура в камере смешения (берется из датчика);

  • Положение клапанаValve_1.

    Модель системы управления представлена на рисунке 3.7.8

Рисунок 3.7.8 Модель системы управленияРисунок 3.7.8 Модель системы управления

В системе управления показания датчика, полученные из базы данных, сравниваются с уставкой по температуре (с требуемой температурой). Отклонения передаются на два регулятора: один из нихпропорциональный, другой пропорционально дифференцирующий.

Настройки регуляторов взяты по умолчанию, все коэффициенты равны 1.

Модель позволяет переключаться между регуляторами с помощьюблокаключа.

Регулирующее воздействие передается c выбранного регулятора на модель привода. Это простой интегратор с ограничением диапазона0 - 100, который с заданной скоростью изменяет положения клапана, а результат предаётся в базу данных.

Рисунок 3.7.9 Выбор типа регулятора в настройкахРисунок 3.7.9 Выбор типа регулятора в настройках

Для демонстрации работы П и ПД регуляторов используется один и тот же готовый блок ПИД регулятор. Тип регулятора задается в свойствах блока (см. рис. 3.7.9)

Рисунок 3.7.10. Скрипт изменения заданной температурыРисунок 3.7.10. Скрипт изменения заданной температуры

Для демонстрации режима управления в общем скрипте программы управления задается последовательное изменение требуемой температуры. (см. рис. 3.7.10)

В начальный момент времени заданная температура соответствует установившейся в системе температуре при 50% открытии клапана. На 10 секунде заданная температура меняется на 22 градуса С, на 50 секунде заданная температура меняется на 23.5 градусов С.

Чтобы можно было сравнить два варианта управления на одном графике, добавим еще один проект в пакет (файлdata.prt).

В данном файле расчетная схема содержит график, на котором выводятся текущее значение температуры (из базы данных сигналов) и значения из файла с предыдущим расчётом (temp_old.dat).

3.7.11 Проект и скрипт для сравнения двух рассчетов3.7.11 Проект и скрипт для сравнения двух рассчетов

Во время расчёта мы сохраняем текущее значение в файл (temp_cur.dat). По завершению расчёта (секцияfinalizationскрипта) мы копируем данные из текущего файла в сохраненный ранее с помощью глобального скрипта программы. (см. рис. 3.7.11).

Результаты моделирования представлены на рисунке 3.7.12

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

Рисунок 3.7.12 Сравнение П и ПД регуляторовРисунок 3.7.12 Сравнение П и ПД регуляторов

Пример для самостоятельного изучения можно взять здесь.

Предыдущая лекция из главы 3, Частотные характеристики звеньев и систем автоматического регулирования: 3.6 Инерционно-дифференцирующее звено.

Подробнее..

Управление многозвенными манипуляторами робототехнического комплекса с помощью нейронной сети

27.11.2020 12:11:35 | Автор: admin

Введение

При моделировании систем управления движением роботов требуется решать задачи кинематики и динамики для их исполнительных механизмов. Существует обратная и прямая задача кинематики. Прямая задача кинематики состоит в определении пространственного положения и ориентации характерной точки, как правило, рабочего инструмента манипулятора робота по известным значениям обобщенных координат. Обратная задача кинематики, как и прямая задача, является одной из основных задач кинематического анализа и синтеза. Для управления положением звеньев и ориентацией рабочего инструмента манипулятора возникает необходимость решения обратной задачи кинематики.

Большинство аналитических подходов для решения обратной задачи кинематики являются достаточно затратными с точки зрения вычислительных процедур. Одним из альтернативных подходов является использование нейронных сетей. Входные данные. Рассмотрим трехзвенный манипулятор с параметрами, приведенными в таблице 1.

A

Alfa

D

Tetta

0

pi/2

0.2

0

0.4

0

0

0

0.4

0

0

0

Таблица 1 - параметры DH для трехзвенного манипулятора

В средеMatLab, с использованием свободно распространяемогоRoboticsToolboxстроится компьютерная модель трехзвенного манипулятора. Ниже приведен фрагмент скриптаMatLabв котором присваиваем в массив L значение параметров,A,Alfa, иDиз таблицы 1. Для нашей модели- этопостоянные значения и в процессе работы с манипулятором они не изменяются. ПараметрTettaмы присваиваем в переменнуюinitialPose_left-начальноеположениенашегоманипулятора.

function [L,initialPose_left,baseL] =model3z % Левая рука initialPose_left = deg2rad([0 0 0]); L(1) = Revolute('d', 0.2, 'alpha', pi/2, 'qlim', initialPose_left(1)+deg2rad([-90 +90]) ); L(2) = Revolute('d', 0, 'alpha', 0, 'a', 0.4, 'qlim', initialPose_left(2)+deg2rad([-20 +90]));   L(3) = Revolute('d', 0, 'alpha', 0, 'a', 0.4, 'qlim', initialPose_left(2)+deg2rad([-90 +90])); % -178 +178 baseL = [1 0 0 0;          0 1 0 0;          0 0 1 0;          0 0 0 1]; 

На рисунке 1 приведено графическое отображение выбранного (см. таблицу 1) начального положения трёхзвенного манипулятора.

Рисунок 1- Графическое отображение выбранного начального положения трёхзвенного манипулятора Рисунок 1- Графическое отображение выбранного начального положения трёхзвенного манипулятора

Изменяя значение угловTetta, мы можем задавать произвольное начальное положение манипулятора. Для того чтобы манипулятор изначально имел другое положение необходимо изменить переменнуюinitialPose_left.

Входные данные

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

Суть метода заключается в случайном выборе заведомо известных положений манипулятора и нахождения с помощью решения прямой задачи кинематики, координат и ориентации в пространстве конечной точки.

Для обучающихся данных были созданыизвестные положения сервоприводов робота в случайном порядке. Полученные данные будем сохранять в виде вектора:

Y_i=[q_1,q_2,q_3...q_n],

где q это угол поворота сервопривода каждого сочленения.

%Получаем минимальное и максимальное возможное положение сервоприводов t1_min = L(1).qlim(1); t1_max = L(1).qlim(2);  t2_min = L(2).qlim(1); t2_max = L(2).qlim(2); t3_min = L(3).qlim(1); t3_max = L(3).qlim(2); % массив случайных положений сервоприводов t1 = t1_min + (t1_max-t1_min)*rand(N,1); t2 = t2_min + (t2_max-t2_min)*rand(N,1); t3 = t3_min + (t3_max-t3_min)*rand(N,1); Y = horzcat(t1, t2, t3);

Решая прямую задачу кинематики, были получены для каждого угла сервопривода координаты конечной точки манипулятора.Полученные значения сохраняются в векторе:

X_i=[x,y,z,R], R=[,,]

Где:x,y,z координаты в пространстве конечной точки манипулятора. R матрица поворота, представленная через углы Эйлера.

% массив матриц преобразований 4x4 T = zeros(4, 4, N); T(:, :, :) = leftArm.fkine(Y); % прямая задача, получаем координаты положения по углам сервопривода %R = tr2rpy(T(1:3, 1:3, :), 'arm'); % получаем тангаж рыскание и крен R = tr2eul(T(1:3, 1:3, :)); % получаем тангаж рыскание и крен Tx = reshape(T(1, 4, :), [N 1]); % все Х-ы Ty = reshape(T(2, 4, :), [N 1]); Tz = reshape(T(3, 4, :), [N 1]); % scatter3(Tx,Ty,Tz,'.','r'); X = horzcat(Tx, Ty, Tz, R); % массив координат 

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

Рисунок 2 - начальное положение трехзвенного манипулятора, точками отмечено конечное положение манипулятора Рисунок 2 - начальное положение трехзвенного манипулятора, точками отмечено конечное положение манипулятора

Итого, был получен набор для обучения из 3000 данных. В качестве входящих значений для обучения нейронной сети мы имеем две матрицы, состоящие из набора векторов X и Y.

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

Нейронная сеть

Для создания нейронной сети будет использоваться библиотека Keras для Python. В начале набор разбивается на тренировочные и тестовые данные.

X_train, X_test, y_train, y_test = train_test_split(data_x, data_y, test_size=0.2,random_state=42) 

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

def base_model(): model = Sequential() model.add(Dense(32,input_dim=6,activation='relu')) model.add(Dense(64,activation='relu')) model.add(Dense(128,activation='relu')) model.add(Dense(32,activation='relu')) model.add(Dense(3, init='normal')) model.compile(loss='mean_absolute_error', optimizer = 'adam', metrics=['accuracy']) model.summary() return model

Трехзвенный манипулятор имеет небольшую степень свободы, для решения этой задачи может справиться небольшая нейронная сеть. Рациональней использовать нейронную сеть с пятью слоями. Можно построить такую же сеть и на одном слое, но количество нейронов во внутреннем слое сильно возрастет, что приведет к замедлению обучения. Поэтому вариант сети с большим количеством, скрытых слоев, может оказаться гораздо экономней.Теперь обучим новую сеть нуля в течениепятистаэпохиспользуя оболочкуKerasRegressor, которая встроенная вKeras.

clf = KerasRegressor(build_fn=base_model, epochs=500, batch_size=20,verbose=2)clf.fit(X_train,y_train) 

После обучения сети ее можно использовать для прогнозирования.

res = clf.predict(X_test) 

Модель показала на тестовом наборе 99% точности, что является хорошим результатом.

Результат обучения

На Рисунке 3 линией отмечено движение робота, рассчитанное обратной кинематикой, точками отмечены положение робота, найденное нейронной сетью. Как видно траектории частично совпали. В ходе численного моделирования была проведена серия экспериментов, различающихся в зависимости от выборки и количества эпох обучения. Многочисленные эксперименты показали высокую эффективность предложенного метода моделирования нейронной сети для обратной кинематической задачи. Основная проблема нейронных сетей - нехватка памяти. Также в алгоритм адаптивных нейронных сетей, в которых нет памяти, нет возможность вспомнить предыдущие ситуации, чтобы улучшить свою работу, когда снова столкнулся с такой же ситуацией.

%% Проверка решений нейронной сети, движение по кругу M=[-178:10:178]; % массив изменений первого узла от -178 градусов до +178 градусов с шагом 10 M_size=length(M); first_q=zeros(M_size, 3); T33 = zeros(4, 4, M_size); T34 = zeros(4, 4, M_size); first_q(:,1)=[deg2rad(M)]; % подготавливаем q T33(:, :, :) = leftArm.fkine(first_q);% получаем координаты куда должен прийти робот, круговое движение R = tr2rpy(T33(1:3, 1:3, :), 'arm'); % получаем тангаж рыскание и крен Tx = reshape(T33(1, 4, :), [M_size 1]); % все Х-ы Ty = reshape(T33(2, 4, :), [M_size 1]); Tz = reshape(T33(3, 4, :), [M_size 1]); plot3(Tx,Ty,Tz) axis([-1 1 -1 1 -1 1]);hold on;grid on; XX = horzcat(Tx, Ty, Tz, R); % массив координат в формате для нейронной сети T34(:, :, :) = leftArm.fkine(q_new); % по результатам решений нейронной сети, получаем координаты Tx2 = reshape(T34(1, 4, :), [M_size 1]); % все Х-ы Ty2 = reshape(T34(2, 4, :), [M_size 1]); Tz2 = reshape(T34(3, 4, :), [M_size 1]); plot3(Tx2,Ty2,Tz2,'.') axis([-1 1 -1 1 -1 1]) 
Рисунок 3 Результат прогнозированияРисунок 3 Результат прогнозирования

Заключение

В ходе выполнения работы была решена обратная задача кинематики с помощью нейросетевого подхода. Задача была решена для трехзвенного манипулятора. С увеличением числа звеньев, задача резко усложняется из-за возможности возникновения множества решений. С этой целью, в дальнейшем нейронная сеть будет усовершенствована. Входные данные для обучения нейронной сети можно решать несколькими способами. Как с использованием подхода Programming by demonstration, так и с помощью решения прямой задачи кинематики. В настоящей работе решение прямой задачи кинематики реализовывалось с помощью пакета Matlab и компьютерной модели манипулятора, построенной на основе подхода Денавита Хартенберга.

Подробнее..

Лаконичная реализация конечных автоматов в Matlab, Octave, C

16.06.2021 18:22:08 | Автор: admin

Актуальность


Конечные автоматы (finite state machines, fsm) штука полезная. Особенно они могут быть востребованы в средах, где в принципе нет развитой многозадачности (например, в Octave, который является в значительной степени бесплатным аналогом Matlab) или в программах для микроконтроллеров, где не используется по каким-то причинам RTOS. До недавнего времени у меня не получалось лаконично описать конечный автомат, хотя и очень хотелось это сделать. Лаконично, т.е. без воды, без создания лишних классов, структур данных, и т.д. Сейчас это, кажется, получилось и я спешу поделиться своей находкой. Возможно, я изобрёл велосипед, но возможно также, что кому-нибудь такой велосипед окажется полезен.


Начальные сведения


Конечный автомат задаётся:
  • набором состояний
  • набором событий
  • таблицей переходов (т.е. в каком состоянии по какому событию что делается и в какое новое состояние осуществляется переход)


Цель, которая стояла передо мной


Есть императивный язык, я буду рассматривать Octave, но это может быть и Matlab и C, например. Этот язык поддерживает:
  • функции
  • указатели на функции
  • то, что обычно поддерживают императивные языки (циклы, условные операторы и т.д.)


Хочется, чтоб базовые понятия языка (функции, структуры данных, массивы или что-то ещё) каким-то элегантным образом соответствовали тому, что нужно при реализации FSM. Профит в том, что
  • код будет самодокументированным
  • Doxygen или другие утилиты для анализа кода и генерации документации по коду будут давать дополнительную пользу


Описание идеи


  • Поведение внутри состояния должно описываться функцией. Поэтому функция хороший кандидат для того, чтоб её имя соответствовало состоянию.
  • Событие должно детектироваться тоже функцией, поэтому и для названий событий тоже можно использовать функции
  • Таблицу переходов можно задавать в либо в виде структуры данных, либо в виде switch/case-выражений внутри состояний


В чём проблема задания таблицы переходов в виде структуры данных?
  • Таблица может быть достаточно большой и сложной. В этом случае структура данных перестанет влезать в экран и поддержка такой таблицы будет не такой уж и удобной.
  • Структура данных требует какого-то объекта в памяти. Это дополнительное неудобство.
  • Структура данных требует специального её конструирования (скорее всего пошагового) это делает структуру программы более красивой, но анализировать такую машину состояний потом будет не так-то удобно.


Поэтому здесь я буду использовать switch/case инструкцию.

Единственной структурой данных будет переменная, где будет храниться состояние автомата.
Сами состояния будут идентифицироваться хэндлерами функций (function handlers), которые будут обрабатывать поведение машины в этом состоянии. Например:

function [new_state  data] = state_idle(data)    if data.block_index == 10        new_state = @state_stop;    else        % do something        data.block_index = data.block_index + 1;        printf('block_index = %d\n', data.block_index);    endendfunction [new_state data] = state_stop(data)    % set break flag    data.stop= 1;endfsm_state = @state_idle;data = struct();data.block_index = 0;data.stop = 0;while (1)    [fsm_state data] = fsm_state(data)    if data.stop        break;    endend


В этом коде вся идея, собственно, и описана. В Си, вместо хэндлера функции будет указатель на функцию, всё остальное останется так же.

Пример из жизни :)


В качестве примера я реализовал на Octave игру Life, Джона Конвея. Если сконфигурировать её в режиме 100 х 100, то она будет симулировать работу 10 000 конечных автоматов и при этом работает она достаточно эффективно. В простейшем варианте (без событий), код для игры выглядит следующим образом:

function [new_state] = state_alive(neighbours)    alive_count = sum(sum(cellfun(@(x)x == @state_alive, neighbours)));    alive_count -= 1;    if (alive_count == 2) || (alive_count == 3)        new_state = @state_alive;    else        new_state = @state_dead;    endendfunction [new_state] = state_dead(neighbours)    alive_count = sum(sum(cellfun(@(x)x == @state_alive, neighbours)));        if (alive_count == 3)        new_state = @state_alive;    else        new_state = @state_dead;    endend% main scriptaddpath('fsm_life')debug_on_error(1)size_x = 30;size_y = 30;init_alive_percentage = 30;% initialization selection:%init = 'random';%init = 'cycle';init = 'glider';field = cell(size_y, size_x);[field{:}] = deal(@state_dead);switch (init)case 'random'    init_alive_count = round((size_x * size_y) * init_alive_percentage / 100);    for n=(1:init_alive_count)        x = floor((size_x-0.0000001)*rand())+1;        y = floor((size_y-0.0000001)*rand())+1;        field{y,x} = @state_alive;    endcase 'cycle'    field{2,1} = @state_alive;    field{2,2} = @state_alive;    field{2,3} = @state_alive;case 'glider'    field{1,3} = @state_alive;    field{2,3} = @state_alive;    field{3,3} = @state_alive;    field{3,2} = @state_alive;    field{2,1} = @state_alive;endprintf("Initial distribution:\n");cellfun(@(x)x == @state_alive, field)% simulationfor step = (1:100)    field_new = cell(size(field));    for x=(1:size_x)        for y=(1:size_y)            x_min = max(x-1, 1);            x_max = min(x+1, size_x);            y_min = max(y-1, 1);            y_max = min(y+1, size_y);            neighbours = field(y_min:y_max, x_min:x_max);            field_new{y,x} = field{y,x}(neighbours);        end    end    field = field_new;    printf('Distribution after step %d\n', step );    cellfun(@(x)x == @state_alive, field)    figure(1); imagesc(cellfun(@(x)x == @state_alive, field));    pause(0.05);end


Если хочется больше самодокументируемости и явного определения событий, тогда к двум функциям, отвечающим за состояния, добавится ещё 3 функции, отвечающие за события:
function event = event_die(neighbours)    alive_count = sum(sum(cellfun(@(x)x == @state_alive, neighbours)));    alive_count -= 1;    if (alive_count == 2) || (alive_count == 3)        event = '';    else        event = 'die';    endendfunction event = event_spawn(neighbours)    alive_count = sum(sum(cellfun(@(x)x == @state_alive, neighbours)));    if (alive_count == 3)        event = 'spawn';    else        event = '';    endendfunction event = event_survive(neighbours)    alive_count = sum(sum(cellfun(@(x)x == @state_alive, neighbours)));    alive_count -= 1;    if (alive_count == 2) || (alive_count == 3)        event = 'survive';    else        event = '';    endendfunction [new_state] = state_alive(neighbours)    event = '';    event = [event, event_die(neighbours)];    event = [event, event_survive(neighbours)];    switch event    case 'die'        new_state = @state_dead;    case 'survive'        new_state = @state_alive;    otherwise        msg = sprintf('Unknown event: %s\n', event);        error(msg);    endendfunction [new_state] = state_dead(neighbours)        event = event_spawn(neighbours);        switch event    case 'spawn'        new_state = @state_alive;    case ''        new_state = @state_dead;    otherwise        msg = sprintf('Unknown event: %s\n', event);        error(msg);    endend


Основной скрипт в этом случае останется тем же самым.
Подробнее..

Часть 3. Dракоши. Раса Тупиков или стохастическая модель мультиагентной системы

01.11.2020 14:16:24 | Автор: admin
Третья часть серии публикаций о мультиагентной системе Dракоши посвящена анализу упрощенной, стохастической модели вселенной Dракош. В этой реализации Вселенной индивидуальное поведение агентов полностью случайно, в том смысле что никак не зависит от состояния внешней или внутренней среды агентов. При этом распределение вероятностей действий агента определяется его хромосомой. Анализ такой модели позволит в дальнейшем выявлять проявления осознанного поведения агентов. В ходе экспериментирования и наблюдения за расой Тупиков было внесено ряд изменений и нововведений в механику мира Dракош.

image

Кто такие Dракоши смотрите в первой части. Во второй части описаны способы расчета вероятности успешного совершения действий при случайном поведении агентов.

1. Зачем нужна раса Тупиков?
2. Особенности расы Тупиков
3. Жизнь Тупиков
4. Реформирования вселенной Dракош

1. Зачем нужна раса Тупиков?


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

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

Как же будет вести себя система в целом на раннем этапе эволюции? И как понять, что эра стохастического поведения закончилась и появились более сознательные Dракоши, которые понимают, что вокруг них происходит?

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

2. Особенности расы Тупиков


В отличии от полноценных Dракош у Тупиков всего две хромосомы:

  • Prob хромосома с вероятностей действий. Состоит из семи элементов генов. Первый ген задает вероятность мутации отдельных генов в обоих хромосомах. Остальные гены задают вероятность совершить одно из шести действий, поэтому сумма их значений равна единице.
  • Color хромосома цвета агента. Строго говоря в данной модели не нужна, т.к. не оказывает никакого влияния ни на поведение агентов ни на их плодовитость. Но я ее оставил что бы использовать для визуализации агентов.

На старте моделирования гены хромосомы Prob инициируется случайным значением равномерно распределенными на отрезке 0..1, затем сумма значений генов со второго по седьмой нормируется на единицу. А гены хромосомы Color значениями 0.5 (т.е. все по началу серые).

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

3. Жизнь Тупиков


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

На старте в пространстве случайным образом размещается 12500 агентов ($RDr = 1.25$Dr/cell). У каждого агента имеется в распоряжении 50 kJ энергии.

На рисунке в качестве примера показано 3 примера изменения плотности агентов в пространстве с течением времени.

image

Анализируя этот график можно выделить четыре характерных эпохи:

  1. Взрыв эпоха характеризуется резким ростом численности агентов от начального значения до предельной численности пространства (в течении примерно 50 тактов). Происходит это за счет тех агентов, у которых вероятность действия Sex довольно высокая и их начального запаса энергии хватает на несколько циклов размножения.
  2. Максимальное плато после заполнения пространства дальнейшее размножение и увеличения численности агентов возможно только взамен тех, которые умерли и освободили места для детёнышей. В течении примерно 300 тактов времени плотность агентов держится вблизи максимума. К концу этого этапа агенты расходуют большую часть начального запаса энергии и начинается массовое вымирание. Плотность агентов быстро падает, примерно еще за 300 тактов.
  3. Бутылочное горлышко на этом этапе после резкого падения численности агентов продолжает уже медленно уменьшатся до минимального значения 0.25-0.30 Dr/cell. После прохождения минимума плотность увеличивается почти до своего равновесного значения. Длительность этого этапа варьируется в широких пределах 2000-3000 тактов.
  4. Устойчивое развитие когда плотность достигает значений чуть более 1.0 Dr/cell происходит резкое изменение динамики системы. Быстрой рост численности сменяется медленным ее увеличением с небольшими флуктуациями. Постепенно рост численности агентов замедляется и плотность приближается к равновесному значению 1.23-1.24 Dr/cell. Наступает динамическое равновесие: рождаемость уравновешивается смертностью.

Ниже показано четыре скриншота демонстрирующих состояние пространства для каждого из обозначенных моментов времени. Сине-бирюзово-желтым градиентом отмечено распределение пищи в пространстве. Серые ячейки не содержат еды. А агенты обозначены цветными кружками согласно их хромосоме Color. Размер кружков пропорционален возрасту агентов.

image

А в этом ролике показано происходящее на участке пространства 15х15 ячеек в течении 20000 тактов времени.


Для отслеживания и анализа происходящего были использованы следующие параметры:

  • $RDr$ знакомая уже плотность агентов в пространстве, которая равна отношению количества агентов к количеству ячеек в пространстве. Изменяется от 0 до 2 Dr/cell;
  • $En_{Mean}$ средний по популяции запас энергии агента, kJ;
  • $Age_{Mean}$ средний по популяции возраст агентов;
  • $Gen_{Mean}$ среднее по популяции поколение агентов;
  • $Birth$, $Death$ относительная рождаемость и смертность агентов. Изменяется от 0% до 100%;
  • $f_{Pass}$, $f_{Stp1}$, $f_{Stp2}$, $f_{Eat}$, $f_{Att}$, $f_{Sex}$ средняя по популяции частота совершения действий, которые совершают соответствующее действие в течении каждого такта времени. Изменяется от 0 до 1, но их сумма равна 1;
  • $L_{Stp}$, $L_{Eat}$, $L_{Att}$, $L_{Sex}$ успешность действий или доля агентов успешно совершивших вы-бранное действие. Изменяется от 0 до 1;
  • $I_{Stp}$, $I_{Att}$, $I_{Sex}$ индексы осознанности действий описанные в части 2. Изменяются от 0 до 1;
  • $I_{Food}$ индекс осознанности действия Eat, разность между успешностью $L_{Eat}$ и вероятностью обнаружить в ячейке еду:

    $I_{Food}=L_{Eat}-\frac{C_{Food}}{S}$


    где $C_{Food}$ это количество ячеек, в которых в данный момент есть хотя бы один cake, $S$ полное количество ячеек в пространстве. $I_{Food}$ изменяется от 0 до 1;
  • $I_{CrlStpFd}$ индекс осознанности выбора направления движения, сейчас он оценивает степень корреляции между направлением шага и направлением с максимальным градиентом количества пищи в пространстве. Изменяется от -1 до 1;

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

Взрыв и Максимальное плато


image
Взрыв самая короткая эпоха в развитии популяции Тупиков. В течении этой эпохи происходит первичная селекция агентов увеличивается доля агентов, боле часто совершающих попытки размножения (см. граф. Action frequency выше). Начальный запас энергии (50 kJ) позволяет агентам размножатся, даже если они вообще не будут пополнять его. Размножение происходит до полного заполнения пространства (см. граф. Density of Agents). Когда плотность агентов приближается к 2.0 Dr/cell успешность размножения стремится к нулю, т.к. для новых агентов просто не найти места.

Так начинается эпоха Максимального плато, когда численность держится у предельного значения. При этом агенты не оставляют попыток размножится, частота действия Sex после первой эпохи остается наибольшей. Но успешность этого действия очень низкая (см. граф. Part of Luck Action). А успешными такие попытки становятся только когда кто-то из агентов умирает и освобождает место в пространстве для нового агента. На графике Birth & Death Rate это выглядит как совпадение линий смертности и рождаемости во время второй эпохи.

Действие Sex становится не очень выгодным, когда его успешность близка к нулю и его частота, как и частота действия Attack снижаются. Начиная с этой эпохи самым модным на долгое время становится действие Eat его частота начинает расти. Но все равно запас энергии у агентов продолжает снижаться, хоть и не так быстро, как в первую эпоху (см. граф. Energy of Agents). К концу второй эпохи большинство агентов почти растратило свой запас энергии и начинается массовое вымирание. После которого начинается новая эпоха.

Бутылочное горлышко


image

Массовое вымирание на рубеже второй и третьей эпохи связано с вымиранием активно размножающихся агентов. На граф. Action frequency это видно как снижение частоты действия Sex во время массового вымирания. Это обусловлено тем, что активное размножение чрезвычайно сильно снижает запас энергии агента, даже неуспешная попытка размножения требует лишь немного меньше энергии чем самое энергоемкое действие Attack.

В течении третьей эпохи активно начинает увеличиваться доля агентов пытающихся поесть (см. граф. Action frequency). При этом доля агентов совершающих энергозатратные действия Attack, Step 2 наоборот, уменьшается. Это приводит к тому, что запас энергии у агентов постепенно начинает расти.

После прохождения минимума плотности агентов увеличивается рождаемость и численность агентов начинает снова экспоненциально гиперболически расти. Но скорость потери энергии агентами теперь существенно меньше, ведь они в 2-3 раза чаще пытаются поесть чем размножится. Накопленный в начале третей эпохи запас энергии постепенно истощается и к концу этой эпохи смертность догоняет рождаемость, в результате чего плотность агентов стабилизируется.

Но на этот раз плотность агентов не достигает предельного значения. С ростом плотности агентов стационарное количество еды в пространстве уменьшается. В результате чего успешность питания снижается (см. граф. Part of Luck Action). При чем это снижение имеет место на всем протяжении третей эпохи и как видно на графике осознанности питания (см. граф. Awareness Indicators) его нельзя полностью объяснить уменьшением количества участков с пищей (успешность действия Eat меньше вероятности обнаружить еду). Скорее всего это объясняется тем, что интенсивно питающиеся агенты выедают пищу в своих ячейках и относительно реже перемещаются в соседние ячейки.

Устойчивое развитие


image

После демографического бума наступает динамическое равновесие рождаемость и смертность уравновешивают друг друга начинается четвертая эпоха. Рост количества агентов замедляется и постепенно плотность агентов приближается к стационарному значению 1.23-1.24 Dr/cell. Интенсивность питания после усиленного роста в начале эпохи постепенно выходит на постоянное значение около $f_{Eat}0.850$. Для остальных действий частота составляет:

$f_{Pass}0.033$
$f_{Step1}0.058$
$f_{Step2}0.004$
$f_{Att}0.021$
$f_{Sex}0.044$

4. Реформирование Вселенной Dракош


Исследуя популяции Тупиков, я пришёл к тому, что для повышения эффективности моделирования стоит внести изменения в первоначально задуманную механику Вселенной Dракош. Под эффективностью я понимаю скорость появления новых особей в пространстве на большом масштабе времени.

Первое что я поменял это зависимость стационарного количества пищи в пространстве от плотности агентов. На каждом такте времени количество еды в пространстве корректируется (выкладывается или убирается) таким образом что бы приближаться к этому стационарному значению.

image

И то при каких значениях плотности агентов эта зависимость достигает значений порядка 8-14% от максимального (20 cake/cell) определяет значение стационарной плотности агентов в четвертую эпоху. Смещая эту кривую вправо-влево можно выбрать значение стационарной плотности агентов.

Высокое значение плотность агентов выгодно тем, что у большой популяции больший объемом генетических вариантов одновременно участвует в отборе. Но при очень высоких плотностях заполнения пространства успешность таких действий как Step1/2 и Sex снижаются и отбор смещается в сторону малоподвижных, прожорливых и агрессивных агентов.

На следующем рисунке показано как изменяется стационарные значения частоты действий Step 1 и Attack в зависимости от стационарной плотности (планки погрешностей указывают стандартное отклонение по популяции).

image

При значениях плотности агентов больше 1.3 Dr/cell в четвертой эпохе (спустя достаточное время порядка $10^4$ тактов) популяция становится агрессивной: действие Attack становится вторым по частоте совершения после действия Eat. При этом частота совершения шагов сильно уменьшается, и агенты очень редко перемещаются. По-видимому, это связано с тем, что при значениях плотности больше 1.0545 Dr/cell вероятность успешной атаки становится больше вероятности успешного шага (см. часть 2, раздел 5). В этом случае у агента больше шансов совершить успешную атаку и выбить три порции пищи из соседнего по ячейке агента чем попытаться переместится в соседнюю ячейку в надежде найти там свободное место и еду (напомню, агенты все еще совершают действия вслепую). Но когда плотность увеличивается больше 1.3 Dr/cell превышение вероятности успешной атаки над вероятностью успешного шага становится достаточно существенным что бы отбор поспособствовал закреплению в популяции более агрессивного поведения.

В итоге я остановился на значениях стационарной плотности агентов 1.23-1.24 Dr/cell. При этой плотности вероятность успешной атаки уже выше вероятности успешного шага (на 17%), но установившееся значения частоты совершения действий Step 1/2 почти втрое больше частоты действия Att.

Вторым изменением было увеличение энергоемкости пищи с 50 J/cake до 75 J/cake. И вместе с ним увеличен минимальный жизненно необходимый минимум энергии у агента: с 500 J до 750 J. Так же для сохранения баланса изменил энергетическую стоимость действия Att: с 55 J до 100 J.

Эти изменения привели к тому, что минимальная плотность агентов в третью эпоху увеличилась с 0.07-0.1 Dr/cell до 0.25-0.3 Dr/cell и сократилась длительность третей эпохи. В остальном поведение модели осталось прежним.

Третье и наверно самое существенное изменение агенты начали стареть. Изначально я не планировал наличия старости во Вселенной Dракош, рассчитывая на то, что появление более успешных и плодовитых особей будет приводить к вытеснению старых. Но эксперименты с расой Тупиков показали, что при такой модели появление более успешных и плодовитых может затянутся на очень долгий срок. В четвертой эпохе средний возраст агентов растет практически линейно. Так как основную массу популяции составляют агенты, которые достаточно интенсивно питаются и в среднем имеют постоянное значение запаса энергии. При этом рождаемость относительно низкая и скорость смены поколений постоянно снижается. А вместе с ней и скорость работы отбора.

Что бы интенсифицировать появление новых генетических вариантов в популяции я решился ввести плату за возраст дополнительную потерю энергии. До 7000 тактов она меньше 2 J, а после 10000 тактов становится больше 15 J. В результате чего максимальный возраст агентов в четвертую эпоху стал чуть более 10000 тактов, а средний около 3000 тактов. А скорость смены поколений стала почти постоянной (см. график Generation of Agents для 4й эпохи).

На этом, думаю, можно завершить исследование расы Тупиков и перейти к самому интересному реализации полноценных Dракош. Хотя не сомневаюсь, что и c такой упрощенной моделью можно еще много чего интересного проделать. Но не терпится уже поэкспериментировать с эволюционирующими нейронными сетями.
Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru