Изменение рабочих точек и получение нескольких передаточных функций с помощью интерфейса slLinearizer

В этом примере показано, как использовать slLinearizer интерфейс для пакетной линеаризации модели Simulink ®. Вы линеаризируете модель в нескольких рабочих точках и получаете несколько передаточных функций без разомкнутого контура и с обратной связью от модели.

Можно выполнить тот же анализ, используя linearize команда. Однако, когда вы хотите получить несколько передаточные функции без разомкнутого контура и с обратной связью, особенно для моделей, которые дорого скомпилироваться неоднократно, slLinearizer может быть более эффективным.

Создайте интерфейс slLinearizer для модели

Откройте модель.

mdl = 'watertank';
open_system(mdl);

Используйте slLinearizer команда для создания интерфейса.

sllin = slLinearizer(mdl)
 
slLinearizer linearization interface for "watertank":

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 интерфейс. В этом интерфейсе OperatingPoints отображение свойства показывает, что рабочая точка не задана.

Задайте несколько рабочих точек для линеаризации

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

opspec = operspec(mdl);
opspec.States(2).Known = 1;
opts = findopOptions('DisplayReport','off');

h = [10 15 20];

for ct = 1:numel(h)
    opspec.States(2).x = h(ct);
    Href = h(ct);
    ops(ct) = findop(mdl,opspec,opts);
end

sllin.OperatingPoints = ops;

Здесь, h задает различные уровни воды. ops массив объектов рабочих точек 1 x 3. Каждая запись ops является рабочей точкой модели при соответствующем уровне воды. Сконфигурируйте OperatingPoints свойство sllin с ops. Теперь, когда вы получаете передаточные функции от sllin использование getIOTransfer, getLoopTransfer, getSensitivity, и getCompSensitivity функции, программное обеспечение возвращает линеаризацию для каждой заданной рабочей точки.

Каждая точка обрезки действительна только для соответствующей опорной высоты, представленной Href параметр блока «Желаемый уровень воды». Итак, настройте sllin для соответствующего изменения этого параметра.

param.Name = 'Href';
param.Value = h;

sllin.Parameters = param;

Анализируйте передаточную функцию объекта

В watertank модель, блок Water-Tank System представляет объект. Чтобы получить передаточную функцию объекта, добавьте входной и выходной сигналы блока Water-Tank System в качестве точек анализа sllin.

addPoint(sllin,{'watertank/PID Controller','watertank/Water-Tank System'})
sllin
 
slLinearizer linearization interface for "watertank":

2 Analysis points: 
--------------------------
Point 1:
- Block: watertank/PID Controller
- Port: 1
Point 2:
- Block: watertank/Water-Tank System
- Port: 1
 
No permanent openings. Use the addOpening command to add new permanent openings.
Properties with dot notation get/set access:
      Parameters         : [1x1 struct], 1 parameters with sampling grid of size 1x3
            "Href", varying between 10 and 20.
      OperatingPoints    : [1x3 opcond.OperatingPoint]
      BlockSubstitutions : []
      Options            : [1x1 linearize.LinearizeOptions]

Первая точка анализа, которая начинается с выхода блока ПИД-регулятор, является входом к блоку Water-Tank System. Второй точкой анализа является выход блока Water-Tank System.

Получите передаточную функцию объекта от входа блока Water-Tank System до выхода блока. Чтобы исключить эффекты цикла обратной связи, задайте выход блока как временное открытие цикла.

G = getIOTransfer(sllin,'PID','Tank','Tank');

В вызове getIOTransfer, 'PID', фрагмент имени блока 'watertank/PID Controller', задает первую точку анализа как вход передаточной функции. Точно так же 'Tank', фрагмент имени блока 'watertank/Water-Tank System', относится ко второй точке анализа. Эта точка анализа задана как выход передаточной функции (третий входной параметр) и открытие временного цикла (четвертый входной параметр).

Выход, G, является массивом 1 x 3 моделей пространства состояний в непрерывном времени.

Постройте график переходной характеристики для G.

stepplot(G);

Переходная характеристика моделей объекта управления существенно изменяется в различных рабочих точках.

Анализируйте передаточную функцию замкнутой системы

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

Добавьте ссылку входного сигнала как точку анализа sllin.

addPoint(sllin,'watertank/Desired  Water Level');

Получите передаточную функцию с обратной связью.

T = getIOTransfer(sllin,'Desired','Tank');

Выход, T, является массивом 1 x 3 моделей пространства состояний в непрерывном времени.

Постройте график переходной характеристики для T.

stepplot(T);

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

Анализируйте чувствительность на выходе объекта

S = getSensitivity(sllin,'Tank');

Программа вводит сигнал нарушения порядка и измеряет выход на выходе объекта. S является массивом 1 x 3 моделей пространства состояний в непрерывном времени.

Постройте график переходной характеристики для S.

stepplot(S);

График указывает, что обе модели могут отклонить нарушение порядка шага на выходе объекта в течение 40 секунд.

См. также

| | | | | | |

Похожие темы