Этот пример показывает, как использовать Советника по вопросам Линеаризации, чтобы отладить линеаризацию модели маятника в Linear Analysis Tool.
Откройте модель Simulink.
mdl = 'scdpendulum';
open_system(mdl)
Начальное условие для угла маятника является 90 градусами против часовой стрелки от вертикального неустойчивого равновесия 0 градусов. Начальное условие для маятника угловая скорость составляет 0 градусов/с. Номинальный крутящий момент, чтобы поддержать это состояние составляет-49.05 Н m. Эта настройка сохранена как образцовое начальное условие.
Чтобы открыть Linear Analysis Tool, в окне модели Simulink, выбирают Analysis> Control Design> Linear Analysis.
Чтобы линеаризовать модель при образцовом начальном условии, в Linear Analysis Tool, на вкладке 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
относительно входных параметров:
Поэтому, когда оценено в линеаризации блока нуль. Источником входа является первый вывод интегратора второго порядка, который зависит от теты состояния. Поэтому этот блок будет линеаризовать, чтобы обнулить, если, где целое число. То же условие применяется к другой Тригонометрической функции в angle_wrap подсистеме.
Если эти блоки, как ожидают, не будут линеаризовать, чтобы обнулить, можно изменить тету состояния рабочей точки и повторно линеаризовать модель.
Советник по вопросам Линеаризации обеспечивает набор предварительно созданных запросов для фильтрации диагностики блока. Например, запрос Совета Линеаризации является запросом по умолчанию, запущенным, когда советник сначала создается и включает блоки на пути что:
Имейте диагностические сообщения относительно линеаризации блока.
Линеаризовавший, чтобы обнулить.
Заменили линеаризацией.
Чтобы запустить различный предварительно созданный запрос, на вкладке 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)