Этот пример показывает, как обеспечить абсолютную стабильность, когда линейная инвариантная по времени система находится в соединении с обратной связью со статической нелинейностью, которая принадлежит коническому сектору.
Рассмотрите подключение с обратной связью, как показано на фигуре 1.
Фигура 1: Подключение обратной связи
является линейной инвариантной по времени системой и является статической нелинейностью, которая принадлежит коническому сектору (где); то есть,
В данном примере является следующей системой дискретного времени.
addpath(fullfile(matlabroot,'examples','control','main')) % add example data A = [0.9995, 0.0100, 0.0001; -0.0020, 0.9995, 0.0106; 0, 0, 0.9978]; B = [0, 0.002, 0.04]'; C = [2.3948, 0.3303, 2.2726]; D = 0; G = ss(A,B,C,D,0.01);
В этом примере нелинейность является логарифмическим квантователем, который определяется следующим образом:
где,. Этот квантователь принадлежит сектору, связанному между собой. Например, если, то квантователь принадлежит к коническому сектору [0,1818,1,8182].
% Quantizer parameter rho = 0.1; % Lower bound alpha = 2*rho/(1+rho) % Upper bound beta = 2/(1+rho)
alpha = 0.1818 beta = 1.8182
Постройте график секторных границ квантователя.
PlotSectorBound(rho)
представляет плотность квантования, где. Если больше, то квантованное значение более точно. Для получения дополнительной информации об этом квантователе см. [1].
Коническая матрица сектора для квантователя задается как
Чтобы гарантировать стабильность соединения с обратной связью на фигуре 1, линейная система должна удовлетворять
где, и являются входом и выходом, соответственно.
Это условие можно проверить, проверяя, меньше ли индекс сектора 1.
Задайте коническую матрицу сектора для квантователя с.
Q = [1,-(alpha+beta)/2;-(alpha+beta)/2,alpha*beta];
Получите индекс сектора для Q
и G
.
R = getSectorIndex([1;-G],-Q)
R = 1.8247
Поскольку система с обратной связью не является стабильной. Чтобы увидеть эту нестабильность, используйте следующую модель Simulink.
mdl = 'DTQuantization';
open_system(mdl)
Запустите модель Simulink.
sim(mdl)
open_system('DTQuantization/output')
По выходу траектории видно, что система с обратной связью не стабильна. Это связано с тем, что квантователь с слишком грубым.
Увеличьте плотность квантования, позволяя. Квантователь относится к коническому сектору [0.4.1.6].
% Quantizer parameter rho = 0.25; % Lower bound alpha = 2*rho/(1+rho) % Upper bound beta = 2/(1+rho)
alpha = 0.4000 beta = 1.6000
Постройте график секторных границ квантователя.
PlotSectorBound(rho)
Задайте коническую матрицу сектора для квантователя с.
Q = [1,-(alpha+beta)/2;-(alpha+beta)/2,alpha*beta];
Получите индекс сектора для Q
и G
.
R = getSectorIndex([1;-G],-Q)
R = 0.9702
Квантователь с удовлетворяет коническому секторному условию устойчивости соединения с обратной связью с момента.
Запустите модель Simulink с.
sim(mdl)
open_system('DTQuantization/output')
Как указывает индекс сектора, система с обратной связью является стабильной.
[1] M. Fu and L. Xie, «Секторальный подход к квантованному контролю обратной связи», Транзакции IEEE по автоматическому управлению 50 (11), 2005, 1698-1711.
bdclose(mdl); rmpath(fullfile(matlabroot,'examples','control','main')) % remove example data