State Transition Table
Représenter la logique modale au format tabulaire
Bibliothèques :
Stateflow
Description
Le bloc State Transition Table représente une machine à états finis au format tabulaire. Au lieu d’ajouter des états et des transitions dans un diagramme Stateflow®, vous pouvez utiliser une table de transition d’état pour modéliser une machine à états dans un format concis et compact nécessitant une maintenance minimale des objets graphiques. Pour plus d’informations, veuillez consulter Model Finite State Machines Using State Transition Tables.
Pour implémenter une logique de contrôle, les blocs State Transition Table peuvent utiliser MATLAB® ou le C comme langage d’action. Pour plus d’informations, veuillez consulter Differences Between MATLAB and C as Action Language Syntax.
Exemples
Model Bang-Bang Controller by Using a State Transition Table
Use a state transition table to model a temperature regulator.
Ports
Entrée
Lorsque vous créez des données d’entrée dans la table de transition d’état Stateflow au moyen du volet Symbols, Stateflow crée un port d’entrée correspondant sur le bloc State Transition Table.
Types de données : single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | fixed point | enumerated | bus | string
Sortie
Lorsque vous créez des données de sortie dans la table de transition d’état Stateflow au moyen du volet Symbols, Stateflow crée un port de sortie correspondant sur le bloc State Transition Table.
Types de données : single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | fixed point | enumerated | bus | string
Paramètres
Pour modifier les paramètres de bloc de manière interactive, utilisez le Property Inspector. À partir de la barre d’outils Simulink®, dans l’onglet Simulation, dans la galerie Prepare, sélectionnez Property Inspector.
Remarque
Les blocs State Transition Table comportent également des paramètres de bloc Subsystem (Simulink) auxquels vous pouvez accéder en faisant un clic droit sur le bloc et en cliquant sur le bouton « Block Parameters »
. Toutefois, il est déconseillé de mettre à jour ces paramètres de bloc.
Méthode de mise à jour ou d’activation d’une table de transition d’état Stateflow, spécifiée comme Inherited, Discrete ou Continuous.
InheritedL’entrée issue du modèle Simulink détermine le moment où la table de transition d’état s’active au cours d’une simulation.
Si vous définissez des événements d’entrée pour la table de transition d’état, le signal issu du bloc Simulink connecté au port de déclenchement déclenche la table. Le signal Simulink peut être
Rising,FallingouEither(montant et descendant), ou en réponse à unFunction Call. Pour plus d’informations, veuillez consulter Activer les diagrammes Stateflow en envoyant des événements en entrée.Si vous ne définissez pas d’événements d’entrée, la table de transition d’état Stateflow hérite implicitement des déclencheurs du modèle Simulink. Ces événements implicites sont les pas d’échantillonnage discrets ou continus des signaux Simulink qui fournissent des entrées à la table. Si vous définissez des entrées de données, la table de transition d’état s’active à la vitesse d’entrée de données la plus rapide. Si vous ne définissez pas d’entrée de données pour la table de transition d’état, celle-ci s’active en fonction du comportement d’exécution de son sous-système parent.
DiscreteLa table de transition d’état Stateflow s’active lorsque le modèle Simulink génère un événement implicite à des intervalles de temps réguliers que vous spécifiez dans la propriété Sample Time de la table. Les autres blocs du modèle Simulink peuvent présenter différents pas d’échantillonnage.
ContinuousLa table de transition d’état Stateflow met à jour son état uniquement pendant les pas de temps majeurs. Elle calcule les sorties et les variables continues locales pendant les pas de temps majeurs et mineurs. La table peut enregistrer les passages par zéro, ce qui permet aux modèles Simulink d’échantillonner les tables de transition d’état Stateflow chaque fois qu’un changement d’état se produit. La table de transition d’état Stateflow calcule les dérivées pour les variables continues locales. Pour plus d’informations, veuillez consulter Continuous-Time Modeling in Stateflow.
Utilisation programmatique
Pour définir la valeur du paramètre de bloc de manière programmatique, accédez à l’objet Stateflow.StateTransitionTableChart du bloc et modifiez la propriété de l’objet en utilisant la notation pointée.
| Paramètre : | ChartUpdate |
| Valeurs : | "INHERITED" (par défaut) | "CONTINUOUS" | "DISCRETE" |
L’intervalle de temps par défaut est -1, ce qui indique que la table de transition d’état Stateflow hérite du pas d’échantillonnage de Simulink.
Spécifiez l’intervalle de temps auquel la table de transition d’état s’active pendant la simulation. La valeur par défaut indique que la table hérite du pas d’échantillonnage de Simulink. Pour plus d’informations sur la spécification du pas d’échantillonnage, veuillez consulter Spécifier les pas d'échantillonnage (Simulink).
N‘utilisez pas le paramètre Sample Time dans les paramètres du bloc Subsystem. Utilisez à la place le Property Inspector.
Dépendances
Pour activer ce paramètre, définissez Update method sur Discrete.
Utilisation programmatique
Pour définir la valeur du paramètre de bloc de manière programmatique, accédez à l’objet Stateflow.StateTransitionTableChart du bloc et modifiez la propriété de l’objet en utilisant la notation pointée.
| Paramètre : | SampleTime |
| Valeurs : | "-1" (par défaut) | string scalar | character vector |
| Types de données : | string | char |
Création ou non d’un port de sortie de données d’état actif pour la table de transition d’état. Pour plus d’informations, veuillez consulter Monitor State Activity Through Active State Data.
Utilisation programmatique
Pour définir la valeur du paramètre de bloc de manière programmatique, accédez à l’objet Stateflow.StateTransitionTableChart du bloc et modifiez la propriété de l’objet en utilisant la notation pointée.
| Paramètre : | HasOutputData |
| Valeurs : | false or 0 (par défaut) | true or 1 |
| Types de données : | logical |
Mode de surveillance des données de la sortie de l’état actif.
Dépendances
Pour activer ce paramètre, activez Create output for monitoring.
Utilisation programmatique
Pour définir la valeur du paramètre de bloc de manière programmatique, accédez à l’objet Stateflow.StateTransitionTableChart du bloc et modifiez la propriété de l’objet en utilisant la notation pointée.
| Paramètre : | OutputMonitoringMode |
| Valeurs : | "ChildActivity" (par défaut) | "LeafStateActivity" |
Nom de l’objet des données d’état actif pour la table de transition d’état.
Dépendances
Pour activer ce paramètre, activez Create output for monitoring.
Utilisation programmatique
Pour définir la valeur du paramètre de bloc de manière programmatique, accédez à l’objet Stateflow.StateTransitionTableChart du bloc et modifiez la propriété de l’objet en utilisant la notation pointée.
| Paramètre : | OutputPortName |
| Valeurs : | "State_Transition_TableMode" (par défaut) | string scalar | character vector |
| Types de données : | string | char |
Nom de l’objet des données d’état actif pour la table de transition d’état.
Dépendances
Pour activer ce paramètre, activez Create output for monitoring.
Utilisation programmatique
Pour définir la valeur du paramètre de bloc de manière programmatique, accédez à l’objet Stateflow.StateTransitionTableChart du bloc et modifiez la propriété de l’objet en utilisant la notation pointée.
| Paramètre : | EnumTypeName |
| Valeurs : | "State_Transition_TableModeType" (par défaut) | string scalar | character vector |
| Types de données : | string | char |
Définition manuelle ou non du type de données énumérées pour la sortie de données d’état actif. Pour plus d’informations, veuillez consulter Define State Activity Enumeration Type.
Dépendances
Pour activer ce paramètre, activez Create output for monitoring.
Utilisation programmatique
Pour définir la valeur du paramètre de bloc de manière programmatique, accédez à l’objet Stateflow.StateTransitionTableChart du bloc et modifiez la propriété de l’objet en utilisant la notation pointée.
| Paramètre : | DoNotAutogenerateEnum |
| Valeurs : | false or 0 (par défaut) | true or 1 |
| Types de données : | logical |
Avancé
Initialisation ou non de la configuration d’état de la table de transition d’état au temps zéro plutôt qu’au premier événement d’entrée. Pour plus d’informations, veuillez consulter Execution of a Chart at Initialization.
Utilisation programmatique
Pour définir la valeur du paramètre de bloc de manière programmatique, accédez à l’objet Stateflow.StateTransitionTableChart du bloc et modifiez la propriété de l’objet en utilisant la notation pointée.
| Paramètre : | ExecuteAtInitialization |
| Valeurs : | false or 0 (par défaut) | true or 1 |
| Types de données : | logical |
Saturation ou non des données de la table de transition d’état en cas de dépassement d’entier. Lorsque vous désactivez ce paramètre, les données de la table de transition d’état s’enroulent en cas de dépassement d’entier. Pour plus d’informations, veuillez consulter Handle Integer and Enumeration Overflow for Chart Data.
Utilisation programmatique
Pour définir la valeur du paramètre de bloc de manière programmatique, accédez à l’objet Stateflow.StateTransitionTableChart du bloc et modifiez la propriété de l’objet en utilisant la notation pointée.
| Paramètre : | SaturateOnIntegerOverflow |
| Valeurs : | true or 1 (par défaut) | false or 0 |
| Types de données : | logical |
Initialisation ou non des données de sortie à chaque activation de la table de transition d’état.
Lorsque vous sélectionnez ce paramètre, la table de transition d’état réinitialise ses valeurs de sortie à chaque fois qu’elle s’active et pas uniquement au temps 0. Elle les réinitialise chaque fois qu’elle est déclenchée par un appel de fonction, par un front d’impulsion ou par un compte à rebours. Si vous définissez une valeur initiale pour un objet de données de sortie, la sortie se réinitialise sur cette valeur. Sinon, la sortie se réinitialise sur zéro. Sélectionnez ce paramètre pour :
Faire en sorte que toutes les sorties soient définies dans chaque exécution de la table de transition d’état.
Empêcher le verrouillage des sorties. Autrement dit, bloquez les valeurs des sorties calculées lors d'exécutions précédentes.
Affecter une valeur initiale significative à toutes les sorties de la table de transition d’état.
Pour plus d’informations, veuillez consulter Initial value.
Utilisation programmatique
Pour définir la valeur du paramètre de bloc de manière programmatique, accédez à l’objet Stateflow.StateTransitionTableChart du bloc et modifiez la propriété de l’objet en utilisant la notation pointée.
| Paramètre : | InitializeOutput |
| Valeurs : | false or 0 (par défaut) | true or 1 |
| Types de données : | logical |
Support ou non des données de taille variable par la table de transition d’état. Pour plus d’informations, veuillez consulter Declare Variable-Size Data in Stateflow Charts.
Utilisation programmatique
Pour définir la valeur du paramètre de bloc de manière programmatique, accédez à l’objet Stateflow.StateTransitionTableChart du bloc et modifiez la propriété de l’objet en utilisant la notation pointée.
| Paramètre : | SupportVariableSizing |
| Valeurs : | true or 1 (par défaut) | false or 0 |
| Types de données : | logical |
Activation ou non de la sémantique des super pas pour la table de transition d’état. Sélectionnez ce paramètre pour permettre à la table d’effectuer plusieurs transitions à chaque pas de temps jusqu’à ce qu’elle atteigne un état stable. Cette option n’est pas toujours disponible. Pour plus d’informations, veuillez consulter Super Step Semantics.
Dépendances
Pour activer ce paramètre, définissez Update method sur Discrete.
Utilisation programmatique
Pour définir la valeur du paramètre de bloc de manière programmatique, accédez à l’objet Stateflow.StateTransitionTableChart du bloc et modifiez la propriété de l’objet en utilisant la notation pointée.
| Paramètre : | EnableNonTerminalStates |
| Valeurs : | false or 0 (par défaut) | true or 1 |
| Types de données : | logical |
Nombre maximal de transitions pouvant être effectuées en un seul super pas. Pour plus d’informations, veuillez consulter Super Step Semantics.
Dépendances
Pour activer ce paramètre, activez Enable super step semantics.
Utilisation programmatique
Pour définir la valeur du paramètre de bloc de manière programmatique, accédez à l’objet Stateflow.StateTransitionTableChart du bloc et modifiez la propriété de l’objet en utilisant la notation pointée.
| Paramètre : | NonTerminalMaxCounts |
| Valeurs : | 1000 (par défaut) | positive integer |
| Types de données : | single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 |
Action que Stateflow doit entreprendre si le super pas dépasse le nombre maximal de transitions possible en un super pas. Pour plus d’informations, veuillez consulter Super Step Semantics.
Dépendances
Pour activer ce paramètre, activez Enable super step semantics.
Utilisation programmatique
Pour définir la valeur du paramètre de bloc de manière programmatique, accédez à l’objet Stateflow.StateTransitionTableChart du bloc et modifiez la propriété de l’objet en utilisant la notation pointée.
| Paramètre : | NonTerminalUnstableBehavior |
| Valeurs : | "Proceed" (par défaut) | "Throw Error" |
Depuis R2023a
Traitement ou non, par la table de transition d’état, des données non scalaires présentant une dimension de longueur 1 comme étant de taille fixe. Lorsque vous sélectionnez ce paramètre, la table traite les données non scalaires présentant au moins une dimension de longueur 1 comme étant de taille fixe, que vous activiez ou non la propriété de données Variable size. Lorsque vous désactivez ce paramètre, la table traite les données non scalaires dont la propriété Variable size est activée comme étant de taille variable.
Utilisation programmatique
Pour définir la valeur du paramètre de bloc de manière programmatique, accédez à l’objet Stateflow.StateTransitionTableChart du bloc et modifiez la propriété de l’objet en utilisant la notation pointée.
| Paramètre : | TreatDimensionOfLengthOneAsFixedSize |
| Valeurs : | true or 1 (par défaut) | false or 0 |
| Types de données : | logical |
Langage d’action à utiliser pour programmer la table de transition d’état, spécifié en tant que MATLAB ou C. Pour plus d’informations, veuillez consulter Differences Between MATLAB and C as Action Language Syntax.
Utilisation programmatique
Pour définir la valeur du paramètre de bloc de manière programmatique, accédez à l’objet Stateflow.StateTransitionTableChart du bloc et modifiez la propriété de l’objet en utilisant la notation pointée.
| Paramètre : | ActionLanguage |
| Valeurs : | "MATLAB" (par défaut) | "C" |
Sémantique des machines à états implémentée par la table de transition d’état, spécifiée en tant que Classic, Mealy ou Moore. Pour plus d’informations, veuillez consulter Présentation des machines de Mealy et de Moore.
Utilisation programmatique
Pour définir la valeur du paramètre de bloc de manière programmatique, accédez à l’objet Stateflow.StateTransitionTableChart du bloc et modifiez la propriété de l’objet en utilisant la notation pointée.
| Paramètre : | StateMachineType |
| Valeurs : | "Classic" (par défaut) | "Mealy" | "Moore" |
Propriétés à virgule fixe
Signaux Simulink hérités à traiter en tant qu’objets Fixed-Point Designer™fi, spécifiés sous la forme de l’une des valeurs suivantes :
Fixed-point: la table de transition d’état traite toutes les entrées à virgule fixe comme des objetsfi.Fixed-point & Integer: la table de transition d’état traite toutes les entrées à virgule fixe et entières comme des objetsfi.
Ce paramètre s’applique uniquement aux tables de transition d’état utilisant MATLAB comme langage d’action.
Utilisation programmatique
Pour définir la valeur du paramètre de bloc de manière programmatique, accédez à l’objet Stateflow.StateTransitionTableChart du bloc et modifiez la propriété de l’objet en utilisant la notation pointée.
| Paramètre : | TreatAsFi |
| Valeurs : | "Fixed-point" (par défaut) | "Fixed-point & Integer" |
Propriétés d’objet fimath par défaut de la table de transition d’état, spécifiées sous la forme de l’une des valeurs suivantes :
Same as MATLAB: la table de transition d’état utilise les mêmes propriétés d’objetfimathque l’objetfimathpar défaut actuel. La zone de texte est grisée et affiche l'objetfimathglobal actuel en lecture seule.Specify other: spécifiez votre propre objetfimathdans la zone de texte.
Pour plus d’informations, veuillez consulter fimath Object Construction (Fixed-Point Designer).
Dépendances
Pour activer ce paramètre, définissez Action language sur MATLAB.
Utilisation programmatique
Pour définir la valeur du paramètre de bloc de manière programmatique, accédez à l’objet Stateflow.StateTransitionTableChart du bloc et modifiez la propriété de l’objet en utilisant la notation pointée.
| Paramètre : | EmlDefaultFimath |
| Valeurs : | "Same as MATLAB Default" (par défaut) | "Other:UserSpecified" |
Conseils
Certaines fonctionnalités de Simulink reposent sur Stateflow. C’est pourquoi l’installation Simulink contient du code correspondant au produit Stateflow. Il est possible d’ouvrir les modèles de la documentation Stateflow sans installer explicitement Stateflow. L’ouverture d’autres modèles utilisant des blocs Stateflow nécessite une licence Stateflow.
Capacités étendues
Génération de code C/C++
Générez du code C et C++ avec Simulink® Coder™.
HDL Coder™ propose des options de configuration supplémentaires qui affectent l’implémentation HDL et la logique synthétisée.
Il est possible d’utiliser un paramètre réglable dans un bloc State Transition Table destiné à la génération de code HDL. Pour plus de précisions, consultez Generate DUT Ports for Tunable Parameters (HDL Coder).
Ce bloc dispose d’une seule architecture HDL par défaut.
Pour générer un port de sortie dans le code HDL indiquant l’état actif, sélectionnez Create output for monitoring dans la fenêtre « Properties » du diagramme. La sortie a un type de données énuméré. Consultez Simplifier les diagrammes Stateflow en incorporant la sortie de l’état actif.
| ConstMultiplierOptimization | Optimisation par CSD (Canonical signed digit) ou CSD factorisé. La valeur par défaut est |
| ConstrainedOutputPipeline | Nombre de registres à placer aux sorties en déplaçant les délais existants dans votre design. Le pipelining distribué ne redistribue pas ces registres. La valeur par défaut est |
| DistributedPipelining | Distribution des registres de pipeline ou replanification des registres. La valeur par défaut est |
| InputPipeline | Nombre d’étages de pipeline d’entrée à insérer dans le code généré. Le pipelining distribué et le pipelining contraint des sorties peuvent déplacer ces registres. La valeur par défaut est |
| OutputPipeline | Nombre d’étages de pipeline de sortie à insérer dans le code généré. Le pipelining distribué et le pipelining contraint des sorties peuvent déplacer ces registres. La valeur par défaut est |
| ResetType | Supprime la génération de la logique de réinitialisation. La valeur par défaut est |
| SharingFactor | Nombre de ressources fonctionnellement équivalentes à mapper sur une seule ressource partagée. La valeur par défaut est 0. Consultez également Resource Sharing (HDL Coder). |
Le bloc prend part à ces optimisations HDL qui ont pour but d’optimiser la vitesse et l’espace.
Optimisation de la vitesse et de l’espace
| Optimisation | Description |
|---|---|
| Specify Distributed Pipelining Settings (HDL Coder) | Le pipelining distribué, également appelé resynchronisation des registres, est une optimisation de la vitesse qui déplace les retards existants d’un design afin de réduire la trajectoire critique tout en préservant le comportement fonctionnel. |
| Resource Sharing (HDL Coder) | Le partage des ressources est une optimisation d’espace par le biais de laquelle HDL Coder identifie plusieurs ressources aux fonctions équivalentes et les remplace par une ressource unique. |
| Understand Delay Balancing in HDL Coder (HDL Coder) | Lorsque des optimisations ou des options de mise en oeuvre de blocs font apparaître des retards sur la trajectoire critique d'un modèle, Delay Balancing détecte ces retards, puis les répercute sur les autres trajectoires. |
| Clock-Rate Pipelining (HDL Coder) | Le pipelining à fréquence d'horloge est un cadre d'optimisation dans HDL Coder qui permet à d'autres optimisations de vitesse et d’espace d'appliquer un temps de latence à la fréquence d'horloge. |
| Specify Adaptive Pipelining Settings (HDL Coder) | L'optimisation de type pipelining adaptatif crée des modèles ou des combinaisons de blocs avec des registres capables d’améliorer la fréquence d'horloge réalisable et de réduire l'espace utilisé sur les cartes FPGA en insérant des registres de pipelining dans les blocs de votre design. |
| Estimation de la trajectoire critique (HDL Coder) | Pour identifier rapidement la trajectoire critique la plus probable de votre design, utilisez la fonction Estimation de la trajectoire critique. L’estimation de la trajectoire critique permet d’accélérer le processus itératif d’identification de la trajectoire critique. Pour connaître les blocs définis dans l'estimation de la trajectoire critique, voir Characterized Blocks (HDL Coder). |
Pour connaître les restrictions applicables, consultez Introduction to Stateflow HDL Code Generation (HDL Coder).
Lorsque vous appliquez des optimisations, le bloc présente les limitations suivantes :
Un bloc State Transition Table dont la propriété State Machine Type est définie sur
Moorene supporte pas les optimisations HDL.Les optimisations HDL ne sont pas supportées pour le bloc qui possède un port Trigger.
Génération de code PLC
Générez du texte structuré avec Simulink® PLC Coder™.
Conversion en virgule fixe
Concevez et simulez des systèmes en virgule fixe avec Fixed-Point Designer™.
Historique des versions
Introduit dans R2012bPour convertir une table de transition d’état en diagramme Stateflow, utilisez la fonction d’objet convertToChart.
Pour définir la décomposition d’un état de la table de transition d’état comme parallèle, sélectionnez cet état. Dans l’onglet Modeling, sélectionnez Set State Decomposition > Parallel (AND).
La nouvelle propriété Treat dimensions of length 1 as fixed size vous permet de spécifier le mode de traitement des données non scalaires par les tables de transition d’état lorsqu’au moins une dimension présente une longueur de 1. Avant la version R2023a, les tables de transition d’état traitaient les données non scalaires présentant au moins une dimension de longueur 1 comme étant de taille fixe, que vous activiez ou non la propriété de données Variable size.
Exportez le contenu d’une table de transition d’état sous forme de tableau de structure en appelant la fonction d’objet exportAsStruct.
Le raccourci clavier permettant d’ajouter une colonne de transition à une table de transition d’état est désormais Ctrl+K. Dans les versions précédentes, le raccourci était Ctrl+M.
Voir aussi
Blocs
Fonctions
Objets
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Sélectionner un site web
Choisissez un site web pour accéder au contenu traduit dans votre langue (lorsqu'il est disponible) et voir les événements et les offres locales. D’après votre position, nous vous recommandons de sélectionner la région suivante : .
Vous pouvez également sélectionner un site web dans la liste suivante :
Comment optimiser les performances du site
Pour optimiser les performances du site, sélectionnez la région Chine (en chinois ou en anglais). Les sites de MathWorks pour les autres pays ne sont pas optimisés pour les visites provenant de votre région.
Amériques
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)
