exponenta event banner

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)); 

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

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

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

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

par = osvals;

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

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