При настройке запланированной на усиление системы управления иногда полезно осуществить различные конструктивные требования в различных точках в сетке проекта. Например, вы можете хотеть:
Задайте переменную настраивающую цель, которая зависит явным образом или неявно на точке проекта.
Осуществите настраивающуюся цель в подмножестве точек проекта, но проигнорируйте его в других точках проекта.
Исключите точку проекта из конкретного выполнения systune
, но сохраните его для анализа или других настраивающих операций.
Устраните точку проекта из всех этапов проекта и анализа.
Существует несколько способов задать настраивающуюся цель, которая изменяется через точки проекта.
Команда varyingGoal
позволяет вам создать настраивающиеся цели, которые зависят неявно или явным образом на точке проекта.
Например, создайте настраивающуюся цель, которая задает переменные запасы по амплитуде и фазе через сетку точек проекта. Предположим, что вы используете следующую сетку 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
, чтобы визуализировать настраивающуюся цель и идентифицировать, что проект указывает что сбой, чтобы соответствовать целевым полям. Для переменных настраивающих целей график viewGoal
включает ползунки, которые позволяют вам исследовать цель и производительность системы для конкретных точек проекта. Смотрите Подтверждают Запланированные на усиление Системы управления.
Функция шаблона позволяет большую гибкость в построении целей проекта. Например, можно записать функцию, goalspec(a,b)
, который создает целевое перерегулирование как нетривиальную функцию параметров (a,b)
, и сохраняют функцию в файле MATLAB®. Ваша функция шаблона затем вызывает goalspec
:
FH = @(a,b) TuningGoal.Overshoot('r',y',goalspec(a,b));
Для получения дополнительной информации о конфигурировании переменных целей, смотрите страницу с описанием varyingGoal
.
Другой способ осуществить требование, которое меняется в зависимости от точки проекта, состоит в том, чтобы создать отдельный экземпляр требования для каждой точки проекта. Этот подход может быть полезным, когда у вас есть цель, которая только применяется к нескольким моделей в массиве проекта. Например, предположите, что вы хотите осуществить 1/s форму цикла на первых пяти точках проекта только с перекрестной частотой, которая зависит от переменных планирования. Предположим также, что вы создали вектор, wc
, который содержит целевую пропускную способность для каждой точки проекта. Затем можно создать одно требование TuningGoal.LoopShape
для каждой точки проекта. Сопоставьте каждое требование TuningGoal.LoopShape
с соответствующей точкой проекта с помощью свойства Models
требования.
for ct = 1:length(wc) R(ct) = TuningGoal.LoopShape('u',wc(ct)); R(ct).Model = ct; end
Если wc
отвечает на все вопросы проекта в вашей сетке, этот подход эквивалентен использованию объекта varyingGoal
. Это - полезная альтернатива varyingGoal
, когда вы только хотите ограничить несколько точек проекта.
Вместо того, чтобы создать переменные требования, можно включить переменный фрагмент требования в модель с обратной связью системы управления. Этот подход является формой целевой нормализации, которая позволяет ответить на все вопросы проекта с одной универсальной целью.
Например, предположите, что вы хотите ограничить усиление от d
до y
к количеству, которое зависит от переменных планирования. Предположим, что T0
является массивом моделей системы с обратной связью в каждой точке проекта. Предположим далее, что вы составили таблицу, gmax
, максимальных значений усиления для каждой точки проекта, σ. Затем можно добавить другой вывод ys
= y/gmax
к модели с обратной связью, можно следующим образом.
% Create array of scalar gains 1/gmax yScaling = reshape(1./gmax,[1 1 size(gmax)]); yScaling = ss(yScaling,'InputName','y','OutputName','ys'); % Connect these gains in series to y output of T0 T0 = connect(T0,yScaling,T0.InputName,[T0.OutputName ; {'ys'}]);
Максимальное усиление изменяется в каждой точке проекта согласно таблице gmax
. Можно затем использовать одно требование, которое ограничивает 1 усиление от d
до масштабированного вывода ys
.
R = TuningGoal.Gain('d','ys',1);
Такая эффективная нормализация требований перемещает изменчивость требования от объекта требования, R
, к модели с обратной связью, T0
.
В Simulink® можно использовать аналогичный подход путем питания соответствующих входов и выходов модели через блок усиления. Затем когда вы линеаризуете модель, изменяете значение усиления блока с условиями работы. Например, установите усиление на переменную MATLAB и используйте свойство Parameters
в slLinearizer
, чтобы изменить значение переменных с каждым условием линеаризации.
Можно ограничить приложение настраивающейся цели к подмножеству моделей в сетке проекта с помощью свойства Models
настраивающейся цели. Задайте модели их линейным индексом в образцовом массиве. Например, предположите, что у вас есть настраивающаяся цель, Req
. Сконфигурируйте Req
, чтобы примениться к первым и последним моделям в 3х3 сетке проекта.
Req.Models = [1,9];
Когда вы вызываете systune
с Req
как трудная или мягкая цель, systune
осуществляет Req
для этих моделей и игнорирует его для остальной части сетки.
systune
Можно исключить одну или несколько точек проекта из настройки, не удаляя соответствующую модель из массива или реконфигурировав настраивающие цели. Выполнение так может быть полезным, например, чтобы идентифицировать проблематичные точки проекта, когда настройке по целой сетке проекта не удается соответствовать вашим конструктивным требованиям. Может также быть полезно, когда существуют точки проекта, что вы хотите исключить из конкретной запущенной настройки, но заповедник для анализа производительности или дальнейшей настройки.
Опция SkipModels
systuneOptions
позволяет вам задать модели в сетке проекта, чтобы исключить из настройки. Задайте модели их линейным индексом в образцовом массиве. Например, сконфигурируйте systuneOptions
, чтобы пропустить первые и последние модели в 3х3 сетке проекта.
opt = systuneOptions; opt.SkipModels = [1,9];
Когда вы вызываете systune
с opt
, настраивающийся алгоритм игнорирует эти модели.
Как альтернатива, можно устранить точки проекта из образцовой сетки полностью, так, чтобы они не способствовали никакому этапу настройки или анализа. Для этого используйте voidModel
, который заменяет заданные модели в образцовом массиве с NaN
. Эта опция полезна, когда ваша сетка выборки включает точки, которые представляют несоответствующие или нефизические точки проекта. Используя voidModel
позволяет вам разработать по сетке точек проекта, которая почти обычна.
systuneOptions
| varyingGoal
| viewGoal