KNX Data Secure Unterstützung
für KNX Logger und KNX Busmonitor

KNX Diagnose Monitor, Import des ETS Projektes deutlich beschleunigt, Suche in der Navigation
Mehr Informationen dazu hier im Forum

Insider Version 6 zur 4.5 jetzt für alle Mitglieder des Insider Clubs installierbar
Alle Infos zum Update im Timberwolf Wiki

[Gelöst] [V1.6.0 IP1] Genaues Verhalten vom Custommodul Monoflop

Informationen und Diskussionen über Logik-Engine und Logik-Editor
Forumsregeln
  • Denke bitte an aussagekräftige Titel und gebe dort auch die [Firmware] an. Wenn ETS oder CometVisu beteiligt sind, dann auch deren Version
  • Bitte mache vollständige Angaben zu Deinem Server, dessen ID und dem Online-Status in Deiner Signatur. Hilfreich ist oft auch die Beschreibung der angeschlossener Hardware sowie die verwendeten Protokolle
  • Beschreibe Dein Projekt und Dein Problem bitte vollständig. Achte bitte darauf, dass auf Screenshots die Statusleiste sichtbar ist
  • Bitte sei stets freundlich und wohlwollend, bleibe beim Thema und unterschreibe mit deinem Vornamen. Bitte lese alle Regeln, die Du hier findest: https://wiki.timberwolf.io/Forenregeln
Antworten

Ersteller
Robosoc
Reactions:
Beiträge: 1908
Registriert: Di Okt 09, 2018 9:26 am
Hat sich bedankt: 643 Mal
Danksagung erhalten: 797 Mal

[V1.6.0 IP1] Genaues Verhalten vom Custommodul Monoflop

#1

Beitrag 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.
Zuletzt geändert von Parsley am Fr Apr 11, 2025 10:24 pm, insgesamt 4-mal geändert.
VG, Sven - 3500 XL ID:1369 | 3500 L ID:1355, VPN offen, Reboot OK

Robert_Mini
Reactions:
Beiträge: 3903
Registriert: So Aug 12, 2018 8:44 am
Hat sich bedankt: 1263 Mal
Danksagung erhalten: 2213 Mal

#2

Beitrag 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
Timberwolf Server 2500 / #117 (VPN offen + reboot nach Rückfrage) / zusätzlich: 3500M/#935, 3500L/#1297

MiniMaxV2
Reactions:
Beiträge: 278
Registriert: Sa Jan 12, 2019 8:41 pm
Wohnort: Bremen
Hat sich bedankt: 342 Mal
Danksagung erhalten: 151 Mal

#3

Beitrag 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."
LG
Hans Martin
timberwolf413 (950Q) - VPN offen - reboot erlaubt / timberwolf610 (950Q) - VPN offen - reboot erlaubt

Ersteller
Robosoc
Reactions:
Beiträge: 1908
Registriert: Di Okt 09, 2018 9:26 am
Hat sich bedankt: 643 Mal
Danksagung erhalten: 797 Mal

#4

Beitrag 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.
VG, Sven - 3500 XL ID:1369 | 3500 L ID:1355, VPN offen, Reboot OK

Robert_Mini
Reactions:
Beiträge: 3903
Registriert: So Aug 12, 2018 8:44 am
Hat sich bedankt: 1263 Mal
Danksagung erhalten: 2213 Mal

#5

Beitrag von Robert_Mini »

Danke für die Rückmeldung und KB-Update!!

lg
Robert
Timberwolf Server 2500 / #117 (VPN offen + reboot nach Rückfrage) / zusätzlich: 3500M/#935, 3500L/#1297

Franky
Reactions:
Beiträge: 175
Registriert: Di Dez 24, 2024 1:24 pm
Hat sich bedankt: 78 Mal
Danksagung erhalten: 93 Mal

#6

Beitrag 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)
Zuletzt geändert von Franky am Mo Mär 31, 2025 10:14 pm, insgesamt 3-mal geändert.
Timberwolf 3500L ID:1642; Support-VPN für ElabNET ist an.

Robert_Mini
Reactions:
Beiträge: 3903
Registriert: So Aug 12, 2018 8:44 am
Hat sich bedankt: 1263 Mal
Danksagung erhalten: 2213 Mal

#7

Beitrag 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
Timberwolf Server 2500 / #117 (VPN offen + reboot nach Rückfrage) / zusätzlich: 3500M/#935, 3500L/#1297

Franky
Reactions:
Beiträge: 175
Registriert: Di Dez 24, 2024 1:24 pm
Hat sich bedankt: 78 Mal
Danksagung erhalten: 93 Mal

#8

Beitrag 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
Zuletzt geändert von Franky am Mi Apr 02, 2025 3:43 pm, insgesamt 3-mal geändert.
Timberwolf 3500L ID:1642; Support-VPN für ElabNET ist an.

Robert_Mini
Reactions:
Beiträge: 3903
Registriert: So Aug 12, 2018 8:44 am
Hat sich bedankt: 1263 Mal
Danksagung erhalten: 2213 Mal

#9

Beitrag 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
Timberwolf Server 2500 / #117 (VPN offen + reboot nach Rückfrage) / zusätzlich: 3500M/#935, 3500L/#1297

Franky
Reactions:
Beiträge: 175
Registriert: Di Dez 24, 2024 1:24 pm
Hat sich bedankt: 78 Mal
Danksagung erhalten: 93 Mal

#10

Beitrag 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
Timberwolf 3500L ID:1642; Support-VPN für ElabNET ist an.
Antworten

Zurück zu „Logikengine & Logik-Editor“