Viele haben ja eine Logik im Einsatz, die bei Nacht das Licht nur gedimmt angehen lässt und dazu dem EIN-Befehl einen reduzierten Dimmwert nach sendet. Im folgenden möchte ich einen Baustein teilen, der genau das am TWS für 2 Lichter umsetzt.
Funktion:
- Der Trigger-Eingang ruft die Logik auf und prüft ob das Nachtobjekt=TRUE und der Trigger-Wert TRUE ist.
- Zusätzlich wird der aktuelle Dimmwert ausgewertet.
- Ist Nacht=TRUE wird der Sollwert-Nacht gesendet
- Ist Nacht=FALSE oder das Licht bereits > Sollwert-Nacht gedimmt, so wird der Sollwert-Tag gesendet. Damit wird beim erneuten Drücken der Ein-Taste in der Nacht das Licht auch auf den max. Wert gedimmt.
- Sperrobjekte für die gesamte Logik. Damit kann man ggf. ein Dimm-Telegramm unter Tag unterdrücken, wenn ohnehin das Limit des Aktors verwendet werden soll (siehe Screenshot: Das Nachtobjekt ist invertiert auch mit dem Sperreingang verbunden und sperrt die Logik bei Tag)
- Ohne Sperrobjekt kann man auch den max. Wert des Aktors unter Tags übersteuern zB. Aktor Limit 100%, Logik übersteuert am Tag mit 80%. Manuell kann aber weiter auf 100% gedimmt werden (Langer Tastendruck).
- Trigger1: Eingang für das Ein/Aus Objekt welches das Nachtriggern per EIN-Telegramm auslöst.
- Sollwert1 Tag: Sollwert der für das Dimmen am Tag (Abend) verwendet wird.
- Sollwert1 Nacht: Sollwert der für das Dimmen nachts verwendet wird (außer wenn zum Zeitpunkt des Eintreffens des EIN-Telegramms bereits ein Dimmwert >= Sollwert Nacht am Rückmeldeeingang anliegt).
- Rückmeldung1: Rückmeldeeingang für den Ist-Wert des Dimmaktors.
- Trigger2/Sollwert2/Rückmeldung2 funktionieren analog für ein zweites, unabhängiges Licht.
- Nacht: Eingang für das Nachtobjekt (Nacht=TRUE), ggf. invertiert anwenden.
- Inhibit: Kann per "+" mehrfach hinzugefügt werden und sperrt die Logik vollständig.
- Output1: Ausgang für den Soll-Dimmwert LIcht 1
- Output2: Ausgang für den Soll-Dimmwert LIcht 2
Der Schöpfer dieser Custom Logik überträgt die Nutzungsrechte gemäß der TOLL ("Timberwolf Open Logikblock License") die unter https://wrgt.news/TOLL zum Download zur Verfügung steht.
Falls wer einen freiwilligen Beitrag zur Motivation leisten will: Klick
lg
Robert
Code: Alles auswählen
/**===========================================================
Sendet beim Empfang von True einen Dimmwert abhängig von
Tag/Nacht nach.
============================================================*/
{
"Level":[
["$I_Input1_Trigger","bool",false],
["$I_Input1_Soll","float",0.0],
["$I_Input1_Max","float",100.0],
["$I_Input1_Rueckmeldung","float",0.0],
["$I_Input2_Trigger","bool",false],
["$I_Input2_Soll","float",0.0],
["$I_Input2_Max","float",100.0],
["$I_Input2_Rueckmeldung","float",0.0],
["$I_Nacht","bool",false],
["$Input1_Touched","bool",false],
["$Input1_Send","bool",false],
["$Input1_CResult","bool",false],
["$Input1_SelectMax","bool",false],
["$Input1_Soll_Mod","float",0.0],
["$Input2_Touched","bool",false],
["$Input2_Send","bool",false],
["$Input2_CResult","bool",false],
["$Input2_Soll_Mod","float",0.0],
["$Input2_SelectMax","bool",false],
["$Output1","float",0.0],
["$Output2","float",0.0],
["$Konst1","float",1.0],
["$Konst100","float",100.0],
["$VAR<Inhibit?>","bool",false]
],
"Module":[
["Break", ["$VAR<Inhibit?>"]],
["Triggered", "$I_Input1_Trigger", "$Input1_Touched" ],
["Triggered", "$I_Input2_Trigger", "$Input2_Touched" ],
// Toleranz vom Sollwert abziehen, damit Rundung durch DPT5.001 nicht zu Fehler führt
["Polynomial", "$Konst1", "$Input1_Soll_Mod",["$I_Input1_Soll", "-$Konst1"]],
["Polynomial", "$Konst1", "$Input2_Soll_Mod",["$I_Input2_Soll", "-$Konst1"]],
// Aktuellen Istwert auswerten
["Comparator", "$I_Input1_Rueckmeldung", "$Input1_CResult", "$Input1_Soll_Mod"],
["Comparator", "$I_Input2_Rueckmeldung", "$Input2_CResult", "$Input2_Soll_Mod"],
// Prüfen, on Max gesendet werden soll (entweder bereits >= Sollwert-Nacht gedimmt oder Tag)
["Or" , ["$Input1_CResult","-$I_Nacht"], "$Input1_SelectMax"],
["Or" , ["$Input2_CResult","-$I_Nacht"], "$Input2_SelectMax"],
// Sendewert setzen
["Multiplexer",["$I_Input1_Soll","$I_Input1_Max"],"$Output1","$Input1_SelectMax"],
["Multiplexer",["$I_Input2_Soll","$I_Input2_Max"],"$Output2","$Input2_SelectMax"],
// Welcher Eingang hat mit TRUE getriggert
["And" , ["$Input1_Touched","$I_Input1_Trigger"], "$Input1_Send"],
["And" , ["$Input2_Touched","$I_Input2_Trigger"], "$Input2_Send"],
// Nur Ausgang Senden, wenn Sendebedingung erfüllt (zughöriger Eingang wurde mit TRUE getriggert)
["SendExplicit","$Input1_Send","$Output1",0],
["SendExplicit","$Input2_Send","$Output2",0]
//["Polynomial", "$Konst1", "$Temp_Soll",["$I_Temp_Soll", "$I_Offset"]],
//["Ratio","$Konst100","$Steigung","$I_Delta_T_Max"],
//["Limiter","$Hoehe_Soll","$Hoehe_Soll_Lim","$Val_ok",["$I_Hoehe_Min", "$I_Hoehe_Max"]],
//["Comparator", "$I_Hoehe_Min", "$SelectHoehe", "$Hoehe_Soll"],
//["Multiplexer",["$Konst0","$Hoehe_Soll_Lim"],"$Hoehe_Soll_Lim","-$SelectHoehe"],
//["Or" , ["$Val_Large1" , "$Val_Large2"], "$Val_Large"],
//["And" , ["-$Val_Large" , "-$Val_Null"], "$Val_Small"],
//["Monoflop","$Val_Large",0,"$Timer_Large","$I_Delay",1],
//["Latch","$Hoehe_Soll_Step","$Hoehe_Soll_StepB","$Val_Large",0],
//["Clocksignal","$ConstTRUE","$Clk","$Period"],
//["HobbsMeter","$State","$Time","$Reset"],
//["Cron","$KonstTrue","$ResetTag",0,"$StartZeitTag"],
//["BinaryMultiplexer",["$In_D","$In_E","$In_F"],"$Output"],
//["Triggered", "$Input", "$Touched" ],
//["SendExplicit","$Send","$Out_val",0],
//["Interpolation","$In", "$Out", [ [x1,y1] , [x2,y2] , ... , [xn,yn ] ] ]
],
"Input":[
["Trigger1","Triggert bei True","$I_Input1_Trigger","a"],
["Sollwert1 Tag","Sollwert der beim Triggern gesendet wird","$I_Input1_Max","u"],
["Sollwert1 Nacht","Sollwert der beim Triggern gesendet wird","$I_Input1_Soll","u"],
["Rückmeldung1","Rückmeldeobjekt Eingang 1","$I_Input1_Rueckmeldung","u"],
["Trigger2","Triggert bei True","$I_Input2_Trigger","a"],
["Sollwert2 Tag","Sollwert der beim Triggern gesendet wird","$I_Input2_Max","u"],
["Sollwert2 Nacht","Sollwert der beim Triggern gesendet wird","$I_Input2_Soll","u"],
["Rückmeldung2","Rückmeldeobjekt Eingang 2","$I_Input2_Rueckmeldung","u"],
["Nacht","Bei Tag=0, bei Nacht=1","$I_Nacht","u"],
["Inhibit","Sperre der Logik bei True","$VAR<Inhibit?>","a"]
],
"Output":[
["Output1","Sendet beim Triggern von Input1 den Sollwert1","$Output1","x"],
["Output2","Sendet beim Triggern von Input2 den Sollwert2","$Output2","x"]
]
}
/**Der Schöpfer dieser Custom Logik überträgt die Nutzungsrechte gemäß der TOLL ("Timberwolf Open Logikblock License") die unter https://wrgt.news/TOLL zum Download zur Verfügung steht.*/