При настройке запланированной на усиление системы управления иногда полезно осуществить различные конструктивные требования в различных точках в сетке проекта. Например, вы можете хотеть:
Задайте переменную настраивающую цель, которая зависит явным образом или неявно на точке проекта.
Осуществите настраивающуюся цель в подмножестве точек проекта, но проигнорируйте его в других точках проекта.
Исключите точку проекта из конкретного запуска 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