On a un système sous forme de représentation d’état, naturellement instable mais commandable. Comment le commande-t-on ?
Définition de la loi de commande
Dans un premier temps, il faut définir la loi de commande que nous allons utiliser. Pour un retour d’état, le plus simple est de poser :
Ici, K est un gain sous forme de matrice, et x(t) est le vecteur d’état de notre système.
Euh, je n’ai pas accès à l’état de mon système…
Pas de problème, il faudra juste l’estimer avec un observateur.
Bref, avec cette commande en entrée du système u(t), le système ira vers 0. Il faut donc prendre en compte le signal de référence r(t) en ajoutant une précompensation statique N :
Trouver les pôles désirés
Le système en boucle fermée, c’est-à-dire quand il est asservi par notre loi de commande, possède un polynôme caractéristique.
Ce polynôme caractéristique, qu’on appelle polynôme caractéristique désiré, a des pôles et un degré. Le degré du polynôme est égal au nombre d’états, et on choisit nous même les pôles de ce polynôme. En clair :
et on choisi p1, p2, …, pn.
Le choix des pôles représente la physique que l’on désire pour le système. Déjà, ils doivent être tous les deux négatifs pour garantir la stabilité du système en boucle fermée
E.g :
On a un système de deux états. On veut que le système en boucle fermée ait deux pôles p1 = -2 et p2 = -5.
Le polynôme désiré est alors :
Matrice d’états en boucle fermée
On pose la matrice d’états A_bf en boucle fermée comme ceci :
où K est une matrice ayant n colonnes et m lignes, c’est-à-dire le même nombre de colonnes que A et autant de ligne que B n’a de colonne.
E.g :
Pour les matrices :
on a pu vérifier que le système est commandable. On pose alors K comme étant :
On obtient alors :
Déterminer numériquement K
Une fois qu’on a déterminé la matrice d’états en boucle fermée, on peut calculer son polynôme caractéristique :
Puis de faire une identification terme à terme avec le polynôme caractéristique désiré, et enfin, reconstruire pleinement A_bf
E.g :
Dans notre exemple :
Par identification avec notre polynôme caractéristique désiré, on obtient :
Déterminer K par Ackermann
Si le système est SISO (single input / single output), on peut appliquer la formule d’Ackermann en utilisant la matrice de commandabilité et le polynôme caractéristique désiré :
E.g :
Pour l’exemple ci-dessus, on a :
Déterminer K et A_bf depuis Matlab
Définition des matrices du système :
A = [0 1; 3 2];
B = [0; 1];
C = [1 0];
D = 0;
On pose les pôles désirés comme dans notre exemple :
poles_desires = [-2, -5];
Détermination de K :
K = place(A, B, poles_desires);
Détermination de la matrice d’états en boucle fermée :
A_bf = sys.A - sys.B * K;
En temps discret
Si la loi de commande doit être implémentée sur un micro contrôleur, il faudra passer par un système à temps discret :
sys_d = c2d(ss(A, B, C, D), Te);
P_d = exp(P_c * Te);
Kd = place(sys_d.A, sys_d.B, P_d);
Les pôles désirés à temps discret P_d sont calculés à partir de ceux à temps continu P_c et du temps d’échantillonnage du micro contrôleur.