🌙
  • 🇺🇸 English
  • 🇫🇷 Français
  • 🇪🇦 Español

Admettons que nous ayant un système sous forme de représentation d’état. Ce système est instable en boucle ouverte et dévie naturellement. Ok, mais est-ce qu’on peut commander le système pour l’asservir ???

Sur papier

Étape 1 : Définition de la matrice de commandabilité

La matrice de commandabilité (ou contrôlabilité) est définie par :

C=[B  AB  A2B  ...  An−1B]\mathscr{C} = [B \; AB \; A^2B \; ... \; A^{n-1}B] où n est la dimmension de l’état.

E.g :

Pour les matrices :

A=[0132];B=[01];n=2 A = \begin{bmatrix} 0 & 1 \\ 3 & 2 \end{bmatrix} \quad ; \quad B = \begin{bmatrix} 0 \\ 1 \end{bmatrix} \quad ; \quad n = 2

On a :

C=[B  AB]=[0112] \mathscr{C} = [B \; AB] = \begin{bmatrix} 0 & 1 \\ 1 & 2 \end{bmatrix}

Étape 2 : Conclusion

Si le déterminant de la matrice de commandabilité est nulle, ou bien si son rang n’est pas égale au nombre d’états du système, alors le système n’est pas contrôlable.

E.g :

Avec les mêmes matrices A et B, on se rend compte que :

rang(C)=n=2rang(\mathscr{C}) = n = 2 et :

det(C)=−1≠0det(\mathscr{C}) = -1 ≠ 0

Donc le système est commandable.

Sur Matlab

On peut obtenir la matrice de commandabilité avec :

sys = ss(A,B,C,D);
Co = ctrb(sys)

ou bien :

Co = ctrb(A,B);

Ensuite, le calcul du rang s’effectue avec :

rank(Co)