Main Content

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

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).

  • If expression und Elseif expressions akzeptieren bestimmte Operatoren nicht, darunter +, -, * und /.

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.

Der If-Block unterstützt keine booleschen Datentypen. Wenn Sie ein boolesches Signal als Eingang für einen If-Block verwenden möchten, konvertieren Sie das Signal mithilfe eines Data Type Conversion-Blocks in einen Integertyp.

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

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>'
Standardwert: '1'

Das mit dem if-Port verbundene If Action Subsystem wird ausgeführt, wenn der zugehörige Ausdruck wahr ist.

u1 > 0

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

Logischer Ausdruck

Geben Sie einen logischen Ausdruck an. Dieser Ausdruck wird auf dem If-Block neben dem if-Ausgangsport angezeigt.

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

Programmatische Verwendung

Blockparameter: IfExpression
Typ: Zeichenvektor
Werte: 'u1 > 0' | '<logical expression>'
Standardwert: 'u1 > 0'

Das mit einem elseif-Port verbundene If Action Subsystem wird ausgeführt, wenn der zugehörige Ausdruck true ist und alle if- und elseif-Ausdrücke falsch sind.

leer

Logische Ausdrücke nicht angegeben.

Liste logischer Ausdrücke

Geben Sie eine kommagetrennte Liste logischer Ausdrücke an. Die Ausdrücke werden auf dem If-Block unter dem if-Port und über dem else-Port angezeigt, wenn Sie das Kontrollkästchen Show else condition auswählen.

Diese Ausdrücke dürfen nur die Operatoren <, <=, ==, ~=, >, >=, &, |, ~, (), unary-minus enthalten. Operatoren wie +, -, *, / und ^ sind nicht zulässig. Die Ausdrücke dürfen keine Datentyp-Ausdrücke wie int8(6) enthalten und dürfen keine Workspace-Variablen referenzieren, deren Datentyp nicht double oder single ist.

Programmatische Verwendung

Blockparameter: ElseIfExpressions
Typ: Zeichenvektor
Werte: '' | '<list of logical expressions>'
Standardwert: ''

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'
Standardwert: 'on'

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

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

Versionsverlauf

Eingeführt vor R2006a