Hauptinhalt

Die Übersetzung dieser Seite ist veraltet. Klicken Sie hier, um die neueste Version auf Englisch zu sehen.

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 CodesErforderlich?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

  1. Ö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.

  2. Vervollständigen Sie den Abschnitt classdef der Definition.

    classdef BasicColors < Simulink.IntEnumType
      ...
    end

    Der Abschnitt classdef definiert einen Aufzählungsdatentyp mit dem Namen BasicColors. Stateflow leitet den Datentyp vom integrierten Typ Simulink.IntEnumType ab. Der Name des Aufzählungsdatentyps muss unter den Namen von Datentypen und Workspace-Variablen eindeutig sein.

  3. 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 im methods-Abschnitt der Definition etwas anderes an.

  4. (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
    

  5. 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 Namen BasicColors.m gespeichert werden.

    Tipp

    Um dem MATLAB-Suchpfad einen Ordner hinzuzufügen, geben Sie addpath pathname in die Befehlszeile ein.

Spezifizieren des Datentyps im Property Inspector

Wenn Sie Ihrem Diagramm Aufzählungsdaten hinzufügen, geben Sie den Typ im Property Inspector an.

  1. Wählen Sie im Feld Type die Option Enum: <class name> aus.

  2. Ersetzen Sie <class name> durch den Namen des Datentyps. Sie können beispielsweise Enum: BasicColors in das Feld Type eingeben.

  3. (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.

Siehe auch

Themen