La traduction de cette page n'est pas à jour. Cliquez ici pour voir la dernière version en anglais.
Chart
Implémenter une logique de contrôle avec une machine à états finis
Bibliothèques :
Stateflow
Description
Le bloc Chart est une représentation graphique d’une machine à états finis basée sur un diagramme de transition d’état. Dans un diagramme Stateflow®, les états et les transitions sont les blocs de base d’un système de logique séquentielle. Les états correspondent aux modes de fonctionnement et les transitions représentent les chemins entre les états. Pour plus d’informations, veuillez consulter Model Finite State Machines by Using Stateflow Charts.
Pour implémenter une logique de contrôle, les diagrammes Stateflow peuvent utiliser MATLAB® ou C comme langage d’action. Pour plus d’informations, veuillez consulter Differences Between MATLAB and C as Action Language Syntax.
Les propriétés du diagramme Stateflow spécifient la manière dont il s’interface avec le modèle Simulink®. Vous pouvez modifier les propriétés du diagramme dans Property Inspector, le Model Explorer ou la boîte de dialogue « Chart properties ». Pour plus d’informations, veuillez consulter Specify Properties for Stateflow Charts. Vous pouvez également modifier les propriétés du diagramme de manière programmatique en utilisant les objets Stateflow.Chart
. Pour plus d’informations sur l’interface programmatique de Stateflow, consultez Overview of the Stateflow API.
Exemples
Ports
Entrée
Port_1 — Port d’entrée
scalaire | vecteur | matrice
Lorsque vous créez des données d'entrée dans le volet Symbols, Stateflow crée des ports d’entrée. Les données d’entrée ont un port d’entrée correspondant qui s’affiche une fois que vous les avez créées.
Types de données : single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| Boolean
| fixed point
| enumerated
| bus
| string
Sortie
Port_1 — Port de sortie
scalaire | vecteur | matrice
Lorsque vous créez des données de sortie dans le volet Symbols, Stateflow crée des ports de sortie. Les données de sortie ont un port de sortie correspondant qui s’affiche une fois que vous les avez créées.
Types de données : single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| Boolean
| fixed point
| enumerated
| bus
| string
Paramètres
Les paramètres de l’onglet « Code Generation » nécessitent Simulink Coder™ ou Embedded Coder®.
Paramètres principaux
Afficher les étiquettes des ports — Sélectionner la manière d’afficher les étiquettes des ports
FromPortIcon
(par défaut) | none
| FromPortBlockName
| SignalName
Sélectionnez la manière d’afficher les étiquettes des ports sur l’icône du bloc Chart.
none
N’affiche pas les étiquettes des ports.
FromPortIcon
Si l’icône du port correspondant indique le nom d’un signal, cette option affiche le nom du signal sur le bloc Chart. Sinon, elle affiche le nom du bloc du port.
FromPortBlockName
Affiche le nom du bloc de port correspondant sur le bloc Chart.
SignalName
Si le nom du signal existe, affiche le nom du signal connecté au port sur le bloc Chart. Sinon, affiche le nom du bloc de port correspondant.
Utilisation programmatique
Paramètre : ShowPortLabels |
Type : string scalar ou vecteur de caractères |
Valeur : "none" "FromPortIcon" | "FromPortBlockName" | "SignalName" |
Valeur par défaut : "FromPortIcon" |
Autorisations d’accès en lecture/écriture — Sélectionner l’accès au contenu d’un diagramme
ReadWrite
(par défaut) | ReadOnly
| NoReadOrWrite
Contrôlez l’accès des utilisateurs au contenu du diagramme.
ReadWrite
Permet d’ouvrir et de modifier le contenu du diagramme.
ReadOnly
Permet d’ouvrir le diagramme mais pas de le modifier. Si le diagramme réside dans une bibliothèque de blocs, vous pouvez créer et ouvrir des liens vers celui-ci et en créer et modifier des copies locales, mais vous ne pouvez pas modifier les autorisations ni le contenu de l’instance de bibliothèque d’origine.
NoReadOrWrite
Désactive l’ouverture et la modification du diagramme. Si le diagramme réside dans une bibliothèque, vous pouvez créer des liens vers celui-ci dans un modèle mais vous ne pouvez pas l’ouvrir, le modifier, en créer des copies locales ni modifier les autorisations.
Utilisation programmatique
Paramètre : Permissions |
Type : string scalar ou vecteur de caractères |
Valeur : "ReadWrite" | "ReadOnly" | "NoReadOrWrite" |
Valeur par défaut : "ReadWrite" |
Minimiser les occurrences de boucles algébriques — Contrôler l’élimination des boucles algébriques
off (par défaut) | on
- off
N’essaie pas d’éliminer les éventuelles boucles algébriques artificielles qui contiennent le sous-diagramme atomique.
- on
Essaie d’éliminer les éventuelles boucles algébriques artificielles qui contiennent le sous-diagramme atomique.
Utilisation programmatique
Paramètre : MinAlgLoopOccurrences |
Type : string scalar ou vecteur de caractères |
Valeur : "off" | "on" |
Valeur par défaut : "off" |
Pas d’échantillonnage — Spécifier un intervalle de temps
-1
(par défaut) | [Ts 0]
Spécifiez si tous les blocs de ce diagramme doivent s’exécuter à la même fréquence ou s’ils peuvent s’exécuter à des fréquences différentes.
Si les blocs du diagramme peuvent s’exécuter à des fréquences différentes, spécifiez le pas d’échantillonnage du diagramme comme étant hérité (
-1
).Si tous les blocs doivent s’exécuter à la même fréquence, spécifiez le pas d’échantillonnage correspondant à cette fréquence en tant que valeur du paramètre Sample time.
Si l’un des blocs du diagramme indique un pas d’échantillonnage différent (autre que
-1
ouinf
), Simulink affiche un message d’erreur lorsque vous mettez à jour ou simulez le modèle. Supposons par exemple que tous les blocs du diagramme doivent s’exécuter5
fois par seconde. Pour garantir cette fréquence, définissez le pas d’échantillonnage du diagramme à0.2
. Dans cet exemple, si l’un des blocs du diagramme indique un pas d’échantillonnage autre que0.2
,-1
ouinf
, Simulink affiche une erreur lorsque vous mettez à jour ou simulez le modèle.
-1
Spécifie un pas d’échantillonnage hérité. Si les blocs du diagramme peuvent s’exécuter à des fréquences différentes, utilisez ce pas d’échantillonnage.
[Ts 0]
Spécifie un pas d’échantillonnage périodique.
Utilisation programmatique
Paramètre : SystemSampleTime |
Type : string scalar ou vecteur de caractères |
Valeur : "-1" | "[Ts 0]"
|
Valeur par défaut : "-1" |
Génération de code
Packaging de fonction — Sélectionner le format du code
Auto
(par défaut) | Inline
| Nonreusable function
| Reusable function
Sélectionnez le format du code généré pour un sous-diagramme atomique (non virtuel).
Auto
Simulink Coder choisit le format optimal pour votre système selon le type et le nombre d’instances de diagramme existant dans le modèle.
Inline
Simulink Coder intègre directement le diagramme dans le code de manière inconditionnelle.
Nonreusable function
Simulink Coder génère explicitement une fonction distincte dans un fichier séparé. Les diagrammes configurés avec ce paramètre génèrent des fonctions pouvant contenir des arguments qui dépendent du paramètre Function interface de Code Generation (Simulink). Vous pouvez nommer la fonction et le fichier générés en utilisant respectivement les paramètres Function name et File name (no extension) de Code Generation (Simulink). Ces fonctions ne sont pas réentrantes.
Reusable function
Simulink Coder génère une fonction avec des arguments permettant de réutiliser le code du diagramme lorsqu’un modèle contient plusieurs instances de ce dernier.
Cette option génère une fonction avec des arguments permettant de réutiliser le code du diagramme dans le code généré par une hiérarchie de références de modèles contenant plusieurs instances d’un diagramme dans les modèles référencés. Dans ce cas, le diagramme doit se trouver dans une bibliothèque.
Conseils
Si vous souhaitez représenter plusieurs instances d’un diagramme sous la forme d’une seule fonction réutilisable, vous pouvez attribuer la désignation
Auto
ouReusable function
à chacune d’elles. Il est préférable d’utiliser une seule de ces désignations car l’utilisation des deux entraîne la création de deux fonctions réutilisables : une pour chaque désignation. Les conséquences de ces choix ne sont différentes que si la réutilisation est impossible. La sélection de l’optionAuto
ne permet pas de contrôler le nom de la fonction ou du fichier pour le code du diagramme.Les options
Reusable function
etAuto
permettent toutes les deux de déterminer s’il existe plusieurs instances d’un diagramme et si le code peut être réutilisé. Les options se comportent différemment lorsqu’il est impossible de réutiliser le code. Dans ce cas, le réglageAuto
intègre directement le code ou, si les circonstances ne permettent pas l’intégration directe, génère des fonctions distinctes pour chaque instance du diagramme.Si vous sélectionnez
Reusable function
alors que le code généré est soumis à la gestion de version, définissez File name options surUse subsystem name
,Use function name
ouUser specified
. Sinon, le nom des fichiers de code change chaque fois que vous modifiez le modèle, ce qui empêche la gestion de version de ces fichiers.
Dépendance
Ce paramètre nécessite Simulink Coder.
La définition de ce paramètre sur
Nonreusable function
ouReusable function
active les paramètres suivants :Function name options
File name options
Section de mémoire pour les fonctions d’initialisation/d’arrêt (nécessite Embedded Coder et un fichier cible système basé sur ERT)
Section de mémoire pour les fonctions d’exécution (nécessite Embedded Coder et un fichier cible système basé sur ERT)
La définition de ce paramètre sur
Nonreusable function
active Function with separate data (nécessite une licence Embedded Coder et un fichier cible système basé sur ERT).
Utilisation programmatique
Paramètre : RTWSystemCode |
Type : string scalar ou vecteur de caractères |
Valeur : "Auto" | "Inline" | "Nonreusable function" | "Reusable function" |
Valeur par défaut : "Auto" |
Capacités étendues
Génération de code C/C++
Générez du code C et C++ avec Simulink® Coder™.
Génération de code HDL
Générez du code VHDL, Verilog et SystemVerilog pour les designs FPGA et ASIC avec HLD Coder™.
HDL Coder™ propose des options de configuration supplémentaires qui affectent l’implémentation HDL et la logique synthétisée.
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 Simplify Stateflow Charts by Incorporating Active State Output.
Pour insérer un registre de sortie qui retarde la sortie du diagramme d’un cycle de simulation, utilisez la propriété de bloc OutputPipeline (HDL Coder).
ClockDrivenOutput | Active les sorties pilotées par l’horloge pour éviter qu’elles ne soient pilotées par la logique combinatoire et pour permettre leur mise à jour immédiate lorsque le signal et l’état de l’horloge changent. La valeur par défaut est |
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 |
InstantiateFunctions | Génère une |
LoopOptimization | Permet de dérouler des boucles, les streamer ou ne pas les optimiser. La valeur par défaut est |
MapPersistentVarsToRAM | Mappe les tableaux persistants sur la RAM. 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). |
VariablesToPipeline | Avertissement Il est déconseillé d’utiliser Insère un registre de pipeline à la sortie de la ou des variables MATLAB spécifiées. Spécifiez la liste de variables sous forme de vecteur de caractères en séparant les variables par des espaces. |
Ce bloc supporte la génération de code pour les signaux complexes.
Pour connaître les restrictions applicables à l’utilisation des diagrammes, consultez Introduction to Stateflow HDL Code Generation (HDL Coder).
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 avant R2006aR2023b: ConvertToChart et ConverToSTT
Pour convertir un diagramme en table de transition d’état, utilisez la fonction d’objet convertToSTT
.
Commande MATLAB
Vous avez cliqué sur un lien qui correspond à cette commande MATLAB :
Pour exécuter la commande, saisissez-la dans la fenêtre de commande de MATLAB. Les navigateurs web ne supportent pas les commandes MATLAB.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- 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)