exponenta event banner

getIOTransfer

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

Описание

пример

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

Программное обеспечение обеспечивает все постоянные отверстия, указанные для 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 в качестве точки вывода. Чтобы устранить последствия обратной связи, необходимо разорвать петлю. Вы можете разорвать петлю на u, e, или 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'}.

Ввод-вывод линеаризации, созданный с помощью linio, указанный как объект линеаризации ввода-вывода.

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 возвращает линейный индекс каждой записи true в логическом массиве

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

свернуть все

Функция передачи для указанных операций ввода-вывода, возвращенная в соответствии со следующим описанием:

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

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

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

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

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

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

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

Смещения линеаризации, возвращенные как [] если 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 с помощью смещений. Для этого сначала преобразуйте их в требуемый формат с помощью getOffsetsForLPV. Пример см. в разделе Аппроксимация нелинейного поведения с использованием массива систем LTI.

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

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

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

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

Подробнее

свернуть все

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

Передаточная функция - это отклик системы LTI в выходной точке линеаризации на вход линеаризации. Для понимания стабильности, характеристик временной области или характеристик частотной области системы выполняется линейный анализ функций переноса.

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

Можно рассчитать передаточную функцию от опорного входного сигнала к выходному сигналу завода. Опорный вход (также называемый уставкой), r, начинается в опорном блоке и выводе установки, y, начинается в блоке G. Эта передаточная функция также называется общей передаточной функцией с замкнутым контуром. Для вычисления этой передаточной функции программа добавляет вход линеаризации в r, drи выходной сигнал линеаризации в y.

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

Обратите внимание, что функция переноса от r кому y равно передаточной функции от dr кому y.

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

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

Аналогично, чтобы получить передаточную функцию контроллера, вычислите передаточную функцию на входе контроллера, e, на выход контроллера, u. Разорвать петлю обратной связи на y, e, или 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');

В T0, u задает разрыв цикла. В T1, u задает только входные данные, тогда как в T2, u задает вход и проем, также называемый входом с разомкнутым контуром. В T3, u задает только выходные данные, тогда как в T4, u задает выход и проем, также называемый выходом с разомкнутым контуром. В T5, u задает вход и выход, также называемые дополнительной точкой чувствительности. В T6, u задает вход, выход и проем, также называемый точкой передачи контура. В таблице описано, как getIOTransfer рассматривает точки анализа с акцентом на различные виды использования u.

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

Разрыв петли

Пример кода:

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

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

y=G0→y=0︸T0

Вход

Пример кода:

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

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

y = G (du Ky) →y=Gdu−GKy→ (I + GK) y=Gdu→y= (I + GK) −1G︸T1du

Вход с разомкнутым контуром

Пример кода:

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

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

y = G (du + 0) →y=G︸T2du

Продукция

Пример кода:

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

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

u = K (dy + Gu) →u=−Kdy−KGu→ (I + KG) u=−Kdy→u=− (I + KG) −1K︸T3dy

Выход с разомкнутым контуром

Пример кода:

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

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

u = K (dy + G0) →u=−K︸T4dy

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

Пример кода:

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

Совет

Вы также можете получить дополнительную функцию чувствительности с помощью getCompSensitivity.

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

u = KG (du + u) →u=−KGdu−KGu→ (I + KG) u=−KGdu→u=− (I + KG) −1KG︸T5du

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

Пример кода:

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

Совет

Функцию переноса цикла можно также получить с помощью getLoopTransfer.

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

u = KG (du + 0) →u=−KG︸T6du

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

Точки анализа

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

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

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

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

Кроме того, можно использовать addPoint команда.

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

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

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

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

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

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

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

Представлен в R2013b