Definieren von Aufzählungsdatentypen
Um die Lesbarkeit eines Stateflow®-Diagramms zu verbessern, verwenden Sie Aufzählungsdaten. Mit Aufzählungsdaten können Sie:
einen eingeschränkten Satz von Werten erstellen und auf diese Werte namentlich verweisen.
verwandte Werte in separate Datentypen gruppieren.
die Definition einer langen Liste von Konstanten vermeiden.
Aufzählungsdaten werden in Stateflow-Diagrammen in Simulink®-Modellen unterstützt. Weitere Informationen finden Sie unter Reference Values by Name by Using Enumerated Data.
Bevor Sie einem Stateflow-Diagramm Aufzählungsdaten hinzufügen können, müssen Sie einen Aufzählungsdatentyp in einer MATLAB®-Klassendefinitionsdatei definieren. Erstellen Sie für jeden Aufzählungstyp eine eigene Datei.
Elemente der Definition eines Aufzählungsdatentyps
Die Definition des Aufzählungsdatentyps besteht aus drei Codeabschnitten.
Abschnitt des Codes | Erforderlich? | Zweck |
---|---|---|
classdef | Ja | Gibt den Namen des Aufzählungsdatentyps an |
enumeration | Ja | Listet die Aufzählungswerte auf, die der Datentyp zulässt |
methods | Nein | Stellt Methoden bereit, die den Datentyp anpassen |
Definieren eines Aufzählungsdatentyps
Öffnen Sie eine neue Datei, in der Sie die Datentypdefinition speichern können. Wählen Sie unter der Registerkarte Home auf der Symbolleiste MATLAB die Option New > Class aus.
Vervollständigen Sie den Abschnitt
classdef
der Definition.classdef BasicColors < Simulink.IntEnumType ... end
Der Abschnitt
classdef
definiert einen Aufzählungsdatentyp mit dem NamenBasicColors
. Stateflow leitet den Datentyp vom integrierten TypSimulink.IntEnumType
ab. Der Name des Aufzählungsdatentyps muss unter den Namen von Datentypen und Workspace-Variablen eindeutig sein.Definieren Sie Aufzählungswerte in einem
enumeration
-Abschnitt.classdef BasicColors < Simulink.IntEnumType enumeration Red(0) Yellow(1) Green(2) end end
Ein Aufzählungstyp kann eine beliebige Anzahl von Werten definieren. Der
enumeration
-Abschnitt listet die Menge der Aufzählungswerte auf, die dieser Datentyp zulässt. Jeder Aufzählungswert besteht aus einem Namen und einem zugrunde liegenden ganzzahligen Wert. Jeder Name muss innerhalb seines Typs eindeutig sein, kann aber auch in anderen Aufzählungstypen vorkommen. Der Standardwert ist der erste in der Liste, es sei denn, Sie geben immethods
-Abschnitt der Definition etwas anderes an.(Optional) Passen Sie den Datentyp mithilfe eines
methods
-Abschnitts an. Der Abschnitt kann folgende Methoden enthalten:getDefaultValue
gibt einen Standard-Aufzählungswert an, der sich von dem ersten in der Liste der zulässigen Werte unterscheidet;getDescription
spezifiziert eine Beschreibung des Datentyps für den vom Simulink Coder™ generierten Code;getHeaderFile
spezifiziert eine benutzerdefinierte Header-Datei, die die Aufzählungstypdefinition in dem vom Simulink Coder generierten Code enthält;getDataScope
ermöglicht den Export oder Import der Aufzählungstypdefinition in eine oder aus einer Header-Datei in einem Code, der vom Simulink Coder generiert wurde;addClassNameToEnumNames
verbessert die Lesbarkeit und verhindert Namenskonflikte mit Kennungen in Code, der vom Simulink Coder generiert wurde.
Diese MATLAB-Datei enthält beispielsweise eine benutzerdefinierte Definition für den Aufzählungsdatentyp
BasicColors
, die:angibt, dass der Standardaufzählungswert der letzte in der Liste der zulässigen Werte ist;
eine kurze Beschreibung des Datentyps für den vom Simulink Coder generierten Code enthält. Um Beschreibungen in den generierten Code aufzunehmen, aktivieren Sie den Modellkonfigurationsparameter Simulink data object descriptions (Embedded Coder). Dieser Parameter erfordert eine Embedded Coder®-Lizenz;
Importiert die Definition des Datentyps aus einer benutzerdefinierten Header-Datei, damit der Simulink Coder die Definition nicht generiert;
Fügt den Namen des Datentyps als Präfix zu jedem Namen eines Aufzählungselements in dem vom Simulink Coder generierten Code hinzu.
classdef BasicColors < Simulink.IntEnumType enumeration Red(0) Yellow(1) Green(2) end methods (Static = true) function retVal = getDefaultValue() % GETDEFAULTVALUE Specifies the default enumeration member. % Return a valid member of this enumeration class to specify % the default. If you do not define this method, Simulink uses % the first member. retVal = BasicColors.Green; end function retVal = getDescription() % GETDESCRIPTION Specifies a string to describe this enumerated % type. retVal = 'This defines an enumerated type for colors'; end function retVal = getHeaderFile() % GETHEADERFILE Specifies the file that defines this type in % generated code. The method getDataScope determines the % significance of the specified file. retVal = 'imported_enum_type.h'; end function retVal = getDataScope() % GETDATASCOPE Specifies whether generated code imports or % exports this type. Return one of these strings: % * 'Auto': define type in model_types.h, or import if header % file specified % * 'Exported': define type in a generated header file % * 'Imported': import type definition from specified header % file % If you do not define this method, DataScope is 'Auto' by % default. retVal = 'Imported'; end function retVal = addClassNameToEnumNames() % ADDCLASSNAMETOENUMNAMES Specifies whether to add the class % name as a prefix to enumeration member names in generated % code. Return true or false. % If you do not define this method, no prefix is added. retVal = true; end % function end % methods end % classdef
Speichern Sie die Datei im MATLAB-Pfad. Der Name der Datei muss genau mit dem Namen des Datentyps übereinstimmen. Zum Beispiel muss die Definition für den Datentyp
BasicColors
in einer Datei mit dem NamenBasicColors.m
gespeichert werden.Tipp
Um dem MATLAB-Suchpfad einen Ordner hinzuzufügen, geben Sie
addpath
in die Befehlszeile ein.pathname
Spezifizieren des Datentyps im Property Inspector
Wenn Sie Ihrem Diagramm Aufzählungsdaten hinzufügen, geben Sie den Typ im Property Inspector an.
Wählen Sie im Feld Type die Option
Enum: <class name>
aus.Ersetzen Sie
<class name>
durch den Namen des Datentyps. Sie können beispielsweiseEnum: BasicColors
in das Feld Type eingeben.(Optional) Geben Sie einen Anfangswert für die Aufzählungsdaten ein, indem Sie eine Präfix-Kennung verwenden. Der Anfangswert muss einen gültigen MATLAB-Ausdruck ergeben. Weitere Informationen zu Präfix- und Nicht-Präfix-Kennungen finden Sie unter Notation for Enumerated Values.