Можно линеаризовать модели с компонентами Simscape™ с помощью программного обеспечения Simulink® Control Design™. Как правило, некоторые состояния в сети Simscape имеют зависимости от других состояний посредством ограничений.
Чтобы найти установившуюся рабочую точку, в которой можно линеаризовать модель Simscape, можно использовать:
Основанная на оптимизации обрезка — Задает ограничения на входные параметры модели, выходные параметры или состояния, и вычисляет установившуюся рабочую точку, которая удовлетворяет этим ограничениям.
Чтобы привести лучше к обрезающим результатам для моделей Simscape, можно использовать основанные на проекции оптимизаторы для обрезки. Эти оптимизаторы осуществляют непротиворечивость начального условия модели при каждой оценке целевой функции или нелинейной ограничительной функции.
Снимки состояния симуляции — начальные условия модели Specify около ожидаемой точки равновесия, и симулируют модель, пока она не достигает устойчивого состояния.
Для получения дополнительной информации смотрите, Находят Установившиеся Рабочие точки для Моделей Simscape.
Чтобы линеаризовать вашу модель, необходимо задать фрагмент модели, вы хотите линеаризовать использующие линейные аналитические точки; то есть, вводы и выводы линеаризации и открытия цикла. Можно только добавить, что анализ указывает на Сигналы Simulink.
Чтобы добавить вход линеаризации или цикл, открывающийся к входу компонента Simscape, сначала преобразуйте Сигнал Simulink с помощью блока Simulink-PS Converter (Simscape).
Чтобы добавить линеаризацию выход или цикл, открывающийся к выходу компонента Simscape, сначала преобразуйте сигнал Simscape использование блока PS-Simulink Converter (Simscape).
Для получения дополнительной информации о добавлении линейных аналитических точек смотрите, Задают Фрагмент Модели, чтобы Линеаризовать.
После того, как вы зададите установившуюся рабочую точку и линейные аналитические точки, можно линеаризовать использование модели Simscape:
linearize
функция.
slLinearizer
интерфейс.
Для общих примеров линеаризации смотрите, Линеаризуют Модель Simulink в Рабочей точке Модели и Линеаризуют в Обрезанной Рабочей точке.
Сети Simscape могут обычно линеаризовать, чтобы обнулить, когда набор системного уравнения Jacobians является нулем в данных условиях работы. Обычно, плохие начальные условия сетевых состояний вызывают эту нулевую линеаризацию.
Рассмотрите систему, где массовый расход жидкости от отверстия переменного сечения управляет положением поршня. Уравнение массового расхода жидкости отверстия переменного сечения:
Где:
q является массовым расходом жидкости.
Cd является коэффициентом расхода.
A является областью открытия отверстия переменного сечения.
μ является плотностью жидкости.
p является перепадом давления через отверстие, p = pa - pb.
pcr является критическим давлением, которое является функцией pa и pb.
Контрольная переменная для этой системы является площадью постоянного отверстия, A, который управляет массовым расходом жидкости. Якобиан массового расхода жидкости относительно контрольной переменной:
Линеаризовавшее уравнение массового расхода жидкости:
где представляет отклонение от номинальной переменной.
В линеаризовавшем уравнении, если номинальный перепад давления p через отверстие является нулем, то не имеет никакого влияния на . Таким образом, если мгновенный перепад давления через отверстие является нулем, площадь постоянного отверстия не имеет никакого влияния на массовый расход жидкости. Поэтому вы не можете управлять положением поршня с помощью контрольной переменной площади постоянного отверстия.
Чтобы избежать этого условия, линеаризуйте модель о рабочей точке, где перепад давления по отверстию является ненулевым (pa ≠ pb).
Чтобы решить проблемы линеаризации, вызванные плохими начальными условиями сетевых состояний, вы можете:
Линеаризуйте систему в рабочей точке снимка состояния или обрезанной рабочей точке. Когда возможно, этот подход рекомендуется.
Найдите и измените проблематичные состояния рабочей точки. Эта опция может затруднить для моделей со многими состояниями.
Используя первый подход, можно гарантировать, что состояния модели сопоставимы через Simulink и механизм симуляции Simscape. Начальные условия Simscape находятся не обязательно в сопоставимом состоянии. Механизм Simscape размещает их в сопоставимое состояние в процессе моделирования и для обрезки использования решателей обрезки Simscape.
Общий рабочий процесс должен симулировать вашу модель, наблюдать, в какое время модель удовлетворяет условиям работы, в которых вы хотите линеаризовать, затем взять снимок состояния симуляции. В качестве альтернативы можно обрезать модель об условии, которым вы интересуетесь. В любом случае сетевые состояния находятся в сопоставимом условии, которое решает самые плохие проблемы линеаризации.
Используя второй подход, вы перерываете состояния физической сети, чтобы найти условия, которые могут создать нулевой якобиан. Этот подход может потребовать некоторой интуиции о динамике физических компонентов в вашей модели. Как начальная точка, ищите состояния, которые являются нулем и которые взаимодействуют непосредственно с нелинейными физическими элементами, такими как отверстие переменного сечения в предыдущем примере.
Чтобы искать физические состояния, можно использовать Советника по вопросам Линеаризации, который собирает диагностическую информацию во время линеаризации. Советник по вопросам Линеаризации не предоставляет диагностическую информацию на основе уровня компонента для сетей Simscape. Вместо этого это группирует диагностическую информацию для нескольких компонентов Simscape вместе.
Линеаризуйте свою модель с Советником по вопросам Линеаризации, включенным, и извлеките LinearizationAdvisor
объект.
opt = linearizeOptions('StoreAdvisor',true);
[linsys,linop,info] = linearize(mdl,io,op,opt);
advisor = info.Advisor;
Создайте объект пользовательского запроса и ищите диагностическую информацию блоки Simscape.
qSS = linqueryIsBlockType('simscape');
advSS = find(advisor,qSS);
Чтобы найти проблематичные значения состояния, проверяйте рабочую точку блока в каждый BlockDiagnostic
объект.
advSS.BlockDiagnostics(i).OperatingPoint.States
Если вы находите проблематичное состояние, можно изменить значение состояния в рабочей точке модели или создать использование рабочей точки operpoint
.
Можно также искать Советника по вопросам Линеаризации в Model Linearizer. Для получения дополнительной информации смотрите, Находят Блоки в Результатах Линеаризации, Совпадающих с Определенными Критериями.