42 0 60KB
TP Espace d'état
Université de Caen, M1 EEOA
Ph. Dorléans, F. Giri
OBSERVATEURS - ETUDE DU PRINCIPE RETOUR D'ETAT ESTIME
I - INTRODUCTION Ce TP a pour objectif d'illustrer le concept d'observation sur des systèmes linéaires S.I.S.O. (Single Input Single Output). Les principes et propriétés d'un observateur en boucle ouverte et en boucle fermée (réglé par placement de pôles) seront étudiés en simulation dans l'environnement logiciel Matlab/Simulink. Une estimation des variables d'état sera effectuée ensuite en temps réel sur un système électrique du 3ème ordre. Enfin, on s'intéressera à la synthèse d'une commande par retour d'état estimé.
II - ELEMENTS THEORIQUES 1°) Généralités. Le TP précédent a montré que la synthèse d’une commande par retour d’état nécessite la connaissance de l'état complet du système : u(k) = - K x(k). Or, celui-ci n’est généralement pas mesurable, soit par manque de capteur, soit parce que l’état choisi ne correspond pas à une variable physique du système. Dans ce cas, il est nécessaire d’obtenir une estimation de cet état à partir des mesures disponibles qui sont généralement l’entrée et la sortie du système à commander. Une telle estimation est possible à condition que le système considéré soit observable. On met donc en place, en parallèle sur le système considéré, un reconstructeur d’état ou estimateur ayant comme entrées, les entrées et les sorties du système et dont la sortie est une estimation de l’état du système considéré. Sous l’hypothèse de linéarité du modèle du procédé, la structure de base de l'estimateur est toujours la même, mais sa réalisation dépendra du contexte choisi : continu ou discret, déterministe ou stochastique. Dans le cas où ce modèle est un modèle déterministe, le reconstructeur d’état sera appelé observateur, ce qui sera le cas dans ce TP. Dans le cas de systèmes bruités, où interviennent des phénomènes aléatoires, nous parlerons alors de filtre (filtre de Kalman).
2°) Observateur en boucle ouverte. On se demande donc comment reconstruire l'état complet x(k) du système. On peut essayer de donner à ce problème une solution en boucle ouverte. On cherche à obtenir, à l'instant k, un prédicteur récursif xˆ (k + 1) du vecteur d'état à partir des mesures connues de la commande u(k) et de la sortie y(k). Un tel système dynamique est évident à obtenir à partir de la représentation d'état : ˆ + 1) = F x(k) ˆ x(k + G u(k) . C'est l'observateur en boucle ouverte (cf. figure 1). Il a l'avantage d'être simple à mettre en œuvre, mais il est très sensible aux erreurs de modélisation en présence de u(k). Si l'observateur possède les mêmes conditions initiales que le système, alors il se comportera comme le système réel. TP n°2 : Synthèse d'observateurs et retour d'état estimé ------------------------------------------------------------------------
8
TP Espace d'état
Université de Caen, M1 EEOA
Ph. Dorléans, F. Giri
La moindre perturbation sur la sortie le fera dévier du système réel. Cette méthode correspond au schéma bloc suivant : u(k)
y(k)
Système
xˆ (k) yˆ (k)
Observateur
Figure 1 : Observateur en boucle ouverte Remarque : la reconstruction du vecteur d'état ne fait pas, ici, appel à la mesure de la sortie y(k). 3°) Observateur en boucle fermée. La structure suivante (cf. figure 2) permet de palier le problème évoqué en introduisant un terme ˆ correctif en fonction de l’erreur de reconstruction de la sortie, y(k) - y(k) et d'un gain de correction M appelé gain de l’observateur qui doit être déterminé. Cette méthode correspond au schéma bloc suivant : u(k)
y(k)
Système +
M
yˆ (k)
Modèle
xˆ (k)
Observateur
Figure 2 : Observateur en boucle fermée ˆ L'objectif est de faire converger l'erreur d'estimation x(k) - x(k) asymptotiquement et rapidement vers 0. En conséquence, il faudra calculer le gain M tel que la dynamique d’annulation de l’erreur d’estimation soit plus rapide que la dynamique désirée du système en boucle fermée. Cependant, on ne peut les prendre infiniment grandes pour deux raisons essentielles : on ne peut utiliser que des gains réalisables et l’augmentation de la bande passante de l’observateur ne permet plus de négliger les bruits qui deviennent prépondérants en hautes fréquences.
III - TRAVAIL PREPARATOIRE OBLIGATOIRE L’étude en simulation se fera sur un système du 3ème ordre obtenu par la mise en série de deux systèmes du premier et du second ordre. Les deux fonctions de transfert sont : G1 (p) =
k1 1 avec a = p+a τ
G 2 (p) =
k ω2n p
2
+ 2 ξ ωn p + ω2n
u(t)
=
G1(p)
y1(t)
G2(p)
y(t)
k2 avec p1,2 = - ξ ωn ± j ωn 1 − ξ 2 ( p - p1 )( p - p 2 )
TP n°2 : Synthèse d'observateurs et retour d'état estimé ------------------------------------------------------------------------
9
TP Espace d'état
Université de Caen, M1 EEOA
Ph. Dorléans, F. Giri
1°) Représentation d'état du système continu. a) Mettre le système G1(p) sous forme d'état (variable d'état x1(t)) et le système G2(p) sous forme canonique de commandabilité (la variable d'état x2(t) correspond à la sortie y(t)). A partir de ces deux représentations et en considérant la sortie du système du 1er ordre G1(p) comme la 1ère composante du vecteur d’état x(t), en déduire que le système complet peut se mettre sous la forme série suivante : 0 0 − a k1 0 1 , B = 0 x& (t ) = A x (t ) + B u (t ) avec A = 0 1 − p1 p 2 (p1 + p 2 ) 0
et y(t ) = C x(t ) = [0 k 2 0] x(t ) b) Exprimer la matrice d’observabilité en fonction des paramètres p1, p2 et k2 et montrer ensuite que le système est observable. 2°) Observateur en boucle ouverte. On suppose le système continu (A, B, C) a été échantillonné. Le comportement du système échantillonné correspondant (F, G, H) est donné par : x(k + 1)= F x(k) + G u(k) et y(k) = H x(k) où u(k), y(k) et x(k) sont respectivement l'entrée, la sortie et l'état du système à l'instant k. a) Etude en régime libre u(k) = 0 : en supposant que l'observateur possède la même dynamique que le système, établir l'équation à laquelle satisfait l'erreur d'estimation que l'on note % ˆ x(k) = x(k)- x(k) , où xˆ (k) représente le vecteur d'état estimé de x(k). Montrer que, si les conditions initiales du système sont différentes de celles de l'observateur, % alors x(k) → 0 asymptotiquement si le système est stable. Quelle est la dynamique d'annulation de cette erreur ? b) u(k) est toujours nulle. On suppose que la dynamique du système est connue avec une certaine imprécision et par conséquent que la dynamique de l'observateur est légèrement différente de celle du système. L'état du système peut alors s'écrire : x(k + 1) = F' x(k) avec F ' = F + ∆ (∆ représente l'imprécision sur la dynamique) et celui de l'observateur est défini ˆ + 1) = F x(k) ˆ . par : x(k % Dans ces conditions, établir l'équation à laquelle satisfait l'erreur d'estimation x(k) . En considérant que, malgré ces incertitudes, le système est toujours stable, montrer que l'erreur % x(k) → 0 asymptotiquement. Quelle est la dynamique d'annulation de cette erreur ?
3°) Observateur en boucle fermée. a) En notant M le gain de l’observateur, écrire les équations de l’observateur à partir du modèle d’état (F, G, H). % . Quelle est la dynamique b) Etablir l’équation à laquelle satisfait l’erreur d’estimation x(k) d'annulation de cette erreur ? TP n°2 : Synthèse d'observateurs et retour d'état estimé ------------------------------------------------------------------------ 10
TP Espace d'état
Université de Caen, M1 EEOA
Ph. Dorléans, F. Giri
c) A quelle condition est-il possible de placer arbitrairement les pôles de l'observateur ? 4°) Retour d'état estimé. On s'intéresse ensuite à la synthèse d'une commande par retour d'état estimé. Si on répond à un objectif de régulation et de poursuite alors, la loi de commande a pour expression : ˆ u(k) = − K x(k) + β y * (k) ,
où y*(k) étant un signal de consigne constant et β le précompensateur.
a) Montrer que le système en boucle fermée (observateur + retour d'état) peut se mettre sous la forme suivante : G K x(k) G x(k + 1) F - G K = + β y* (k) x(k+1) % 0 F - M H x(k) % 0 b) En déduire qu'il est possible de placer les pôles de l'observateur et les pôles du retour d'état de manière indépendante. Combien de pôles au total possède le système en boucle fermée ?
IV - TRAVAIL EXPERIMENTAL Sélectionner votre répertoire de travail sous Matlab. Il est demandé de créer un fichier script Matlab (extension .m) contenant l'ensemble des instructions permettant la mise au point de l'observateur. Il est fortement conseillé de définir des variables contenant les paramètres du système continu (pôles, gains, …).
1°) Préparation avec Matlab. a) Noter les valeurs correspondant aux systèmes électriques proposés et créer les foncions de transfert pour les 2 systèmes en utilisant la fonction Matlab tf. On appellera respectivement G1 et G2 les fonctions de transfert du système du 1er et du 2nd ordre. Pour récupérer par exemple le dénominateur de G1, on peut écrire : den1 = G1.den{:}. On rappelle que si on exécute par exemple la commande: a = den1(1,2), cela permet d'isoler le 2ème terme de den1. Déterminer ensuite les pôles du système avec la fonction roots de Matlab que l'on notera p1 et p2 pour le système du 2nd ordre. b) Définir les matrices A, B et C du travail préparatoire puis construire la représentation d'état continue du système complet en utilisant la fonction Matlab ss. On appellera sys l'objet système correspondant. c) A partir du travail préparatoire, construire la matrice d'observabilité du système et vérifier son observabilité avec les fonctions Matlab det et rank. Vérifier le résultat en utilisant la fonction Matlab obsv. d) La période d'échantillonnage Ts étant fixée à 0,5 seconde, discrétiser le système continu en utilisant la fonction Matlab c2d (option 'zoh'). On appellera sysd l'objet système correspondant. Pour récupérer les matrices F, G, H, on peut écrire : F = sysd.A, G = sysd.B et H = sysd.C. TP n°2 : Synthèse d'observateurs et retour d'état estimé ------------------------------------------------------------------------
11
TP Espace d'état
Université de Caen, M1 EEOA
Ph. Dorléans, F. Giri
e) Déterminer les valeurs propres de F en utilisant la fonction Matlab eig. Vérifier les valeurs obtenues en utilisant les pôles du système continu. f) Faire réaliser par votre programme le calcul du gain M de l'observateur pour que les pôles de celui-ci soient positionnés en [0,4 0,45 0,5]. Le choix de ces pôles vous paraît-il judicieux ? Utiliser les fonctions Matlab place ou acker (en prenant soin d’utiliser les matrices transposées de F et de H (sous Matlab, F' est la transposée de F).
2°) Réalisation du schéma Simulink. Sous Simulink, charger le fichier observateur.mdl. Le système est simulé par son transfert continu (1 block LTI pour G1 et 1 block LTI pour G2) et les observateurs apparaissent sous forme de soussystèmes qu'il faudra compléter. Le temps de simulation pour étudier le régime libre et le régime forcé sera de 120 secondes. Deux scopes associés chacun à un multiplexeur ont été introduits. Le 1er permet de visualiser à la fois la sortie du système et la sortie estimée des 2 observateurs boucle ouverte et boucle fermée. Le 2ème permet de visualiser la sortie de G1 avec la 1ère variable d'état estimée des 2 observateurs. Construire les 2 observateurs en compétant les sous-systèmes "Observateur Boucle ouverte" et "Observateur Boucle fermée". Pour cela, vous pouvez introduire les matrices du modèle d’état discret (F, G, H) dans les blocs de gain Simulink. En régime forcé, l'échelon appliqué sera unitaire et sera déclenché à 40 secondes. Vérifier ensuite le bon fonctionnement de la simulation. % 3°) Etude en régime libre : x(0) ≠0. On fixe u(k) = 0 et on initialise les observateurs avec des conditions initiales différentes de celles du % système ( x(0) ≠ 0 ). Sachant que x T (0) = [ 0 0 0] , définir par exemple xˆ T (0) = [ 0.2 0.2 0.2]
dans le champ "Initial conditions" du bloc 1/z des observateurs. Etudier le comportement et justifier les résultats obtenus avec ceux du travail préparatoire (questions 2°) a) et 3°) b)). Récupérer les données sous Matlab (voir configuration du scope) et les représenter graphiquement. Sauvegarder la figure. % 4°) Etude en régime libre : x(0) ≠ 0 et F ' = F + ∆ .
Etudier le comportement des observateurs en régime libre en considérant une erreur sur la dynamique du système du 1er ordre. Pour cela, modifier le pôle de celui-ci de +25% tout en conservant le même gain statique et construire une nouvelle fonction de transfert notée G1d (on ne change pas l'observateur). Introduire G1d dans le schéma Simulink et étudier le comportement. Justifier les résultats obtenus avec ceux du travail préparatoire (questions 2°) b) et 3°) b)). Récupérer les données sous Matlab et les représenter graphiquement. Sauvegarder la figure. % 5°) Etude en régime forcé : x(0) ≠ 0 et F' = F (utilisation de G1). % ≠ 0 et on considère que la dynamique du système est parfaitement identifiée c'est-àOn laisse x(0) dire F' = F. Appliquer un échelon à l'instant 40 secondes. Observer les résultats obtenus et conclure. TP n°2 : Synthèse d'observateurs et retour d'état estimé ------------------------------------------------------------------------
12
TP Espace d'état
Université de Caen, M1 EEOA
Ph. Dorléans, F. Giri
6°) Etude en régime forcé : erreur sur le gain statique. On conserve les mêmes conditions de fonctionnement mais on considère qu'il y a une erreur de 30% sur la détermination du gain statique du système (on ne change pas l'observateur). Construire une nouvelle fonction de transfert notée G1s. Introduire G1s dans le schéma Simulink et étudier le comportement des observateurs. Récupérer les données sous Matlab, les représenter graphiquement et conclure. Sauvegarder la figure.
7°) Observateur en boucle fermée sur le procédé réel. a) Effectuer le câblage du système du troisième ordre en mettant en cascade sur le boîtier électrique le premier ordre et le second ordre. A noter que les paramètres utilisés pour la synthèse de l'observateur peuvent être différents de ceux du procédé réel (erreur de modélisation). Les procédés électriques sont par construction linéaires dans toute la gamme d'utilisation. Les commandes et la gamme d'acquisition de la sortie sont limitées à [-10 V , +10 V]. Le point de fonctionnement est donc indifférent, la valeur uf = 0, yf = 0 permet la plus large excursion de sortie. Il n'y a donc pas de possibilité de préciser le point de fonctionnement dans l'environnement graphique dédié aux systèmes électriques. b) Connecter le procédé électrique sur le boîtier d'extension de la carte d'acquisition. La sortie du système complet doit être reliée à l'entrée analogique "n" et celle du système du 1er ordre à l'entrée "n+1". Choisir également la sortie analogique pour appliquer la commande sur le système. Faire contrôler le montage par l'enseignant avant la mise sous tension. c) Avec LabWindows CVI, créer un fichier Project (extension .prj) dans lequel doit être inséré les fichiers suivants : Observateur.c, Observateur.uir et e_s.obj. Le fichier e_s.obj contient les fonctions compilées permettant de gérer la carte d'acquisition. Observateur.uir contient l'interface graphique dédié aux procédés électriques et Observateur.c est le programme principal qui doit être complété afin de faire fonctionner l'observateur en temps réel et le retour d'état. Ouvrir le fichier source et insérer les paramètres du modèle discret (F, G, H) ainsi que ceux du gain d'observation M. Les valeurs numériques sont prises en compte via les #define. d) Ecrire les équations de l'observateur au niveau de la fonction Callback "Temps". e) Exécuter le programme et étudier le comportement de l'observateur en temps réel. Remarque: si vous souhaitez tester le fonctionnement de l'observateur en boucle ouverte, il suffit de poser M = 0 (l’observateur boucle ouverte n’étant qu’un cas particulier). f) Il est possible de sauvegarder dans un fichier texte les données expérimentales en cliquant sur le bouton "Lancer Enregistrement" et de les récupérer sous Matlab en exécutant le fichier Traitement.m. Toutes les données sont contenues dans le fichier "observation.txt". Sauvegarder la figure.
8°) Commande avec retour d’état estimé. a) Calculer le gain de retour d'état K sachant que les pôles du système en boucle fermée sont placés en [0,8 0,75 0,7]. Utiliser les fonctions Matlab place ou acker. Le choix de ces pôles vous paraît-il judicieux ? Calculer ensuite le précompensateur. TP n°2 : Synthèse d'observateurs et retour d'état estimé ------------------------------------------------------------------------ 13
TP Espace d'état
Université de Caen, M1 EEOA
Ph. Dorléans, F. Giri
b) Observer la position des pôles du système en boucle fermée (retour d'état et observateur). Est-ce conforme à la théorie des systèmes linéaires ? c) Sous Simulink, reprendre le fichier observateur.mdl et faire un "save as" observateur_2.mdl. Ne conserver que l'observateur en boucle fermée et modifier le schéma bloc de manière à intégrer le retour d'état. Tester les performances du système "retour d'état estimé" d'abord en simulation puis compléter le fichier source afin d'asservir le système en temps réel. Conclure sur les performances. Pour terminer, éditer un rapport avec la commande PULISH de Matlab. Les figures Matlab sauvegardées peuvent être introduites dans le fichier .html généré. Il es conseillé de les commenter.
TP n°2 : Synthèse d'observateurs et retour d'état estimé ------------------------------------------------------------------------
14