Измените требования с условиями работы

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

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

  • Осуществите настраивающуюся цель в подмножестве точек проекта, но проигнорируйте его в других точках проекта.

  • Исключите точку проекта из конкретного запуска systune, но сохраните его для анализа или других настраивающих операций.

  • Устраните точку проекта из всех этапов проекта и анализа.

Настраивающая цель переменной Define

Существует несколько способов задать настраивающуюся цель, которая изменяется через точки проекта.

Создайте различные цели

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 отвечает на все вопросы проекта в вашей сетке, этот подход эквивалентен использованию a 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 позволяет вам спроектировать по сетке точек проекта, которая почти обычна.

Смотрите также

| |

Похожие темы