Probleme mit WENN Bedingung

Programmierung der HomeMatic CCU mittels contronics homeputer CL

Moderator: Co-Administratoren

Antworten
ogerlach
Beiträge: 3
Registriert: 12.07.2019, 23:30

Probleme mit WENN Bedingung

Beitrag von ogerlach » 20.07.2019, 16:39

Sorry, wenn die Frage doof sein sollte. Aber ich bräuchte mal etwas Hilfe. Ich habe auf einmal richtig dicke Problem mit der Programierung und verstehe es nicht.
Ich möchte ein HM-LC-Sw4-DR integrieren und er soll die Umwälzpumpen der Warmwasserversorgung schalten.
Das soll er sowohl zeitgesteuert in Abhängigkeit vom Wochentag und auch Abhängig von der Anwesendheit. Die Info ob Anwesend bekomme ich und zeige Sie in dem virtuellen Objekt Anwesendheit auch an, das klappt.

Das Skript für die Pumpe hat bis gestern auch die ganze Woche funktioniert (nicht Wochenende), aber heute (Samstag = andere Bedingung) funktioniert es garnicht mehr. Läuft ziemlich schief. Habe Kontrollvariablen mit Meldungen (Lev1 = Lev4) eingebaut, aber verstehe es nicht.
Hier das Skript:

===============================================================================

wenn Anwesend ist gleich "JA" dann
// Man ist Zuhause
Lev1 := "J"
wenn Wochentag =+ "0111110" dann
Lev2 := "J"
// Von Montag bis Freitag
wenn Uhrzeit zwischen "05:45:00" und "06:00:00" oder Uhrzeit zwischen "18:00:00" und "18:15:00" dann
Lev3 := "J"
Umlauf_Bad_EG einschalten
sonst
Lev3 := "N"
wenn lock = 0 dann
Lev4 := "J"
Umlauf_Bad_EG ausschalten
sonst
Lev4 := "N"
lock:= lock - 1
wenn-Block-Ende
wenn-Block-Ende
sonst
Lev2 := "N"
Wenn Feiertag oder Wochentag ="Samstag" oder Wochentag = "Sonntag" dann
Lev3 := "J"
// Das ist dann Samstag und Sonntag bzw Feiertag
Lev2 := "W"
wenn Uhrzeit zwischen "08:00:00" und "08:15:00" dann
Lev3 := "J"
Umlauf_Bad_EG einschalten
sonst
Lev3 := "N"
wenn lock = 0 dann
Lev4 := "J"
Umlauf_Bad_EG ausschalten
sonst
Lev4 := "N"
lock:= lock - 1
wenn-Block-Ende
wenn-Block-Ende
sonst
Lev3 := "N"
// abschalten
wenn lock = 0 dann
Lev4 := "J"
Umlauf_Bad_EG ausschalten
sonst
Lev4 := "N"
lock:= lock - 1
wenn-Block-Ende
wenn-Block-Ende
wenn-Block-Ende
sonst
// Keiner Zuhause
Lev1 := "N"
wenn Uhrzeit zwischen "16:00:00" und "16:30:00" und Wochentag = "Montag" dann
// Auch wenn dauerhaft keiner Zuhause ist läuft die Pumpe Mo für 30 min
Lev2 := "J"
Umlauf_Bad_EG einschalten
sonst
Lev2 := "N"
Umlauf_Bad_EG ausschalten
lock:= 0
wenn-Block-Ende
wenn-Block-Ende
Anz_Lock:= lock
Anz_Level:= Lev1 + Lev2 + Lev3 + Lev4


=====================================================================

In Anwesend steht "JA" und dennoch zeigt Anz_Level "NNXX" an. Sprich schon die erste Wenn-Bedingugn geht falsch (erstes N).
Was mich auch wundert ist der Fakt, dass unten das Komando "Umlauf_Bad_EG ausschalten" nicht ausgeführt wird. Der Schalter für die Umwälzpumpe reagiert garnicht.
Wenn ich ihn manuell einschalte oder über Visual, bleibt er einfach dort.

Steht in Anwesend jedoch "NEIN" (keiner zuhause), dann schaltet der zuvor manuell eingeschaltete Umwältzpumpen-Schalter auch aus. Die Anz_Level bleibt auf "NNXX", was jetzt aber auch richtig ist.

Das Skript wird jede Sekunde aufgerufen.

Schaltet man bei Anwesend = "NEIN" den Pumpenschalter wieder manuell ein, wird nach spätetesens einer Sek. wieder abgeschaltet.

Wie gesagt, unter der Woche lief er obere Teil ohne Probleme. Wollte heute nur die Bedingung für das Wochenede testen.

Kann mir jemand einen guten Tipp geben? Wäre sehr dankbar dafür.

Gruß

Olaf

PS: Sehe in der Vorschau, dass meine Formatierung hier verloren geht. Sprich die Einrückungen für die Übersicht fehlen leider.

PPS: die Variable lock ermöglicht, dass ein Taster die Pumpe für 15 min. anwirft. Daher zählt die Variable pro sek um einen herunter. Erst bei Null wird die Umwältzpumpe wieder abgeschaltet.

PPPS: Hatte jetzt im oberen Teil mal probeweise "Samstag" an Stelle von Montag bis Freitag eingestzt. Die Bedingung wurde also wahr. Dann ist das Ding gelaufen. Hat also die Umwälzpumpe richtig geschaltet. Auch in der Anz_Level stand dann "JJNJ".
Also
J = Ja zuhause
J = richtiger Tag
N = falsche Zeit
J = keine Sperre (lock)
Also Pumpe ausschalten.

Sobald da wieder Montag bis Freitag steht geht es aber schief.
Erwarten würde ich: Anz_Level = JWNJ
J = Ja zuhause
W = Wochenende (das N = falscher Tag wird überschrieben)
N = falsche Zeit
J = keine Sperre (lock)
Also Pumpe ausschalten.

Es steht da aber NNXX (X = die Vorbelegung, was bedeutet Lev3 und Lev 4 werden nicht beschrieben)
Das Lev3 und Lev4 nicht geschrieben würden bei Lev1 = N ist auch ok. Aber schon die erste Wenn-Entscheidung ist falsch!

Ich verstehe es nicht.

ogerlach
Beiträge: 3
Registriert: 12.07.2019, 23:30

Re: Probleme mit WENN Bedingung

Beitrag von ogerlach » 30.07.2019, 21:56

Hat sich gelöst.

Der Effekt dass die Logik nicht mehr funktionierte ist durch eine ältere Version der CL-Software auf der CCU2 ausgelöst worden.

Danke an den Support.
War zwar nicht ganz so einfach, weil sich in der zu diesm Zeitpunkt aktuellen CL-Software noch ein BUG eingeschlichen hatte, der einen dann ganz in die Irre geführt hat.
Aber wurde schnell und gut gelöst mit neuer, gefixter Version der CL-Software.

Antworten

Zurück zu „homeputer CL“