getLoopTransfer

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

Описание

пример

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

Программное обеспечение осуществляет все постоянные открытия цикла, заданные для 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- 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. Передаточная функция цикла в e, L, передаточная функция от de к e. L вычисляется можно следующим образом:

e=GKLde.

Чтобы вычислить-KG, используйте u как аналитическая точка для getLoopTransfer.

Программное обеспечение не изменяет модель 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