Main Content

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érateurSyntaxeDescription

after

after(n,sec)

Renvoie true si n secondes de simulation se sont écoulées depuis l’activation de l’état associé. Sinon, l’opérateur renvoie false.

elapsed

elapsed(sec)

Renvoie le nombre de secondes de simulation qui se sont écoulées depuis l’activation de l’état associé.

duration

duration(C)

Renvoie le nombre de secondes de simulation qui se sont écoulées depuis que la condition booléenne C est devenue true.

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 devient false.

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.

Chart modeling a bang-bang controller. Subcharts appear as opaque boxes to hide the low-level details of the chart.

Les libellés sur les transitions entre les sous-états On et Off définissent le comportement du contrôleur bang-bang.

TransitionLibelléDescription
De On vers Offafter(20,sec)Basculement vers l’état Off après 20 secondes à l’état On.
De Off vers Onafter(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 OffturnOffLorsque 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.

Simulation Data Inspector showing the output of the chart.

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.

The Off substate.

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.

The On substate.

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.

Simulation Data Inspector showing the output of the chart.

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.

  1. Saisissez de nouvelles actions d’état qui appellent les opérateurs elapsed et duration.

    • À l’état On, utilisez Timer1 comme durée pendant laquelle l’état On est actif :

      en,du,ex: Timer1 = elapsed(sec)

    • À l’état Off, utilisez Timer2 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.

  2. Dans le volet Symbols, cliquez sur Resolve Undefined Symbols . L’éditeur Stateflow résout les symboles Timer1 et Timer2 en tant que données de sortie .

  3. Activez l'activité de log de Timer1 et Timer2. Dans le volet Symbols, sélectionnez chaque symbole. Dans le Property Inspector sous Logging, sélectionnez ensuite Log signal data.

  4. Dans l’onglet Simulation, cliquez sur Run .

  5. Dans l’onglet Simulation, sous Review Results, cliquez sur Data Inspector .

  6. Dans le Simulation Data Inspector, affichez les signaux boiler et Timer1 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.

    Simulation Data Inspector showing the output of the chart.

  7. Dans le Simulation Data Inspector, affichez les signaux boiler et Timer2 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).

    Simulation Data Inspector showing the output of the chart.

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.

Sujets associés