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