В этом примере показано, как использовать slLinearizer
интерфейс для пакетной линеаризации модели Simulink ®. Вы линеаризируете модель в нескольких рабочих точках и получаете несколько передаточных функций без разомкнутого контура и с обратной связью от модели.
Можно выполнить тот же анализ, используя linearize
команда. Однако, когда вы хотите получить несколько передаточные функции без разомкнутого контура и с обратной связью, особенно для моделей, которые дорого скомпилироваться неоднократно, 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 секунд.
addOpening
| addPoint
| getCompSensitivity
| getIOTransfer
| getLoopTransfer
| getSensitivity
| linearize
| slLinearizer