Polytech’Clermont-Ferrand Génie électrique Note d’application Simulation numérique Nicolas MOREAU 2010 Sommaire 1.Présentation générale 2.Prise en main de l’interface 3.Exemple de simulation 3.1.Choix du mode de simulation 3.2.Configuration des composants électroniques 3.3.Mesure d’un courant 3.4.Codage d’un algorithme 3.5.Simulation du programme 3 3 5 6 7 7 7 10 2 1.Présentation générale Le logiciel de calculs numériques Matlab associé au programme Simulink permet de modéliser et de simuler de nombreux systèmes dans la plupart des domaines de l’ingénierie. Ce programme de simulation offre de nombreuses bibliothèques de composants usuels. De plus, le logiciel permet de simuler des systèmes continus ou échantillonnés. Afin de ce familiariser avec Simulink, de nombreux éxemples sont disponibles dans l’aide. La saisie des systèmes est réalisée grâce à une interface graphique. De nombreux outils de mesure permettent de visualiser les paramètres que l’utilisateur souhaite visualiser. Le contrôle des systèmes peut être réalisé soit au moyen de portes logiques soit en intégrant des fonctions qui permettent de coder en langage de programmation dédié l’ensemble de vos algorithmes. 2.Prise en main de l’interface Sur l’interface Matlab, lancez Simulink à l’aide de l'icône «File > New > Model» dans la barre des tâches. ou en sélectionnant 3 Une fois le nouveau modèle ouvert, ouvrez la librairie pour placer les composants souhaités. Selon les versions, la procédure peut varier légèrement. Dans la barre sélectionner «View > Simulink Library» pour voir les composants usuels. Le cadre rouge regroupe l’essentiel pour les modélisations de systèmes électroniques et électriques. Le tracé de vos mesures est réalisé en connectant un «Scope» disponible dans la rubrique «Sinks». Tous les composants sont accessibles en double cliquant sur une rubrique. Des composants peuvent êtres ajoutés à la librairie de base à partir de la barre «View > Model Explorer» vous obtiendrez sur cette même page une aide pour chaque composant. Nous allons voir sur un exemple quelques fonctions de base. 4 3.Exemple de simulation À partir d’un exemple, nous allons voir plus en détail quelques fonctionnalité de l’interface Simulink. Cette présentation n’est pas exhaustive mais regroupe les fonctions de base de la simulation numérique d’un système électronique commandé à partir d’un algorithme de commande de type machine à états. Ci-dessus le système complet que nous allons étudier plus en détail. 5 3.1.Choix du mode de simulation La méthode de simulation doit-être choisie en fonction du type de modélisation. Dans cette section la période de simulation est à choisir. Choix de temps de simulation Choix de la méthode de résolution numérique Sur le graphique en haut à gauche on retrouve le lien permettant de sélectionner la méthode temporelle (continu ou échantillonné). En double cliquant sur cette icône, vous accédez aux paramètres temporels. Deux choix possibles : - méthode échantillonnée (Discretize electrical model) ; il faut dans ce cas définir le pas d’échantillonnage (Sample time) - Méthode continue (Continuous) 6 3.2.Configuration des composants électroniques Nous allons voir un exemple de paramétrage sur une association d’une résistance et une bobine placées en série. En double cliquant sur le composant de gauche, vous ouvrez la fenêtre de paramétrage placée à droite. Cette fenêtre permet d’entrer directement les valeurs des composants électroniques. Pour l’inductance, vous pouvez également placer celle-ci à une valeur initiale en cochant la case «Set the initial inductor current». 3.3.Mesure d’un courant Ce composant permet de mesurer un courant dans un circuit électronique. La sortie «i» peut-être reliée soit à un «scope» pour visualiser celui-ci, soit à des blocs fonction afin de l’utiliser au coeur d’un algorithme. 3.4.Codage d’un algorithme N’importe quel algorithme de commande peut être codé en langage de programmation Matlab à l’aide d’un bloc disponible dans la librairie nommé «Embedded matlab function». Ce bloc est le suivant. 7 Les entrées du système sont à gauche du bloc et les sorties à droite. Celle-ci sont définis par programmation en ouvrant le bloc. Le programme débute par le nom de la fonction et la définition des entrées / sorties. function [xy,x,yL,g1,g2] = algo(y) La traduction après le mot-clé «function» est : [sorties] = nom_fonction(entrées) Voici un exemple de programme correspondant à une machine à états. Cet exemple montre les grandes étapes à respecter pour l’élaboration d’un algorithme. - déclaration des variables - Initialisations des variables - Calcul mathématiques (intégrateur numérique) - Programme principal Dans notre cas certaine variables sont déclarées en type «persistent» car la simulation suivante est réalisée en discret et elle nécessite de sauvegarder la valeur de certaines variables à l’échantillon précédent. function [xy,x,yL,g1,g2] = algo(y) %%% elaboration des gachettes a partir de la mesure du courant traversant %%% l'inducteur %%% %%% xy, x et yL sorties uniquement pour visualisation des signaux %declaration des variables alpha = 8; %declaration pas echantillon t = 1.5625E-6; %pas d'echantillionnage C = 0.235E-6; %condensateur Kx=(2/150)*10; %gain normalisation tension Ky=(2*1.726/150)*10; %gain normalisation courant %declaration buffer persistent temp %declaration etat de la machine persistent etat_1 %initialisation temp if isempty(temp) 8 temp = y; end %initialisation etat if isempty(etat_1) etat_1 = 3; g1=0; g2=0; end %mise a l echelle image courant yL=y*Ky; %securite fusible logiciel if yL>10 %courant maximum g1=0; %blocage des gachettes g2=0; etat_1=200; %blocage de la machine a etat end %integrateur x = Kx*(1/C)*t*(temp-y)/2; temp = y; %image tension plus courant xy=x+yL; %machine a etat switch etat_1 case 0 g1=0; g2=0; if (yL >= 0) etat_1=1; end case 1 g2=0; g1=1; if (xy>=alpha) etat_1=2; elseif (yL < 0) etat_1=4; end case 2 g2=0; g1=1; if (xy <= alpha) etat_1=3; g1=0; g2=0; elseif (yL < 0) etat_1=4; end case 3 g1=0; g2=0; 9 if (yL <= 0) etat_1=4; end case 4 g1=0; g2=1; if (xy <= -alpha) etat_1=5; elseif (yL > 0) etat_1=1; end case 5 g1=0; g2=1; if (xy >= -alpha) etat_1=0; g1=0; g2=0; elseif (yL > 0) etat_1=1; end otherwise g1=0; g2=0; end Nous pouvons constater que le langage de programmation regroupe bon nombre d’instructions dérivées du langage C. 3.5.Simulation du programme Le programme utilisé correspond à l’élaboration de deux signaux de gâchettes à partir de la mesure du courant traversant un circuit résonnant. L’ensemble des signaux générés par la machine à états sont visualisés au moyen d’un «Scope» qui permet une visualisation temporelle des signaux. Les paramètres électriques du système (appelés variables d’état) sont elle tracés sur un plan de phase, à savoir la tension en fonction du courant. Cette visualisation se fait grâce à un bloc appelé «XY Graph». 10 La simulation est lancée à partir de la barre des tâches «Simulation > Start». Après exécution de la simulation selon les paramètres choisis précédemment, on peut visualiser les signaux définis à l’étape précédente. Le premiers graphique est le plan de phase. Le suivant est le relevé en temporel. 11 Le cas que nous venons de voir ne regroupe pas l’ensemble des fonctions disponibles sous Matlab / Simulink, mais donne une vue d’ensemble des principales fonctions utiles lors de la mise au point de système électriques et électroniques. De plus, l’utilisation de fonction embarquées permet de simuler et de valider théoriquement des algorithmes de commande avant de les migrer sur un microcontrôleur. Le langage de programmation est relativement proche du langage C, ce qui facilite le codage des algorithmes. Pour approfondir les fonctionnalité du logiciel, de nombreux exemples sont créés dans la rubrique d’aide du logiciel. 12