Anwendung
Steuerung der Gartenbewässerung als Sequenz für mehrere Kreise, die mit einem EIN/AUS Objekt gestartet wird. Der Baustein steuert dann ein Ventil nach dem anderen an, dazwischen kann eine Pause konfiguriert werden. Der Baustein kann auch manuell über das EIN/AUS Objekt gestoppt werden. Die Dauer für die Bewässerung kann je Kreis in Minuten angegeben werden.
Beschreibung
Der Baustein besitzt folgende Eingänge:
Start/Stop: Startet die Bewässerungssequenz beim Empfang von "True". Wird vor vollständigem Ablauf der Gesamtsequenz ein "False" empfangen, wird die Sequenz abgebrochen und alle Ventile geschlossen.
Dauer1-Dauer4: Bewässerungsdauer für den zugehörigen Kreis in Minuten (Wert muss Float sein, DPT 9.010)
Faktor: Skaliert die die Werte der Dauer von allen Kreisen. Mit 1.0 wird genau für die definierte Zeit bewässert, mit zB 0.5 wird die Zeit halbiert, mit 2.0 wird die Zeit verdoppelt.
Pause: Unterbrechung in Sekunden, bevor der nächste Kreislauf gestartet wird.
Freigabe: Übergeordnete Freigabe der Bewässerung (bei "True"). Damit werden die Telegramme am Eingang Start/Stopp ignoriert, beim Deaktivieren der Freigabe während aktiver Bewässerung werden alle Ventile geschlossen.
Erklärungen zur Funktion:
Freigabe und Start/Stop werden mittels AND-Verknüpfung in die Variable Reset gespeichert. Wird Freigabe oder Start/Stop bei laufender Sequenz auf False gesetzt, werden alle Timer mit zurückgesetzt (-$Reset am Reseteingang der Timer).
Verkettung mehrerer Monoflops (Timer). Der erste Timer wird vom Eingangstrigger gestartet. Die fallenden Flanke der ablaufenden Timers triggert jeweils den nächsten Timer.
So sieht der fertige Baustein im Logikeditor aus:
CODE der Custom Logik
{ "Level":[ ["$trigger","bool",false], ["$trigger_o","bool",false], ["$state_a","bool",false], ["$state_ab","bool",false], ["$period_a","float",0], ["$period_a_i","float",0], ["$state_b","bool",false], ["$state_bb","bool",false], ["$period_b","float",0], ["$period_b_i","float",0], ["$state_c","bool",false], ["$state_cb","bool",false], ["$period_c","float",0], ["$period_c_i","float",0], ["$state_d","bool",false], ["$period_d","float",0], ["$period_d_i","float",0], ["$A0","float",0], ["$faktor_m2s","float",60], ["$faktor_i","float",1], ["$faktor_c","float",1], ["$pause_x","float",5], ["$freigabe","bool",true], ["$reset","bool",false] ], "Module":[ ["And",["$freigabe","$trigger"],"$reset"], ["Polynomial", "$faktor_m2s", "$faktor_c",["$A0", "$faktor_i"]], ["Polynomial", "$faktor_c", "$period_a",["$A0", "$period_a_i"]], ["Monoflop","$trigger","-$reset","$state_a","$period_a",2], ["Monoflop","$state_a","-$reset","$state_ab","$pause_x",4], ["Polynomial", "$faktor_c", "$period_b",["$A0", "$period_b_i"]], ["Monoflop","$state_ab","-$reset","$state_b","$period_b",4], ["Monoflop","$state_b","-$reset","$state_bb","$pause_x",4], ["Polynomial", "$faktor_c", "$period_c",["$A0", "$period_c_i"]], ["Monoflop","$state_bb","-$reset","$state_c","$period_c",4], ["Monoflop","$state_c","-$reset","$state_cb","$pause_x",4], ["Polynomial", "$faktor_c", "$period_d",["$A0", "$period_d_i"]], ["Monoflop","$state_cb", "-$reset","$state_d","$period_d",4], ["Or",["$state_a","$state_ab","$state_bb","$state_cb","$state_b","$state_c","$state_d"],"$trigger"], ["Or",["$state_a","$state_ab","$state_bb","$state_cb","$state_b","$state_c","$state_d"],"$trigger_o"] ], "Input":[ ["Start/Stop","Startet/Beendet den Zyklus","$trigger","c"], ["Dauer1","1.Bewässerungsdauer min.","$period_a_i","c"], ["Dauer2","2.Bewässerungsdauer min.","$period_b_i","c"], ["Dauer3","3.Bewässerungsdauer min.","$period_c_i","c"], ["Dauer4","4.Bewässerungsdauer min.","$period_d_i","c"], ["Faktor","Faktor Dauer","$faktor_i","c"], ["Pause","Pause in s","$pause_x","c"], ["Freigabe","Freigabe der Bew.Logik","$freigabe","c"] ], "Output":[ ["Ventil1","Schaltausgang 1.Ventil","$state_a","c"], ["Ventil2","Schaltausgang 2.Ventil","$state_b","c"], ["Ventil3","Schaltausgang 3.Ventil","$state_c","c"], ["Ventil4","Schaltausgang 4.Ventil","$state_d","c"], ["Sequenz aktiv","Sequenz aktiv","$trigger_o","c"] ] }
Link zum Diskussionsthread:
Kommentar hinzufügen