La traduction de cette page n'est pas à jour. Cliquez ici pour voir la dernière version en anglais.
Planifier les actions du diagramme en utilisant une logique temporelle
Pour définir le comportement d’un diagramme Stateflow® en termes de durée de simulation, ajoutez des opérateurs de logique temporelle aux actions d’état et de transition du diagramme. Les opérateurs de logique temporelle sont des fonctions prédéfinies qui permettent d’indiquer la durée pendant laquelle un état reste actif ou une condition booléenne reste vraie. La logique temporelle permet de contrôler la temporisation des éléments suivants :
Transitions entre les états
Appels de fonction
Modifications des valeurs de variable
Pour plus d’informations, veuillez consulter Définir le comportement des diagrammes au moyen d’actions.
Opérateurs de logique temporelle
Les opérateurs de logique temporelle les plus courants en durée absolue sont after
, elapsed
et duration
.
Opérateur | Syntaxe | Description |
---|---|---|
| Renvoie | |
| Renvoie le nombre de secondes de simulation qui se sont écoulées depuis l’activation de l’état associé. | |
| Renvoie le nombre de secondes de simulation qui se sont écoulées depuis que la condition booléenne |
Chaque opérateur réinitialise la temporisation qui lui est associée à chaque fois que :
L’état contenant l’opérateur est réactivé.
L’état source de la transition contenant l’opérateur est réactivé.
La condition booléenne dans un opérateur
duration
devientfalse
.
Remarque
Certains opérateurs, tels que after
, supportent la logique temporelle qui s’appuie sur les événements et la logique temporelle en durée absolue en secondes (sec
), en millisecondes (msec
) et en microsecondes (usec
). Pour plus d’informations, veuillez consulter Control Chart Execution by Using Temporal Logic.
Exemple de logique temporelle
Cet exemple utilise la logique temporelle pour modéliser un contrôleur bang-bang qui régule la température interne d’une chaudière.
L’exemple se compose d’un diagramme de flux Stateflow et d’un sous-système Simulink®. Le diagramme Bang-Bang Controller compare la température actuelle de la chaudière à un point de consigne de référence et détermine si la chaudière doit être allumée. Le sous-système Boiler Plant Model modélise la dynamique dans la chaudière en augmentant ou en diminuant sa température en fonction de l’état du contrôleur. La température de la chaudière retourne ensuite dans le diagramme du contrôleur pour l’étape suivante de la simulation.
Le diagramme Bang-Bang Controller utilise l’opérateur de logique temporelle after
pour :
Régler la temporisation du cycle bang-bang lorsque la chaudière alterne entre activation et désactivation.
Contrôler une LED d’état qui clignote à des rythmes différents en fonction du mode de fonctionnement de la chaudière.
Les temporisateurs définissant le comportement des sous-systèmes de chaudière et de LED fonctionnent indépendamment les uns des autres sans bloquer ni perturber la simulation du contrôleur.
Temporisation du cycle bang-bang
Le diagramme Bang-Bang Controller contient deux sous-états qui représentent les deux modes de fonctionnement de la chaudière : On
et Off
. Le diagramme utilise les données de sortie de l’état actif boiler
pour indiquer quel sous-état est actif.
Les libellés sur les transitions entre les sous-états On
et Off
définissent le comportement du contrôleur bang-bang.
Transition | Libellé | Description |
---|---|---|
De On vers Off | after(20,sec) | Basculement vers l’état Off après 20 secondes à l’état On . |
De Off vers On | after(40,sec)[cold()] | Lorsque la température de la chaudière est inférieure au point de consigne de référence déterminé par la fonction graphique cold() , basculement vers l’état On après au moins 40 secondes à l’état Off . |
De On vers Off | turnOff | Lorsque la logique de transition interne de l’état On exige que la chaudière s’éteigne parce que sa température est égale ou supérieure au point de consigne de référence, basculement vers l’état Off . |
Du fait de ces actions de transition, la temporisation du cycle bang-bang dépend de la température actuelle de la chaudière. Au début de la simulation, lorsque la chaudière est froide, le contrôleur reste 40 secondes dans l’état Off
et 20 secondes à l’état On
. Au bout de t = 478 secondes, la température de la chaudière atteint le point de référence. Dès lors, la chaudière ne doit compenser que la chaleur perdue à l’état Off
. Le contrôleur reste ensuite 40 secondes dans l’état Off
et 4 secondes à l’état On
.
Temporisation de la LED d’état
L’état Off
contient un sous-état Flash
avec une transition en boucle automatique protégée par l’action after(5,sec)
. Du fait de cette transition, lorsque l’état Off
est actif, le sous-état exécute son action d’entrée et appelle la fonction graphique flash_LED
toutes les 5 secondes. La fonction bascule la valeur du symbole de sortie LED
entre 0 et 1.
L’état On
appelle la fonction graphique flash_LED
sous la forme d’une action d’état de type en,du
. Lorsque l’état On
est actif, il appelle la fonction à chaque pas de temps de la simulation (ici, toutes les secondes), basculant la valeur du symbole de sortie LED
entre 0 et 2.
Par conséquent, la temporisation de la LED d’état dépend du mode de fonctionnement de la chaudière. Par exemple :
Entre t = 0 et t = 40 secondes, la chaudière est éteinte et le signal
LED
alterne entre 0 et 1 toutes les 5 secondes.Entre t = 40 et t = 60 secondes, la chaudière est allumée et le signal
LED
alterne entre 0 et 2 toutes les secondes.Entre t = 60 et t = 100 secondes, la chaudière est à nouveau éteinte et le signal
LED
alterne entre 0 et 1 toutes les 5 secondes.
Explorer l’exemple
Utilisez une logique temporelle supplémentaire pour étudier comment la temporisation du cycle bang-bang évolue lorsque la température de la chaudière s’approche du point de consigne de référence.
Saisissez de nouvelles actions d’état qui appellent les opérateurs
elapsed
etduration
.À l’état
On
, utilisezTimer1
comme durée pendant laquelle l’étatOn
est actif :en,du,ex: Timer1 = elapsed(sec)
À l’état
Off
, utilisezTimer2
comme durée pendant laquelle la température de la chaudière est égale ou supérieure au point de consigne de référence :en,du,ex: Timer2 = duration(temp>=reference)
Le libellé
en,du,ex
indique que ces actions se produisent lorsque l’état correspondant est actif.Dans le volet Symbols, cliquez sur Resolve Undefined Symbols
. L’éditeur Stateflow résout les symboles
Timer1
etTimer2
en tant que données de sortie.
Activez l'activité de log de
Timer1
etTimer2
. Dans le volet Symbols, sélectionnez chaque symbole. Dans le Property Inspector sous Logging, sélectionnez ensuite Log signal data.Dans l’onglet Simulation, cliquez sur Run
.
Dans l’onglet Simulation, sous Review Results, cliquez sur Data Inspector
.
Dans le Simulation Data Inspector, affichez les signaux
boiler
etTimer1
dans le même ensemble d’axes. Le tracé montre que :La phase
On
du cycle bang-bang dure généralement 20 secondes lorsque la chaudière est froide et 4 secondes lorsqu’elle est chaude.La première fois que la chaudière atteint la température de référence, le cycle est interrompu prématurément et le contrôleur reste à l’état
On
pendant 18 secondes seulement.Lorsque la chaudière est chaude, le premier cycle est légèrement plus court que les cycles ultérieurs, car le contrôleur reste à l’état
On
pendant 3 secondes seulement.
Dans le Simulation Data Inspector, affichez les signaux
boiler
etTimer2
dans le même ensemble d’axes. Le tracé montre que :Une fois que la chaudière est chaude, 9 secondes lui sont généralement nécessaire pour refroidir lors de la phase
Off
du cycle bang-bang.La première fois que la chaudière atteint la température de référence, il lui faut deux fois plus de temps et plus pour refroidir (19 secondes).
Le cycle plus court et le temps de refroidissement plus long sont une conséquence de la hiérarchie des sous-états de l’état On
. Lorsque la chaudière atteint la température de référence pour la première fois, le basculement de HIGH
vers NORM
maintient le régulateur actif pendant un pas de temps supplémentaire : la chaudière chauffe plus que la normale. Lors des cycles ultérieurs, la phase On
commence avec un sous-état NORM
actif du fait de la jonction d'historisation . Le régulateur s’éteint alors immédiatement une fois que la chaudière a atteint la température de référence, ce qui entraîne un refroidissement de cette dernière.