getLoopTransfer

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

Описание

пример

linsys = getLoopTransfer(s,pt) возвращает передаточную функцию разомкнутого разомкнутого контура «точка-точка» в заданной точке анализа для модели, связанной с slLinearizer или slTuner интерфейс, s.

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

пример

linsys = getLoopTransfer(s,pt,sign) задает знак обратной связи для вычисления отклика без разомкнутого контура. По умолчанию linsys является передаточной функцией разомкнутого контура с положительной обратной связью.

Задайте sign на -1 вычислить разомкнутый контур отрицательной обратной связи передаточной функции для приложений, которые предполагают определение отрицательной обратной связи linsys. Многие классические проекты и методы анализа, такие как методы Найквиста или корневой годограф проекта, используют конвенцию отрицательной обратной связи.

Чувствительность к системе с обратной связью в pt равно feedback(1,linsys,sign).

пример

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

linsys = getLoopTransfer(s,pt,temp_opening,sign) задает временные открытия и знак обратной связи.

пример

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

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

пример

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

Примеры

свернуть все

Получите передаточную функцию цикла, вычисленную как e, для 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);

Чтобы получить передаточную функцию цикла в e, добавьте эту точку к sllin как точка анализа.

addPoint(sllin,'e');

Получите передаточную функцию цикла в e.

sys = getLoopTransfer(sllin,'e');
tf(sys)
ans =
 
  From input "e" to output "e":
   -3
  -----
  s + 5
 
Continuous-time transfer function.

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

sys - передаточная функция от de на e. Поскольку программное обеспечение принимает положительную обратную связь, оно возвращается sys как.$-GK$

Получите передаточную функцию цикла отрицательной обратной связи, рассчитанную в e, для 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);

Чтобы получить передаточную функцию цикла в e, добавьте эту точку к sllin как точка анализа.

addPoint(sllin,'e');

Получите передаточную функцию цикла в e.

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

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

sys - передаточная функция от de на e. Поскольку третий входной параметр указывает на отрицательную обратную связь, программное обеспечение возвращается sys как.$GK$

Получите передаточную функцию цикла для внутреннего цикла, рассчитанную в e2, для scdcascade модель.

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

mdl = 'scdcascade';
open_system(mdl);

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

sllin = slLinearizer(mdl);

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

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

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

sys = getLoopTransfer(sllin,'e2','y1m');

Здесь, 'y1m', третий входной параметр, задает временное открытие цикла. Программа принимает положительную обратную связь, когда вычисляет sys.

Предположим, вы пакетно линеаризируете scdcascade модель для нескольких передаточных функций. Для большинства линеаризаций вы варьируете пропорциональный (Kp2) и интегральная составляющая (Ki2) C2 контроллер, в области значений 10%. В данном примере вычислите передаточную функцию цикла для внутреннего цикла при e2 для максимальных значений 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 сигнал как точка анализа. Чтобы исключить эффекты внешнего контура, сломайте внешний контур на y1m. Добавьте эти точки к sllin.

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

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

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

Получите передаточную функцию цикла с внутренним контуром в e2, с открытым внешним контуром.

sys = getLoopTransfer(sllin,'e2','y1m',-1,mdl_index);

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

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

mdl = 'watertank';
open_system(mdl)

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

opt = linearizeOptions('StoreOffsets',true);

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

sllin = slLinearizer(mdl,opt);

Добавьте точку анализа в выходной порт бака.

addPoint(sllin,'watertank/Water-Tank System');

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

[sys,info] = getLoopTransfer(sllin,'watertank/Water-Tank System');

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

info.Offsets
ans = 

  struct with fields:

             x: [2x1 double]
            dx: [2x1 double]
             u: 1
             y: 1
     StateName: {2x1 cell}
     InputName: {'watertank/Water-Tank System'}
    OutputName: {'watertank/Water-Tank System'}
            Ts: 0

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

свернуть все

Интерфейс к модели Simulink, заданный как slLinearizer интерфейс или slTuner интерфейс.

Имя сигнала точки анализа, заданное как:

  • Вектор символов - Имя сигнала точки анализа.

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

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

    Для примера, pt = 'y1m'.

  • Массив ячеек из символьных векторов или строковых массивов - задает несколько имен точек анализа. Для примера, pt = {'y1m','y2m'}.

Чтобы вычислить linsys, программное обеспечение добавляет выход линеаризации, за которым следует пропуск цикла, а затем вход линеаризации на pt. Рассмотрим следующую модель:

Задайте pt как 'u'.

Программное обеспечение вычисляет linsys как передаточная функция от du на u.

Если вы задаете pt как несколько сигналов, например pt = {'u','y'}, программное обеспечение добавляет выход линеаризации, пропуск цикла и вход линеаризации в каждой точке.

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

Знак обратной связи, заданный как одно из следующих значений:

  • +1 (по умолчанию) - getLoopTransfer возвращает передаточную функцию разомкнутого контура с положительной обратной связью.

  • -1getLoopTransfer возвращает передаточную функцию разомкнутого контура с отрицательной обратной связью. Передаточная функция с отрицательной обратной связью -1 умножает передаточную функцию с положительной обратной связью.

Имя временного сигнала открытия, заданное как:

  • Вектор символов - Имя сигнала точки анализа.

    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'}.

Индекс для интересующих линеаризаций, указанный как:

  • Массив логических значений - Логический индекс интересующих линеаризаций. Предположим, что вы варьируете два параметра, 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 возвращает линейный индекс каждого истинного элемента в логическом массиве

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

свернуть все

Передаточная функция разомкнутого контура «точка-точка», возвращенная как описано ниже:

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

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

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

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

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

Подробнее о

свернуть все

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

loop transfer function в точке является передаточной функцией разомкнутого контура от нарушения порядка добавки в точке до измерения в той же точке.

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

Точка анализа в модели SimulinkКак getLoopTransfer Интерпретирует точку анализа Передаточная функция цикла

Передаточная функция от dx на x

Например, рассмотрим следующую модель, где вы вычисляете передаточную функцию цикла в e:

Здесь, в e, программное обеспечение добавляет выход линеаризации, вставляет пропуск цикла и добавляет вход линеаризации, de. Передаточная функция цикла в eL является передаточной функцией от de на e. L вычисляется следующим образом:

e=GKLde.

Для вычисления - K G используйте u как точка анализа для getLoopTransfer.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Введенный в R2013b
Для просмотра документации необходимо авторизоваться на сайте