Абсолютная устойчивость для квантованной системы

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

Связь обратной связи

Рассмотрите связь обратной связи как показано в рисунке 1.

Рисунок 1: связь Обратной связи

$G$ линейная независимая от времени система и$N(y)$ статическая нелинейность, которая принадлежит коническому сектору$[\alpha,\beta]$ $\alpha<\beta$(где); то есть,

$$ \alpha y^2<~yN(y)<~\beta y^2$$

В данном примере$G$ следующая система дискретного времени.

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);

Сектор ограниченная нелинейность

В этом примере нелинейность$N(y)$ является логарифмическим квантизатором, который определяется следующим образом:

$$N(y) = \left\{ \begin{array}{ll} \rho^j, &#38; \mbox{if~ $&#xA;\frac{1+\rho}{2}\rho^j < y \leq \frac{1+\rho}{2\rho}\rho^j$};\\0, &#38;&#xA;\mbox{if ~$y = 0$}; \\ -N(-y), &#38; \mbox{if~ $y < 0$} \end{array} \right.&#xA;$$

где$j\in \{0,\pm1,\pm2,\dots \}$. Этот квантизатор принадлежит связанному сектору$[\frac{2\rho}{1+\rho},\frac{2}{1+\rho}]$. Например, если$\rho = 0.1$, то квантизатор принадлежит коническому сектору [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)

$\rho$ представляет плотность квантования, где$0<\rho<1$. Если$\rho$ больше, то квантованное значение более точно. Для получения дополнительной информации об этом квантизаторе, см. [1].

Коническое условие сектора для абсолютной устойчивости

Конической матрицей сектора для квантизатора дают

$$ Q = \left(\begin{array}{cc} 1 &#38; -\frac{\alpha+\beta}{2} \\&#xA;-\frac{\alpha+\beta}{2} &#38; \alpha\beta \end{array}\right). $$

Чтобы гарантировать устойчивость связи обратной связи в рисунке 1, линейная система$G$ должна удовлетворить

$$\int_0^T \left(\begin{array}{c} u(t)\\-y(t)\end {array} \right)^T Q&#xA;\left(\begin{array}{c} u(t)\\-y(t)\end {array} \right) &#62; 0$$

где,$u$ и$y$ ввод и вывод$G$, соответственно.

Это условие может быть проверено путем проверки, меньше ли индекс сектора$R$, 1.

Задайте коническую матрицу сектора для квантизатора с$\rho = 0.1$.

Q = [1,-(alpha+beta)/2;-(alpha+beta)/2,alpha*beta];

Получите индекс сектора для Q и G.

R = getSectorIndex([1;-G],-Q)
R =

    1.8247

С тех пор $R&#62;1$система с обратной связью не устойчива. Чтобы видеть эту нестабильность, используйте следующую модель Simulink.

mdl = 'DTQuantization';
open_system(mdl)

Запустите модель Simulink.

sim(mdl)
open_system('DTQuantization/output')

От выходной траектории это видно, что система с обратной связью не устойчива. Это вызвано тем, что квантизатор со$\rho = 0.1$ слишком крупен.

Повысьте плотность квантования путем разрешения$\rho = 0.25$. Квантизатор принадлежит коническому сектору [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)

Задайте коническую матрицу сектора для квантизатора с$\rho = 0.25$.

Q = [1,-(alpha+beta)/2;-(alpha+beta)/2,alpha*beta];

Получите индекс сектора для Q и G.

R = getSectorIndex([1;-G],-Q)
R =

    0.9702

Квантизатор с$\rho = 0.25$ удовлетворяет коническому условию сектора для устойчивости связи обратной связи с тех пор$R<1$.

Запустите модель Simulink с$\rho = 0.25$.

sim(mdl)
open_system('DTQuantization/output')

Как обозначено индексом сектора, система с обратной связью устойчива.

Ссылка

[1] М. Фу и Л. Се, "Сектор связанный подход к квантованному управлению с обратной связью", Транзакции IEEE на Автоматическом управлении 50 (11), 2005, 1698-1711.

bdclose(mdl);
rmpath(fullfile(matlabroot,'examples','control','main')) % remove example data