ÉCOLE POLYTECHNIQUE DE MONTRÉAL DÉPARTEMENT DE GÉNIE ÉLECTRIQUE HIVER 2015 COURS ELE2700 ANALYSE DES SIGNAUX SÉANCE #1 (TP0) INTRODUCTION À MATLAB ET SIMULINK section #1 section #2 Le logiciel MATLAB ainsi que l'outil Simulink seront utilisés pour réaliser les travaux pratiques du cours d'analyse des signaux tout au long du trimestre. Le présent document comporte les trois parties suivantes: 1. Principales commandes MATLAB utilisées dans le cadre du cours d'analyse des signaux; 2. Introduction à l outil de simulation Simulink; 3. Travail à réaliser au laboratoire lors de la première séance de travaux pratiques. À noter que les deux premières parties ne constituent pas un document de référence exhaustif sur MATLAB et Simulink. D'autres manuels plus détaillés sont disponibles à la COOP ou sur Internet. Pour la partie 3, voir comme rappel Chapitre 5 pages 248 à 251 du livre du cours, "Signals, Systems, Transforms and Digital Signal Processing with MATLAB ", (M. Corinthios), Taylor and Francis CRC Press 2009.
TABLE DES MATIÈRES 1. Introduction à MATLAB 1.1 Matrices et vecteurs.. 3 1.2 Génération automatique de matrices et de vecteurs.. 4 1.3 Opérations sur les matrices et les vecteurs.... 5 1.4 Nombres complexes..... 6 1.5 Affichage graphique.. 7 1.6 Programmation de fonctions. 8 1.7 Exercices suggérés.... 9 1.8 Liste des commandes utilisées le plus fréquemment. 10 2. Introduction à Simulink 2.1 Simulation à l'aide de Simulink.... 14 2.2 Récupération des données...... 18 3. Travail à réaliser au laboratoire.. 20 Ce document a été rédigé avec la précieuse collaboration de Patricia Gilbert. Les professeurs, Michael J. Corinthios Michel Lemire - 2 -
Début de chaque session Au début de chaque session créez un dossier personnel sur le disque u : Ouvrir Matlab. Sélectionnez votre dossier personnel que vous venez de créer sur le disque u : comme l adresse de destination. Ainsi tout script que vous créerez sera sauvé sur votre dossier personnel. Simulink pourra ainsi accéder les données sur le WorkSpace générées par vos programmes de Matlab. - 3 -
1. INTRODUCTION À MATLAB MATLAB est un logiciel interactif permettant d effectuer des calculs numériques complexes particulièrement utiles dans le domaine de l ingénierie. Disponible sur de gros systèmes, il fut adapté pour l ordinateur personnel muni d un coprocesseur mathématique permettant une grande capacité de calcul. Notez que MATLAB est un logiciel auto-documenté ; des informations relatives à une commande donnée peuvent être obtenues à l écran en composant help, suivi du nom de la commande. 1.1 Matrices et vecteurs Le logiciel MATLAB est conçu en fonction de la manipulation de matrices et de vecteurs (un vecteur de longueur N est une matrice de dimension 1 N, c est-à-dire comportant une ligne et N colonnes). On génère une matrice en écrivant ses éléments entre crochets, chaque ligne étant délimitée par un point-virgule. Par exemple, pour générer la matrice 1 2 3 A = 4 5 6, 7 8 9 on compose : A=[1 2 3 ; 4 5 6 ; 7 8 9] On obtiendra la transposée et le déterminant de la matrice A par les commandes B=A. (ou B=A ) et C=det(A) respectivement. - 4 -
Il est possible d extraire un élément ou un groupe d éléments d une matrice, par exemple : D = A(2,1) E = A([1 2],[2 3]) F = A(:,2) G = A(2,:) La matrice D contiendra l élément situé à l intersection de la 2 e ligne et de la 1 ère colonne de A. La matrice E contiendra l intersection des lignes 1 et 2 et des colonnes 2 et 3 de A : E = 2 3 5 6 La matrice F de dimension 3 1 sera formée de la 2 e colonne de A (car le symbole «:» dans A(:,2) désigne toutes les lignes), tandis que la matrice G de dimension 1 3 sera formée de la 2 e ligne de A (car le symbole «:» dans A(2,:) désigne toutes les colonnes). Que contiendra la matrice H après l exécution de la commande suivante : H=A([3 1],:) 1.2 Génération automatique de matrices et de vecteurs Pour générer un vecteur, la commande est : A=AI:I:AF, où AI est la valeur initiale, I est l incrément et AF est la valeur finale. Si I est omis, un incrément de 1 est pris par défaut. Exemples : A=1:0.25:2 produit A=[1 1.25 1.5 1.75 2] B=(1:50)*3 produit B=[3 6 9 147 150] C=10:-1:5 produit C=[10 9 8 7 6 5] Un vecteur peut être utilisé comme indice; par exemple, en utilisant B défini ci-dessus, D=B(30:-1:20) produit D=[90 87 84 63 60] 30 e élément de B 20 e élément de B - 5 -
Il est à noter que le premier élément d'un vecteur est désigné par l'indice 1. Ainsi, la commande D(1) retournera 90 comme réponse, tandis que D(0) donnera un message d'erreur. Un indice ne peut pas être négatif. Il est possible de générer des vecteurs dont la progression des éléments est logarithmique : E=logspace(K1,K2,N). Après l opération, E sera un vecteur dont les N éléments varient selon une progression logarithmique entre 10 K1 et 10 K2. Lorsque le nombre d éléments n est pas spécifié, 50 est pris par défaut. Il existe un certain nombre de matrices prédéfinies dans MATLAB. Les plus courantes sont: eye(n) la matrice identité n n ones(m,n) la matrice m n dont tous les éléments valent 1 zeros(m,n) la matrice m n dont tous les éléments valent 0 rand(m,n) une matrice m n dont les éléments sont générés de manière aléatoire Si m=n, il suffit de spécifier une seule valeur de dimension: ones(n) est la matrice carrée n n dont tous les éléments valent 1. 1.3 Opérations sur les matrices et les vecteurs Dans MATLAB, les opérations mathématiques peuvent être effectuées sur des matrices ou vecteurs entiers à l aide d une seule commande, sans boucle for end. Par exemple, soit le vecteur produit par la commande T=2*pi*[0:100]/100. On veut évaluer le sinus et le cosinus de chaque élément de T : R=sin(T) et S=cos(T) nous donne les vecteurs R et S contenant les résultats désirés. Pour obtenir la somme des deux vecteurs : A=R+S, le produit point à point : B=R.*S, le carré des éléments de R : C=R.^2 ou C=R.*R. Notes : Tous les résultats des calculs effectués sont affichés à l écran; en ajoutant un pointvirgule à la fin d une commande, on annule l affichage automatique du résultat. Pour faire apparaître une valeur à l écran, il suffit de composer son nom seul. - 6 -
Une multiplication de matrices sera réalisée par la commande A=B*C, où B et C sont les matrices à multiplier. Après l opération, le résultat sera dans A. Attention : Il ne faut pas confondre les commandes B*C et B.*C. La première est la multiplication matricielle de B et C dont les dimensions doivent être compatibles (par exemple, M N et N P respectivement). La deuxième est la multiplication point à point des matrices B et C dont les dimensions doivent être identiques. Exemple: Soient A=[1 2 3], B=[2 2 2] et C=[2;2;2]. On a alors : A.*B qui donne [ 2 4 6 ] A*C qui donne [ 12 ] A*B qui est une commande impossible à réaliser (un message d erreur apparaîtra) 1.4 Nombres complexes MATLAB offre la possibilité de travailler avec des nombres complexes; il s agit simplement de définir les variables en conséquence. Exemples : z=sqrt(-1) z1=5+2*z z2=exp(-z*pi/4) Dans MATLAB, les variables i et j sont initialement définies comme (-1) 1/2 ; cette définition est évidemment annulée lorsque ces variables sont redéfinies autrement. Certaines commandes ont été spécialement conçues pour manipuler des nombres complexes: real(z1) retourne la partie réelle imag(z1) retourne la partie imaginaire abs(z1) calcule le module angle(z1) calcule la phase conj(z1) génère le conjugué - 7 -
1.5 Affichage graphique Forme : plot(x,y), où X et Y sont des vecteurs de même longueur. Cette commande trace à l écran Y en fonction de X. Par défaut, les points seront reliés entre eux; on peut toutefois choisir d afficher uniquement les points : plot(x,y, o ) (d autres caractères sont possibles comme x,., * et + ). Si X est omis, alors les éléments de Y seront tracés en fonction de leur rang dans le vecteur. Plusieurs courbes peuvent être affichées sur le même graphique de la façon suivante : plot(x1,y1,x2,y2,x3,y3). stem(x,y) affiche des signaux a temps discret. Pour une échelle logarithmique, on utilisera les commandes semilogx(x,y), semilogy(x,y) ou loglog(x,y). Pour l affichage d un titre et l identification des axes, on utilise les commandes suivantes : «title( Ceci est le titre affiché )», «xlabel( identification de l axe x )» et «ylabel( axe y )». La commande «grid» trace des lignes de référence sur le graphique. La commande «axis» permet de fixer les bornes des abscisses et ordonnées du graphique. Voici un exemple utilisant les vecteurs T, R, S et A définis dans le premier exemple de la section 1.3 : plot(t,r, o,t,s, x,t,a) grid title( Somme de deux sinusoïdes ) xlabel( Temps (seconde) ) ylabel( Amplitude (volt) ) axis([0 0,01-1.5 1.5]) - 8 -
1.6 Programmation de fonctions Bien que chaque commande puisse être entrée directement au clavier, il est souvent utile de grouper un ensemble de commandes à exécuter qui sera identifié par un seul nom et qui pourra être conservé et édité à volonté. Ceci est possible en plaçant les instructions dans un fichier dont le nom se termine par «.m». Exemple : on crée un fichier nommé graphe.m comprenant les lignes suivantes : % COMMANDE GRAPHIQUE plot(x,y) grid % AFFICHAGE DU TITRE title( RÉSULTATS ) % IDENTIFICATION DES AXES xlabel( TEMPS (SEC) ) ylabel( AMPLITUDE ) À chaque fois que graphe sera appelé du clavier ou d un autre fichier, la courbe de Y en fonction de X sera tracée à l écran avec affichage du titre et identification des axes (on suppose ici que les vecteurs X et Y ont été préalablement définis avant l appel de graphe). Il est possible également de créer vos propres fonctions MATLAB auxquelles on doit transmettre un ou plusieurs paramètres. Exemple : on crée un fichier nommé sa.m comprenant les lignes suivantes : function Y=sa(X) if X==0 Y=1 else Y=sin(X)/X; end À chaque fois que l on demandera sa(v), on obtiendra l évaluation de sin(v)/v. Avant l exécution de la fonction, la valeur du paramètre transmis est placée dans X; le résultat retourné est la valeur de Y après que toutes les commandes aient été exécutées. - 9 -
Notez que les variables d une fonction de type «function» sont indépendantes des autres variables, ce qui n est pas le cas lorsque le fichier ne débute pas par «function». Une fonction peut retourner plusieurs résultats. Par exemple : function [X,Y,Z]=calcul(A,B,C,D) X=A+B+C+D Y=A*B*C*D Z=A*B+C*D Les fichiers.m peuvent être crées à l aide de l éditeur de votre choix (qui peut être celui de Matlab). 1.7 Exercices suggérés Exercice 1 a) Générez la matrice 1 2 3 A = 4 5 6. 7 8 9 b) Générez la transposée de A. c) Trouvez le déterminant de A. d) Générez un vecteur contenant uniquement la 2 e ligne de A en composant A(2,:). Exercice 2 a) Générez les vecteurs a = ( 0 1 2 3 20) et ( 0 5 10 100) b =. b) Vérifiez si la longueur du vecteur a est la même que la longueur du vecteur b en utilisant la commande «size». c) Évaluez s a n /10 = be n où an et bn sont les éléments de a et b. - 10 -
Exercice 3 a) Soit le vecteur a défini par [ 3 4 5 9 3 4 5 9 3 4 5 9 3 4 5 9 ] a = + i + i i i i i + i + i b) Générez le vecteur m contenant les modules des éléments du vecteur a à l aide la commande «abs». c) Générez le vecteur p contenant les phases des éléments du vecteur a à l aide la commande «angle». d) Trouvez le conjugué de a à l aide de la commande «conj». Exercice 4 Modifiez la fonction sa.m décrite à la section 1.6 de façon à ce qu elle puisse être appliquée à un vecteur plutôt qu à une seule valeur. 1.8 Liste des commandes utilisées le plus fréquemment Voici une courte liste des instructions utiles pour le cours, accompagnées d'une brève description. Pour savoir comment utiliser ces fonctions, se référer à l'aide de MATLAB, par exemple en tapant «help (nom de la commande)». Commandes générales clear save who whos load Efface les variables gardées en mémoire Enregistre les variables pour utilisation future Affiche le nom des variables Affiche le nom, le type et les dimensions des variables Permet de lire des variables préalablement enregistrées - 11 -
Fonctions mathématiques sin Évalue le sinus sinh Évalue le sinus hyperbolique exp Évalue l'exponentielle log Évalue le logarithme naturel log10 Évalue le logarithme en base 10 sqrt Évalue la racine carrée mod Retourne le modulo Matrices particulières eye Crée une matrice identité ones Crée une matrice dont tous les éléments valent 1 zeros Crée une matrice dont tous les éléments valent 0 rand Crée une matrice dont les éléments sont générés de manière aléatoire logspace Génère un vecteur dont les éléments suivent une progression logarithmique Manipulations de matrices '.' det inv size length Effectue la transposée conjuguée Effectue la transposée (non conjuguée) Évalue le déterminant d une matrice carrée Évalue l'inverse d une matrice carrée Affiche les dimensions d une matrice Donne la longueur d un vecteur Manipulation de nombres lcm gcd fix ceil Détermine le plus petit commun multiple Détermine le plus grand commun diviseur Arrondit en conservant uniquement la partie entière Arrondit vers le plus gros entier suivant - 12 -
Manipulations de nombres complexes real imag abs angle conj Retourne la partie réelle d'un nombre complexe Retourne la partie imaginaire d'un nombre complexe Évalue le module d'un nombre complexe Évalue la phase d'un nombre complexe Génère le conjugué d'un nombre complexe Transformées fourier ifourier fft ifft laplace ilaplace ztrans iztrans fftshift Évalue la transformée de Fourier Évalue la transformée inverse de Fourier Évalue la transformée discrète de Fourier Évalue la transformée discrète inverse de Fourier Évalue la transformée de Laplace Évalue la transformée inverse de Laplace Évalue la transformée en z Évalue la transformée inverse en z Inverse les deux moitiés de courbes obtenues suite au calcul de la fft Convolution et corrélation conv conv2 xcorr xcorr2 Réalise la convolution de deux signaux Réalise la convolution en deux dimensions de deux signaux Réalise l inter-corrélation de deux signaux, ou l'auto-corrélation d'un seul signal Réalise la corrélation en deux dimensions de deux signaux Filtres filter freqz freqs invfreqs invfreqz Filtre les données qui lui sont fournies selon le type de filtre qui a été décrit Retourne la réponse en fréquence complexe d'un filtre numérique Retourne la réponse en fréquence complexe d'un filtre analogique Retourne les coefficients du numérateur et du dénominateur de la fonction de transfert du filtre analogique ayant la réponse en fréquence voulue Retourne les coefficients du numérateur et du dénominateur de la fonction de transfert du filtre numérique ayant la réponse en fréquence voulue - 13 -
fdatool synthèse de filtres Statistiques std var mean median max min Évalue l'écart-type Évalue la variance Évalue la valeur moyenne Identifie la valeur médiane Identifie le plus grand élément Identifie le plus petit élément Polynômes roots poly pzmap tf tfdata(sys, v ) Trouve les racines d'un polynôme Retourne les coefficients du polynôme associé aux racines spécifiées Affichage des pôles et zéros. fonction de transfert données de la fonction de transfert - 14 -
2. INTRODUCTION À SIMULINK 2.1 Simulation à l'aide de Simulink Simulink est un outil de MATLAB qui permet de remplacer les équations mathématiques entre certaines variables par des blocs organisés en un schéma. Pour ouvrir Simulink, cliquez sur l'icône présent dans la fenêtre principale de MATLAB. Une boîte de dialogue contenant la liste des librairies (semblable à celle de la figure 1) apparaît à l écran. La partie gauche de la boîte de dialogue montre les librairies, tandis que la portion droite présente les blocs disponibles dans la librairie sélectionnée. Une courte description du bloc sélectionné est affichée dans le haut de la fenêtre. Ce sont ces blocs qui servent à la création des diagrammes, ou schémas-blocs. Création des schémas-blocs Les schémas-blocs doivent être créés dans un fichier Simulink distinct, de type «.mdl». Pour créer un nouveau fichier de travail Simulink : faire File, New, Model ou cliquer sur l'icône Pour ouvrir un ancien fichier : faire File, Open ou cliquer sur l'icône Pour insérer un bloc dans un fichier, il faut cliquer sur le bloc désiré puis le faire glisser jusqu'à l'endroit approprié dans le fichier de travail, en maintenant le bouton gauche de la souris enfoncé. Relâchez le bouton de la souris lorsque le bloc est placé à l'endroit voulu. On peut rechercher un bloc de la liste en tapant une partie de son nom dans la case blanche apparaissant en haut de la librairie, puis en appuyant sur RETOUR. - 15 -
Figure 1 - Liste des librairies de Simulink - 16 -
Une fois les blocs insérés dans le fichier, il faut les relier. Pour relier des blocs entre eux, cliquez sur le «triangle» apparaissant sur le premier bloc, maintenez le bouton gauche de la souris enfoncé et faites glisser le curseur jusqu'au «triangle» du second bloc. Si le lien est réalisé adéquatement, une flèche pleine devrait apparaître. Si le trait symbolisant le lien n'est pas un trait plein ou s'il comporte une double flèche en son centre, c'est que le lien n'a pas été réalisé correctement. Il faut donc supprimer le trait et recommencer. Certaines versions de Simulink offrent un raccourci pour relier deux blocs, il s agit de : - cliquer sur le premier bloc, - maintenir la touche CTRL enfoncée, - cliquer sur le second bloc à raccorder. Cette méthode crée automatiquement le trait. Le sens du lien ainsi créé dépend de l'ordre dans lequel les blocs ont été sélectionnés. Ajustement des paramètres des blocs Une fois les blocs insérés dans le fichier, leurs paramètres doivent être ajustés. Ceci se fait en double-cliquant sur un bloc. Une fenêtre de dialogue apparaît, dans laquelle on insère les valeurs appropriées. Il faut porter une attention particulière au bloc «Time Scope» (voir figure 2). Celui-ci permet de visualiser les courbes résultant de la simulation et aussi d'enregistrer ces données pour qu'elles soient récupérées dans MATLAB. Voici les ajustements à faire : - double-cliquer sur le bloc «Time Scope». Une fenêtre s'ouvre (voir figure 3 / c'est là que seront affichées les courbes suite à la simulation), - cliquer sur l'icône Parametrs: - aller dans l'onglet Data History (voir figure 4a), - sélectionner Save data to workspace, - au besoin, modifier le nom de variable «ScopeData» pour le nom voulu, - choisir le format Array. - 17 -
Figure 2 - Bloc «Time Scope» Figure 3 - Fenêtre du «Time Scope» (a) (b) Figure 4 - Les deux onglets permettant d'ajuster les paramètres du «Time Scope» L'oscilloscope ( «Time Scope» ) ne conserve que les dernières données de la simulation. Il est possible de fixer le nombre de points conservés en l'indiquant à la suite de la mention Limit data - 18 -
points to last de la fenêtre Data History (figure 4a). Par défaut, le nombre de points est fixé à 5000, ce qui s'avère généralement adéquat. Notez qu'il est possible d'avoir plusieurs entrées dans le bloc «Time Scope». Pour ce faire, il s agit de : - double-cliquer sur ce bloc, - cliquer sur le bouton Properties, dans le haut de la fenêtre ayant apparu, - sous l'onglet General, changer le nombre d'axes spécifiés (voir figure 4b). Ajustement des paramètres de la simulation Après avoir créé le schéma à exécuter, cliquez sur Simulation du menu dans le haut de la fenêtre où se trouve le schéma, puis sélectionnez Normal. Ensuite, toujours dans Simulation, il faut : - cliquer sur Simulation Parameters, - aller dans l'onglet Solver, - définir les temps de début et de fin de simulation (par défaut, ces temps sont 0s et 10s respectivement), - choisir le mode de simulation: Type «Fixed-Step». Enfin, lorsque les paramètres sont entrés, la simulation peut être amorcée de la façon suivante: - cliquer sur l'icône - ou aller dans l'item Simulation du menu et faire Start. Le temps de simulation apparaît dans la case en bas du fichier. 2.2 Récupération des données Pour récupérer les données générées par la simulation, il faut insérer dans le schéma un bloc provenant de la librairie Simulink, Sinks. Les deux blocs les plus utilisés sont le «Time Scope» et «To Workspace». Ce dernier enregistre les données dans MATLAB mais ne les affiche pas, - 19 -
contrairement à l'oscilloscope. Les ajustements de l'oscilloscope ont été décrits à la section précédente. Pour le bloc «To Workspace», il faut suivre les étapes suivantes (avant l'exécution de la simulation): - double-cliquer sur le bloc, - donner le nom de variable voulu, - fixer le nombre de points à conserver (Limit data points to last), - enregistrer le format à Array. Une fois la simulation exécutée, on sauve les données dans des variables en écrivant dans la fenêtre de commande MATLAB ou encore dans le M-File les commandes suivantes: t=scopedata(:,1) y=scopedata(:,2) Le nom ScopeData doit être remplacé par le nom de variable que l'on a choisi lorsque l'on a ajusté les paramètres de l'oscilloscope ou du bloc «To Workspace». Les données de la première colonne de cette variable correspondent au temps où ont été prélevés les échantillons, tandis que les valeurs de la deuxième colonne sont les résultats eux-mêmes. - 20 -
3. TRAVAIL À RÉALISER AU LABORATOIRE OBJECTIF Le but de ce travail est de se familiariser avec la technique de «drag and drop» de Simulink en évaluant la réponse impulsionnelle d un système linéaire (filtre) et en simulant le filtrage d un signal. INTRODUCTION La réponse impulsionnelle ht () d un système linéaire est la sortie du système si l entrée est l impulsion de Dirac δ () t. Dans ce travail vous devrez évaluer la réponse impulsionnelle d un système linéaire et l afficher graphiquement. La fonction de transfert d un système de quatrième ordre vous sera précisée au laboratoire. Vous devrez également évaluer la réponse à l échelon d un système. Vous aurez l occasion d observer les différentes réponses obtenues selon la position des pôles du système. La dernière partie du travail traite du filtrage d un signal. Le but est d observer la sortie d un filtre Butterworth dont l entrée est un signal tel qu une onde carrée périodique. PREMIÈRE PARTIE : RÉPONSE IMPULSIONNELLE D UN SYSTÈME D ORDRE 4 1. Ouvrir Matlab. 2. Cliquer sur le symbole coloré «Simulink» ou dans la fenêtre «Command Window» de Matlab taper : simulink. 3. Dans la fenêtre «Simulink Library Browser», cliquer sur «file-new». 4. Dans la «Library», choisir «Continuous». Tirer la boîte «Transfer function» et la déposer sur le nouveau document simulink. 5. Programmer cette boîte en double cliquant et en spécifiant les paramètres de la fonction de transfert qui vous sera précisée au laboratoire. Exemple de fonction de transfert : - 21 -
K s + 1.197s + 1.717s + 1.025s+ 0.379 ( ) = 4 3 2 H s où K est un constant ; par exemple K = 1. 6. Choisir la source d entrée en cliquant sur «Sources» et transportant la boîte d échelon (Step). 7. Vu que le but est d évaluer la réponse impulsionnelle plutôt que la réponse à l échelon et vu que les transformée de Laplace de δ (t) et u(t) sont : δ ( t) 1 ( ) u t 1 s il faudra annuler le pôle introduit par l échelon. Vous pouvez effectuer ceci en multipliant H() s par s, et ainsi annuler le pôle de ut () par ce zéro. Vous devrez ainsi double-cliquer sur la boîte «Transfer function» et programmer le numérateur par la vecteur [K 0]. 8. Pour observer la réponse à l échelon du système, il faudra relier l échelon à l entrée de la fonction de transfert sans oublier de brancher une boîte «Scope» (de la librairie «Sink» de «Simulink») à la sortie de la fonction de transfert. 9. Cliquer sur la flèche noire «Start simulation». 10. Double-cliquer sur «Scope» pour voir la réponse du système. 11. Pour prolonger la durée de la simulation, cliquer sur «Simulation - Simulation parameters». Augmenter «Stop Time» à 40, par exemple. 12. Préparer les éléments du rapport à remettre : a) les paramètres de la fonction de transfert tels qu observés en double-cliquant sur la boîte «Transfer Function», b) la sortie du Scope. c) Imprimer un plot par Matlab de la sortie a partir des données sur Workspace, qui contient le titre du graphique et les identifications des deux axes. - 22 -
DEUXIÈME PARTIE : RÉPONSE À L ÉCHELON D UN SYSTÈME Voir le livre Sec. 5.10 page 249 Un système du deuxiem ordre est decrit en general par la fonction de transfert ( ) H s = ω s s = ω s p s p 2 2 0 0 2 2 + 2ως 0 + ω0 1 2 ( )( ) Ayant des pôles p 1 et p 2 qui peuvent être réels, complexes ou double : p, p 1 2 2 ως 0 ± ω0 ς 1, ς> 1 = ως 0 ± jω0 ς < ς< ως 0, ς= 1 ± jω0, ς = 0 2 1, 0 1 Voir les pôles et leurs positions selon la valeur du facteur d amortissement ς a la Fig. 5.25 page 250 du livre. La réponse a l échelon du système dépend sans doute du facteur d amortissement ς et est illustre a la Fig. 5.26 du livre. Notre but est de reproduire ici la réponse a l échelon d un tel système. Soit ω 0 = 1 Évaluer la réponse à l échelon en programmant la boîte «Transfer function» par qu elle soit égale a cette valeur H( s ) pour les trois cas de positions des pôles suivants. Évaluer et dessiner les pôles dans le plan s et la réponse à l échelon pour chacun des cas suivant : 1. Le cas ς = 0.5. 2. Le cas ς = 1. 3. Le cas ς = 2. 4. Quelle est la valeur de la réponse en régime permanent, c'est-à-dire, quand t? 5. Préparer les éléments du rapport à remettre (pour chacun des trois cas) : a) les paramètres de la fonction de transfert tels qu observés en double-cliquant sur la boîte «Transfer Function», b) la sortie du Scope. - 23 -
TROISIÈME PARTIE : FILTRAGE D UN SIGNAL 1. Programmer une boîte «Transfer function» pour simuler le filtre du premier ordre : 1 H( s) = s + 1 2. Transporter une source «Pulse Generator» de la bibliothèque de Simulink pour produire le signal qui sera appliqué à l entrée au système. 3. Observer la sortie du système sur un «Scope». 4. Ajuster la période T du générateur d impulsions à 20 secondes et observer la sortie. Remarquer le croissement relativement lent de l onde causé par la coupure des hautes fréquences qu introduit le filtre. Réduire T pour accélérer progressivement le peigne d impulsions, et observer et noter l effet sur la sortie. Imprimer la sortie pour les cas deux cas T = 20 et T = 2 sec et afficher la valeur de T sur chaque graphique Evaluer la fréquence fondamentale dans chaque cas, et la fréquence de coupure du filtre. En comparant la fréquence fondamentale dans chaque cas avec la fréquence de coupure du filtre justifier la sortie observée. 5. Remplacer le filtre du premier ordre par le filtre Butterworth : 1 s + 2.613s + 3.414s + 2.613s+ 1 ( ) = 4 3 2 H s 6. Ajuster la période T du générateur d impulsions pour que la sortie du système soit assez semblable à son entrée sauf pour un léger dépassement ( overshoot ). Imprimer le résultat. Indiquer la valeur T. 7. Réduire successivement la période de l entrée et observer l effet sur la sortie. Ajuster la période T pour que la sortie du système soit simplement le d-c de l entrée, à part de quelques petites ondulations. Indiquer la valeur de T. Imprimer le résultat. (1) 8. Effectuer une dé-normalisation pour obtenir Hdenorm ( s ) en remplaçant s par s /1000 dans H( s ). Ecrire la valeur de Hdenorm ( s ). Afficher par pzmap de Matlab et imprimer les pôles de Hdenorm ( s ). Répéter les points 6 et 7. 9. Ecrire et soumettez votre rapport. - 24 -