Simulink Berechnung einmalig starten (Tigger auf Pulssignal) + Reset möglich?

Gast #3491302
Guten Abend!

Ich hoffe Ihr könnt mir bei der folgenden Problemstellung behilflich 
sein, da ich mit den vorhandenen Simulinkblöcken nicht das von mir 
gewünschte Verhalten hinbekomme.

Ich möchte eine Berechnung einmalig starten nachdem ein Pulssignal 
detektiert wurde (z.b. nach der ersten steigenden Flanke). Bei weiteren 
Flankenwechsel gleichen Typs (zweite, dritte, vierte, etc. steigende 
Flanke) soll diese Berechnung jedoch nicht gestartet werden! Daher kann 
ich kein triggerd Subsystem nutzen, da nach meinen Testerkenntnissen 
eben das Subsystem beim nächsten Flankenwechsel wieder aktiviert wird.

Nun möchte ich außerdem die Berechnung wieder nach bestimmten Kriterien 
(bzw. Abhängig von anderen Signalwerten oder nach einer definierten 
"Pufferzeit") wieder starten.

So bei meinen bisherigen Tests habe ich versucht den Zustand "Subsystem 
einmalig ausgeführt/nicht ausgeführt" auf irgendeine Weise zu speichern 
und dies als Kriterium zu nutzen um das Signal für den Trigger (oder 
Enable) freizuschalten. Allerdings beißt sich da auch die Katze in den 
Schwanz und ich bekomme eine Race Condition oder der zweite Fall, dass 
Subsystem ist nur kurz aktiv kann wohl nicht die komplette Berechnung in 
einem Step Durchführen (zumindest scheint das Subsystem für mich inaktiv 
zu sein?). So hab ich irgendetwas übersehen oder liege ich zumindest mit 
meinen Beobachtungen richtig und wie nun das Problem lösen?

Ich habe mal ein Beispiel angehängt und hoffe Ihr könnt mir vielleicht 
weiterhelfen wie ich dieses Problem lösen kann.
Angehängte Dateien:
Gast #3494360
> dass Subsystem ist nur kurz aktiv kann wohl
> nicht die komplette Berechnung in einem Step
> Durchführen
Ich bin zwar nicht sicher, aber ich denke, Simulink sollte die ganze 
Berechnung in einem Schritt machen.

> Allerdings beißt sich da auch die Katze in den
> Schwanz und ich bekomme eine Race Condition
Meinst du, wenn du einen Ausgang 'System abgearbeitet' wieder auf den 
Eingang zurückführst? Dabei könnte ein einfaches (diskretes?) 
Verzögerungsglied in der Rückkopplung helfen.

In deinem Beispiel hast du ein Enabled Subsystem. Ich denke, du solltest 
bei dem Triggered Subsystem bleiben.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 12 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.