Hauptinhalt

Switch

Ausgabe auf Basis des Werts der zweiten Eingabe zwischen erster Eingabe und dritter Eingabe umschalten

  • Switch block

Bibliotheken:
Simulink / Commonly Used Blocks
Simulink / Signal Routing
HDL Coder / Commonly Used Blocks
HDL Coder / Signal Routing

Beschreibung

Typen von Blockeingängen

Der Switch-Block leitet basierend auf dem Wert der zweiten Eingabe die erste oder dritte Eingabe weiter. Die ersten und dritten Eingänge werden als Dateneingänge bezeichnet. Der zweite Eingang wird als Steuereingang bezeichnet. Mithilfe der Parameter Criteria for passing first input und Threshold können Sie die Bedingung angeben, nach der der Block die ersten Eingabe weiterleitet.

Um einen bekannten Ausgabe-Datentyp unmittelbar per Backpropagation den ersten und dritten Eingangsports zuzuweisen, setzen Sie den Parameter Output data type auf Inherit: Inherit via internal rule und aktivieren Sie das Kontrollkästchen Require all data port inputs to have the same data type.

Tipp

Für eine Backpropagation Inherit: Inherit via internal rule muss der Parameter Require all data port inputs to have the same data type ausgewählt sein. Andernfalls führt der Block keine automatische Backpropagation des Ausgangs-Datentyps zu den ersten und dritten Eingangsports durch.

Beschränkungen der Dateneingänge

Die beiden Dateneingänge können unterschiedliche Größen aufweisen, wenn Sie Allow different data input sizes auswählen. Dieser Block unterstützt jedoch keine Eingangssignale mit variabler Größe. Dementsprechend kann sich die Größe jeder Eingabe während der Simulation nicht ändern.

Wenn die Dateneingänge zum Switch-Block Busse sind, müssen die Elementnamen beider Busse identisch sein. Indem Sie dieselben Elementnamen verwenden, können Sie sicherstellen, dass der Ausgangsbus dieselben Elementnamen aufweist, unabhängig davon, welchen Eingangsbus der Block auswählt. Um sicherzustellen, dass Ihr Modell dieser Anforderung entspricht, verwenden Sie ein Bus-Objekt, um die Busse zu definieren und setzen Sie die Diagnoseoption Element name mismatch auf error. Weitere Informationen finden Sie unter Model Configuration Parameters: Connectivity Diagnostics.

Darstellung des Blocksymbols

Das Blocksymbol hilft Ihnen dabei, Criteria for passing first input und Threshold zu identifizieren, ohne das Blockdialogfeld zu öffnen.

Informationen über die Portreihenfolge für verschiedene Blockausrichtungen finden Sie unter Identify Port Location on Rotated or Flipped Block.

Blockverhalten für booleschen Steuereingang

Wenn der Steuereingang ein Boolean-Signal ist, verwenden Sie eine dieser Kombinationen aus Kriterium und Grenzwert:

  • u2 >= Threshold, wobei der Grenzwert gleich 1 ist

  • u2 > Threshold, wobei der Grenzwert gleich 0 ist

  • u2 ~=0

Andernfalls ignoriert der Switch-Block den Grenzwert und verwendet den booleschen Eingang für das Signalrouting. Bei einem Steuereingang 1 leitet der Block die erste Eingabe weiter, bei einem Steuereingang 0 die dritten Eingabe. In diesem Fall ändert sich das Blocksymbol nach dem Kompilieren und verwendet T und F zur Bezeichnung des ersten bzw. dritten Eingangs.

Datentyp-Unterstützung

Der Steuereingang kann jeden Datentyp aufweisen, der von Simulink® unterstützt wird, darunter Festkommatypen und enumerierte Typen. Der Steuereingang kann nicht komplex sein. Ist der Steuereingang enumeriert, muss der Parameter Threshold einen Wert mit demselben enumerierten Typ aufweisen.

Die Dateneingänge können jeden Datentyp aufweisen, der von Simulink unterstützt wird. Wenn einer der Dateneingänge einen enumerierten Typ aufweist, muss der andere Dateneingang denselben enumerierten Typ aufweisen.

Wenn der Ausgang einen enumerierten Typ aufweist, müssen beide Dateneingänge denselben enumerierten Typ aufweisen.

Weitere Informationen finden Sie unter Data Types Supported by Simulink.

Beispiele

Ports

Eingabe

alle erweitern

Erster der beiden Dateneingänge. Der Block leitet entweder die erste oder die zweite Dateneingabe zur Ausgabe weiter. Der Block wählt auf Basis des Steuereingangs aus, welche Eingabe weitergeleitet wird. Geben Sie die Bedingung, nach der der Steuereingang die erste Eingabe weiterleitet, mithilfe der Parameter Criteria for passing first input und Threshold an.

Datentypen: single | double | half | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | fixed point | enumerated | bus | image

Steuersignal, mit dem der Block ermittelt, ob die erste oder die zweite Dateneingabe zur Ausgabe weitergeleitet werden soll. Wenn der Steuereingang die im Parameter Criteria for passing first input festgelegte Bedingung erfüllt, leitet der Block die erste Dateneingabe weiter. Andernfalls leitet der Block die zweiten Dateneingabe weiter.

Datentypen: single | double | half | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | fixed point | enumerated | bus | image

Zweiter der beiden Dateneingänge. Der Block leitet entweder die erste oder die zweite Dateneingabe zur Ausgabe weiter. Der Block wählt auf Basis des Steuereingangs aus, welche Eingabe weitergeleitet wird. Geben Sie die Bedingung, nach der der Steuereingang die erste oder die zweite Eingabe weiterleitet, mithilfe der Parameter Criteria for passing first input und Threshold an.

Datentypen: single | double | half | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | fixed point | enumerated | bus | image

Ausgabe

alle erweitern

Vom ersten oder zweiten Eingangssignal auf Basis des Steuersignal-Werts weitergeleitetes Ausgangssignal.

Datentypen: single | double | half | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | fixed point | enumerated | bus | image

Parameter

alle erweitern

Haupt

Wählen Sie die Bedingung aus, nach der der Block die erste Dateneingabe weiterleitet. Wenn der Steuereingang die im Parameter Criteria for passing first input festgelegte Bedingung erfüllt, leitet der Block die erste Eingabe weiter. Andernfalls leitet der Block das zweite Dateneingangssignal vom Eingang Port_3 weiter.

u2 >= Threshold

Prüft, ob der Steuereingang größer gleich des Grenzwerts ist.

u2 > Threshold

Prüft, ob der Steuereingang größer als der Grenzwert ist.

u2 ~= 0

Prüft, ob der Steuereingang nicht null ist.

Hinweis

Der Switch-Block unterstützt keinen u2 ~= 0-Modus für enumerierte Datentypen.

Tipp

Wenn der Steuereingang ein boolesches Signal ist, verwenden Sie eine dieser Kombinationen aus Bedingung und Grenzwert:

  • u2 >= Threshold, wobei der Grenzwert gleich 1 ist

  • u2 > Threshold, wobei der Grenzwert gleich 0 ist

  • u2 ~= 0

Andernfalls ignoriert der Switch-Block die Grenzwerte und verwendet den booleschen Wert für das Signalrouting. Bei einem Wert von 1 leitet der Block die erste Eingabe weiter, bei einem Wert von 0 die dritte Eingabe. Zudem erscheint eine Warnmeldung, die dieses Verhalten beschreibt, im MATLAB®-Befehlsfenster.

Programmatische Verwendung

Blockparameter: Criteria
Typ: Zeichenvektor
Wert: 'u2 >= Threshold' | 'u2 > Threshold' | 'u2 ~= 0'
Standardwert: 'u2 > Threshold'

Weisen Sie den Grenzwert der Option Criteria for passing first input zu, die ermittelt, welche Eingabe der Block zur Ausgabe weiterleitet. Threshold muss über Output minimum und unter Output maximum liegen.

Verwenden Sie eckige Klammern, um einen nichtskalaren Grenzwert anzugeben. Beispielsweise sind die folgenden Einträge gültig:

  • [1 4 8 12]

  • [MyColors.Red, MyColors.Blue]

Abhängigkeiten

Setzen Sie Criteria for passing first input auf u2 ~= 0, um diesen Parameter zu deaktivieren.

Programmatische Verwendung

Blockparameter: Threshold
Typ: Zeichenvektor
Wert: Skalar
Standardwert: '0'

Wählen Sie dies aus, um die Detektion von Nulldurchgängen zu aktivieren. Weitere Informationen finden Sie unter Zero-Crossing Detection.

Programmatische Verwendung

Blockparameter: ZeroCross
Typ: Zeichenvektor | String
Werte: 'off' | 'on'
Standardwert: 'on'

Signalattribute

Der Data Type Assistant hilft Ihnen bei der Einstellung von Datenattributen. Um den Data Type Assistant zu verwenden, klicken Sie auf the Show data type assistant button. Weitere Informationen finden Sie unter Specify Data Types Using Data Type Assistant.

Legt fest, dass alle Dateneingänge denselben Datentyp aufweisen müssen.

Programmatische Verwendung

Blockparameter: InputSameDT
Typ: Zeichenvektor
Wert: 'off' | 'on'
Standardwert: 'off'

Unterer Wert des Ausgabebereichs, den die Software überprüft.

Die Software verwendet das Minimum, um Folgendes auszuführen:

Tipps

Output minimum sättigt oder beschneidet das tatsächliche Ausgabesignal nicht. Verwenden Sie stattdessen den Saturation-Block.

Programmatische Verwendung

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

Parameter: OutMin
Werte: '[]' (Standardeinstellung) | scalar in quotes

Oberer Wert des Ausgabebereichs, den die Software überprüft.

Die Software verwendet den Maximalwert, um Folgendes auszuführen:

Tipps

Output maximum sättigt oder beschneidet das tatsächliche Ausgabesignal nicht. Verwenden Sie stattdessen den Saturation-Block.

Programmatische Verwendung

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

Parameter: OutMax
Werte: '[]' (Standardeinstellung) | scalar in quotes

Legt den Ausgangs-Datentyp fest.

Inherit: Inherit via internal rule

Verwenden Sie die folgenden Regeln, um den Ausgangs-Datentyp festzulegen.

Datentyp des ersten EingangsportsAusgangs-Datentyp
Größerer positiver Bereich als der dritte EingangsportVom ersten Eingangsport geerbt
Selber positiver Bereich wie der dritte EingangsportVom dritten Eingangsport geerbt
Kleinerer positiver Bereich als der dritte Eingangsport
Ist ein boolescher Wert und der dritte Eingangsport ist uint8
Ist uint8 und der dritte Eingangsport ist ein boolescher Wert
Ist ein boolescher Wert und der andere Wert ist int8Auf einen booleschen Wert gesetzt
Ist uint8 und der andere Wert ist ein boolescher Wert
Datentypen der zwei EingangsportsAusgangs-Datentyp
Weist einen Eingabetyp mit booleschem Wert und eine weitere Eingabe mit uint8 aufAuf den Datentypen des dritten Datenports gesetzt
Weist eine Eingabe mit booleschem Wert und eine weitere Eingabe mit int8 aufAuf einen booleschen Wert gesetzt
Inherit: Inherit via back propagation

Übernimmt den Datentyp des Ausgangsblocks.

Inherit: Inherit same as first input

Verwendet den Datentyp des ersten Dateneingangsports.

double

Legt den Ausgangs-Datentyp als double fest.

single

Legt den Ausgangs-Datentyp als single fest.

half

Legt den Ausgangs-Datentyp als half fest.

int8

Legt den Ausgangs-Datentyp als int8 fest.

uint8

Legt den Ausgangs-Datentyp als uint8 fest.

int16

Legt den Ausgangs-Datentyp als int16 fest.

uint16

Legt den Ausgangs-Datentyp als uint16 fest.

int32

Legt den Ausgangs-Datentyp als int32 fest.

uint32

Legt den Ausgangs-Datentyp als uint32 fest.

int64

Legt den Ausgangs-Datentyp als int64 fest.

uint64

Legt den Ausgangs-Datentyp als uint64 fest.

fixdt(1,16,0)

Legt den Ausgangs-Datentyp als Festkommatyp fixdt(1,16,0) fest.

fixdt(1,16,2^0,0)

Legt den Ausgangs-Datentyp als Festkommatyp fixdt(1,16,2^0,0) fest.

Enum: <class name>

Verwendet einen enumerierten Datentyp wie beispielsweise Enum: BasicColors.

Simulink.ImageType(480,640,3)

Verwendet ein Simulink.ImageType (Computer Vision Toolbox)-Objekt, wenn Sie Computer Vision Toolbox™ haben.

string

Legt den Ausgangs-Datentyp als String fest.

<data type expression>

Verwendet ein Datentypobjekt wie beispielsweise Simulink.NumericType.

Tipp

Wenn der Ausgang einen enumerierten Typ aufweist, müssen beide Dateneingänge denselben enumerierten Typ aufweisen.

Programmatische Verwendung

Blockparameter: OutDataTypeStr
Typ: Zeichenvektor
Werte: 'Inherit: Inherit via internal rule | 'Inherit: Inherit via back propagation' | 'Inherit: Same as first input' | 'double' | 'single' | 'half' | 'int8' | 'uint8' | 'int16' | 'uint16', 'int32' | 'uint32' | 'int64' | 'uint64' | 'fixdt(1,16)' | 'fixdt(1,16,0)' | 'fixdt(1,16,2^0,0)' | Enum: <class name> | Simulink.ImageType(480,640,3) | 'string' | '<data type expression>'
Standardwert: 'Inherit: Inherit via internal rule'

Wählen Sie diesen Parameter aus, um zu verhindern, dass die Festkomma-Tools die Datentypen überschreiben, die Sie in diesem Block angeben. Weitere Informationen finden Sie unter Lock the Output Data Type Setting (Fixed-Point Designer).

Programmatische Verwendung

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

Wählen Sie einen dieser Rundungsmodi.

Ceiling

Rundet sowohl positive als auch negative Zahlen in Richtung positiver Unendlichkeit. Entspricht der MATLAB-Funktion ceil.

Convergent

Rundet die Zahl auf den nächsten darstellbaren Wert. Bei Gleichstand wird auf die nächste gerade Zahl gerundet. Entspricht der Fixed-Point Designer™-Funktion convergent.

Floor

Rundet sowohl positive als auch negative Zahlen in Richtung negative Unendlichkeit. Entspricht der MATLAB-Funktion floor.

Nearest

Rundet die Zahl auf den nächsten darstellbaren Wert. Bei Gleichstand wird auf positive Unendlichkeit gerundet. Entspricht der Fixed-Point Designer -Funktion nearest.

Round

Rundet die Zahl auf den nächsten darstellbaren Wert. Bei Gleichstand werden positive Zahlen auf positive Unendlichkeit und negative Zahlen auf negative Unendlichkeit gerundet. Entspricht der Fixed-Point Designer-Funktion round.

Simplest

Wählt automatisch zwischen Rundung zur Basis und Rundung zu Null, um einen möglichst effizienten Rundungscode zu generieren.

Zero

Rundet Zahlen gegen Null. Entspricht der MATLAB-Funktion fix.

Programmatische Verwendung

Blockparameter: RndMeth
Typ: Zeichenvektor
Werte: 'Ceiling' | 'Convergent' | 'Floor' | 'Nearest' | 'Round' | 'Simplest' | 'Zero'
Standardwert: 'Floor'

Siehe auch

Weitere Informationen finden Sie unter Rounding Modes (Fixed-Point Designer).

Legt fest, ob Überläufe gesättigt oder gewrappt werden.

  • on – Überläufe sättigen bis zum Mindest- oder Höchstwert, den der Datentyp darstellen kann.

  • off – Überläufe wrappen auf den jeweiligen Wert, den der Datentyp darstellen kann.

Beispielsweise ist der Höchstwert, den die vorzeichenbehaftete 8-Bit-Ganzzahl int8 darstellen kann, 127. Ein Blockoperations-Ergebnis über diesem Höchstwert könnte zu einem Überlauf der 8-Bit-Ganzzahl führen.

  • Ist dieser Parameter ausgewählt, wird der Blockausgang bei 127 gesättigt. Ähnlich hierzu wird der Blockausgang bei einem Mindest-Ausgangswert von -128 gesättigt.

  • Wird dieser Parameter deaktiviert, interpretiert die Software den Wert, der den Überlauf verursacht, als int8, was zu unbeabsichtigten Ergebnissen führen kann. Beispielsweise ist ein Blockergebnis von 130 (Binär 10000010), ausgedrückt als int8, -126.

Tipps

  • Sie sollten diesen Parameter auswählen, wenn Überläufe in Ihrem Modell möglich sind und Sie expliziten Sättigungsschutz in Ihrem generierten Code wünschen.

  • Sie können diesen Parameter deaktivieren, wenn Sie die Effizienz Ihres generierten Codes optimieren möchten. Diesen Parameter zu deaktivieren, hilft Ihnen zudem, eine Überspezifizierung der Verarbeitung von Signalen außerhalb des Bereichs durch den Block zu vermeiden. Weitere Informationen finden Sie unter Troubleshoot Signal Range Errors.

  • Wenn Sie diesen Parameter aktivieren, wird die Sättigung auf jede interne Operation des Blocks angewendet, nicht nur die Ausgabe oder das Ergebnis.

  • Im Allgemeinen kann der Codegenerierungsprozess erkennen, wenn ein Überlauf nicht möglich ist. In diesem Fall erzeugt der Codegenerator keinen Sättigungscode.

Programmatische Verwendung

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

Parameter: SaturateOnIntegerOverflow
Werte: 'off' (Standardeinstellung) | 'on'

Wählen Sie dieses Kontrollkästchen aus, um Eingangssignale mit unterschiedlichen Größen zu erlauben. Der Block leitet die Eingangssignalgröße an das Ausgangssignal weiter. Wenn die zwei Dateneingänge Signale variabler Größe sind, kann die Höchstgröße der Signale gleich oder unterschiedlich sein.

Programmatische Verwendung

Blockparameter: AllowDiffInputSizes
Typ: Zeichenvektor
Wert: 'on' | 'off'
Standardwert: 'off'

Blockeigenschaften

Datentypen

Boolean | bus | double | enumerated | fixed point | half | integer | single | string

Direct Feedthrough

Ja

Mehrdimensionale Signale

Ja

Signale mit variabler Größe

Ja

Erkennung von Nulldurchgängen

Ja

Erweiterte Fähigkeiten

alle erweitern

PLC-Codegenerierung
Generieren strukturierten Textcodes mit Simulink® PLC Coder™.

Festkommakonvertierung
Entwerfen und Simulieren von Festkommasystemen mit Fixed-Point Designer™.

Versionsverlauf

Eingeführt vor R2006a