getCompSensitivity

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

Синтаксис

linsys = getCompSensitivity(s,pt)
linsys = getCompSensitivity(s,pt,temp_opening)
linsys = getCompSensitivity(___,mdl_index)
[linsys,info] = getCompSensitivity(___)

Описание

пример

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

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

пример

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

пример

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

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

пример

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

Примеры

свернуть все

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

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

mdl = 'ex_scd_simple_fdbk';
open_system(mdl);

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

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

sllin = slLinearizer(mdl);

Чтобы вычислить дополнительную функцию чувствительности на объекте вывод, используйте сигнал y в качестве аналитической точки. Добавьте эту точку в sllin.

addPoint(sllin,'y');

Получите дополнительную функцию чувствительности в y.

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

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

sys является передаточной функцией от dy до y, который равен.

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

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

mdl = 'scdcascade';
open_system(mdl);

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

sllin = slLinearizer(mdl);

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

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

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

sys = getCompSensitivity(sllin,'y2','y1m');

Здесь, 'y1m', третий входной параметр, задает временное открытие для внешнего цикла.

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

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

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

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

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

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

sys = getCompSensitivity(sllin,'y2','y1m',mdl_index);

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

mdl = 'watertank';
open_system(mdl)

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

opt = linearizeOptions('StoreOffsets',true);

Интерфейс Create slLinearizer.

sllin = slLinearizer(mdl,opt);

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

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

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

[sys,info] = getCompSensitivity(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 как 'y':

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

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

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

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

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

    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 смотрите Результаты Линеаризации Поиска и устранения неисправностей в Командной строке.

Больше о

свернуть все

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

complementary sensitivity function в точке является передаточной функцией от аддитивного воздействия в точке к измерению в той же точке. В отличие от функции чувствительности, воздействие добавляется после измерения.

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

Аналитическая точка в модели SimulinkКак getCompSensitivity интерпретирует аналитическую точкуДополнительная функция чувствительности

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

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

Здесь, программное обеспечение добавляет линеаризацию вывод в y, сопровождаемом входом линеаризации, dy. Дополнительная функция чувствительности в y, T, является передаточной функцией от dy до y. T вычисляется можно следующим образом:

y=GK(y+dy)y=GKyGKdy(I+GK)y=GKdyy=(I+GK)1GKTdy.

Здесь I является единичной матрицей, одного размера как G K. Дополнительная передаточная функция чувствительности в y равна временам -1 передаточная функция с обратной связью от r до y.

Обычно дополнительная функция чувствительности, T, вычисленный из ссылочных сигналов посадить выходные параметры, равна IS. Здесь S является функцией чувствительности в точке, и I является единичной матрицей соразмерного размера. Однако, потому что getCompSensitivity добавляет линеаризацию вывод и вход в той же точке, T, как возвращено getCompSensitivity, равен SI.

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