Hauptinhalt

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

Reduzieren transienter Signale mithilfe von Entprellungslogik

Wenn sich ein Schalter öffnet und schließt, können die Schaltkontakte voneinander abprallen, bevor der Schalter vollständig den Zustand „Ein“ oder „Aus“ annimmt. Dieses Abprallen kann transiente Signale erzeugen, die keinen tatsächlichen Zustandswechsel darstellen. Daher ist es bei der Modellierung von Schaltlogik wichtig, mithilfe von Entprellungsalgorithmen transiente Signale herauszufiltern.

Wenn Sie eine Regelung in einem Stateflow®-Diagramm modellieren, darf die Schaltlogik die Regelung nicht überbeanspruchen, indem sie diese bei jedem transienten Signal ein- und ausschaltet. Um dies zu vermeiden, entwickeln Sie eine Stateflow-Regelung, die temporale Logik verwendet, um Ihre Eingangssignale zu entprellen und zu ermitteln, ob ein Schalter ein- oder ausgeschaltet ist.

Entprellen eines Signals

Sie können ein Signal mithilfe von Stateflow auf zwei verschiedene Weisen entprellen:

  1. Sie können transiente Signale mithilfe des temporalen Operators duration herausfiltern.

    Hinweis

    Der Operator duration wird nur in Stateflow-Diagrammen in Simulink®-Modellen unterstützt.

  2. Sie können transiente Signale mithilfe eines Diagramm-Zwischenzustands herausfiltern. Verwenden Sie grafische Zwischenzustände für fortgeschrittene Filtertechniken, wie z. B. die Fehlererkennung.

Entprellen von Signalen durch Verwendung des Operators duration

Dieses Beispiel veranschaulicht ein Entwurfsmuster, bei dem der duration-Operator zum Herausfiltern transienter Signale verwendet wird.

Das Entpreller-Diagramm enthält die Zustände Off und On.

Zustandslogik

Der Anfangszustand dieses Modells ist Off. Mithilfe des duration-Operators können Sie regeln, welcher Zustand aktiv ist; dies basiert darauf, wie lange das Schaltsignal sw negativ oder nicht negativ war.

  • Ist sw länger als 0,01 Sekunde nicht negativ, geht der Schalter vom Zustand Off in den Zustand On über.

  • Ist sw länger als 0,01 Sekunde negativ, geht der Schalter vom Zustand On in den Zustand Off über.

Ausführen des Entprellers

  1. Öffnen Sie das Modell.

  2. Öffnen Sie den Scope-Block.

  3. Öffnen Sie das Stateflow-Diagramm „Debouncer“.

  4. Simulieren Sie das Modell. Der Scope-Block zeigt, wie der Entpreller transiente Signale aus dem rauschbehafteten Eingangssignal isoliert.

Entprellen von Signalen durch Fehlererkennung

Dieses Beispiel veranschaulicht ein Entwurfsmuster, das einen Zwischenzustand zur Isolierung transienter Signale verwendet. Der Entpreller-Entwurf verwendet den after-Operator, um eine Absolutzeit-basierte temporale Logik zu implementieren. Mit diesem Entwurfsmuster können Sie zudem Fehler erkennen und dem System Zeit zur Wiederherstellung geben.

Das Entpreller-Diagramm enthält die Zustände Off, Debounce und On.

Zustandslogik

Das Entpreller-Diagramm enthält einen Zwischenzustand namens Debounce. Dieser Zustand isoliert transiente Eingänge, indem geprüft wird, ob das Signal sw positiv oder negativ bleibt oder über einen festgelegten Zeitraum hinweg zwischen Nullübergängen fluktuiert.

  • Ist sw länger als 0,1 Sekunde positiv, geht der Schalter in den Zustand On über.

  • Ist sw länger als 0,1 Sekunde negativ, geht der Schalter in den Zustand Off über.

  • Wenn sw länger als 0,3 Sekunden lang zwischen Nullübergängen fluktuiert, geht der Schalter in den Zustand Off.Fault über, isoliert sw als transientes Signal und gibt so Zeit zur Wiederherstellung.

Ausführen des Entprellers

  1. Öffnen Sie das Modell.

  2. Öffnen Sie den Scope-Block.

  3. Öffnen Sie das Stateflow-Diagramm „Debouncer“.

  4. Simulieren Sie das Modell. Der Scope-Block zeigt, wie der Entpreller transiente Signale aus dem rauschbehafteten Eingangssignal isoliert.

Verwenden ereignisbasierter temporaler Logik

Als Alternative zur absoluten Zeitlogik können Sie mit ereignisbasierter Zeitlogik den wahren Zustand im Entpreller-Diagramm mithilfe des after-Operators bestimmen. Mit dem Schlüsselwort tick wird ein lokales Ereignis spezifiziert und implizit generiert, wenn das Diagramm aktiviert wird.

Der Block „Error Generator“ im sf_debouncer-Modell generiert alle 0,001 Sekunden ein Pulssignal. Multiplizieren Sie daher das Argument des after-Operators mal 1000, wie in dieser Tabelle angegeben, um die im Entpreller-Diagramm festgelegte Absolutzeit-basierte temporale Logik in ereignisbasierte Logik umzuwandeln.

Absolutzeit-basierte LogikEreignisbasierte Logik
after(0.1,sec)after(100,tick)
after(0.3,sec)after(300,tick)
after(1,sec)after(1000,tick)

Siehe auch

|

Themen