exponenta event banner

Проверка результатов

В этом примере показано, как интерпретировать и проверять результаты настройки из systune.

Фон

Параметры системы управления можно настроить с помощью systune или looptune. Проектные спецификации фиксируются с помощью TuningGoal объекты требований. В этом примере показано, как интерпретировать результаты из systuneвыполните графическую проверку проектных требований и выполните дополнительный анализ с разомкнутым и замкнутым контуром.

Настройка контроллера с помощью SYSTUNE

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

open_system('rct_airframe2')

Шаги настройки и настройки повторяются ниже для полноты описания.

ST0 = slTuner('rct_airframe2','MIMO Controller');

% Compensator parameterization
C0 = tunableSS('C',2,1,2);
C0.D.Value(1) = 0;
C0.D.Free(1) = false;
setBlockParam(ST0,'MIMO Controller',C0)

% Requirements
Req1 = TuningGoal.Tracking('az ref','az',1);                  % tracking
Req2 = TuningGoal.Gain('delta fin','delta fin',tf(25,[1 0])); % roll-off
Req3 = TuningGoal.Margins('delta fin',7,45);                  % margins
MaxGain = frd([2 200 200],[0.02 2 200]);
Req4 = TuningGoal.Gain('delta fin','az',MaxGain);  % disturbance rejection

% Tuning
Opt = systuneOptions('RandomStart',3);
rng('default')
[ST1,fSoft] = systune(ST0,[Req1,Req2,Req3,Req4],Opt);
Final: Soft = 1.51, Hard = -Inf, Iterations = 52
Final: Soft = 1.15, Hard = -Inf, Iterations = 96
Final: Soft = 1.15, Hard = -Inf, Iterations = 67
Final: Soft = 1.15, Hard = -Inf, Iterations = 104

Интерпретация результатов

systune выполнить три оптимизации из трех различных начальных точек и вернуть лучший общий результат. Первый выход ST является slTuner интерфейс, представляющий собой настроенную систему управления. Второй выход fSoft содержит окончательные значения четырех требований для наилучшего дизайна.

fSoft
fSoft =

    1.1476    1.1476    0.5461    1.1476

Требования нормализуются, поэтому требование удовлетворяется тогда и только тогда, когда его значение меньше 1. Осмотр fSoft показывает, что Требования 1,2,4 являются активными и слегка нарушены, в то время как Требование 3 (пределы устойчивости) удовлетворено.

Проверка требований

Использовать viewGoal для графического осмотра каждого требования. Это полезно для того, чтобы понять, допустимы ли мелкие нарушения или что вызывает крупные нарушения. Сначала проверьте требование к отслеживанию.

viewGoal(Req1,ST1)

Мы наблюдаем небольшое нарушение по частоте, предполагая, что отслеживание уставок будет выполняться близко к ожиданиям. Аналогичным образом проверьте требование об отклонении нарушения.

viewGoal(Req4,ST1)
legend('location','NorthWest')

Большая часть нарушения происходит на низкой частоте с небольшим ударом около 35 рад/с, предполагая возможные демпфированные колебания на этой частоте. Наконец, проверьте требования к запасам устойчивости.

viewGoal(Req3,ST1)

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

Оценка требований

Также можно использовать evalGoal чтобы оценить каждое требование, то есть вычислить его вклад в мягкие и жесткие ограничения. Например,

[H1,f1] = evalGoal(Req1,ST1);

возвращает значение f1 потребности и базовой частотно-взвешенной передаточной функции H1 используется для его вычисления. Вы можете проверить, что f1 соответствует первой записи fSoft и совпадает с пиковым коэффициентом усиления H1.

[f1 fSoft(1) getPeakGain(H1,1e-6)]
ans =

    1.1476    1.1476    1.1476

Анализ ответов системы

Помимо проверки требований, можно выполнить базовый анализ по открытию и замкнутому контуру с помощью getIOTransfer и getLoopTransfer. Например, проверьте производительность отслеживания во временной области, построив график ответа az к команде шага azref для настроенной системы ST1.

T = ST1.getIOTransfer('az ref','az');
step(T)

Также постройте график реакции с разомкнутым контуром, измеренной на входе в установку delta fin. Этот график можно использовать для оценки классического усиления и полей фазы на входе в установку.

L = ST1.getLoopTransfer('delta fin',-1);  % negative-feedback loop transfer
margin(L)
grid

Мягкие или жесткие требования

До сих пор мы одинаково рассматривали все четыре требования в объективной функции. Кроме того, можно использовать сочетание мягких и жестких ограничений, чтобы различать требования must-have и nice-to-have. Например, можно рассматривать требования 3,4 как жесткие ограничения и оптимизировать первые два требования с учетом этих ограничений. Для достижения наилучших результатов, сделать это только после получения разумной конструкции со всеми требованиями одинаково.

[ST2,fSoft,gHard] = systune(ST1,[Req1 Req2],[Req3 Req4]);
Final: Soft = 1.29, Hard = 0.99973, Iterations = 165
fSoft
fSoft =

    1.2897    1.2898

gHard
gHard =

    0.4664    0.9997

Здесь fSoft содержит конечные значения первых двух требований (мягкие ограничения) и gHard содержит окончательные значения последних двух требований (жесткие ограничения). Жесткие ограничения удовлетворены, поскольку все записи gHard меньше 1. Как и ожидалось, наилучшая ценность первых двух требований возросла, поскольку оптимизатор стремился строго соблюдать четвертое требование.

bdclose('all')