ESSI 1ère Année, AUTOMATIQUE Simulation des Automatismes Séquenciels avec Stateflow de Matlab Page -1-
Simulation des Automatismes L a simulation du schéma- bloc utilise Visual C++, c’est à dire
que les modèles une fois définis sont traduits en C++ et
compilés, ce qui donne l’exécutable utilisé pour la simulation.
On lance Stateflow depuis Simulink, dans la bibliothèque
1. Automatique et Temps Réel Additions à Simulink, ou par la commande :
>> stateflow de l’interpréteur Matlab.
Un automatisme doit être capable de réagir aux évènements qui Matlab ouvre une fenêtre Simulink nommée untitled, avec un
modifient le contexte de façon appropriée à n’importe quel bloc unique nommé également untitled dans lequel on va pouvoir
moment. définir des graphes. Il faut d’abord renommer ce bloc, par
L’univers physique à l’extérieur de l’automate est asynchrone exemple ‘cours’, puis cliquer dessus pour éditer le graphe à
par nature, l’occurrence d’un évènement est imprévisible. l’intérieur du bloc. La sauvegarde du projet créera un fichier
Le cerveau de l’automate doit rester disponible pour réagir dès cours.mdl dont l’exécution rechargera le bloc simulé ; on
l’apparition d’un évènement en appliquant la réponse appropriée. pourra également taper :
On parlera de systèmes réactifs, et de temps réel. >> cours dans la fenêtre Matlab pour ce faire.
A la différence de l’automate précedent, l’ordre d’arrivée des Le bloc édité, la commande Parse du menu Tools permet de
évènements n’est pas nécessairement connu. détecter les erreurs dans la définition du graphe, la commande
Start de Simulation lance la compilation, l’édition de liens, et
2. Simulation avec STATEFLOW DE MATLAB l’exécution.
L e module Simulink de Matlab permet de simuler les
systèmes, continus, discrets, non linéaires, … en relation
avec la mémoire de travail de Matlab (workspace).
3. Définition et Simulation d’un graphe
On passe rapidement en revue certains composants des
Ce formalisme graphique représente le schéma-bloc du système graphes de Stateflow et on utilisera comme illustration le
à simuler. On pioche les blocs dans l’une des bibliothèques processus chimique donné en exemple à la fin du cours
(libraries), on les agence et les relie selon la structure du précédent.
système à représenter.
S
La fenêtre d’édition Stateflow fournit d’abord des étapes,
tateflow fait partie de Simulink, il permet d’y ajouter des (states), les sommets du graphe, représentés en bleu (vert si
blocs contenant des graphes à nombre d’états fini, avec sélectionnés) : dans ces étapes, on inscrit un texte, comportant
des étapes, des actions, des transitions, des réceptivités, mais un nom, ou label, et des actions exécutables à l’entrée (entry ,
également avec des évènements comme dans le GRAFCET.
Page -2-
abbrév. En), durant l’activité (during, ou du) et à la sortie (exit,
ou ex).
Les states sont interconnectés par un réseau d’arcs, ou
transitions, étiquetés également avec des conditions ou des
évènements qui provoqueront les transitions.
Il existe un arc particulier (default) permettant de déterminer
les étapes initialement actives.
Il existe également des jonctions ou disjonctions permettant
d’éclater un arc en plusieurs arcs (hyperarc).
On peut regrouper les étapes dans des superétapes
(superstates) pour réaliser des groupes conditionnels (OR
exclusive states, un groupe et un seul actif à un instant donné)
ou simultanés (AND states, groupes activés simultanément).
Les états exclusifs sont symbolisés en traits pleins, les états Syntaxe du contenu d’une étape :
simultanés en pointillés. nom/
Il est utile de pouvoir définir des données afin de communiquer entry : ev1
avec le workspace Matlab, ou avec un schéma-bloc défini sous during : qa = 2 ;
Simulink et incluant le graphe. On distingue les types de exit : qb+= 0.1 ;
données suivants : on event ev2 : qc = 0
local, Input from Simulink, Output to Simulink, Constant,
Workspace, et Event. Syntaxe d’une transition :
Toute donnée doit être définie avant utilisation avec son type Switch_off[c1]{elec_off}/light_off
et son domaine, en utilisant la commande Explore de Tools, ou Event [condition]’condition action}/transition action
Add, (raccourcis : Ctrl d pour Add Data, Ctrl e pour Add Event)
Ces éléments permettent de réaliser des systèmes divers dont
les quelques illustrations suivantes :
Page -3-
Illustration de l’utilisation de Stateflow qc, le débit d’évacuation
u, la puissance électrique de chauffage dépensée dans la
pour la commande du processus chimique cuve
La page suivante présente une copie d’écran de l’application L’équation donnant l’évolution du niveau dans la cuve est :
dh
stockée dans cocacola.mdl, qu’on exécute donc en tapant 0.1(qa qb qc)
dt
cocacola dans la fenêtre MATLAB.
Le schéma bloc en bas à gauche inclut le modèle (les équations)
du processus chimique (bloc Processus), le bloc de commande EXERCICE :
cocac où le graphe de l’automatisme séquenciel est est défini retrouver de même sur le schéma bloc de Processus, les
sous stateflow ainsi que 4 Scopes pour la visualisation des équations adoptées pour le pH, la température T, le poids w du
grandeurs physiques simulées. mélange produit :
Les blocs Processus et cocac ont été dilatés et on en voit le
contenu sur l’écran : dpH
Un système d’équations différentielles non linéaires pour dt
Processus, dont il faudrait dilater encore certains blocs,
Un graphe constitué de 6 sous graphes (superstates) actifs dT
simultanément pour cocac (AND superstates dans la dt
terminologie de Stateflow)
dw
dt
Equations du processus
On a nommé comme suit les variables définissant l’état, les L’affichage des variables h, pH, T et w dans quatre Scopes a
entrées, et les sorties du processus : été adapté (voir menus supérieurs de Scope), par exemple
haut, ou h, la hauteur dans la cuve l’échelle de pH est limitée de pH 7 à pH 9. Qu’en est il pour T,
pH, le pH dans la cuve h et w ?
T, la température La durée de la simulation a été ajustée dans le menu Simulation
w, le poids de liquide produit et évacué Parameters.
qa, le débit d’admission du produit A, de pH : pHA
qb, idem produit B, de pH pHB
Page -4-
Définition, Interconnexion, Compilation, On spécifie les types et domaines de validité des données dans
Simulation du graphe Stateflow et du modèle Explore, ou avec Add Data, et Add Event (Ctrld, Ctrl e).
On a pu définir des états, des super états, des actions, des
Superstates (super états):
transitions, des conditions sur les variables d’état, des
évènements, etc … de diverses façons dans le graphe présenté. On peut donc regrouper les états , c’est fait 6 fois ici, où 14
Syntaxe d’un état : par exemple états sont dans 6 superstates de type AND, c’est à dire qu’ils
p2/ peuvent être actifs simultanément (voir la simulation) :
en : qb=1 superviseur : gère et synchronise l’ordre de mise en route
ex : qb=0 des 4 tâches de contrôle
A l’entrée dans p2, qb est mis à 1 (on remplit avec B) et à la contrôle de niveau : deux tâches réalisant une commande de
sortie, qb est remis à 0 (on ferme la vanne B). Ces opérations type tout ou rien :
apparaissent dans la fenêtre MATLAB sauf si on termine par ; haut HC , qa 1 et haut HC , qa 0
contrôle du pH dans la cuve (sur le même principe de
Syntaxe d’une transition : par exemple commande
[pH < pHC]/pok entre p2 et p1 ou entre p1 et p1, ou ailleurs contrôle de température
pok entre reglph et Temp remplissage pesage du mélange produit
Dans le second cas, pok déclaré comme un événement est testé. la 6ième tâche simule une arrivée périodique de bouteilles à
Si pok s’est produit (a été distribué : broadcast), la transition remplir, on a programmé pour cela une horloge qui crée un
peut avoir lieu. événement périodiquement (t est une variable réservée qui
Dans le premier cas, la condition entre crochets pH inférieur à donne l’instant actuel de la simulation
pHC constante provoque l’action de créer l’événement pok.
Gestion de la mise à jour de l’état du graphe
Données, évènements
Dans la fenêtre Stateflow, le menu Propriétés permet de
pH est défini (Menu Explore) comme Input from Simulink choisir la règle de mise à jour du graphe, soit Inherited
pHC comme Constant (Stateflow décide) Sampled (préciser une période de
pok est un Event rafraîchissement du graphe), ou Continuous (le plus lent)
tl une variable de type local, etc …
On peut voir l’ensemble des données avec Explore de Tools
Page -5-