• Aucun résultat trouvé

Description du mod`ele

Dans le document The DART-Europe E-theses Portal (Page 82-88)

h2

2 4 6 8

2

2 4 6 8

Fig. 5.1 – Fonction donnant ˙h2 en fonction de h2 dans le cas o`u les deux vannes sont ouvertes (´equation (1.2)), avecH = 4,k1= 2.6,k2= 1.8 eth1= 9.

synERGIE n’est pas `a proprement parler un langage hybride car il ne permet pas de d´ecrire l’environnement continu avec lequel le programme interagit via des ´equations diff´erentielles par exemple. Il doit donc ˆetre ´etendu pour prendre en compte cet aspect, et nous avons choisi de fonder notre nouveau mod`ele sur un langage de bas niveau (par exemple, le code C produit par synERGIE) plutˆot que de rester au niveau de la sp´ecification. Ce choix nous permet de rester proche des codes existants et donc d’appliquer rapidement nos techniques `a des probl`emes industriels.

5.2 Description du mod` ele

5.2.1 Mod´ elisation de la partie continue

La partie continue des syst`emes hybrides que nous consid´erons est form´ee de variables ´evoluant continˆument dans le temps et qui repr´esentent les grandeurs physiques dont le programme a besoin (ou sur lesquelles il agit). La dynamique de ces variables peut ˆetre modifi´ee de deux fa¸cons : soit par un changement dˆu au programme via les actionneurs, soit par un changement dˆu `a la dynamique elle-mˆeme, par exemple lorsque l’eau passe au-dessus du premier tuyau horizontal dans le syst`eme des deux r´eservoirs (voir section 1.6). Notre mod`ele doit ˆetre assez expressif pour int´egrer ces deux ph´enom`enes. Pour cela, nous prenons comme point de d´epart les probl`emes de Cauchy comme d´efinis en section 3.1. L’expressivit´e du mod`ele continu d´epend alors du type de fonctionsF que nous autorisons dans l’´equation (3.1). Remarquons que le choix de fonder la mod´elisation du milieu ext´erieur des programmes embarqu´es sur des EDOs n’est pas anodin. On peut en effet effectuer un parall`ele fort entre une ´equation diff´erentielle et le code source d’un programme informatique.

Les deux sont des repr´esentations d’un syst`eme dynamique : le code source est un mod`ele pour le programme ex´ecutable obtenu apr`es compilation, et chaque instruction relie l’´etat du programme

`

a un instantt(c’est-`a-dire avant l’ex´ecution de l’instruction) `a l’´etat du programme `a l’instantt+1 (apr`es son ex´ecution). Une ´equation diff´erentielle est elle un mod`ele pour une fonction continue : la fonctionF d´ecrit l’´etat du syst`eme `a l’instantt+dten fonction de l’´etat du syst`eme `a l’instant t. Une EDO joue le mˆeme rˆole qu’un programme mais pour des syst`emes dynamiques continus, il est donc naturel de les utiliser comme base pour mod´eliser le milieu continu des programmes embarqu´es.

Pour repr´esenter les changements dus `a l’environnement lui-mˆeme, nous supposerons que la fonction F est continue et Lipschitz par morceaux. Cela permet de d´efinir des dynamiques diff´erentes en diff´erentes r´egions de l’espace. Rappelons en effet qu’une fonction g :R→ Rn est

Lipschitz par morceaux si et seulement s’il existe x0 < x1 <· · · < xn ∈ R∪ {−∞,∞} tels que la restriction deg `a [xi, xi+1] est Lipschitz pour touti(cette d´efinition s’´etend naturellement aux fonctions d´efinies surRm ). Par exemple, la fonction donnant la dynamique de la hauteur d’eau dans le deuxi`eme r´eservoir (voir la figure 1.6) est une fonction Lipschitz par morceaux (voir la fi-gure 5.1). Dans ce cas, la fonctionF est continue et globalement Lipschitz, de sorte que la solution du probl`eme de Cauchy sous-jacent existe et est unique. En particulier, le th´eor`eme de conver-gence des it´er´ees de Picard (th´eor`eme 3.2) est valable. L’hypoth`ese de n’avoir que des fonctions Lipschitz est forte, mais elle a du sens si on se rappelle que les ´equations diff´erentielles que l’on va consid´erer sont des lois de la physique. Tous les ph´enom`enes d´ecrits seront donc tr`es r´eguliers et l’hypoth`ese (tr`es classique lorsque l’on utilise des ´equations diff´erentielles) d’une condition de Lipschitz globale nous apparaˆıt comme raisonnable.

Pour prendre en compte les changements occasionn´es par le programme discret, nous introdui-sons dans la fonctionF un vecteur de param`etres formels krepr´esentant l’effet demactionneurs sur le milieu continu. On aura doncF =F(y, k) ; chaque coordonn´ee dekrepr´esente l’´etat d’un des actionneurs, et pourra ˆetre modifi´ee par le programme :kprendra ses valeurs dansBm

(c’est-`

a-dire l’ensemble des vecteurs de valeurs bool´eennes de dimensionm), et si lai-i`eme coordonn´ee de kvaut 1, cela voudra dire que le i-i`eme actionneur est activ´e. On dispose ainsi de 2m modes continus possibles, et pour toute valeur possible des param`etres k ∈ Bm, nous noterons Fk la fonction telle que∀y∈Rn, Fk(y) =F(y, k).

D´efinition 5.1 (Mod`ele du milieu continu) Un mod`ele κ pour le milieu continu est un quadrupl´eκ=¡

V ar, m,{Fk}k∈Bm,(y0, k0

tel que :

1. V ar est un ensemble de noms pour les variables continues d´efinies par les ´equations diff´erentielles ;

2. m∈Nest le nombre d’actionneurs disponibles ; 3. y0∈Rn est une condition initiale, avecn=|V ar|; 4. k0∈Bmest le mode continu initial ;

5. ∀k∈Bm, Fk :Rn→Rn est une fonction continue Lipschitz par morceaux, avecn=|V ar|.

Exemple 5.1 (Probl`eme du thermostat) Le syst`eme du thermostat (voir section 4.1) poss`ede un actionneur, et donc deux modes continus. La partie continue du syst`eme est donn´ee par κt=

¡{x},1,{F0, F1},(x0, k0)¢ avec :

F0(x) =−x/3 F1(x) = 9−x/3. (5.1)

Les ´equations diff´erentielles donnant l’´evolution continue seront donc ˙x=F0(x) et ˙x=F1(x) selon le mode choisi.

Exemple 5.2 (Probl`eme des deux r´eservoirs) Le probl`eme des deux r´eservoirs poss`ede quatre modes continus correspondant aux cas o`u les vannes 1 et 2 sont ouvertes et/ou ferm´ees.

Un mod`ele continu pour ce syst`eme sera doncκr

{h1, h2},2,{F0,0, F1,0, F0,1, F1,1},(y0, k0)¢ o`u F0,0 repr´esente le cas o`u les deux vannes sont ouvertes (´equation (1.2)),F1,0 le cas o`u la vanne 1 est ferm´ee (´equation (1.3)),F0,1 le cas o`u la vanne 2 est ferm´ee (´equation (1.4)) etF1,1 le cas o`u les deux vannes sont ferm´ees (´equation (1.5)).

5.2.2 Mod´ elisation de la partie discr` ete

La partie discr`ete de notre mod`ele est un programme ´ecrit dans une extension du langage SIMPLE d´ecrit `a la section 2.2.1. En plus des expressions arithm´etiques et des instructions discr`etes classiques, nous introduisons un nouveau type de variables, les variables continues (CV ar), et trois instructions hybrides (HStmt dans la figure 5.2). Ces trois instructions sont :

5.2. DESCRIPTION DU MOD`ELE 81 – sens.y?X o`u y ∈ CV ar est une variable continue et X ∈ V ar est une variable discr`ete.

Cette instruction sert `a mod´eliser l’effet d’un capteur qui alloue `a la variable discr`ete X la valeur de la variable continuey `a l’instant o`u l’instruction est ex´ecut´ee.

– act.k!c o`u c∈ {0,1} etk∈N. Cette instruction repr´esente l’effet duk-i`eme actionneur sur l’environnement physique : la dynamique du milieu continu va ˆetre modifi´ee et sera r´egie, apr`es l’ex´ecution de l’instruction, par la fonction Fl, o`u l ∈ Bm est telle que la k-i`eme coordonn´ee de l vautc.

– wait u o`u u ∈ R+. Cette instruction sera utilis´ee pour symboliser la dur´ee des autres instructions discr`etes : on suppose en effet que chaque instruction est instantan´ee et on ajoute explicitement des instructionswaitpour compenser le fait qu’elles ne l’´etaient pas.

Remarque Dans l’instruction de d´elaiwait, nous supposons que le d´elai est un valeur constante u∈R+. Nous n’autorisons pas `a ce que le d´elai soit une variable ou une expression arithm´etique pour empˆecher les effets Z´enon. En effet, en autorisant le d´elai `a ˆetre une expression arithm´etique, on pourrait ´ecrire le programme

while1 do¡ wait¡

1/(n∗n)¢

; act.1!0; n:=n+ 1;¢

qui effectue une infinit´e d’actions en un temps fini. ´Etant donn´e que l’instructionwaitattend un constanteu∈R+ comme argument, et comme les programmes sont de tailles finies, il existe un temps minimum τ >0 telle que toutes les instructions waitaugmentent le temps d’au moinsτ secondes. La seule possibilit´e d’avoir une ex´ecution infinie qui ne dure qu’un temps fini est donc d’avoir une ex´ecution infinie n’ex´ecutant qu’un nombre fini d’instructionswait.

Donc, la seule possibilit´e d’obtenir un effet Z´enon est d’avoir une boucle infinie telle qu’aucune des it´erations de la boucle ne contienne d’instructionswait. Le programme effectuerait alors une infinit´e d’actions en un temps nul. Une condition n´ecessaire (mais pas suffisante) pour ne pas avoir d’effets Z´enon est donc qu’il y ait une instructionwaitdans le corps de chaque boucle infinie. Cette condition n’est cependant pas suffisante (l’instruction peut ne pas ˆetre ex´ecut´ee), et une analyse de vivacit´e permettrait de prouver l’absence d’effet Z´enon : il faut montrer que l’instructionwait sera ex´ecut´ee une infinit´e de fois. Des outils comme Terminator [CPR06b, CGP+07] permettent de le faire.

Nous nommerons cette extension de SIMPLE pour le calcul hybride H-SIMPLE. Cette extension est tr`es proche du langage initial (sa syntaxe compl`ete est donn´ee `a la figure 5.2), de sorte qu’il est facile de traduire un programme ´ecrit enSIMPLEen un programme deH-SIMPLE(en particulier, tout programme deSIMPLEest un programme de H-SIMPLE). Les rajouts sont li´es aux caract´eristiques hybrides de ces programmes (communication avec le milieu ext´erieur et notion de temps d’ex´ecution), et sont en fait souvent pr´esent, sous forme de commentaires, dans les codes critiques g´en´er´es depuis un langage de sp´ecification. Il n’est en effet pas rare de voir, au d´ebut d’une boucle, un commentaire indiquant la fr´equence `a laquelle cette boucle s’ex´ecute.

Dans ces cas, il est tr`es simple d’ajouter une instruction wait`a la fin de la boucle pour simuler ce temps d’ex´ecution.

Remarquons que les choix que nous avons effectu´es pour encoder les ´echanges entre le pro-gramme et l’environnement continu ne sont pas anodins. Nous voyons en effet le propro-gramme et l’environnement comme deux processus dynamiques s’ex´ecutant en parall`ele, les capteurs et les actionneurs ´etant les canaux de communication entre les deux. Parmi l’ensemble des mod`eles de processus communiquant existant, celui qui se rapproche le plus du type de comminucation consid´er´e ici est le langage CSP (Communicating Sequential Processes) de Hoare [Hoa85]. En effet, les canaux de communication sont connus `a l’avance et fixes (le syst`eme ne cr´ee pas de nouveaux actionneurs ou capteurs dynamiquement). Nous avons donc choisi des instructions qui utilisent la mˆeme syntaxe que les instructions CSP : le “ ?” mod´elise la r´eception de valeur, le “ !”

l’envoi de message.

D´efinition 5.2 (Mod`ele de la partie discr`ete) Un mod`ele ∆ pour la partie discr`ete est un tripl´e (CV ar, m, P) tel que :

f ∈F X ∈V ar AExp : a ::= f |X |a+a|a−a|a×a|a/a

BExp : b ::= true|f alse|a=a|a≤a

Stmt : s ::= X :=a| s;s|if bthenselses|whileb dos|hs

u∈R+ X ∈V ar y∈CV ar k∈N c∈ {0,1} HStmt : hs ::= sens.y?X |act.k!c|waitu

Fig.5.2 – Syntaxe du langageH-SIMPLE.

1. CV ar est un ensemble de variables continues ; 2. m∈Nest le nombre d’actionneurs disponibles ;

3. P est un programme ´ecrit dans le langageH-SIMPLEn’utilisant que des variables continues deCV ar pour les actionssenset que des entiersk∈[1, m] pour les actionsact.

Exemple 5.3 (Probl`eme des deux r´eservoirs.) La partie discr`ete du probl`eme des deux r´eservoirs (c’est-`a-dire le contrˆoleur) s’encode tr`es simplement en H-SIMPLE (figure 5.3). Le contrˆoleur mesure les hauteurs d’eau h1 et h2 (lignes 4 et 5), puis, si les niveaux critiques ont ´et´e franchis, il actionne les vannes et d´eclenche une alarme indiquant un probl`eme critique dans le syst`eme. On a rajout´e dans le programme de la figure 5.3 deux fonctions d’anticipation (anticipate h1 et anticipate h2, lignes 14 et 15) qui permettent de pr´edire la hauteur d’eau dans chacun des deux r´eservoirs deux secondes dans le futur. On ne pr´ecise pas l’impl´ementation de cette fonction d’anticipation, on peut utiliser par exemple une extrapolation lin´eaire. En utili-sant les valeurs calcul´ees, on peut alors contrˆoler plus finement les niveaux d’eau en anticipant sur le temps de fermeture des vannes. On va donc ouvrir (ou fermer) les vannes si la valeur pr´edite d´epasse les seuils critiques (lignes 16 `a 23). En fin de boucle, l’instructionwaitpermet de simuler la dur´ee d’ex´ecution des instructions pr´ec´edentes (ici, 0.01 secondes).

5.2.3 Mod´ elisation du syst` eme hybride

Dans ce formalisme, un syst`eme hybride sera donc un couple (∆, κ) tel que ∆ est un mod`ele de la partie discr`ete etκun mod`ele de la partie continue. Nous imposerons n´eanmoins que les deux mod`eles partagent les mˆemes variables continues et les mˆemes actionneurs.

D´efinition 5.3 (Mod`ele du syst`eme hybride) Un mod`ele Ω pour le syst`eme hybride est un couple Ω = (∆, κ) tel que :

– ∆ =¡

CV ar, m, P¢

est un mod`ele de la partie discr`ete ; – κ=¡

V ar, m,{Fk}k∈Bm,(y0, k0

est un mod`ele de la partie continue ; – CV ar⊆V aret m≤m.

La derni`ere condition permet de s’assurer que le programme et le milieu continu sont compatibles, c’est-`a-dire que les variables sur lesquelles le programme peut agir (via une instructionsens ou act) sont bien des variables contrˆol´ees par le milieu continu.

Remarquons que ce mod`ele de syst`emes hybrides est conforme aux objectifs que nous nous

´etions fix´es :

5.2. DESCRIPTION DU MOD`ELE 83

1 int main ( ) {

2 s e n s o r x1 , x2 ; // c a p t e u r s 3 while ( t r u e ) {

4 s e n s . x1 ? h1 ; 5 s e n s . x2 ? h2 ; 6 i f ( h1>h1 max )

7 a c t . 1 ! 0 ; throw ( alarm ) ; 8 i f ( h2>h2 max )

9 a c t . 2 ! 0 ; throw ( alarm ) ; 10 i f ( h1<h1 min )

11 a c t . 1 ! 1 ; throw ( alarm ) ; 12 i f ( h2<h2 min )

13 a c t . 2 ! 1 ; throw ( alarm ) ;

14 h 1 i n 2 s e c s = a n t i c i p a t e h 1 ( h1 , h2 ) ; 15 h 2 i n 2 s e c s = a n t i c i p a t e h 2 ( h1 , h2 ) ; 16 i f ( h 1 i n 2 s e c s>h1 max )

17 a c t . 1 ! 0 ;

18 i f ( h 2 i n 2 s e c s>h2 max ) 19 a c t . 2 ! 0 ;

20 i f ( h 1 i n 2 s e c s<h1 min ) 21 a c t . 1 ! 1 ;

22 i f ( h 2 i n 2 s e c s<h2 min ) 23 a c t . 2 ! 1 ;

24 w a i t ( 0 . 0 1 ) ; // d e l a i

25 }

26 }

Fig. 5.3 – Encodage du syst`eme des deux r´eservoirs enH-SIMPLE.

1. une mod´elisation de la partie discr`ete ne demande que quelques ajouts aux programmes existants ;

2. les actions des capteurs et des actionneurs sont explicites, et la communication entre les parties discr`etes et continues se fait par envoi de messages ;

3. les sous-syst`emes discrets et continus peuvent ˆetre mod´elis´es s´epar´ement, dans des forma-lismes diff´erents.

La figure 1.4 peut maintenant ˆetre ´etendue pour rendre compte de notre nouveau mod`ele. La figure 5.4 d´ecrit plus pr´ecis´ement le fonctionnement des programmes embarqu´es.

Mod`ele continu F1

F2

· · · Fn 1

s

˙ y y

y

Capteurs

Programme discret

Etat ´ interne

y

Actionneurs cmd

Fig.5.4 – Fonctionnement d’un programme embarqu´e. La partie discr`ete est un programme ´ecrit enH-SIMPLEqui calcule, en fonction de son ´etat interne et des entr´ees provenant des capteurs, un r´esultat envoy´e aux actionneurs. Ce r´esultat, not´ecmdsur le sch´ema, ´equivaut `a choisir, parmi tous les modes disponibles, celui correspondant `a l’actionneur `a activer. Le milieu continu peut ˆetre vu comme une EDO `a commutateur repr´esent´ee par le bloc en haut du sch´ema. L’entr´ee de ce bloc est une commande venant des actionneurs, et la sortie est la valeur courantey de la solution de l’EDO. Cette valeur est transmise au capteur qui la transforme en le nombre flottant le plus proche, c’est-`a-dire y.

5.2.4 Construction de la s´ emantique du mod` ele

Nous cherchons `a d´efinir une s´emantique d´enotationnelle des syst`emes hybrides d´ecrits dans notre mod`ele. La difficult´e dans cette tˆache tient `a l’h´et´erog´en´eit´e du syst`eme et `a la s´eparation entre les parties discr`etes et continues. Le comportement de chacun des sous-syst`emes se calcule en effet de mani`ere tr`es diff´erente. Pour le programme, on utilise g´en´eralement une s´emantique d´enotationnelle comme pr´esent´e en section 2.2. Cette s´emantique d´efinit le comportement d’un programme comme une fonction calcul´ee `a l’aide d’un th´eor`eme de point fixe `a la Kleene, c’est-` a-dire un th´eor`eme portant sur des fonctions monotones dans un CPO. Pour l’´equation diff´erentielle,

5.3. S´EMANTIQUE D´ENOTATIONNELLE DE LA PARTIE CONTINUE 85

Dans le document The DART-Europe E-theses Portal (Page 82-88)