exponenta event banner

fastRestartForLinearAnalysis

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

Описание

пример

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

пример

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

пример

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

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

Примеры

свернуть все

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

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

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

Настройка контроллера PI для использования базовых переменных рабочего пространства 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 и объект ввода-вывода линеаризации или вектор объектов ввода-вывода линеаризации. Создать AnalysisPoints:

  • Определите входы, выходы и отверстия с помощью linio.

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

Каждый линеаризационный объект ввода-вывода в AnalysisPoints должен соответствовать модели Simulink model или ссылку на модель в обычном режиме в иерархии модели.

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

Дополнительные сведения о задании входных, выходных и проемов линеаризации см. в разделе Задание части модели для линеаризации.

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

  • Структурный массив

  • Строковый массив

  • Символьный вектор

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

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

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

Флаг, указывающий, следует ли использовать номера каналов сигнала шины или имена для маркировки ввода-вывода в линеаризованной модели, указанной как разделенная запятыми пара, состоящая из UseBusSignalLabels и одно из следующих:

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

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

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

    • Блок создания шины

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

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

Совет

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

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

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

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

Представлен в R2019a