Hauptinhalt

Zero-Order Hold

Implementierung eines Zero Order Hold-Abtastzeitraums

  • Zero-Order Hold block

Bibliotheken:
Simulink / Discrete
HDL Coder / Discrete

Beschreibung

Der Zero-Order Hold-Block behält seine Eingabe für den von Ihnen angegebenen Zeitraum bei. Wenn es sich bei der Eingabe um einen Vektor handelt, enthält der Block alle Elemente des Vektors für denselben Abtastzeitraum.

Die Zeit zwischen den Abtastungen legen Sie mit dem Parameter Sample time fest. Eine Einstellung von -1 bedeutet, dass der Block die Sample time übernimmt.

Tipp

Verwenden Sie den Zero Order Hold-Block nicht, um einen schnellen Übergang zwischen Blöcken zu erzeugen, die mit unterschiedlichen Abtastraten arbeiten. Verwenden Sie stattdessen den Rate Transition-Block.

Bus-Unterstützung

Der Zero Order Hold-Block ist ein busfähiger Block. Die Eingabe kann ein virtuelles oder nicht virtuelles Bussignal sein. Es gibt keine blockbezogenen Einschränkungen. Alle Signale in einem nicht virtuellen Bus, die als Eingabe für einen Zero Order Hold-Block dienen, müssen dieselbe Abtastzeit aufweisen, auch wenn die Elemente des zugehörigen Busobjekts übernommene Abtastzeiten angeben. Sie können einen Rate Transition-Block verwenden, um die Abtastzeit eines einzelnen Signals oder aller Signale in einem Bus zu ändern. Siehe Modify Sample Times for Nonvirtual Buses und Bus-Capable Blocks für weitere Informationen.

Sie können eine Reihe von Bussen als Eingabesignal für einen Zero Order Hold-Block verwenden. Weitere Informationen zur Definition und Verwendung einer Reihe von Bussen finden Sie unter Group Nonvirtual Buses in Arrays of Buses.

Vergleich mit ähnlichen Blöcken

Die Blöcke Memory, Unit Delay und Zero-Order Hold bieten ähnliche Funktionen, verfügen jedoch über unterschiedliche Fähigkeiten. Außerdem ist der Zweck jedes Blocks unterschiedlich.

Diese Tabelle zeigt die empfohlene Verwendung für jeden Block.

BlockZweck des BlocksReferenzbeispiele
Unit DelayImplementieren Sie eine Verzögerung mit einer von Ihnen festgelegten diskreten Abtastzeit. Der Block akzeptiert und gibt Signale mit einer diskreten Abtastzeit aus.
SpeicherImplementieren Sie eine Verzögerung um einen wesentlichen Integrationszeitschritt. Im Idealfall akzeptiert der Block kontinuierliche (oder in einem kleinen Zeitschritt festgelegte) Signale und gibt ein Signal aus, das in einem kleinen Zeitschritt festgelegt ist.
Zero-Order HoldWandeln Sie ein Eingabesignal mit einer kontinuierlichen Abtastzeit in ein Ausgabesignal mit einer diskreten Abtastzeit um.

Jeder Block verfügt über die folgenden Funktionen.

FunktionSpeicherEinheitsverzögerung (Unit Delay)Zero Order Hold
Spezifikation der AnfangsbedingungJaJaNein, denn die Ausgabe des Blocks zum Zeitpunkt t = 0 muss mit dem Eingabewert übereinstimmen.
Angabe der AbtastzeitNein, denn der Block kann nur die Abtastzeit vom Steuerblock oder dem für das gesamte Modell verwendeten Solver übernehmen.JaJa
Unterstützung für blockbasierte SignaleNein JaJa
Unterstützung für StatusprotokollierungNeinJaNein

Beispiele

Ports

Eingabe

alle erweitern

Eingabesignal, das der Block um einen Abtastzeitraum hält.

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

Ausgabe

alle erweitern

Ausgabesignal, das der für einen Abtastzeitraum gehaltenen Eingabe entspricht.

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

Parameter

alle erweitern

Geben Sie hier das Zeitintervall zwischen Abtastvorgängen an. Um die Abtastzeit zu vererben, setzen Sie diesen Parameter auf -1. Weitere Informationen finden Sie unter Festlegen der Abtastzeit.

Geben Sie keine kontinuierliche Abtastzeit an (0 oder [0,0]). Dieser Block unterstützt nur diskrete Abtastzeiten. Wenn dieser Parameter -1 ist, muss die übernommene Abtastzeit diskret und nicht kontinuierlich sein.

Programmatische Verwendung

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

Um den Wert des Blockparameters programmatisch abzurufen, verwenden Sie die Funktion get_param.

Parameter: SampleTime
Werte: -1 (Standardeinstellung) | positive scalar number
Datentypen: char | string

Beispiel: set_param("mdl/Zero-Order Hold","SampleTime","0.1") specifies a discrete sample time of 0.1 for the Zero-Order Hold block named Zero-Order Hold in the model named mdl.

Blockeigenschaften

Datentypen

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

Direct Feedthrough

ja

Mehrdimensionale Signale

nein

Signale mit variabler Größe

nein

Erkennung von Nulldurchgängen

nein

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

Siehe auch

|