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] [V4.1] Monoflop & SendExplicit

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
sfrit
Reactions:
Beiträge: 53
Registriert: Di Okt 31, 2023 8:29 pm
Hat sich bedankt: 11 Mal
Danksagung erhalten: 13 Mal

[V4.1] Monoflop & SendExplicit

#1

Beitrag von sfrit »

Hallihallo,

ich hatte heute mal Zeit etwas mit meinen Logiken zu spielen wobei ich auf folgendes Problem gestoßen bin:
Ich habe 3 Monoflop timer die durch die Variable $active gleichzeitig gestartet werden (testhalber 2,4,6s). Diese sollen den vorher festgelegten Outputwert $o_wert1 auf den gleichen Output senden (damit ich nicht 3 mal verschiedene Outputs verknüpfen muss)

Code: Alles auswählen

{
	"Level":[
		// Inputs
		["$i_dimmstatus","float",0],
		["$Threshold","float",0],
		["$i_verzogerung1","float",2],
		["$i_verzogerung2","float",4],
		["$i_verzogerung3","float",6],
		
		// Outputs
		["$o_wert1","float",100.0],
        // ["$o_wert2","float",100.0],
        
		// Interne Variablen
		["$active","bool",false],
		//["$LastActive","bool",false],
		["$Trigger","bool",false],
		["$timer1","bool",false],
		["$timer2","bool",false],
		["$timer3","bool",false]
	],
	"Module":[
	
		["Comparator","$i_dimmstatus","$active","$Threshold"],                  
                ["Latch","$i_dimmstatus","$o_wert1","$active",1],
        
[b]		["Monoflop","$active",0,"$timer1","$i_verzogerung1",2],               
		["Monoflop","$active",0,"$timer2","$i_verzogerung2",2],                
                ["Monoflop","$active",0,"$timer3","$i_verzogerung3",2],
        
                ["SendExplicit","$timer1","$o_wert1",2],
                ["SendExplicit","$timer2","$o_wert1",2],
		["SendExplicit","$timer3","$o_wert1",2][/b]

	],
	"Input":[
		["Dimmen absolut - Status","Dimmwert der mehrfach gesendet werden soll","$i_dimmstatus","c"],
		["Schwellwert","Vergleichswert","$Threshold","u"],
		["Verzögerung 1","erstes senden nach n Sekunden","$i_verzogerung1","u"],
		["Verzögerung 2","zweites senden nach n Sekunden","$i_verzogerung2","u"],
		["Verzögerung 3","zweites senden nach n Sekunden","$i_verzogerung3","u"]
	],    
	"Output":[
		["Ausgang1","Ausgang sendet nach Verzögerungen 1 und 2","$o_wert1","x"]
	 //    ["timer1","123","$timer1","c"],
	 //    ["timer2","123","$timer2","c"],
	 //    ["timer3","123","$timer3","c"]
	]
}
Resultat: Die Logik sendet nur den am längsten laufenden Timer. Die einzelnen Timer starten und enden richtig (siehe Auskommentierung in der ich es überprüft habe). Wer findet den Fehler?

Schönen Abend euch.

Steffen
Zuletzt geändert von sfrit am Mi Nov 20, 2024 5:37 pm, insgesamt 1-mal geändert.
timberwolf3500 XL #1509

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 Steffen!

Du hast dir vermutlich die Antwort hier schon gegeben:
viewtopic.php?f=77&p=59092#p59092
Ist die Sendebedingung erfüllt wird beim (Ausgangs-)Level ein Flag gesetzt, das auf die Sendeoption: X reagiert.
Das lässt sich so erklären, dass SendExplizit erst nach dem Abarbeiten der Logikzelle umgesetzt wird. Damit wird nur das 3. Monoflop berücksichtigt wird => d.h. nur ein SendExplizit je Ausgangsvariable sinnvoll.
Du kannst das testen, in dem du die Reihenfolge der SendExplizit-Zeilen vertauscht.

Lösung:
SendExplizit durch Latch ersetzen (für die Flanke), dann ein OR und zum Schluss ein SendExplizit mit Triggeroption 0.

Code: Alles auswählen

		["Latch","$KonstTrue","$Senden1","$timer1", 2],
                ["Latch","$KonstTrue","$Senden2","$timer2",2],
		["Latch","$KonstTrue","$Senden3","$timer3",2],
		
		["Or" , ["$Senden1" , "$Senden2","$Senden3"], "$SendenGes"],

		["SendExplicit","$SendenGes","$o_wert1",0],
Zusätzlich muss am Beginn der Logik $Senden1... auf false zurückgesetzt werden.

lg
Robert

PS: "Wer findet den Fehler" klingt lustig (und war auch sicher so gemeint), wir sind aber nicht bei einem Suchrätsel....
Timberwolf Server 2500 / #117 (VPN offen + reboot nach Rückfrage) / zusätzlich: 3500M/#935, 3500L/#1297

Ersteller
sfrit
Reactions:
Beiträge: 53
Registriert: Di Okt 31, 2023 8:29 pm
Hat sich bedankt: 11 Mal
Danksagung erhalten: 13 Mal

#3

Beitrag von sfrit »

Vielen Dank Robert!!
timberwolf3500 XL #1509

StefanW
Elaborated Networks
Elaborated Networks
Reactions:
Beiträge: 10702
Registriert: So Aug 12, 2018 9:27 am
Wohnort: Frauenneuharting
Hat sich bedankt: 5303 Mal
Danksagung erhalten: 8685 Mal
Kontaktdaten:

#4

Beitrag von StefanW »

Hi Robert,

vielen lieben Dank auch von mir für Deinen exzellenten Support für die Nutzer und das Pflegen des Wiki. :bow-yellow:

Das hilft uns allen sehr. :handgestures-thumbupright:

lg

Stefan
Stefan Werner
Product Owner für Timberwolf Server, 1-Wire und BlitzART
Bitte WIKI lesen. Allg. Support nur im Forum. Bitte keine PN
Zu Preisen, Lizenzen, Garantie, HW-Defekt an service at elabnet dot de

Link zu Impressum und Datenschutzerklärung oben.
Antworten

Zurück zu „Logikengine & Logik-Editor“