Отличайтесь значения параметров и получите несколько передаточных функций

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

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

Поскольку изменения параметра в этом примере не влияют на рабочую точку модели, вы обрабатываете в пакетном режиме, линеаризуют модель в одной рабочей точке. Если ваше приложение использует изменения параметра, которые влияют на образцовую рабочую точку, сначала обрезают модель для каждой комбинации значения параметров. Для примера, который использует команду linearize, смотрите, что Пакет Линеаризует Модель в Нескольких Рабочих точках, Выведенных от Изменений Параметра.

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

Модель 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);

Смотрите также

| | | | | | |

Похожие темы