varyingGoal

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

Описание

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

пример

VG = varyingGoal(FH,par1,par2,...) задает различную цель с помощью шаблона и наборов значений параметров цели. Шаблон FH - указатель на функцию, который задает функцию, TG = FH(p1,p2,...), который оценивает к одному из TuningGoal объекты. Массивы par1,par2,... задайте значения параметров цели настройки p1,p2,... в каждом проекте. Использование VG как вы бы использовали любой TuningGoal объект во входе systune.

пример

VG = varyingGoal(___,Name,Value)настраивает дополнительные свойства цели настройки.

Примеры

свернуть все

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

Предположим, что для настройки контроллера вы используете следующую сетку проекта точек 5 на 5.

[alpha,V] = ndgrid(linspace(0,20,5),linspace(700,1300,5));

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

[GM,PM] = ndgrid(linspace(7,20,5),linspace(45,70,5));

Чтобы применить указанные поля в каждой точке проекта, сначала создайте шаблон для цели полей. Шаблон является функцией, которая принимает значения запаса по амплитуде и фазе и возвращает TuningGoal.Margins объект с этими полями.

FH = @(gm,pm) TuningGoal.Margins('u',gm,pm);

Используйте шаблон и маржинальные массивы, чтобы создать различную цель.

VG = varyingGoal(FH,GM,PM);

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

VG.SamplingGrid = struct('alpha',alpha,'V',V);

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

Создайте цель настройки, которая задает форму цикла, которая изменяется с одной переменной планирования, a.

Предположим, что вы хотите задать форму цикла с частотой среза, которая изменяется как 2*a над тремя проектными точками. Чтобы применить это требование, сначала создайте шаблон для цели контура. Шаблон является функцией, которая принимает числовой скалярный входной параметр и возвращает TuningGoal.LoopShape объект. Входной параметр функции должен быть скалярным, поэтому функция создает модели LTI, представляющие формы цикла.

a = [5;10;15];
s = tf('s');
FH = @(A) TuningGoal.LoopShape('u',2*A/s);

Здесь, 'u' - точка анализа в системе, местоположение, в котором необходимо ввести требования к форме контура.

Используйте шаблон и массив, чтобы создать различную цель.

VG = varyingGoal(FH,a);

Прикрепите информацию о точке проектирования к VG.

VG.SamplingGrid = struct('a',a);

Теперь каждое значение a связана с целью настройки, которая применяет соответствующую форму цикла. Например, подтвердите, что третья запись в a, a = 15, связано с формой третьего цикла, 30/s.

LS3 = getGoal(VG,'index',3);
tf(LS3.LoopGain)
ans =
 
  30
  --
  s
 
Continuous-time transfer function.

Создайте цель настройки, которая задает переменный коэффициент усиления и запасов по фазе через сетку проекта точек. Сконфигурируйте цель настройки, которая будет оценена с открытием цикла в местоположении 'LO' и применять только в частотной области значений от 1 до 100 рад/с.

Задайте сетку проекта точек и соответствующую сетку целевых запасов по амплитуде и запасов по фазе. Кроме того, создайте функцию шаблона для цели меняющихся полей.

[alpha,V] = ndgrid(linspace(0,20,5),linspace(700,1300,5));
[GM,PM] = ndgrid(linspace(7,20,5),linspace(45,70,5));
FH = @(gm,pm) TuningGoal.Margins('u',gm,pm);

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

  • Место, в котором цикл открыт для оценки цели настройки (Openings свойство).

  • Частотная область значений, в котором применяется изменяющаяся цель (Focus свойство).

Имена свойства и значения, которые вы задаете для базовой цели настройки, хранятся в Settings свойство различной цели.

VG = varyingGoal(FH,GM,PM,'Openings','LO','Focus',[1,100])
VG = 
  varyingGoal with properties:

        Template: @(gm,pm)TuningGoal.Margins('u',gm,pm)
      Parameters: {[5x5 double]  [5x5 double]}
        Settings: {'Openings'  'LO'  'Focus'  [1 100]}
    SamplingGrid: [1x1 struct]
            Name: ''

  Variable tuning goal acting over a 5x5 grid of (gm,pm) values.

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

VG.SamplingGrid = struct('alpha',alpha,'V',V);

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

свернуть все

Шаблон для изменения цели, заданный как указатель на функцию. FH задает функцию одного или нескольких параметров, которая вычисляет один из TuningGoal объекты. Для примера предположим, что вы хотите ограничить перерегулирование в переходную характеристику от входного r в выход y в системе, и необходимо, чтобы ограничение изменялось между различными точками проекта. Задайте шаблон как функцию, которая возвращает TuningGoal.Overshoot объект. Для примера можно задать FH как анонимная функция.

FH = @(os) TuningGoal.Overshoot('r','y',os);

Потому что TuningGoal.Overshoot имеет только один параметр, помимо входа и выхода сигналов, FH является указателем на функцию одного аргумента. Для других целей настройки используйте больше аргументов. Для примера, TuningGoal.Margins имеет два параметра, запас по амплитуде и запас по фазе. Поэтому для переменной цели запаса, FH имеет два аргумента.

FH = @(gm,pm) TuningGoal.Margins('u',gm,pm);

Функция шаблона обеспечивает большую гибкость при построении целей проекта. Для примера можно написать функцию, goalspec(a,b), который создает спецификацию цели настройки как нетривиальную функцию параметров (a,b), и сохраните функцию в MATLAB® файл. Затем функция шаблона вызывает goalspec следующим образом.

FH = @(a,b) TuningGoal.Margins('u',goalspec(a,b)); 

Точно так же, если параметры tuning-goal не помещаются в числовых массивах, можно использовать индекс design-point как вход в FH. Например, предположим, что данные о запасах по амплитуде и фазе хранятся в массиве структур, S, с полями GM и PM, можно использовать следующее.

FH = @(idx) TuningGoal.Margins('u',S(idx).GM,S(idx).PM);

idx - абсолютный индекс в сетку проекта точек.

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

par = osvals;

osvals - массив значений перерегулирования для применения в каждой точке проекта.

The TuningGoal.Margins цель имеет два параметра, запас по амплитуде и запас по фазе. Поэтому для цели переменного запаса задайте параметры следующим образом:

par1 = GM;
par2 = PM;

Здесь, GM является массивом значений запасов по амплитуде и PM - массив значений запасов по фазе для применения в каждом проекте.

Чтобы сделать цель настройки переменной неактивной в конкретной точке проекта, установите соответствующий вход par массив (или массивы) в NaN.

Аргументы в виде пар имя-значение

Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.

Использование Name,Value пар, чтобы задать свойства базовой цели настройки. Например, предположим, что вы хотите создать изменяющуюся цель усиления, которая задает профиль усиления переменной между точками 'L' и 'V'. Вы также хотите применить цель усиления только в полосе [0 pi/Ts], с открытием цикла в точке анализа, помеченной OuterLoop. Вы используете Name,Value пар, чтобы задать эти свойства для цели усиления.

 FH = @(w) TuningGoal.Gain('F','V',tf(w,[1 w]));
 VG = varyingGoal(FH,wdata,'Focus',[0 pi/Ts],'Openings','OuterLoop');

Какие свойства можно задать, зависит от того, какой из TuningGoal возлагает на вашу функцию FH оценивает по. Например, для большинства меняющихся целей настройки можно задать такие свойства, как Openings, Models, и Focus. Для переменной TuningGoal.Gain цель, вы также можете использовать Name,Value пар, чтобы задать такие свойства, как Stabilize, InputScaling, и OutputScaling. Смотрите индивидуальные TuningGoal Страницы с описанием объекта для получения списка свойств каждой цели настройки.

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

свернуть все

Переменная цель настройки, возвращенная как varyingGoal объект. Этот объект захватывает цель настройки и ее изменение между точками проекта в переменном MATLAB. Использование VG в входной параметр к systune так же, как вы бы использовали любой TuningGoal объект.

VG имеет следующие свойства.

СвойствоОписание
Template

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

Parameters

Настройка параметров цели в каждой точке проекта, сохраненная как массив ячеек. Каждая запись в массиве ячеек является числовым массивом, содержащим значения параметров в каждой точке проекта. Например, для цели переменных полей с шаблоном

FG = FH = @(gm,pm) TuningGoal.Margins('u',gm,pm);
значение этого свойства {GM,PM}, где GM и PM являются массивами, содержащими требуемый коэффициент усиления и запасов по фазе в каждой точке проекта.

Начальное значение этого свойства задается входными параметрами par1,par2,....

Settings

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

По умолчанию: {}

SamplingGrid

Проектные точки, сохраненные как структура, содержащая массив значений для каждой переменной выборки. Точки проекта не должны лежать на прямоугольной сетке и могут быть рассеяны по всей рабочей области значений. Размеры массивов в SamplingGrid и Parameters свойства должны совпадать.

Для получения дополнительной информации о дискретизации сеток смотрите SamplingGrid описание свойства на ss страница с описанием.

По умолчанию: struct без полей

Name

Имя цели переменной. Задайте Name в строку, чтобы пометить цель.

По умолчанию: ''

Совет

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

Введенный в R2017b