Automatique : Introduction à scilab Objectifs Découverte de l'environnement dans le cadre d'une application au cours d'automatique Simplification des fonctions de transfert Passage boucle ouverte boucle fermée: réglage dans le plan de black Etude d'un moteur à courant continu On considère le moteur suivant de sortie et d'entrée U reliées par la fonction de transfert H mot, tel que H mot U = K avec K =5 rd / s/v,t 1 T e 1 T m e =20 ms,t m =0.5 s Activité 1 1 Lancer Scilab A l'invite de commande de scilab, on peut taper les différentes opérations à réaliser (voir figure) On peut aussi effectuer les mêmes commandes à partir de l'éditeur scipad (commande Editor). On écrit alors le script suivant: a=10 b=20*log(a) On effectue alors la ligne de commande Load into scilab à partir du menu. L'éditeur scipad propose tout d'abord d'enregistrer le fichier, puis exécute le script dans la fenêtre scilab. Si on souhaite obtenir des informations sur une commande, il suffit de taper à partir de l'invite de commande: -->help [nom de la fonction] (ex: help plot2d) Td page 1/5
2 Tracer de la fonction de transfert du moteur. Commande scilab à entrer sous l'éditeur scipad: // définition des constantes hmot=syslin('c',k/(1+te*s)/(1+tm*s)) //syslin est la fonction permettant de définir une fonction de transfert //activation de la fenêtre graphique 0 xbasc(0) // vider l'écran bode(hmot,0.01,100) // fonction graphique traçant le diagramme de bode sur la bande de fréquence 0.01,100 Hertz Effectuer la commande Load into scilab, la fenêtre suivante doit alors apparaître. Remarques: Le logiciel scilab donne les réponses fréquencielles en fonction de la fréquence exprimée en Hertz. Or dans le cours de classes préparatoires, nous choisissons en abscisse la pulsation exprimée en rad/s pour représenter une fonction de transfert. Il faut donc penser à utiliser la relation de passage =2 f K 3 - Tracer la réponse à un échelon unitaire pour la fonction de transfert H mot et la fonction de 1 T e 1 T m K transfert simplifiée H mot 1 1 T m commande scilab // définition des constantes hmot=syslin('c',k/(1+te*s)/(1+tm*s)) hmot_1=syslin('c',k/(1+tm*s)) xbasc(0) xsetech([0,0,0.5,1]) //utilisation de la partie gauche de la fenêtre graphique bode([hmot;hmot_1],0.01,100) //superposition des deux diagrammes de Bode //definition de l'échelon t=0:0.001:3; // définition de l'horizon temporel et du pas de calcul (remarque le ; permet de ne pas écrire dans scilab le résultat de cette fonction) deff('u=input(t)','u=1') // définition de la fonction l'échelon xsetech([0.5,0,0.5,1]) // plot2d([t',t'],[(csim(input,t,hmot))',(csim(input,t,hmot_1))']) // la fonction csim permet de tracer la transformée inverse de Laplace Td page 2/5
4 - Conclure à partir des courbes obtenues. En déduire alors la bande passante du moteur et le modèle simplifié Asservissement de position Dans cette partie on fera l'étude en parallèle pour le moteur modélisé comme un second ordre puis comme un premier ordre afin de valider l'hypothèse de la première partie. On souhaite contrôler la position angulaire du moteur. Donner la fonction de transfert indicielle sous scilab. H pos U. Ce système est - il stable? Vérifier votre réponse en traçant la réponse On boucle maintenant le système à partir de la mesure de la position par un capteur de gain unitaire et on corrige le système en ajoutant un bloc correcteur proportionnel de gain A unitaire placé après la comparaison du signal d'entrée et de la mesure. Activité2: 1 - Tracer le schéma bloc de l'asservissement 2 - Déterminer la fonction de transfert en boucle ouverte, puis effectuer le tracé asymptotique de Bode. 3 - Vérifier que le système est stable en boucle fermée, déterminer alors les marges de phase et de gain de votre système à partir de votre tracé, puis par le calcul. 4 - Vérifier ensuite votre résultat et tracer les réponses fréquentielles de la boucle fermée et indicielle pour les deux modèles du moteur avec A= 1 à partir du script scilab. //définition des constantes A=1 hbo=syslin('c',k*a/(1+te*s)/(1+tm*s)/s) hbo_1=syslin('c',k*a/(1+tm*s)/s) xbasc(0) xsetech([0,0,0.5,0.5]) //utilisation du ¼ haut gauche de la fenêtre graphique bode([hbo;hbo_1],0.01,100) //calcul des marges de gain et de phase à partir du modèle non simplifié [p,fr]=p_margin(hbo) wc1=2*%pi*fr //scilab calcul la fréquence de coupure à 0dB de hbo Mp=180+p //scilab calcul la marge de phase [p,fr]=g_margin(hbo) Td page 3/5
wc1=2*%pi*fr //scilab calcul la fréquence pour laquelle le gain égal 0dB Mg=-g //marge de gain //definition et trace de la boucle fermée hbf=hbo/(1+hbo) hbf_1=hbo_1/(1+hbo_1) xsetech([0,0.5,0.5,0.5]) //utilisation du ¼ bas gauche de la fenêtre graphique bode([hbf;hbf_1],0.01,100) //definition de l'échelon t=0:0.001:3; deff('u=input(t)','u=1') // définition de la fonction l'échelon xsetech([0.5,0,0.5,1]) plot2d([t',t'],[(csim(input,t,hbf))',(csim(input,t,hbf_1))']) // réponse temporelle de l'asservissement Exécuter le script, puis sélectionner la fenêtre scilab dans laquelle se déroule les commandes. Répondre Y lorsque cela vous est demandé. On peut lire dans cette fenêtre les marges de gain et de phase 5 Augmenter A (A=10, puis A =20) et comparez les deux modèles, que se passe-t'il? Tracer pour ces différents cas le diagramme de black dans la fenêtre graphique 1. Il suffit d'ajouter à votre script les lignes de commandes suivantes: xset("window",1) xbasc(1) black([hbo;hbo1],0.1,10) //tracer de hbo et hbo_1 dans le plan de black chart(list(1,0,2,3)) //création de l'abaque de black Nichols Td page 4/5
6 Dans le cas précédent, que vaut la bande passante de la boucle fermée à 0 db du système. Comparer avec la bande passante du moteur. 7 position des poles de la fonction de transfert en boucle fermée. Vérifier pour les différents réglages la position des pôles à l'aide la commande plzr 8 Régler le correcteur pour obtenir une marge de phase de 45. Précision de l'asservissement. Le cahier des charges impose une erreur statique nulle et une erreur en vitesse inférieure à 10% Le système tel qu'il a été défini dans la partie précédente est-t'il satisfaisant? Proposer alors un correcteur qui permette de répondre aux exigences du cahier des charges. Activité 3: Régler ce correcteur. Td page 5/5