fastRestartForLinearAnalysis

Быстрый перезапуск для линейного анализа

Описание

пример

fastRestartForLinearAnalysis(model,'on') готовит model для одного рабочих процессов компиляции путем превращения быстрого перезапуска для линейного анализа 'on'. Если функция компиляции вызвана, модель останется скомпилированной после того, как функция будет закончена, выполняясь. Компиляция функций может затем быть позже названа без любых дополнительных компиляций. Если линейные аналитические точки или изменение замен блока с последующими вызовами компиляции функций, модель перекомпилирована.

пример

fastRestartForLinearAnalysis(model,'on',Name,Value) готовит model для одного рабочих процессов компиляции с дополнительными опциями, заданными одним или несколькими Name,Value парные аргументы.

пример

fastRestartForLinearAnalysis(model,'off') повороты быстро перезапускают для линейного анализа прочь, и восстанавливает параметры модели к их исходному значению. Simulink® не позволяет вам закрыть model в то время как это находится в соответствовавшем состоянии. Используйте этот синтаксис, чтобы повернуть быстрый перезапуск для линейного анализа прочь прежде, чем закрыть model.

Можно также щелкнуть по ссылке, которая, кажется, на верхней части скомпилированной модели Simulink поворачивает fastRestartForLinearAnalysis off. Для получения дополнительной информации смотрите Советы.

Примеры

свернуть все

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

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

model = 'scdspeedctrl';
open_system(model)
io = getlinio(model);
fopt = findopOptions('DisplayReport','off');

Сконфигурируйте ПИ-контроллер, чтобы использовать переменные kp базового рабочего пространства и ki.

block = [model,'/PID Controller'];
set_param(block,'P','kp');
set_param(block,'I','ki');

Создайте сетку параметров, чтобы варьироваться.

vp = 0.0005:0.0005:0.003;
vi = 0.0025:0.0005:0.005;
[KP,KI] = ndgrid(vp,vi);
N = numel(KP);
sz = size(KP);

Инициализируйте переменные базового рабочего пространства kp и ki.

kp = KP(1);
ki = KI(1);

Поверните fastRestartForLinearAnalysis на и задают аналитические точки с помощью io.

fastRestartForLinearAnalysis(model,'on','AnalysisPoints',io)

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

ops = operspec(model); % operating point specifications
for i = N:-1:1
    kp = KP(i);
    ki = KI(i);
    op = findop(model,ops,fopt); % trim the model
    [j,k] = ind2sub(sz,i);
    sysFastRestartLoop(:,:,j,k) = linearize(model,io,op); % linearize the model
end

Выключите fastRestartForLinearAnalysis и закройте модель.

fastRestartForLinearAnalysis(model,'off')
bdclose(model)

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

Откройте модель и создайте линейные аналитические точки.

mdl = 'magball';
open_system(mdl)
io(1) = linio([mdl '/Controller'],1,'input');
io(2) = linio([mdl '/Magnetic Ball Plant'],1,'openoutput');

Сконфигурируйте высоту мяча, чтобы использовать hInitial переменная рабочей области как начальное условие.

set_param([mdl '/Magnetic Ball Plant/height'],'InitialCondition','hInitial')

Включите быстрый перезапуск для линейного анализа.

fastRestartForLinearAnalysis(mdl,'on')

Линеаризуйте модель с помощью различных начальных значений высоты.

hInitial = 0.05;
sys1 = linearize(mdl,io);
hInitial = 0.1;
sys2 = linearize(mdl,io);

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

bode(sys1,'b',sys2,'r--')
legend('sys1','sys2')

Figure contains 2 axes. Axes 1 with title From: Controller To: Magnetic Ball Plant contains 2 objects of type line. These objects represent sys1, sys2. Axes 2 contains 2 objects of type line. These objects represent sys1, sys2.

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

op = operpoint(mdl);

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

op.States(5).x = 0.05;
sys3 = linearize(mdl,io,op);
op.States(5).x = 0.1;
sys4 = linearize(mdl,io,op);

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

bode(sys3,'b',sys4,'r--')
legend('sys3','sys4')

Figure contains 2 axes. Axes 1 with title From: Controller To: Magnetic Ball Plant contains 2 objects of type line. These objects represent sys3, sys4. Axes 2 contains 2 objects of type line. These objects represent sys3, sys4.

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

fastRestartForLinearAnalysis(mdl,'off')
bdclose(mdl)

Входные параметры

свернуть все

Имя модели Simulink в виде вектора символов, строки, slTuner объект или slLinearizer объект. Модель должна быть в текущей рабочей папке или на пути MATLAB®.

Аргументы в виде пар имя-значение

Задайте дополнительные разделенные запятой пары Name,Value аргументы. Name имя аргумента и Value соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: ...,'UseBusSignalLabels','on'

Аналитический набор точки, который содержит входные параметры, выходные параметры и открытия в виде разделенной запятой пары, состоящей из AnalysisPoints и объект I/O линеаризации или вектор из объектов ввода-вывода линеаризации. Создать AnalysisPoints:

  • Задайте входные параметры, выходные параметры и использование открытий linio.

  • Если входные параметры, выходные параметры и открытия заданы в модели Simulink, извлекают эти точки из использования модели getlinio.

Каждый объект I/O линеаризации в AnalysisPoints должен соответствовать модели Simulink model или некоторая модель - ссылка режима normal mode в иерархии модели.

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

Для получения дополнительной информации об определении входных параметров линеаризации видят выходные параметры и открытия, Задают Фрагмент Модели, чтобы Линеаризовать.

Замените линеаризацией блоки и подсистемы модели в виде разделенной запятой пары, состоящей из BlockSubstitutions и одно из следующего:

  • Массив структур

  • Массив строк

  • Вектор символов

  • Массив ячеек из символьных векторов

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

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

Отметьте указание, использовать ли номера каналов сигнала шины или имена, чтобы маркировать I/Os в линеаризовавшей модели в виде разделенной запятой пары, состоящей из UseBusSignalLabels и одно из следующего:

  • 'off' — Используйте номера каналов сигнала шины для метки I/Os на сигналах шины в линеаризовавшей модели.

  • 'on' — Используйте имена сигнала шины к метке I/Os на сигналах шины в линеаризовавшей модели. Имена шины сигнала появляются в результатах, когда точки ввода-вывода при выходе следующих блоков:

    • Блок импорта корневого уровня, содержащий объект шины

    • Соедините шиной блок создателя

    • Блок Subsystem, источник которого прослеживает до выхода блока создателя шины

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

Советы

  • Simulink не позволяет вам закрыть model в то время как это находится в скомпилированном состоянии. Поворот быстро перезапускает для линейного анализа прочь, чтобы закрыть model. Можно выключить fastRestartForLinearAnalysis одним из следующих способов.

    • Используйте синтаксис fastRestartForLinearAnalysis(model,'off').

    • Щелкните по ссылке, которая появляется на верхней части модели Simulink.

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

Введенный в R2019a