Seite 1 von 1

[V1.6.0 IP1] Genaues Verhalten vom Custommodul Monoflop

Verfasst: Di Apr 28, 2020 10:20 am
von Robosoc
Frage geht vermutlich an @S. Kolbinger: Was macht ein Monoflop, wenn der Triggereingang false ist und die Triggerbedingung = steigende Flanke ist?

Ich hätte gedacht, dass nichts passiert. Kann es aber sein, dass der Ausgang dann trotzdem mit False beschrieben wird?

Die Antwort könnte mir helfen zu verstehen, warum mein Vorschlag von heute in diesem Beitrag nicht funktioniert:
viewtopic.php?f=65&t=2132

Dort habe ich folgenden Code

Code: Alles auswählen

["Monoflop","$gate_1",0,"$out","$time_1",2],
["Monoflop","$gate_2",0,"$out","$time_2",2],
.
.
.
["Monoflop","$out",0,"$next","$delay",4]
Gleich zu Beginn, wenn der erste Monoflop in der Liste positiv getriggerte wird ($gate_1 hat steigende Flanke), wird die Variable $next true gesetzt. Das verstehe ich nicht, da Sie eigentlich nur true werden sollte, wenn $out eine fallende Flanke hat.

Wenn aber der zweite Monoflop in der Liste oben die Variable $out sofort wieder false setzt, obwohl der zweite Monoflop nie aktiviert war, dann würde ich das Verhalten verstehen. Das Verhalten im Monoflop würde ich aber als sehr unschön bezeichnen...und dann müssten wir es in der Beschreibung des Bausteins ergänzen.

Re: [1.6.0 IP1] Genaues Verhalten vom Costummodul Monoflop

Verfasst: Di Apr 28, 2020 7:44 pm
von Robert_Mini
Hallo Sven!

Meines Wissens setzt jedes Monoflop seinen Status bei jedem Aufruf.
In deinem Fall bedeutet das ein out1, out2 etc. und dann ein or (out1, out2)

lg
Robert

Re: [1.6.0 IP1] Genaues Verhalten vom Costummodul Monoflop

Verfasst: Di Apr 28, 2020 8:25 pm
von MiniMaxV2
Hi Sven,
ich hätte es jetzt auch so wie Robert gesagt. Aus der Beschreibung geht mmn. hervor (wenn auch etwas indirekt), dass der Ausgang nur gesetzt ist, wenn der Timer aktiv ist (wenn der nicht aktiv ist, ist er ja quasi "abgelaufen"):
"Nach dem Empfang eines Triggers am Eingang Trigger wird der Ausgang eingeschaltet und nach Ablauf der Verzögerungszeit wieder ausgeschaltet."

Re: [1.6.0 IP1] Genaues Verhalten vom Costummodul Monoflop

Verfasst: Di Apr 28, 2020 9:00 pm
von Robosoc
Robert und Hans Martin, danke Euch, Ihr habt recht. Es funktioniert jetzt auch. Ich werde die Beschreibung in der KB nun noch ein wenig eindeutiger machen.

Re: [1.6.0 IP1] Genaues Verhalten vom Costummodul Monoflop

Verfasst: Di Apr 28, 2020 11:51 pm
von Robert_Mini
Danke für die Rückmeldung und KB-Update!!

lg
Robert

Re: [1.6.0 IP1] Genaues Verhalten vom Custommodul Monoflop

Verfasst: Mo Mär 31, 2025 9:45 pm
von Franky
Wir sollten die Doku vielleichtergänzen um den Punkt

"Wann ändert sich der Wert von "$OutB" (dem Ausgang von Monoflop)?"

- "$OutB" ist bereits mit Start des Logikdurchlaufs aufgrund des ausgeführten Triggers durch den Monoflopd-Timerablauf geändert

oder

- nach erneutem Aufruf des Monoflops wird die Varisable erst geändert

Ich bin da grad so verunsichert (danke LLM :->) dass ich das jetzt erstmal testen muss.

Lieben Gruß

Frank

Edit: Sorry für das Reaktivieren dieses Threads, aber ich fand, dass es ins Thema passt (Verhalten Monoflop und etwaige Dokuanpassung)

Re: [1.6.0 IP1] Genaues Verhalten vom Custommodul Monoflop

Verfasst: Mo Mär 31, 2025 10:48 pm
von Robert_Mini
Franky hat geschrieben: Mo Mär 31, 2025 9:45 pm Wann ändert sich der Wert von "$OutB" (dem Ausgang von Monoflop)
Aus meiner Sicht ist das Verhalten wie folgt:
  • "$OutB" ändert sich beim Triggern des Monoflops (Start, Reset) sofort => bis zum Aufruf des Moduls ist $OutB false, danach true.
  • Wird eine Logik durch das abgelaufene Monoflop getriggert, so ist "$OutB" bereits mit Start des Logikdurchlaufs FALSE.
=> Damit kann man durch zwischenspeichern von $OutB auf $OutB_Last vor dem Monoflop und Vergleich von $OutB und $OutB_Last nach dem Aufruf in der Logik auswerten, ob das Monoflop abgelaufen ist.

lg
Robert

Re: [1.6.0 IP1] Genaues Verhalten vom Custommodul Monoflop

Verfasst: Di Apr 01, 2025 10:37 pm
von Franky
Robert_Mini hat geschrieben: Mo Mär 31, 2025 10:48 pm
  • 1)"$OutB" ändert sich beim Triggern des Monoflops (Start, Reset) sofort => bis zum Aufruf des Moduls ist $OutB false, danach true.
  • 2)Wird eine Logik durch das abgelaufene Monoflop getriggert, so ist "$OutB" bereits mit Start des Logikdurchlaufs FALSE.
=> Damit kann man durch zwischenspeichern von $OutB auf $OutB_Last vor dem Monoflop und Vergleich von $OutB und $OutB_Last nach dem Aufruf in der Logik auswerten, ob das Monoflop abgelaufen ist.
Meintest Du den zweiten Punkt anders rum, weil dann würde es zu deiner Schlussfolgerung passen, oder?

Es ist so (getestet): Timer läuft ab, Out hat vor Aufruf von Monoflop noch TRUE. Mit Aufruf von Monoflop wird Out FALSE

Code: Alles auswählen

{
  "Level": [
    // --- Konstanten ---
    ["$ConstTrue", "bool", true],
    ["$ConstFalse", "bool", false],
    // --- Steuerungs-Eingänge ---
    ["$StartTrigger", "bool", false], // Eingang zum Starten des Timers
    ["$TimerDuration", "float", 5.0],  // Testdauer für den Timer (z.B. 5 Sekunden)
    // --- Monoflop-Status ---
    ["$MonoflopOut", "bool", false],   // Die eigentliche Ausgangsvariable des Monoflops
    // --- Test-Variablen ---
    ["$PreMonoflopOut", "bool", false] // Wert von $MonoflopOut *bevor* das Monoflop-Modul lief
    // $MonoflopOut selbst repräsentiert den Wert *nachdem* das Monoflop-Modul lief  <-- Kein Komma hier am Ende des letzten Array-Elements
  ], // Komma nach dem Level-Array ist korrekt
  "Module": [
    // 1. Wert *vor* dem Monoflop erfassen
    ["Latch", "$MonoflopOut", "$PreMonoflopOut", "$ConstTrue", 0], // Komma nach dem Latch ist korrekt

    // 2. Monoflop ausführen
    ["Monoflop", "$StartTrigger", "$ConstFalse", "$MonoflopOut", "$TimerDuration", 2] // Kein Komma hier am Ende des letzten Array-Elements
  ], // Komma nach dem Module-Array ist korrekt
  "Input": [
    ["Start Timer", "Eingang zum einmaligen Starten des Monoflops (TRUE-Impuls)", "$StartTrigger", "c"], // Komma ist korrekt
    ["P: Timer Dauer", "Testdauer in Sekunden", "$TimerDuration", "u"] // Kein Komma hier am Ende
  ], // Komma nach dem Input-Array ist korrekt
  "Output": [
    ["Pre-Monoflop Value", "Wert von MonoflopOut BEVOR das Monoflop-Modul lief", "$PreMonoflopOut", "c"], // Komma ist korrekt
    ["MonoflopOut Value", "Wert von MonoflopOut NACHDEM das Monoflop-Modul lief", "$MonoflopOut", "c"] // Kein Komma hier am Ende
  ] // KEIN Komma nach dem letzten Array (Output)
} // Geschweifte Klammer schließt das JSON-Objekt
Bild
Ausgabe1: Pre
Ausgabe2: Post
Gruß

Franky

Re: [1.6.0 IP1] Genaues Verhalten vom Custommodul Monoflop

Verfasst: Mi Apr 02, 2025 9:13 pm
von Robert_Mini
Hallo!

Du hast recht, ich habe irgendwie mit den Entwürfen nicht richtig gespeichert, denn ich hatte genau diese Zeile bereits angepasst.

lg
Robert

Re: [1.6.0 IP1] Genaues Verhalten vom Custommodul Monoflop

Verfasst: Mi Apr 02, 2025 9:19 pm
von Franky
super vielen Dank! Das passt ja dann zum Test... ob wir die Doku präzisieren müssen (I don't know).

Was auch noch nicht ganz so klar aus der Doku ist, ob bspw. bei der Statemachine für state_alt und state_neu neben Konstanten auch Variablen zulässig sind. Das scheint ja nicht bei allen Eingangswerte von allen Modulen austauschbar zu sein.

LG

Franky