Hauptinhalt

If

Auswahl der Subsystem-Ausführung mithilfe von if-else-Ausdrücken ähnlicher Logik

  • If block

Bibliotheken:
Simulink / Ports & Subsystems

Beschreibung

Der If-Block und die If Action Subsystem-Blöcke, die einen Action Port-Block umfassen, implementieren eine If-Else-Logik zur Steuerung der Ausführung von Subsystemen. Ein Beispiel, bei dem der If-Block zum Einsatz kommt, finden Sie unter Select Subsystem Execution.

Model ex_if_block

Beispiele

Einschränkungen

Der If-Block weist die folgenden Einschränkungen auf:

  • Es werden keine abstimmbaren Parameter unterstützt. Werte für einen if- oder elseif-Ausdruck können während einer Simulation im normalen Modus oder Accelerator-Modus oder bei der Ausführung von generiertem Code nicht verändert werden.

    Um abstimmbare If-Else-Ausdrücke zu implementieren, verändern Sie den Ausdruck außerhalb des If-Blocks. Sie können beispielsweise den Relational Operator-Block verwenden, um den Ausdruck außerhalb des If-Blocks zu evaluieren oder den abstimmbaren Parameter als Eingang zum If-Block hinzufügen.

  • Es werden keine benutzerdefinierten Speicherklassen unterstützt. Siehe Organize Parameter Data into a Structure by Using Struct Storage Class (Embedded Coder).

  • Die if-Ausdrücke und elseif-Ausdrücke können bestimmte Operatoren wie +, -, * und / nicht akzeptieren.

Ports

Eingabe

alle erweitern

Die Eingänge u1,u2,...,un müssen denselben Datentyp aufweisen. Die Eingänge können keinen benutzerdefinierten Typ aufweisen, wie etwa einen Enumerationstyp.

Der If-Block unterstützt Festkomma-Datentypen nicht direkt. Sie können diese Einschränkung jedoch mithilfe des Blocks Compare To Constant umgehen. Siehe Unterstützung für Festkomma-Datentypen in Select Subsystem Execution.

Datentypen: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32 | Boolean

Ausgabe

alle erweitern

Ausgänge von den if-, else- und elseif-Ports sind Aktionssignale für If Action Subsystem-Blöcke.

Parameter

alle erweitern

1

Geben Sie einen Eingangsport an.

Integer

Geben Sie die Anzahl der Eingangsports an. Block-Ports sind mit einem 'u'-Zeichen gefolgt von einer Zahl, 1,2,...,n, beschriftet, wobei n der Anzahl angegebener Eingänge entspricht.

Programmatische Verwendung

Blockparameter: NumInputs
Typ: Zeichenvektor
Werte: '1' | Integer in Anführungszeichen
Standardwert: '1'

Wenn der if-Port und alle elseif-Port-Ausdrücke false sind, sendet der else-Port ein Aktionssignal, um den verbundenen If Action Subsystem-Block auszuführen.

ein

Zeigt den else-Port an.

aus

Verbirgt den else-Port.

Programmatische Verwendung

Blockparameter: ShowElse
Typ: Zeichenvektor
Werte: 'on' | 'off'
Standardwert: 'on'

Regelt die Detektion von Nulldurchgängen.

ein

Nulldurchgänge erkennen.

aus

Nulldurchgänge nicht erkennen.

Programmatische Verwendung

Blockparameter: ZeroCross
Typ: Zeichenvektor
Werte: 'on' | 'off'
Standard: 'on'

Seit R2025a

Wählen Sie diesen Parameter aus, um sicherzustellen, dass nur if-else-Anweisungen in dem aus einem If -Block generierten Code enthalten sind.

ein

Im generierten Code sind nur if-else-Anweisungen enthalten. Diese Option verhindert die Aufnahme von switch-case-Anweisungen in den generierten Code.

aus

Wenn dieser Parameter deaktiviert ist, kann der von einem If-Block generierte Code switch-case-Anweisungen enthalten, die dieselben Vorgänge wie der If-Block ausführen.

Programmatische Verwendung

Um den Wert des Blockparameters programmatisch festzulegen, verwenden Sie die Funktion set_param.

Blockparameter: EnsureIfElseCode
Typ: Zeichenvektor
Werte: 'on' | 'off'
Standard: 'off'

Der If Action Subsystem-Block, der an den if-Port angehängt ist, wird ausgeführt, wenn der zugehörige if-Ausdruck zu true ausgewertet wird.

u1 > 0

Legen Sie fest, dass ein Aktionssignal an den Ausgangsport gesendet wird, wenn der Eingang u1 größer als 0 ist.

Logischer Ausdruck

Hinweis

Verwenden Sie ab R2025a die Expressions-Tabelle, um den if-Standardausdruck (u1 > 0) zu bearbeiten. Wählen Sie für einen komplexen Ausdruck mit mehreren Eingaben und Operatoren den if -Ausdruck aus und bearbeiten Sie ihn im Feld Expression editor.

Bei Versionen vor R2025a wird dieser Parameter im Block-Dialogfeld als If expressions angezeigt. Mit diesem Parameter können Sie logische Ausdrücke angeben.

In allen Simulink®-Versionen erscheint dieser Ausdruck jedoch auf dem If-Block neben dem if-Ausgabeport.

Der Ausdruck darf nur die Operatoren <, <=, ==, ~=, >, >=, &, |, ~, () und unary-minus enthalten. Operatoren wie +, -, *, / und ^ sind nicht zulässig. Der Ausdruck darf keine Datentypausdrücke enthalten, z. B. int8(6), und darf nicht auf Workspace-Variabeln verweisen, deren Datentyp nicht double oder single ist.

Programmatische Verwendung

Blockparameter: IfExpression
Typ: Zeichenvektor
Werte: 'u1 > 0' | Logischer Ausdruck in Anführungszeichen
Standardwert: 'u1 > 0'

Der If Action Subsystem-Block, der an einen elseif-Port angehängt ist, wird ausgeführt, wenn der zugehörige elseif-Ausdruck zu true ausgewertet wird und alle anderen if- und elseif-Ausdrücke false sind.

leer

Logische Ausdrücke nicht angegeben.

Liste logischer Ausdrücke

Hinweis

Verwenden Sie ab R2025a die Expressions-Tabelle, um elseif-Ausdrücke hinzuzufügen und zu bearbeiten. Verwenden Sie die Aktionsschaltflächen links neben der Tabelle, um Ausdrücke hinzuzufügen, zu löschen und zu verschieben. In der Tabelle können Sie jeden elseif-Ausdruck einzeln schreiben, anstatt in einer durch Kommas getrennten Liste, und die Ausdrücke gemäß Ihren Modellierungsanforderungen organisieren. Für einen komplexen Ausdruck mit mehreren Eingaben und Operatoren wählen Sie die Zeile mit dem elseif-Ausdruck aus und bearbeiten Sie ihn im Expression editor-Feld.

Bei Versionen vor R2025a wird dieser Parameter im Block-Dialogfeld als Else expressions angezeigt. Geben Sie in diesen Versionen eine Liste logischer Ausdrücke an, die durch Kommas getrennt sind.

In allen Simulink-Versionen erscheinen die Ausdrücke jedoch auf dem If-Block unter dem if-Port und über dem else-Port, wenn Sie das Kontrollkästchen Show else condition aktivieren.

Ausdrücke können nur die Operatoren <, <=, ==, ~=, >, >=, &, |, ~, () und unary-minus enthalten. Operatoren wie +, -, *, / und ^ sind nicht zulässig. Die Ausdrücke dürfen keine Datentypausdrücke enthalten, z. B. int8(6), und darf nicht auf Workspace-Variabeln verweisen, deren Datentyp nicht double oder single ist.

Programmatische Verwendung

Blockparameter: ElseIfExpressions
Typ: Zeichenvektor
Werte: '' | Liste der durch Kommas getrennten logischen Ausdrücke in Anführungszeichen
Standardwert: ''

Blockeigenschaften

Datentypen

Boolean | double | integer | single

Direct Feedthrough

ja

Mehrdimensionale Signale

nein

Signale mit variabler Größe

nein

Erkennung von Nulldurchgängen

ja

Erweiterte Fähigkeiten

alle erweitern

C/C++ Codegenerierung
Generieren von C und C++ Code mit Simulink® Coder™.

Versionsverlauf

Eingeführt vor R2006a

alle erweitern