Изменение требований с учетом условий эксплуатации

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

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

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

  • Исключить точку проекта из определенного запуска 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 Управляемый

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

The SkipModels опция systuneOptions позволяет задавать модели в сетке проекта, чтобы исключить из настройки. Задайте модели по их линейному индексу в массиве моделей. Для образца сконфигурируйте systuneOptions чтобы пропустить первую и последнюю модели в сетке проекта 3х3.

opt = systuneOptions;
opt.SkipModels = [1,9];

Когда вы звоните systune с optалгоритм настройки игнорирует эти модели.

В качестве альтернативы можно полностью исключить проект точки из сетки модели, так что они не способствуют никакому этапу настройки или анализа. Для этого используйте voidModel, который заменяет заданные модели в массиве моделей на NaN. Эта опция используется, когда ваша сетка дискретизации включает точки, которые представляют нерелевантные или нефизические точки проекта. Используя voidModel позволяет вам проектировать по сетке проекта точек, которая является почти регулярной.

См. также

| |

Похожие темы