getIOTransfer

Передаточная функция для заданного набора ввода-вывода с помощью slLinearizer или slTuner интерфейс

Описание

пример

linsys = getIOTransfer(s,in,out) возвращает передаточную функцию для заданных вводов и выводов для модели, сопоставленной с slLinearizer или slTuner интерфейсы.

Программное обеспечение осуществляет все постоянные открытия, заданные для s когда это вычисляет linsys. Для получения информации о как getIOTransfer обработки in и out, смотрите Передаточные функции. Если вы сконфигурировали любой s.Parameters, или s.OperatingPoints, или оба, getIOTransfer выполняет несколько линеаризации и возвращает массив передаточных функций.

пример

linsys = getIOTransfer(s,in,out,temp_opening) считает дополнительным, временным, открытия в точке заданный temp_opening. Используйте открытие, например, чтобы получить передаточную функцию контроллера последовательно с объектом, с открытой обратной связью.

linsys = getIOTransfer(s,ios) возвращает передаточную функцию для вводов и выводов, заданных ios для модели, сопоставленной с s. Используйте linio команда, чтобы создать ios. Программное обеспечение осуществляет тип ввода-вывода линеаризации каждого сигнала, заданного в ios когда это вычисляет linsys. Программное обеспечение также осуществляет все постоянные открытия цикла, заданные для s.

пример

linsys = getIOTransfer(___,mdl_index) возвращает подмножество пакетных результатов линеаризации. mdl_index задает индекс линеаризации интереса, в дополнение к любому из входных параметров в предыдущих синтаксисах.

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

пример

[linsys,info] = getIOTransfer(___) возвращает дополнительную информацию о линеаризации.

Примеры

свернуть все

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

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

mdl = 'ex_scd_simple_fdbk';
open_system(mdl);

В этой модели:

$$\begin{array}{l}
K(s) = {K_p} = 3\\
G(s) = \frac{1}{{s + 5}}
\end{array}$$

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

sllin = slLinearizer(mdl);

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

addPoint(sllin,{'r','y'});

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

sys = getIOTransfer(sllin,'r','y');
tf(sys)
ans =
 
  From input "r" to output "y":
    3
  -----
  s + 8
 
Continuous-time transfer function.

Программное обеспечение добавляет вход линеаризации в r, dr, и линеаризация выводится в y.

sys передаточная функция от dr к y, который равен$(I+GK)^{-1}GK$.

Получите передаточную функцию модели объекта управления, G, для ex_scd_simple_fdbk модель.

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

mdl = 'ex_scd_simple_fdbk';
open_system(mdl);

В этой модели:

$$\begin{array}{l}
K(s) = {K_p} = 3\\
G(s) = \frac{1}{{s + 5}}.
\end{array}$$

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

sllin = slLinearizer(mdl);

Чтобы получить передаточную функцию модели объекта управления, используйте u как точка ввода и y как выходная точка. Чтобы устранить эффекты обратной связи, необходимо повредить цикл. Можно повредить цикл в uE, или y. В данном примере повредите цикл в u. Добавьте эти точки в sllin.

addPoint(sllin,{'u','y'});

Получите передаточную функцию модели объекта управления.

sys = getIOTransfer(sllin,'u','y','u');
tf(sys)
ans =
 
  From input "u" to output "y":
    1
  -----
  s + 5
 
Continuous-time transfer function.

Второй входной параметр задает u как вход, в то время как четвертый входной параметр задает u как временное открытие цикла.

sys передаточная функция от du к y, который равен$G$.

Предположим, что вы обрабатываете в пакетном режиме, линеаризуют scdcascade модель для нескольких передаточных функций. Для большей части линеаризации вы варьируетесь пропорциональное (Kp2) и интегральная составляющая (Ki2) из C2 контроллер в 10%-й области значений. В данном примере вычислите передаточную функцию ответа разомкнутого контура для внутреннего цикла от e2 к y2, для максимального значения Kp2 и Ki2.

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

mdl = 'scdcascade';
open_system(mdl)

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

sllin = slLinearizer(mdl);

Варьируйтесь пропорциональное (Kp2) и интегральная составляющая (Ki2) из C2 контроллер в 10%-й области значений.

Kp2_range = linspace(0.9*Kp2,1.1*Kp2,3);
Ki2_range = linspace(0.9*Ki2,1.1*Ki2,5);

[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;

Чтобы вычислить передаточную функцию разомкнутого контура для внутреннего цикла, используйте e2 и y2 когда анализ указывает. Чтобы устранить эффекты внешнего контура, повредите цикл в e2. Добавьте e2 и y2 к sllin когда анализ указывает.

addPoint(sllin,{'e2','y2'})

Определите индекс для максимальных значений Ki2 и Kp2.

mdl_index = params(1).Value == max(Kp2_range) & params(2).Value == max(Ki2_range);

Получите передаточную функцию разомкнутого контура из e2 к y2.

sys = getIOTransfer(sllin,'e2','y2','e2',mdl_index);

Открытая модель Simulink.

mdl = 'scdcascade';
open_system(mdl)

Создайте набор опции линеаризации и установите StoreOffsets опция.

opt = linearizeOptions('StoreOffsets',true);

Создайте slLinearizer интерфейс.

sllin = slLinearizer(mdl,opt);

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

addPoint(sllin,{'r','y1m'});

Вычислите передаточную функцию ввода/вывода и получите соответствующие смещения линеаризации.

[sys,info] = getIOTransfer(sllin,'r','y1m');

Просмотрите смещения.

info.Offsets
ans = 

  struct with fields:

             x: [6x1 double]
            dx: [6x1 double]
             u: 1
             y: 0
     StateName: {6x1 cell}
     InputName: {'r'}
    OutputName: {'y1m'}
            Ts: 0

Входные параметры

свернуть все

Интерфейс к модели Simulink в виде любого slLinearizer взаимодействуйте через интерфейс или slTuner интерфейс.

Введите аналитическое имя сигнала точки в виде:

  • Вектор символов или строка — Аналитическая точка сигнализируют об имени.

    Чтобы определить имя сигнала, сопоставленное с аналитической точкой, введите s. Программное обеспечение отображает содержимое s в MATLAB® командное окно, включая анализ указывают имена сигнала, имена блока и номера портов. Предположим, что аналитическая точка не имеет имени сигнала, но только имени блока и номера порта. Можно задать in как имя блока. Использовать точку не в списке анализа указывает для s, сначала добавьте использование точки addPoint.

    Можно задать in как исключительно соответствующий фрагмент полного имени сигнала или имени блока. Предположим, что полным именем сигнала аналитической точки является 'LoadTorque'. Можно задать in как 'Torque' настолько же долго как 'Torque' не фрагмент имени сигнала ни для какой другой аналитической точки s.

    Например, in = 'y1m'.

  • Массив ячеек из символьных векторов или массив строк — Задают несколько аналитических имен точки. Например, in = {'y1m','y2m'}.

Выведите аналитическое имя сигнала точки в виде:

  • Вектор символов или строка — Аналитическая точка сигнализируют об имени.

    Чтобы определить имя сигнала, сопоставленное с аналитической точкой, введите s. Программное обеспечение отображает содержимое s в окне команды MATLAB, включая анализ указывают имена сигнала, имена блока и номера портов. Предположим, что аналитическая точка не имеет имени сигнала, но только имени блока и номера порта. Можно задать out как имя блока. Использовать точку не в списке анализа указывает для s, сначала добавьте использование точки addPoint.

    Можно задать out как исключительно соответствующий фрагмент полного имени сигнала или имени блока. Предположим, что полным именем сигнала аналитической точки является 'LoadTorque'. Можно задать out как 'Torque' настолько же долго как 'Torque' не фрагмент имени сигнала ни для какой другой аналитической точки s.

    Например, out = 'y1m'.

  • Массив ячеек из символьных векторов или массив строк — Задают несколько аналитических имен точки. Например, out = {'y1m','y2m'}.

Временное вводное имя сигнала в виде:

  • Вектор символов или строка — Аналитическая точка сигнализируют об имени.

    temp_opening должен задать аналитическую точку, которая находится в списке аналитических точек для s. Чтобы определить имя сигнала, сопоставленное с аналитической точкой, введите s. Программное обеспечение отображает содержимое s в окне команды MATLAB, включая анализ указывают имена сигнала, имена блока и номера портов. Предположим, что аналитическая точка не имеет имени сигнала, но только имени блока и номера порта. Можно задать temp_opening как имя блока. Использовать точку не в списке анализа указывает для s, сначала добавьте использование точки addPoint.

    Можно задать temp_opening как исключительно соответствующий фрагмент полного имени сигнала или имени блока. Предположим, что полным именем сигнала аналитической точки является 'LoadTorque'. Можно задать temp_opening как 'Torque' настолько же долго как 'Torque' не фрагмент имени сигнала ни для какой другой аналитической точки s.

    Например, temp_opening = 'y1m'.

  • Массив ячеек из символьных векторов или массив строк — Задают несколько аналитических имен точки. Например, temp_opening = {'y1m','y2m'}.

Линеаризация I/Os, созданное использование linioВ виде объекта I/O линеаризации.

ios должен задать сигналы, которые находятся в списке аналитических точек для s. Чтобы просмотреть список аналитических точек, введите s. Использовать точку, которая не находится в списке аналитических точек для s, необходимо сначала добавить точку в использование списка addPoint.

Например:

ios(1) = linio('scdcascade/setpoint',1,'input');
ios(2) = linio('scdcascade/Sum',1,'output');

Здесь, ios(1) задает вход и ios(2) задает выход.

Индексируйте для линеаризации интереса в виде:

  • Массив логических значений — индекс Логического массива линеаризации интереса. Предположим, что вы варьируетесь два параметра, par1 и par2, и хочу извлечь линеаризацию для комбинации par1 > 0.5 и par2 <= 5Использование:

    params = s.Parameters;
    mdl_index = params(1).Value>0.5 & params(2).Value <= 5;

    Выражение params(1).Value>0.5 & params(2).Value<5 использует логическую индексацию и возвращает логический массив. Этот логический массив одного размера с params(1).Value и params(2).Value. Каждая запись содержит логическую оценку выражения для соответствующих записей в params(1).Value и params(2).Value.

  • Вектор из положительных целых чисел — Линейный индекс линеаризации интереса. Предположим, что вы варьируетесь два параметра, par1 и par2, и хочу извлечь линеаризацию для комбинации par1 > 0.5 и par2 <= 5Использование:

    params = s.Parameters;
    mdl_index = find(params(1).Value>0.5 & params(2).Value <= 5);

    Выражение params(1).Value>0.5 & params(2).Value<5 возвращает логический массив. find возвращает линейный индекс каждой истинной записи в логическом массиве

Выходные аргументы

свернуть все

Передаточная функция для заданного I/Os, возвращенного как описано в следующем:

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

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

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

  • Если вы сконфигурировали s.Parameters и заданный s.OperatingPoints как одна рабочая точка, программное обеспечение вычисляет линеаризацию для каждого узла решетки параметра. Программное обеспечение использует заданную рабочую точку в качестве рабочей точки линеаризации. linsys возвращен как массив модели в пространстве состояний одного размера с сеткой параметра.

  • Если вы сконфигурировали s.Parameters и заданный s.OperatingPoints когда несколько рабочих точек возражают, программное обеспечение вычисляет линеаризацию для каждого узла решетки параметра. Программное обеспечение требует того s.OperatingPoints одного размера с сеткой параметра, заданной s.Parameters. Программное обеспечение вычисляет каждую линеаризацию с помощью соответствующих рабочих точек и узлов решетки параметра. linsys возвращен как массив модели в пространстве состояний одного размера с сеткой параметра.

  • Если вы сконфигурировали s.Parameters и заданный s.OperatingPoints как несколько раз снимка состояния симуляции, программное обеспечение симулирует и линеаризует модель в течение каждого раза снимка состояния и комбинации узла решетки параметра. Предположим, что вы задаете сетку параметра размера p и N создайте снимки времена. linsys возвращен как массив модели в пространстве состояний размера N- p.

Для большинства моделей, linsys возвращен как ss возразите или массив ss объекты. Однако, если ваша модель содержит один из следующих блоков в пути к линеаризации, заданном in и out, затем linsys возвращает заданный тип модели в пространстве состояний.

Блокlinsys Ввод
Блокируйтесь с заменой, заданной как a genss возразите или настраиваемый объект моделиgenss
Блокируйтесь с заменой, заданной как неопределенная модель, такой как ussuss (Robust Control Toolbox)
Блок Sparse Second Ordermechss
Descriptor State-Space блок, сконфигурированный, чтобы линеаризовать к разреженной моделиsparss

Информация о линеаризации, возвращенная как структура со следующими полями:

Смещения линеаризации, возвращенные как [] если s.Options.StoreOffsets false. В противном случае, Offsets возвращен как одно из следующего:

  • Если linsys одна модель в пространстве состояний, затем Offsets структура.

  • Если linsys массив моделей в пространстве состояний, затем Offsets массив структур с теми же размерностями как linsys.

Каждая структура смещения имеет следующие поля:

Поле Описание
xСмещения состояния использовали для линеаризации, возвращенной как вектор-столбец длины nx, где nx является количеством состояний в linsys.
yВыведите смещения, используемые для линеаризации, возвращенной как вектор-столбец длины ny, где ny является количеством выходных параметров в linsys.
uВведите смещения, используемые для линеаризации, возвращенной как вектор-столбец длины nu, где nu является количеством входных параметров в linsys.
dxПроизводные смещения для непрерывных систем времени или обновленные значения состояния для систем дискретного времени, возвращенных как вектор-столбец длины nx.
StateNameИмена состояния, возвращенные как массив ячеек, который содержит элементы nx, которые совпадают с именами в linsys.StateName.
InputNameВведите имена, возвращенные как массив ячеек, который содержит элементы nu, которые совпадают с именами в linsys.InputName.
OutputNameВыведите имена, возвращенные как массив ячеек, который содержит элементы ny, которые совпадают с именами в linsys.OutputName.
TsШаг расчета линеаризованной системы, возвращенной как скаляр, который совпадает с шагом расчета в linsys.Ts. Для систем непрерывного времени, Ts 0.

Если Offsets массив структур, можно сконфигурировать блок LPV System с помощью смещений. Для этого сначала преобразуйте их в использование требуемого формата getOffsetsForLPV. Для примера смотрите, что Аппроксимированное Нелинейное Поведение Использует Массив Систем LTI.

Информация о диагностике линеаризации, возвращенная как [] если s.Options.StoreAdvisor false. В противном случае, Advisor возвращен как одно из следующего:

  • Если linsys одна модель в пространстве состояний, Advisor LinearizationAdvisor объект.

  • Если linsys массив моделей в пространстве состояний, Advisor массив LinearizationAdvisor объекты с теми же размерностями как linsys.

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

Больше о

свернуть все

Передаточные функции

transfer function является откликом системы LTI в выходной точке линеаризации к входу линеаризации. Вы выполняете линейный анализ передаточных функций, чтобы изучить устойчивость, характеристики временного интервала или характеристики частотного диапазона системы.

Можно вычислить несколько передаточных функций для данной блок-схемы. Рассмотрите ex_scd_simple_fdbk модель:

Можно вычислить передаточную функцию от ссылочного входного сигнала до выходного сигнала объекта. reference input (также называемый setpoint), r, происходит в блоке Reference, и plant output, y, происходит в блоке G. Эта передаточная функция также называется передаточной функцией overall closed-loop. Чтобы вычислить эту передаточную функцию, программное обеспечение добавляет вход линеаризации в r, dr, и линеаризация выводится в y.

Программное обеспечение вычисляет полную передаточную функцию с обратной связью как передаточную функцию от dr к y, который равен (I +GK)-1G K.

Заметьте что передаточная функция от r к y равно передаточной функции от dr к y.

Можно вычислить plant transfer function от входа объекта, u, к объекту выход, y. Чтобы изолировать динамику объекта от эффектов обратной связи, введите пропуск цикла (или opening) в yE, или, как показано, в u.

Программное обеспечение повреждает цикл и добавляет вход линеаризации, du, в u, и линеаризация выводится в y. Передаточная функция объекта равна передаточной функции от du к y, который является G.

Точно так же, чтобы получить controller transfer function, вычислите передаточную функцию от входа контроллера, e, к контроллеру выход, u. Повредите обратную связь в yE, или u.

Можно использовать getIOTransfer получить различный разомкнутый контур и передаточные функции с обратной связью. Чтобы сконфигурировать передаточную функцию, задайте аналитические точки как входные параметры, выходные параметры и открытия (временный или постоянный), в любой комбинации. Программное обеспечение обрабатывает каждую комбинацию исключительно. Рассмотрите следующий код, который показывает некоторые различные способы, которыми можно использовать аналитическую точку, u, получить передаточную функцию:

sllin = slLinearizer('ex_scd_simple_fdbk')

addPoint(sllin,{'u','e','y'})

T0 = getIOTransfer(sllin,'e','y','u');
T1 = getIOTransfer(sllin,'u','y');
T2 = getIOTransfer(sllin,'u','y','u');
T3 = getIOTransfer(sllin,'y','u');
T4 = getIOTransfer(sllin,'y','u','u');
T5 = getIOTransfer(sllin,'u','u'); 
T6 = getIOTransfer(sllin,'u','u','u');

В T0U задает пропуск цикла. В T1U задает только вход, тогда как в T2U задает вход и открытие, также называемое open-loop input. В T3U задает только выход, тогда как в T4U задает выход и открытие, также называемое open-loop output. В T5U задает вход и выход, также называемый complementary sensitivity point. В T6U задает вход, выход и открытие, также называемое loop transfer point. Таблица описывает как getIOTransfer обрабатывает аналитические точки, с акцентом на различное использование u.

u Задает...Как getIOTransfer Аналитические точки обработокПередаточная функция

Пропуск цикла

Пример кода:

T0 = getIOTransfer(...
     sllin,'e','y','u')

Программное обеспечение останавливает поток сигналов в u, добавляет вход линеаризации, de, в e, и линеаризация выводится в y. С тех пор от de нет пути к e, передаточная функция является нулем.

y=G0y=0T0=0

Входной параметр

Пример кода:

T1 = getIOTransfer(...
     sllin,'u','y')

Программное обеспечение добавляет вход линеаризации, du, в u, и линеаризация выводится в y.

y=G(duKy)y=GduGKy(I+GK)y=Gduy=(I+GK)1GduT1=(I+GK)1G

Разомкнутый контур вводится

Пример кода:

T2 = getIOTransfer(...
     sllin,'u','y','u')

Программное обеспечение повреждает поток сигналов и добавляет вход линеаризации, du, в u, и линеаризация выводится в y.

y=G(du+0)y=GduT2=G

Вывод

Пример кода:

T3 = getIOTransfer(...
     sllin,'y','u')

Программное обеспечение добавляет вход линеаризации, dy, в y и линеаризация выводится в u.

u=K(dy+Gu)u=KdyKGu(I+KG)u=Kdyu=(I+KG)1KdyT3=(I+KG)1K

Разомкнутый контур выводится

Пример кода:

T4 = getIOTransfer(...
     sllin,'y','u','u')

Программное обеспечение добавляет вход линеаризации, dy, в y и добавляет линеаризацию выход и повреждает поток сигналов в u.

u=K(dy+G0)u=KdyT4=K

Дополнительная точка чувствительности

Пример кода:

T5 = getIOTransfer(...
     sllin,'u','u')

Совет

Также можно получить дополнительное использование функции чувствительности getCompSensitivity.

Программное обеспечение добавляет линеаризацию выход и вход линеаризации, du, в u.

u=KG(du+u)u=KGduKGu(I+KG)u=KGduu=(I+KG)1KGduT5=(I+KG)1KG

Точка передаточной функции цикла

Пример кода:

T6 = getIOTransfer(...
     sllin,'u','u','u')

Совет

Также можно получить использование передаточной функции цикла getLoopTransfer.

Программное обеспечение добавляет линеаризацию выход, повреждает цикл и добавляет вход линеаризации, du, в u.

u=KG(du+0)u=KGduT6=KG

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

Аналитические точки

Analysis points, используемый slLinearizer и slTuner интерфейсы, идентифицируйте местоположения в модели, которые важны для линейного анализа и настройки системы управления. Вы используете аналитические точки в качестве входных параметров к командам линеаризации, такой как getIOTransfer, getLoopTransfer, getSensitivity, и getCompSensitivity. Как входные параметры к командам линеаризации, аналитические точки могут задать любой разомкнутый контур или передаточную функцию с обратной связью в модели. Можно также использовать аналитические точки, чтобы задать конструктивные требования при настройке систем управления с помощью команд такой как systune.

Location относится к определенному выходному порту блока в модели или к элементу шины в таком выходном порту. Для удобства можно использовать имя сигнала, который происходит из этого порта, чтобы относиться к аналитической точке.

Можно добавить, что анализ указывает на slLinearizer или slTuner интерфейсы, когда вы создаете интерфейс. Например:

s = slLinearizer('scdcascade',{'u1','y1'});

В качестве альтернативы можно использовать addPoint команда.

Просмотреть все аналитические точки s, введите s в командной строке, чтобы отобразить интерфейсное содержимое. Для каждой аналитической точки s, отображение включает имя блока и номер порта и имя сигнала, который происходит в этой точке. Можно также программно получить список всего аналитического использования точек getPoints.

Для получения дополнительной информации о том, как можно использовать аналитические точки, смотрите представляющего интерес Марка Сигнэлса для Анализа и проектирования Системы управления и представляющего интерес Марка Сигнэлса для Пакетной Линеаризации.

Постоянные открытия

Permanent openings, используемый slLinearizer и slTuner интерфейсы, идентифицируйте местоположения в модели, где программное обеспечение повреждает поток сигналов. Программное обеспечение осуществляет эти открытия для линеаризации и настройку. Используйте постоянные открытия, чтобы изолировать определенный компонент модели. Предположим, что у вас есть крупномасштабная модель, получая динамику самолета, и вы хотите выполнить линейный анализ корпуса только. Можно использовать постоянные открытия, чтобы исключить все другие компоненты модели. Другой пример - когда вы расположили каскадом циклы в своей модели, и вы хотите анализировать определенный цикл.

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

Можно добавить постоянные открытия в slLinearizer или slTuner интерфейсы, когда вы создаете интерфейс или при помощи addOpening команда. Чтобы удалить местоположение из списка постоянных открытий, используйте removeOpening команда.

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

Введенный в R2013b