Chart
Implementieren von Steuerlogik mit endlicher Zustandsmaschine
Bibliotheken:
Stateflow
Beschreibung
Der Block Chart (Diagramm) ist die grafische Darstellung einer endlichen Zustandsmaschine, die auf einem Zustandsübergangsdiagramm basiert. In einem Stateflow®-Diagramm bilden Zustände und Übergänge die Grundbausteine eines sequentiellen Logiksystems. Zustände entsprechen den Betriebsmodi und Übergänge repräsentieren die Wechsel zwischen den Zuständen. Weitere Informationen finden Sie unter Model Finite State Machines by Using Stateflow Charts.
Zum Implementieren einer Steuerlogik können Stateflow-Diagramme MATLAB® oder C als Aktionssprache verwenden. Weitere Informationen finden Sie unter Differences Between MATLAB and C as Action Language Syntax.
Die Diagrammeigenschaften legen fest, wie Ihr Stateflow-Diagramm sich mit dem Simulink®-Modell verbindet. Sie können die Diagrammeigenschaften im Property Inspector, dem Model Explorer oder im Dialogfenster „Chart properties“ ändern. Weitere Informationen finden Sie unter Specify Properties for Stateflow Charts. Alternativ dazu können Sie die Diagrammeigenschaften auch programmatisch mithilfe von Stateflow.Chart
-Objekten ändern. Weitere Informationen über die Stateflow-Programmierschnittstelle finden Sie unter Overview of the Stateflow API.
Beispiele
Ports
Eingang
Port_1 — Eingangsport
Skalar | Vektor | Matrix
Wenn Sie Eingangsdaten im Fensterbereich Symbols erzeugen, erstellt Stateflow Eingangsports. Die von Ihnen erzeugten Eingangsdaten haben einen entsprechenden Eingangsport, der erscheint, nachdem Sie die Daten erzeugt haben.
Datentypen: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| Boolean
| fixed point
| enumerated
| bus
| string
Ausgang
Port_1 — Ausgangsport
Skalar | Vektor | Matrix
Wenn Sie Ausgangsdaten im Fensterbereich Symbols erzeugen, erstellt Stateflow Ausgangsports. Die von Ihnen erzeugten Ausgangsdaten haben einen entsprechenden Ausgangsport, der erscheint, nachdem Sie die Daten erzeugt haben.
Datentypen: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| Boolean
| fixed point
| enumerated
| bus
| string
Parameter
Parameter auf der Registerkarte „Code Generation“ erfordern den Simulink Coder™ oder Embedded Coder®.
Haupt
Portkennzeichnungen anzeigen — Auswählen, wie Portkennzeichnungen angezeigt werden sollen
FromPortIcon
(Standardeinstellung) | none
| FromPortBlockName
| SignalName
Wählen Sie, wie Portkennzeichnungen auf dem Chart-Blocksymbol angezeigt werden sollen.
none
Portkennzeichnungen nicht anzeigen.
FromPortIcon
Wenn das entsprechende Portsymbol einen Signalnamen anzeigt, den Signalnamen auf dem Chart-Block anzeigen. Andernfalls den Namen des Portblocks anzeigen.
FromPortBlockName
Den Namen des entsprechenden Portblocks auf dem Chart-Block anzeigen.
SignalName
Wenn ein Signalname vorhanden ist, den Namen des mit dem Port verbundenen Signals auf dem Chart-Block anzeigen. Andernfalls den Namen des entsprechenden Portblocks anzeigen.
Programmatische Verwendung
Parameter: ShowPortLabels |
Typ: skalare Zeichenfolge oder Zeichenvektor |
Wert: "none" | "FromPortIcon" | "FromPortBlockName" | "SignalName" |
Standard: "FromPortIcon" |
Lese-/Schreibrechte — Zugriff auf den Inhalt des Diagramms auswählen
ReadWrite
(Standardeinstellung) | ReadOnly
| NoReadOrWrite
Regeln Sie den Benutzerzugriff auf den Inhalt des Diagramms.
ReadWrite
Ermöglicht das Öffnen und Bearbeiten von Diagramminhalten.
ReadOnly
Ermöglicht das Öffnen, aber nicht das Bearbeiten des Diagramms. Wenn sich das Diagramm in einer Blockbibliothek befindet, können Sie Verknüpfungen zu dem Diagramm erstellen und öffnen. Außerdem können Sie lokale Kopien des Diagramms erstellen und bearbeiten, aber Sie können nicht die Berechtigungen ändern oder den Inhalt der ursprünglichen Bibliotheksinstanz bearbeiten.
NoReadOrWrite
Deaktiviert das Öffnen oder Bearbeiten von Diagrammen. Wenn sich das Diagramm in einer Bibliothek befindet, können Sie Verknüpfungen zu dem Diagramm in einem Modell erstellen, aber Sie können das Diagramm nicht öffnen, bearbeiten, Berechtigungen ändern oder lokale Kopien davon erstellen.
Programmatische Verwendung
Parameter: Permissions |
Typ: skalare Zeichenfolge oder Zeichenvektor |
Wert: "ReadWrite" | "ReadOnly" | "NoReadOrWrite" |
Standard: "ReadWrite" |
Minimieren des Auftretens algebraischer Schleifen — Regeln der Entfernung algebraischer Schleifen
aus (Standardeinstellung) | ein
- aus
Versucht nicht, künstliche algebraische Schleifen zu entfernen, die das atomare Unterdiagramm einschließen.
- ein
Versucht, alle künstlichen algebraischen Schleifen zu entfernen, die das atomare Unterdiagramm einschließen.
Programmatische Verwendung
Parameter: MinAlgLoopOccurrences |
Typ: skalare Zeichenfolge oder Zeichenvektor |
Wert: "off" | "on" |
Standard: "off" |
Abtastzeit — Zeitintervall angeben
-1
(Standardeinstellung) | [Ts 0]
Geben Sie an, ob alle Blöcke in diesem Diagramm mit der gleichen Geschwindigkeit ausgeführt werden müssen oder mit unterschiedlichen Geschwindigkeiten ausgeführt werden können.
Wenn die Blöcke im Diagramm mit unterschiedlichen Geschwindigkeiten ausgeführt werden können, geben Sie die Abtastzeit des Diagramms als vererbt an (
-1
).Wenn alle Blöcke mit der gleichen Geschwindigkeit ausgeführt werden müssen, geben Sie die dieser Geschwindigkeit entsprechende Abtastzeit als Wert des Parameters Sample time an.
Wenn einer der Blöcke im Diagramm eine andere Abtastzeit (als
-1
oderinf
) angibt, zeigt Simulink eine Fehlermeldung an, wenn Sie das Modell aktualisieren oder simulieren. Nehmen wir zum Beispiel an, dass alle Blöcke in der Tabelle5
Mal pro Sekunde ausgeführt werden müssen. Um diese Zeit sicherzustellen, geben Sie für die Abtastzeit des Diagramms0.2
an. Wenn in diesem Beispiel einer der Blöcke im Diagramm eine andere Abtastzeit als0.2
,-1
oderinf
angibt, zeigt Simulink einen Fehler an, wenn Sie das Modell aktualisieren oder simulieren.
-1
Gibt die vererbte Abtastzeit an. Wenn die Blöcke im Diagramm mit unterschiedlichen Geschwindigkeiten ausgeführt werden können, verwenden Sie diese Abtastzeit.
[Ts 0]
Gibt die periodische Abtastzeit an.
Programmatische Verwendung
Parameter: SystemSampleTime |
Typ: skalare Zeichenfolge oder Zeichenvektor |
Wert: "-1" | "[Ts 0]"
|
Standard: "-1" |
Codegenerierung
Funktionspackaging — Code-Format auswählen
Auto
(Standardeinstellung) | Inline
| Nonreusable function
| Reusable function
Wählen Sie das generierte Codeformat für ein atomares (nicht-virtuelles) Unterdiagramm.
Auto
Simulink Coder wählt das optimale Format für Ihr System anhand des Typs und der Anzahl der Instanzen des Diagramms, die im Modell vorhanden sind.
Inline
Simulink Coder führt den Inline-Vorgang des Diagramms bedingungslos aus.
Nonreusable function
Simulink Coder erzeugt explizit eine separate Funktion in einer separaten Datei. Diagramme mit dieser Einstellung erzeugen Funktionen, die je nach Einstellung der Funktionsschnittstelle in der Parametereinstellung Code Generation (Simulink) Argumente haben können. Sie können die erzeugte Funktion und die Datei mit den Parametern Function name und File name (no extension) benennen, jeweils aus Code Generation (Simulink). Diese Funktionen sind nicht reentrant (wiedereintrittsfähig).
Reusable function
Simulink Coder generiert eine Funktion mit Argumenten, die die Wiederverwendung von Diagrammcode ermöglicht, wenn ein Modell mehrere Instanzen des Diagramms enthält.
Diese Option generiert eine Funktion mit Argumenten, die die Wiederverwendung von Diagrammcode im generierten Code einer Modellreferenzhierarchie ermöglicht, die mehrere Instanzen eines Diagramms über referenzierte Modelle hinweg enthält. In diesem Fall muss sich das Diagramm in einer Bibliothek befinden.
Tipps
Wenn Sie mehrere Instanzen eines Diagramms als eine wiederverwendbare Funktion darstellen wollen, können Sie jede einzelne als
Auto
oder alsReusable function
bezeichnen. Es empfiehlt sich, nur eine davon zu verwenden, da durch die Verwendung beider Funktionen zwei wiederverwendbare Funktionen entstehen, eine für jede Bezeichnung. Die Ergebnisse dieser Entscheidungen unterscheiden sich nur dann, wenn eine Wiederverwendung nicht möglich ist. Wenn SieAuto
wählen, können Sie die Funktion oder den Dateinamen für den Diagrammcode nicht steuern.Die Optionen
Reusable function
undAuto
geben vor, ob mehrere Instanzen eines Diagramms existieren und ob der Code wiederverwendet werden kann. Die Optionen verhalten sich unterschiedlich, wenn der Code nicht wiederverwendet werden kann. In diesem Fall liefertAuto
Inline-Code oder, wenn die Umstände eine Inline-Ersetzung nicht zulassen, separate Funktionen für jede Diagramminstanz.Wenn Sie die Option
Reusable function
auswählen, während sich Ihr generierter Code unter der Versionsverwaltung befindet, setzen Sie File name options aufUse subsystem name
,Use function name
oderUser specified
. Andernfalls ändern sich die Namen Ihrer Codedateien bei jeder Änderung Ihres Modells, wodurch keine Versionsverwaltung Ihrer Dateien möglich ist.
Abhängigkeit
Dieser Parameter erfordert den Simulink Coder.
Wenn Sie diesen Parameter auf
Nonreusable function
oderReusable function
setzen, werden die folgenden Parameter aktiviert:Function name options
File name options
Speicherabschnitt für Funktionen zum Initialisieren/Beenden (erfordert Embedded Coder und eine ERT-basierte System-Zieldatei)
Speicherabschnitt für Funktionen zum Ausführen (erfordert Embedded Coder und eine ERT-basierte System-Zieldatei)
Wenn Sie diesen Parameter auf
Nonreusable function
setzen, wird Function with separate data aktiviert (erfordert eine Lizenz für Embedded Coder und eine ERT-basierte System-Zieldatei).
Programmatische Verwendung
Parameter: RTWSystemCode |
Typ: skalare Zeichenfolge oder Zeichenvektor |
Wert: "Auto" | "Inline" | "Nonreusable function" | "Reusable function" |
Standard: "Auto" |
Erweiterte Fähigkeiten
C/C++ Codegenerierung
Generieren von C und C++ Code mit Simulink® Coder™.
HDL-Codegenerierung
Generieren von Verilog und VHDL Code für FPGA- und ASIC-Designs mit HDL Coder™.
HDL Coder™ bietet zusätzliche Konfigurationsoptionen, die sich auf die HDL-Implementierung und die synthetisierte Logik auswirken.
Dieser Block verfügt über eine Standard-HDL-Architektur.
Zum Erzeugen eines Ausgangsports im HDL-Code, der den aktiven Zustand anzeigt, wählen Sie im Fenster „Properties“ des Diagramms Create output for monitoring. Die Ausgabe ist ein Aufzählungsdatentyp. Siehe Simplify Stateflow Charts by Incorporating Active State Output.
Mit der Blockeigenschaft OutputPipeline (HDL Coder) können Sie ein Ausgaberegister einfügen, das die Diagrammausgabe um einen Simulationszyklus verzögert.
ClockDrivenOutput | Aktiviert taktgesteuerte Ausgänge, um zu verhindern, dass kombinatorische Logik den Ausgang steuert, und um eine sofortige Aktualisierung des Ausgangs zu ermöglichen, wenn sich das Taktsignal und der Zustand ändern. Der Standardwert ist |
ConstMultiplierOptimization | Kanonische vorzeichenbehaftete Ziffer (CSD) oder faktorisierte CSD-Optimierung. Der Standardwert ist |
ConstrainedOutputPipeline | Anzahl der Register, die an den Ausgängen platziert werden sollen, indem vorhandene Verzögerungen innerhalb Ihres Entwurfs verschoben werden. Beim verteilten Pipelining werden diese Register nicht umverteilt. Der Standardwert ist |
DistributedPipelining | Pipeline-Registerverteilung oder Register-Retiming. Der Standardwert ist |
InputPipeline | Anzahl der Eingangs-Pipelinestufen, die in den generierten Code einzufügen sind. Verteiltes Pipelining und eingeschränktes Ausgangs-Pipelining können diese Register verschieben. Der Standardwert ist |
InstantiateFunctions | Eine VHDL® |
LoopOptimization | Schleifen entrollen, in Streams ausführen oder nicht optimieren. Der Standardwert ist |
MapPersistentVarsToRAM | Persistente Arrays im RAM abbilden. Der Standardwert ist |
OutputPipeline | Anzahl der Ausgangs-Pipelinestufen, die in den generierten Code einzufügen sind. Verteiltes Pipelining und eingeschränktes Ausgangs-Pipelining können diese Register verschieben. Der Standardwert ist |
ResetType | Unterdrücken der Erzeugung von Reset-Logik. Der Standardwert ist |
SharingFactor | Anzahl der funktional gleichwertigen Ressourcen, die einer einzelnen geteilten Ressource zugeordnet werden sollen. Der Standardwert ist 0. Siehe auch Resource Sharing (HDL Coder). |
VariablesToPipeline | Warnung
Einfügen eines Pipeline-Registers am Ausgang der angegebenen MATLAB-Variablen (eine oder mehrere). Angabe der Variablenliste als Zeichenvektor, wobei die Variablen durch Leerzeichen getrennt sind. |
Dieser Block unterstützt die Codegenerierung für komplexe Signale.
Weitere Informationen zu den Einschränkungen bei der Verwendung von Diagrammen finden Sie unter Introduction to Stateflow HDL Code Generation (HDL Coder).
PLC-Codegenerierung
Generieren strukturierten Textcodes mit Simulink® PLC Coder™.
Festkommakonvertierung
Entwerfen und Simulieren von Festkommasystemen mit Fixed-Point Designer™.
Versionsverlauf
Eingeführt vor R2006aR2023b: Umwandlung in Diagramm
Zur Umwandlung in eine Zustandsübergangstabelle verwenden Sie die Objektfunktion convertToSTT
.
MATLAB-Befehl
Sie haben auf einen Link geklickt, der diesem MATLAB-Befehl entspricht:
Führen Sie den Befehl durch Eingabe in das MATLAB-Befehlsfenster aus. Webbrowser unterstützen keine MATLAB-Befehle.
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)