В этом примере показано, как использовать Советника по вопросам Линеаризации, чтобы отладить линеаризацию модели маятника в Model Linearizer.
Откройте модель Simulink.
mdl = 'scdpendulum';
open_system(mdl)
Начальным условием для угла маятника являются 90 градусов против часовой стрелки от вертикального неустойчивого равновесия 0 градусов. Начальное условие для скорости вращения маятника составляет 0 градусов/с. Номинальный крутящий момент, чтобы обеспечить это состояние составляет-49.05 Н m. Эта настройка сохранена как начальное условие модели.
Чтобы открыть Model Linearizer, в окне модели Simulink, на вкладке Apps, нажимают Model Linearizer.
Чтобы линеаризовать модель при начальном условии модели, в Model Linearizer, на вкладке Linear Analysis, нажимают Bode.
Программное обеспечение линеаризует модель и строит ее частотную характеристику.
Как видно из Диаграммы Боде система линеаризовала, чтобы обнулить таким образом, что крутящий момент не оказывает влияния на угол или скорость вращения. Можно исследовать почему дело обстоит так с помощью Советника по вопросам Линеаризации.
Чтобы повторно линеаризовать модель и сгенерировать советника, выберите Linearization Advisor и нажмите Bode Plot 1.
Программное обеспечение линеаризует модель, создает linsys2_advisor документ и открывает вкладку Advisor.
Чтобы показать путь к линеаризации для текущей линеаризации, на вкладке Advisor, нажимают Highlight Linearization Path. В диалоговом окне Linearization path, блоки, подсвеченные в:
Синий численно влияют на линеаризацию модели.
Красный находятся на пути к линеаризации, но не влияют на линеаризацию модели для текущей рабочей точки и параметров блоков.
Для удобства только показывают блоки под подсистемой маятника.
В этом случае, начиная с модели, линеаризовавшей, чтобы обнулить, нет никаких блоков, которые способствуют линеаризации.
linsys2_advisor документ показывает, что список таблиц блокируется, который может быть проблематичным для линеаризации.
Чтобы просмотреть больше информации об определенной линеаризации блока, в соответствующей строке таблицы, нажимают Block Info.
В этом случае о трех блоках сообщают советник, блок Saturation и два блока Тригонометрической функции. Исследуйте блок Saturation сначала, поскольку он имеет диагностику. Для этого в первой строке таблицы, нажмите Block Info.
Существует два диагностических сообщения для блока Saturation. Первое сообщение указывает, что блок линеаризуется за пределами его более низкого предела насыщения -49
, поскольку входной рабочей точкой является -49.05
. Сообщение также утверждает, что блок может линеаризоваться как усиление, которое будет линеаризовать блок как 1
независимо от входной рабочей точки. Для этого первое нажатие кнопки, линеаризующее блок как усиление, которое подсвечивает соответствующий параметр в диалоговом окне блока. Затем выберите Treat как усиление при линеаризации параметра.
Второе сообщение утверждает, что линеаризация этого блока заставляет модель линеаризовать, чтобы обнулить. Как показано в разделе Linearization, блок линеаризуется, чтобы обнулить. Поэтому изменение линеаризации блока является хорошим первым шагом к получению ненулевой линеаризации модели.
После установки блока Saturation быть обработанными как усиление, повторно линеаризуйте модель. На данный момент проигнорируйте диагностику для двух блоков Тригонометрической функции.
Чтобы повторно линеаризовать модель, на вкладке Linear Analysis, нажимают Bode Plot 1. Диаграмма Боде 1 обновление документа, показывая ненулевой ответ linsys3
.
В соответствующем linsys_advisor3 документе больше не перечисляется блок Saturation. Однако два блока Тригонометрической функции все еще показывают.
Подсветите путь к линеаризации.
Большинство блоков теперь способствует линеаризации модели, за исключением путей, проходящих перечисленные блоки Тригонометрической функции.
Чтобы изучить, почему эти блоки не способствуют линеаризации, перейдите с блоками из linsys3_advisor документа. Например, нажмите Block Info во второй строке таблицы.
Для этого блока Trigonometric Function линеаризация является нулем, и входная рабочая точка.
Можно найти линеаризацию блока аналитически путем взятия первой производной sin
функция относительно входных параметров:
Поэтому, когда оценено в линеаризации блока нуль. Источником входа является первый выход интегратора второго порядка, который зависит от theta состояния. Поэтому этот блок будет линеаризовать, чтобы обнулить, если, где целое число. То же условие применяется к другой Тригонометрической функции в angle_wrap подсистеме.
Если эти блоки, как ожидают, не будут линеаризовать, чтобы обнулить, можно изменить theta состояния рабочей точки и повторно линеаризовать модель.
Советник по вопросам Линеаризации обеспечивает набор предварительно созданных запросов для фильтрации диагностики блока. Например, запрос Совета Линеаризации является запросом по умолчанию, запущенным, когда советник сначала создается и включает блоки на пути что:
Имейте диагностические сообщения относительно линеаризации блока.
Линеаризовавший, чтобы обнулить.
Заменили линеаризацией.
Чтобы запустить различный предварительно созданный запрос, на вкладке Advisor, в галерее Queries, кликают по запросу. Например, нажмите Zero I/O Pair on Path.
Этот запрос возвращает блоки с линеаризацией, которая вывела каналы, которые не могут быть достигнуты никаким входным каналом или вводят каналы, которые не имеют никакого влияния ни на какие выходные каналы. Например, второй блок в таблице является блоком Trigonometric Function, сконфигурированным как atan2
. Первый вход этого блока не может достигнуть единственного выхода.
Советник по вопросам Линеаризации также предоставляет Конструктор запросов для создания пользовательских запросов. Можно использовать эти запросы, чтобы найти блоки в модели, которые совпадают с определенными критериями. Например, чтобы найти все блоки SISO, которые численно встревожены, откройте сначала Конструктор запросов. Для этого на вкладке Advisor, нажмите New Query.
В диалоговом окне Query Builder:
Задайте имя запроса как sisopert
.
В выпадающем списке выберите Has 'Ny' Outputs'
, и задайте 1
в поле Outputs.
Чтобы добавить другой компонент в запрос, нажмите Add to Query.
Во втором выпадающем списке выберите Has 'Nu' Inputs'
, и задайте 1
в поле Inputs.
Нажмите Add to Query.
В третьем выпадающем списке выберите Perturbation
.
Нажмите Run Query.
linsys3_advisor документ показывает блоки, которые совпадают с заданными условиями запроса, и запрос sisopert добавляется к галерее Queries.
Чтобы удалить запрос sisopert, на вкладке Advisor, нажимают Remove Query и выбирают sisopert.
Можно также отладить линеаризацию модели с помощью Советника по вопросам Линеаризации функции командной строки. Чтобы экспортировать объект советника в рабочее пространство MATLAB, нажмите Export. Затем в диалоговом окне Export Advisors выберите одного или несколько советников экспорта. Например, выберите linsys3_advisor.
Нажмите Export.
В качестве альтернативы можно сгенерировать скрипт MATLAB, который автоматизирует линеаризацию, экстракцию советника, генерацию пользовательских запросов и выполнение запросов. Чтобы сгенерировать этот скрипт, нажмите кнопку разделения Экспорта, затем выберите Generate Script.
bdclose(mdl)