Этот пример показывает, как использовать интерфейс slLinearizer
, чтобы обработать в пакетном режиме, линеаризуют модель Simulink®. Вы отличаетесь значения параметра модели и получаете несколько разомкнутый цикл и передаточные функции с обратной связью из модели.
Можно выполнить тот же анализ с помощью команды linearize
. Однако когда это необходимо, чтобы получить несколько разомкнутый цикл и передаточные функции с обратной связью, специально для моделей, которые являются дорогими, чтобы неоднократно компилировать, slLinearizer
может быть более эффективным.
Поскольку изменения параметра в этом примере не влияют на рабочую точку модели, вы обрабатываете в пакетном режиме, линеаризуют модель в одной рабочей точке. Если ваше приложение использует изменения параметра, которые влияют на образцовую рабочую точку, сначала обрезают модель для каждой комбинации значения параметров. Для примера, который использует команду linearize
, смотрите, что Пакет Линеаризует Модель в Нескольких Рабочих точках, Выведенных от Изменений Параметра.
Модель scdcascade
, используемая для этого примера, содержит пару каскадных циклов управления с обратной связью. Каждый цикл включает контроллер PI. Модели объекта управления, G1
(внешний цикл) и G2
(внутренний цикл), являются моделями LTI.
Используйте интерфейс slLinearizer
, чтобы анализировать динамика внешнего цикла и внутренний цикл.
Откройте модель.
mdl = 'scdcascade';
open_system(mdl);
Используйте команду slLinearizer
, чтобы создать интерфейс.
sllin = slLinearizer(mdl)
slLinearizer linearization interface for "scdcascade": No analysis points. Use the addPoint command to add new points. No permanent openings. Use the addOpening command to add new permanent openings. Properties with dot notation get/set access: Parameters : [] OperatingPoints : [] (model initial condition will be used.) BlockSubstitutions : [] Options : [1x1 linearize.LinearizeOptions]
Отображение Командного окна показывает информацию об интерфейсе slLinearizer
. В этом интерфейсе еще не заданы никакие параметры, чтобы отличаться, таким образом, свойство Paramaeters
пусто.
Для анализа внутреннего цикла отличайтесь усиления контроллера PI внутреннего цикла блок, C2. Отличайтесь пропорциональное усиление (Kp2
) и интегральное усиление (Ki2
) в 15%-й области значений.
Kp2_range = linspace(Kp2*0.85,Kp2*1.15,6); Ki2_range = linspace(Ki2*0.85,Ki2*1.15,4); [Kp2_grid, Ki2_grid] = ndgrid(Kp2_range,Ki2_range); params(1).Name = 'Kp2'; params(1).Value = Kp2_grid; params(2).Name = 'Ki2'; params(2).Value = Ki2_grid; sllin.Parameters = params;
Kp2_range
и Ki2_range
задают демонстрационные значения для Kp2
и Ki2
. Чтобы получить передаточную функцию для каждой комбинации Kp2
и Ki2
, используйте ndgrid
и создайте 6 x 4 сетки параметра с массивами сетки Kp2_grid
и Ki2_grid
. Сконфигурируйте свойство Parameters
sllin
со структурой params
. Эта структура задает параметры, которые будут отличаться и их массивы сетки.
Полная передаточная функция с обратной связью для внутреннего цикла равна передаточной функции от u1
до y2
. Чтобы устранить эффекты внешнего цикла, можно повредить цикл в e1
, y1m
или y1
. В данном примере повредите цикл в e1
.
Добавьте u1
и y2
, когда анализ указывает, и e1
как постоянное открытие sllin
.
addPoint(sllin,{'y2','u1'}); addOpening(sllin,'e1');
Получите передаточную функцию от u1
до y2
.
r2yi = getIOTransfer(sllin,'u1','y2');
r2yi
, 6 x 4 массива модели в пространстве состояний, содержит передаточную функцию для каждой заданной комбинации параметра. Программное обеспечение использует образцовые начальные условия в качестве рабочей точки линеаризации.
Поскольку e1
является постоянным открытием sllin
, r2yi
не включает эффекты внешнего цикла.
Постройте переходной процесс для r2yi
.
stepplot(r2yi);
Переходной процесс для всех моделей отличается по 10%-й области значений, и время установления составляет меньше чем 1,5 секунды.
Получите передаточную функцию внутреннего цикла в y2
с внешним циклом, открытым в e1
.
Li = getLoopTransfer(sllin,'y2',-1);
Поскольку программное обеспечение принимает позитивные отклики по умолчанию, и scdcascade
использует отрицательную обратную связь, задайте знак обратной связи с помощью третьего входного параметра. Теперь. Команда getLoopTransfer
возвращает массив моделей (ss
) пространства состояний, один для каждой записи в сетке параметра. Свойство SamplingGrid
Li
совпадает со значениями параметров соответствующей модели ss
.
Постройте предвещать ответ для.
bodeplot(Li);
График значения для всех моделей отличается по области значений на 3 дБ. График фазы показывает большую часть изменения, приблизительно 20 °, в [1 10]
rad/s интервал.
Для анализа внешнего цикла отличайтесь усиления контроллера PI внешнего цикла блок, C1. Отличайтесь пропорциональное усиление (Kp1
) и интегральное усиление (Ki1
) в 20%-й области значений.
Kp1_range = linspace(Kp1*0.8,Kp1*1.2,6); Ki1_range = linspace(Ki1*0.8,Ki1*1.2,4); [Kp1_grid, Ki1_grid] = ndgrid(Kp1_range,Ki1_range); params(1).Name = 'Kp1'; params(1).Value = Kp1_grid; params(2).Name = 'Ki1'; params(2).Value = Ki1_grid; sllin.Parameters = params;
Подобно рабочему процессу для конфигурирования сетки параметра для анализа внутреннего цикла создайте структуру, params
, который задает 6 x 4 сетки параметра. Реконфигурируйте sllin.Parameters
, чтобы использовать новую сетку параметра. sllin
теперь использует значения по умолчанию для Kp2
и Ki2
.
Удалите e1
из списка постоянных открытий для sllin
перед продолжением анализа внешнего цикла.
removeOpening(sllin,'e1');
Чтобы получить передаточную функцию с обратной связью из ссылочного сигнала, r
, к объекту, вывод, y1m
, добавляет r
и y1m
, когда анализ указывает на sllin
.
addPoint(sllin,{'r','y1m'});
Получите передаточную функцию от r
до y1m
.
r2yo = getIOTransfer(sllin,'r','y1m');
Постройте переходной процесс для r2yo
.
stepplot(r2yo);
Переходной процесс является underdamped для всех моделей.
Чтобы получить чувствительность внешнего цикла на объекте вывод, добавьте y1
как аналитическую точку к sllin
.
addPoint(sllin,'y1');
Получите чувствительность внешнего цикла в y1
.
So = getSensitivity(sllin,'y1');
Постройте переходной процесс So
.
stepplot(So)
График показывает, что требуется приблизительно 15 секунд, чтобы отклонить воздействие шага на объекте вывод, y1
.
Когда линеаризация пакета для изменений параметра, можно получить смещения линеаризации, которые соответствуют рабочим точкам линеаризации. Для этого установите опцию линеаризации StoreOffsets
в интерфейсе slLinearizer
.
sllin.Options.StoreOffsets = true;
Когда вы вызываете функцию линеаризации использование sllin
, можно возвратить смещения линеаризации в структуре info
.
[r2yi,info] = getIOTransfer(sllin,'u1','y2');
Можно затем использовать смещения, чтобы сконфигурировать блок LPV System. Для этого необходимо сначала преобразовать смещения в требуемый формат. Для примера, который использует команду linearize
, см. Приближение LPV Модели Конвертера Повышения.
offsets = getOffsetsForLPV(info);
Закройте модель.
bdclose(mdl);
addOpening
| addPoint
| getCompSensitivity
| getIOTransfer
| getLoopTransfer
| getSensitivity
| linearize
| slLinearizer