Seite 1 von 2

Modul "Zustandsautomat" Bewässerung für Gardena Wasserverteiler

Verfasst: Mo Apr 27, 2020 8:04 pm
von NetFritz
Hallo
Gibt es schon für das Zustandsmodul im Knowledge Base schon eine Beschreibung?

Ich möchte mit dem Mudul einen Gardena automatik Wasservereiler weiterschalten.
Vielleicht kann ja jemand da weiter Helfen.

Dieser Verteiler wird über den Wasserdruck weiter geschaltet.
Schaltet man das EIN dann wird das Magnetventil angesteuert und bleibt für die Sprenglerzeit eingeschaltet.
Soll weiter geschaltet werden wird das Magnetventil für ein kurze Zeit abgeschaltet, so das sich der Wasserdruck abbaut.
Ist der Wasserdruck abgebaut dann schaltet der Verteiler auf den nächsten Kreis, danach wir das MV wieder geöffnet und der nächte
Sprenger ist iB.
Der Verteiler hat 6 Anschlüsse. Für einen Duchlauf muss man ihn 6 mal EIN und wieder ausschalten.
Man braucht für einen voll belegten Verteiler 12 Zeiteinstellungen, 6 für EIN und 6 für AUS.
Eine GA zum starten und stoppen.
Eine GA zum schlten des MV.
Wie setze ich das jetzt um ?
Gruß NetFritz

Re: Modul "Zustandsautomat" Bewässerung für Gardena Wasserverteiler

Verfasst: Mo Apr 27, 2020 8:20 pm
von MiniMaxV2
Ich würde das mit einem Zähler lösen. Ein Monoflop macht dir das Taktsignal und die Wartezeit. Beim Überlauf des Zählers hörst wieder auf weiter zu schalten. Die Zeit fütterst du über einen Switch, ob grade Impuls Zeit oder Wasser Zeit gilt.

Fang doch einfach an, dir deine Eingänge und Ausgänge zu definieren und dann stück für Stück weiter. Z.b. Zuerst der Zähler mit Überlauf. So würde ich da ran gehen :)

Re: Modul "Zustandsautomat" Bewässerung für Gardena Wasserverteiler

Verfasst: Di Apr 28, 2020 7:07 am
von Robosoc
NetFritz hat geschrieben: Mo Apr 27, 2020 8:04 pm Gibt es schon für das Zustandsmodul im Knowledge Base schon eine Beschreibung?
Am Ende des Abschnitts zur Statemachine in der KB ist ein Link zur ausführlicheren Erklärung.

KB:
app.php/kb/viewarticle?a=115#Statemachine

Ausführliche Beschreibung Statemachine
viewtopic.php?f=65&t=2019

Aber bedenke, dass es den Custim Baustein erst ab Version 1.6 gibt... Also aktuell nur in den Insider Preview Versionen.

Deine Aufgabe klingt für mich aber auch erstmal nicht unbedingt nach der Statemachine, weil Du ja nur linear nacheinander, durch die Zustände gehen kannst. Ich würde es wohl auch eher mit diversen Monoflop nacheinander lösen, sofern Du unterschiedliche Zeiten je Abschnitt einstellen möchtest.

Re: Modul "Zustandsautomat" Bewässerung für Gardena Wasserverteiler

Verfasst: Di Apr 28, 2020 10:00 am
von Robosoc
Hab hier mal was vorbereitet...eigentlich dachte ich das würde laufen, aber irgendwie muss ich einen Fehler eingebaut haben. Ich habe jetzt aber keinee Zeit mehr mich mehr damit zu beschäftigen...Vielleicht kann jemand - oder Du selber "NetFritz" - ja hier weitermachen.

Code: Alles auswählen

{
  "Level": [
    ["$start","bool",false],
    ["$out","bool",false],
    ["$next","bool",false],
    ["$state","integer",0],
    ["$factor","integer",0],
    ["$delay","integer",1],
    ["$time_1","integer",1],
    ["$time_2","integer",2],
    ["$time_3","integer",3],
    ["$time_4","integer",4],
    ["$time_5","integer",5],
    ["$time_6","integer",6],
    ["$gate_1","bool",false],
    ["$gate_2","bool",false],
    ["$gate_3","bool",false],
    ["$gate_4","bool",false],
    ["$gate_5","bool",false],
    ["$gate_6","bool",false],
    ["$const_1","integer",1],
    ["$const_2","integer",2],
    ["$VAR<Inhibit?>","bool",false]
  ],
  "Module": [
    ["Break", ["$VAR<Inhibit?>"]],
    // Startbedingung und Ventil weiterschalten
    ["Multiplexer",[0,"$const_2"],"$factor","$next"],
    ["Polynomial", "$factor", "$state",[0, "$state"]],
    ["Latch","$const_1","$state","$start",1],
    ["BinaryDemultiplexer","$state",["$gate_1","$gate_2","$gate_3","$gate_4","$gate_5","$gate_6",0]],
    ["Latch",0,"$state","$gate_6",2],
    //
    // Ventillaufzeiten werden im folgenden Abschnitt abgearbeitet
    ["Monoflop","$gate_1",0,"$out","$time_1",2],
    ["Monoflop","$gate_2",0,"$out","$time_2",2],
    ["Monoflop","$gate_3",0,"$out","$time_3",2],
    ["Monoflop","$gate_4",0,"$out","$time_4",2],
    ["Monoflop","$gate_5",0,"$out","$time_5",2],
    ["Monoflop","$gate_6",0,"$out","$time_6",2],
    //
    // Pausenzeiten werden im folgenden Abschnitt geregelt
    ["Monoflop","-$out",0,"$next","$delay",2]
  ],  
  "Input": [
    ["Start","Startet dies Bewässerung bei positivier Flanke","$start","c"],
    ["Verzögerung Ventilwechsel","Pausenzeit in dem das Ventil umgeschaltet wird","$delay","u"],
    ["Bewässerungzeit 1","Bewässerungszeit für den Kreis 1","$time_1","u"],
    ["Bewässerungzeit 2","Bewässerungszeit für den Kreis 1","$time_2","u"],
    ["Bewässerungzeit 3","Bewässerungszeit für den Kreis 1","$time_3","u"],
    ["Bewässerungzeit 4","Bewässerungszeit für den Kreis 1","$time_4","u"],
    ["Bewässerungzeit 5","Bewässerungszeit für den Kreis 1","$time_5","u"],
    ["Bewässerungzeit 6","Bewässerungszeit für den Kreis 1","$time_6","u"],
    ["Inhibit","Inhibit","$VAR<Inhibit?>","u"]
  ],
  "Output": [
    ["Aktorausgang","Schaltet den Ventilaktor","$out","ct"]
  ]
}
NetFritz, es ist irgendwie netter Dich bei einem echten Vornamen anzusprechen...schreibe den doch gerne in Deine Signatur, so wie ich.



Bei der Gelegenheit ist mir aufgefallen, dass wir den CustomCode "BinaryDemultiplexer" noch garnicht in der KB beschrieben haben...Holen wir nach.

Re: Modul "Zustandsautomat" Bewässerung für Gardena Wasserverteiler

Verfasst: Di Apr 28, 2020 2:32 pm
von NetFritz
Hallo vielen Dank für die Auskunft.
Ich werde mal mit deiner Logig auseinandersetzen.
Gruß Fritz

Re: Modul "Zustandsautomat" Bewässerung für Gardena Wasserverteiler

Verfasst: Di Apr 28, 2020 9:02 pm
von Robosoc
so läuft jetzt...es waren zwei Fehler in meiner Logik. Viel Erfolg und immer gut Wasser :-)

Code: Alles auswählen

{
  "Level": [
    ["$start","bool",false],
    ["$out","bool",false],
    ["$next","bool",false],
    ["$state","integer",0],
    ["$factor","integer",0],
    ["$delay","integer",1],
    ["$time_1","integer",1],
    ["$time_2","integer",2],
    ["$time_3","integer",3],
    ["$time_4","integer",4],
    ["$time_5","integer",5],
    ["$time_6","integer",6],
    ["$gate_1","bool",false],
    ["$gate_2","bool",false],
    ["$gate_3","bool",false],
    ["$gate_4","bool",false],
    ["$gate_5","bool",false],
    ["$gate_6","bool",false],
    ["$state_1","bool",false],
    ["$state_2","bool",false],
    ["$state_3","bool",false],
    ["$state_4","bool",false],
    ["$state_5","bool",false],
    ["$state_6","bool",false],
    ["$const_1","integer",1],
    ["$const_2","integer",2],
    ["$VAR<Inhibit?>","bool",false]
  ],
  "Module": [
    ["Break", ["$VAR<Inhibit?>"]],
    // Ventil weiterschalten
    ["Multiplexer",["$const_1","$const_2"],"$factor","$next"],
    ["Polynomial", "$factor", "$state",[0, "$state"]],
    ["Latch","$const_1","$state","$start",1],
    ["BinaryDemultiplexer","$state",["$gate_1","$gate_2","$gate_3","$gate_4","$gate_5","$gate_6",0]],
    ["Latch",0,"$state","$gate_6",2],
    //
    // Ventillaufzeiten werden im folgenden Abschnitt geregelt
    ["Monoflop","$gate_1",0,"$state_1","$time_1",2],
    ["Monoflop","$gate_2",0,"$state_2","$time_2",2],
    ["Monoflop","$gate_3",0,"$state_3","$time_3",2],
    ["Monoflop","$gate_4",0,"$state_4","$time_4",2],
    ["Monoflop","$gate_5",0,"$state_5","$time_5",2],
    ["Monoflop","$gate_6",0,"$state_6","$time_6",2],
    //
    // Pausenzeiten werden im folgenden Abschnitt geregelt
    ["Or",["$state_1","$state_2","$state_3","$state_4","$state_5","$state_6"],"$out"],
    ["Monoflop","$out",0,"$next","$delay",4]
  ],  
  "Input": [
    ["Start","Startet dies Bewässerung bei positivier Flanke","$start","c"],
    ["Verzögerung Ventilwechsel","Pausenzeit in dem das Ventil umgeschaltet wird","$delay","u"],
    ["Bewässerungzeit 1","Bewässerungszeit für den Kreis 1","$time_1","u"],
    ["Bewässerungzeit 2","Bewässerungszeit für den Kreis 1","$time_2","u"],
    ["Bewässerungzeit 3","Bewässerungszeit für den Kreis 1","$time_3","u"],
    ["Bewässerungzeit 4","Bewässerungszeit für den Kreis 1","$time_4","u"],
    ["Bewässerungzeit 5","Bewässerungszeit für den Kreis 1","$time_5","u"],
    ["Bewässerungzeit 6","Bewässerungszeit für den Kreis 1","$time_6","u"],
    ["Inhibit","Inhibit","$VAR<Inhibit?>","u"]
  ],
  "Output": [
    ["Aktorausgang","Schaltet den Ventilaktor","$out","ct"]
  ]
}

Re: Modul "Zustandsautomat" Bewässerung für Gardena Wasserverteiler

Verfasst: Do Apr 30, 2020 1:03 am
von NetFritz
Hallo
Klasse läuft.
Gruß NetFritz

Re: Modul "Zustandsautomat" Bewässerung für Gardena Wasserverteiler

Verfasst: Do Apr 30, 2020 8:04 am
von StefanW
Hallo zusammen, tolle Lösung.

Wäre es möglich, nochmal eine kurze Zusammenfassung zu geben, was damit nun genau funktioniert für alle Mitleser?

Sven: Wäre es möglich, dass Du noch Angaben zur Lizensierung machst, also insofern ob jeder das frei benutzen darf? Bitte am Besten im Footer Deines Codes unter Angabe der Lizenz. Wir haben für sowas die sehr einfache TOLL gemacht. Steht alles hier: viewtopic.php?f=65&t=1583


lg

Stefan

Re: Modul "Zustandsautomat" Bewässerung für Gardena Wasserverteiler

Verfasst: Do Apr 30, 2020 3:34 pm
von Robosoc
Jo, danke und sorry, mach ich:

Ziel des Codes: Ansteuerung eines Aktors für den Gardena Wasserverteiler "automatic Bewässerungssystem" zum Beispiel Gardena Artikel 1197-20

Der Wasserverteiler hat 6 Stellungen, jeweils ist nur eine Stellung aktiv. Die Stellungen werden automatisch vom Verteiler weitergeschaltet (vermutlich durch den Wasserdruck), wenn der Verteiler vom Stromnetz getrennt wird.

Nach dem Empfang einer psoitiven Flanke am Start-Eingang schaltet der Logikbaustein den einen Ausgang abhängig von vorgegebenen Bewässerungszeiten (6 individuelle Eingäge) jeweils für die eingestellte Zeit ein, anschließend aus und wartet zwischen den Bewässerungszeiten eine vorgegebene Zeit (in der der Wasserverteiler dann das Ausgangsventil wechseln kann.

Eine positive Flanke auf dem Start-Eingang erzeugt also beispielsweise folgendes Ausgangsbild, bei nachfolgenden Parametereinstellungen:
Anmerkung 2020-04-30 152938.jpg
Anmerkung 2020-04-30 153222.jpg

Code: Alles auswählen

// Logik für Gardena Wasserverteiler
// 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.

{
  "Level": [
    ["$start","bool",false],
    ["$out","bool",false],
    ["$next","bool",false],
    ["$state","integer",0],
    ["$factor","integer",0],
    ["$delay","integer",1],
    ["$time_1","integer",1],
    ["$time_2","integer",2],
    ["$time_3","integer",3],
    ["$time_4","integer",4],
    ["$time_5","integer",5],
    ["$time_6","integer",6],
    ["$gate_1","bool",false],
    ["$gate_2","bool",false],
    ["$gate_3","bool",false],
    ["$gate_4","bool",false],
    ["$gate_5","bool",false],
    ["$gate_6","bool",false],
    ["$state_1","bool",false],
    ["$state_2","bool",false],
    ["$state_3","bool",false],
    ["$state_4","bool",false],
    ["$state_5","bool",false],
    ["$state_6","bool",false],
    ["$const_1","integer",1],
    ["$const_2","integer",2],
    ["$VAR<Inhibit?>","bool",false]
  ],
  "Module": [
    ["Break", ["$VAR<Inhibit?>"]],
    // Ventil weiterschalten
    ["Multiplexer",["$const_1","$const_2"],"$factor","$next"],
    ["Polynomial", "$factor", "$state",[0, "$state"]],
    ["Latch","$const_1","$state","$start",1],
    ["BinaryDemultiplexer","$state",["$gate_1","$gate_2","$gate_3","$gate_4","$gate_5","$gate_6",0]],
    ["Latch",0,"$state","$gate_6",2],
    //
    // Ventillaufzeiten werden im folgenden Abschnitt geregelt
    ["Monoflop","$gate_1",0,"$state_1","$time_1",2],
    ["Monoflop","$gate_2",0,"$state_2","$time_2",2],
    ["Monoflop","$gate_3",0,"$state_3","$time_3",2],
    ["Monoflop","$gate_4",0,"$state_4","$time_4",2],
    ["Monoflop","$gate_5",0,"$state_5","$time_5",2],
    ["Monoflop","$gate_6",0,"$state_6","$time_6",2],
    //
    // Pausenzeiten werden im folgenden Abschnitt geregelt
    ["Or",["$state_1","$state_2","$state_3","$state_4","$state_5","$state_6"],"$out"],
    ["Monoflop","$out",0,"$next","$delay",4]
  ],  
  "Input": [
    ["Start","Startet dies Bewässerung bei positivier Flanke","$start","c"],
    ["Verzögerung Ventilwechsel","Pausenzeit in dem das Ventil umgeschaltet wird","$delay","u"],
    ["Bewässerungzeit 1","Bewässerungszeit für den Kreis 1","$time_1","u"],
    ["Bewässerungzeit 2","Bewässerungszeit für den Kreis 1","$time_2","u"],
    ["Bewässerungzeit 3","Bewässerungszeit für den Kreis 1","$time_3","u"],
    ["Bewässerungzeit 4","Bewässerungszeit für den Kreis 1","$time_4","u"],
    ["Bewässerungzeit 5","Bewässerungszeit für den Kreis 1","$time_5","u"],
    ["Bewässerungzeit 6","Bewässerungszeit für den Kreis 1","$time_6","u"],
    ["Inhibit","Inhibit","$VAR<Inhibit?>","u"]
  ],
  "Output": [
    ["Aktorausgang","Schaltet den Ventilaktor","$out","ct"]
  ]
}

Re: Modul "Zustandsautomat" Bewässerung für Gardena Wasserverteiler

Verfasst: Do Apr 30, 2020 3:35 pm
von Robosoc
@NetFritz : Kannst Du vielleicht noch einen Tipp für eine Mindest-Pausenzeit (erster Timer-Wert) angeben, den Du brauchst, damit der Verteiler auch sicher weiterschaltet? Vermutlich reichen 1-2 Sekunden, oder?