Note d`application simulation numérique

publicité
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
Téléchargement