Unterschiede zwischen MATLAB und C als Aktionssprache-Syntax
Stateflow®-Diagramme in Simulink®-Modellen haben eine Aktionsspracheigenschaft, die die Syntax für Zustands- und Übergangsaktionen definiert. Ein Symbol in der linken unteren Ecke des Diagramms zeigt die Aktionssprache für das Diagramm an.
MATLAB® als Aktionssprache.
C als Aktionssprache.
MATLAB ist die Standard-Aktionssprache für neue Stateflow-Diagramme. Um ein Diagramm zu erstellen, das C als Aktionssprache verwendet, geben Sie Folgendes ein:
sfnew -c
Vergleich der Funktionalität von Aktionssprachen
In dieser Tabelle sind die wichtigsten Unterschiede in der Funktionalität zwischen den beiden Aktionssprachen aufgeführt.
Funktionalität | MATLAB als Aktionssprache | C als Aktionssprache |
---|---|---|
Vektor- und Matrixindexierung | Indexierung mit Eins beginnend, durch Klammern und Kommas begrenzt. Zum Beispiel | Nullbasierte Indizierung, durch eckige Klammern begrenzt. Zum Beispiel |
C-Konstrukte:
| Autokorrektur der MATLAB-Syntax. Zum Beispiel wird | Unterstützt. Siehe Operationen für Stateflow-Daten. |
Bedingte und zyklische Steueranweisungen in Zustandsaktionen | Unterstützt. Sie können beispielsweise | Nicht unterstützt. Verwenden Sie für bedingte und zyklische Muster stattdessen grafische Funktionen. Siehe Reuse Logic Patterns by Defining Graphical Functions. |
Format der Übergangsaktionen | Die Autokorrektur schließt Übergangsaktionen in geschweifte Klammern | Übergangsmaßnahmen müssen nicht in Klammern |
Daten mit variabler Größe | Ändern Sie die Daten der Variablengrößentabelle in Zustands- und Übergangsaktionen. Weitere Informationen finden Sie unter Variable-Size Data in Charts That Use MATLAB as the Action Language. | Ändern Sie die Daten der Variablengrößentabelle mithilfe von:
Alle Berechnungen mit Daten variabler Größe müssen innerhalb dieser Funktionen erfolgen und nicht direkt in Zuständen oder Übergängen. Weitere Informationen finden Sie unter Variable-Size Data in Charts That Use C as the Action Language. |
Festkomma-Konstrukte:
| Nicht unterstützt. | Unterstützt. Siehe Override Fixed-Point Promotion in C Charts und Fixed-Point Context-Sensitive Constants. |
Komplexe Daten | Verwenden Sie die komplexe Zahlendarstellung | Verwenden Sie den Operator |
Datentypvermehrung | Befolgt die MATLAB-Regeln für die Eingabe. Wenn Sie beispielsweise Daten des Typs | Beachtet die C-Typisierungsregeln. Wenn Sie beispielsweise Daten des Typs |
Explizite Typumwandlungsoperationen | Verwenden Sie eine dieser Casting-Formen:
Der Operator | Verwenden Sie eine dieser Casting-Formen:
Typ-Schlüsselwörter für die |
Skalare Expansion | Nicht unterstützt. | Unterstützt. Siehe Zuweisen von Werten zu allen Elementen einer Matrix. |
Zeichenfolgendaten | Verwenden Sie doppelte Anführungszeichen ( | Verwenden Sie doppelte (" ..." ) oder einfache Anführungszeichen (' ...' ) als Begrenzungszeichen. Siehe Manage Textual Information by Using Strings. |
Spezifikation der Dateneigenschaften:
| Nicht unterstützt. | Unterstützt. Weitere Informationen finden Sie unter:
|
Umfang der Daten in grafischer Darstellung, Wahrheitstabelle und MATLAB-Funktionen | Constant , Parameter , Input , Output | Local , Constant , Parameter , Input , Output , Temporary |
Punktnotation zur Angabe von Zuständen, lokalen Daten, Nachrichten und lokalen Ereignissen innerhalb von MATLAB-Funktionen | Unterstützt. Siehe Identify Data by Using Dot Notation. | Nicht unterstützt. |
Benutzerdefinierte Code-Funktionen und Variablen | Das Verhalten hängt vom Konfigurationsparameter Import Custom Code ab.
Siehe Reuse Custom Code in Stateflow Charts und Import custom code (Simulink). | Benutzerdefinierte Code-Funktionen und Variablen werden in Zuständen und Übergängen unterstützt. |
Strukturparameter | Einstellbare und nicht einstellbare Parameter werden unterstützt. | Es werden nur einstellbare Parameter unterstützt. |
Verwendung des globalen | Unterstützt. | Nicht unterstützt. |
Richtlinien für die Verwendung von MATLAB als Aktionssprache
Verwendung der Eins-basierten Indexierung für Vektoren und Matrizen
Die Eins-basierte Indexierung entspricht der MATLAB-Syntax. Weitere Informationen finden Sie unter Indizierungsnotation.
Verwenden runder Klammern anstelle von eckigen Klammern, um in Vektoren und Matrizen zu indizieren
Diese Aussage ist gültig:
a(2,5) = 0;
Diese Aussage ist ungültig:
a[2][5] = 0;
Weitere Informationen finden Sie unter Indizierungsnotation.
Verwenden des MATLAB-Formats für Kommentare
Nutzen Sie %
bei der Angabe von Kommentaren in Zuständen und Übergängen, damit sie mit MATLAB übereinstimmen. Zum Beispiel ist der folgende Kommentar gültig:
% This is a valid comment in the style of MATLAB
Kommentare im C-Stil, wie //
und /* */
, werden automatisch in % korrigiert.
Einschließen von Übergangsmaßnahmen in Klammern
Diese Übergangskennzeichnung enthält eine gültige Übergangsmaßnahme:
E [x > 0] / {x = x+1;}
Diese Übergangskennzeichnung ist falsch, wird aber automatisch in die gültige Syntax korrigiert.
E [x > 0] / x = x+1;
Verwenden Sie keine Kontrollflusslogik in Bedingungsaktionen und Übergangsaktionen
Die Ablaufsteuerungslogik (wie if
, switch
, for
und while
-Anweisungen) wird nur in Zustandsaktionen unterstützt. Die Verwendung der Ablaufsteuerungslogik in Bedingungsaktionen oder Übergangsaktionen führt zu einem Syntaxfehler.
Deklarieren Sie keine globalen oder persistenten Variablen in Zustandsaktionen
Die Schlüsselwörter global
und persistent
werden in Zustandsaktionen nicht unterstützt.
Zuweisen eines Anfangswerts zu lokalen und Ausgabedaten
Wenn MATLAB als Aktionssprache verwendet wird, führen Daten, die ohne einen Anfangswert gelesen werden, zu einem Fehler.
Schließen Sie Typpräfixes für Kennungen von Aufzählungswerten ein
Die Kennung TrafficColors.Red
ist gültig, Red
jedoch nicht.
Zum Generieren von Code aus Ihrem Modell verwenden Sie MATLAB-Sprachfunktionen, die für die Codegenerierung unterstützt werden.
Andernfalls verwenden Sie coder.extrinsic
, um nicht unterstützte Funktionen aufzurufen, wodurch die gewünschte Funktionalität für die Simulation bereitgestellt wird, jedoch nicht im generierten Code. Eine Liste der unterstützten Features und Funktionen finden Sie unter Sprache, Funktion und Objektunterstützung (Simulink).