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');

Сконфигурируйте ПИ-контроллер, чтобы использовать переменные базовые рабочие пространства 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 или некоторую модель-ссылку режима normal mode в иерархии модели.

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

Для получения дополнительной информации об указании входов, выходов и открытий линеаризации, см. Раздел «Задание фрагмента модели для линеаризации».

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

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

  • A строковых массивов

  • A вектора символов

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

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

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

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

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

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

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

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

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

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

Совет

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

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

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

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

Введенный в R2019a