nachdem ich die Thermostate mit den integrierten Tabellen gesteuert habe und es immer wieder zu Problemen geführt hat (Neustart neu einpflegen bzw. Überschreibung der "online-Tabelle" durch die Grundtabelle aus dem Objekt), habe ich mich entschieden die Programmierung ähnlich auszuführen wie PeterM.
Anbei Oberfläche und Programmiercode für 3 Räume: Es gibt hier die Möglichkeit jeden Wochentag zu definieren und die Urlaubseinstellung zu definieren, Urlaub wird per Schalterobjekt definiert.
Programmiercode:
Code: Alles auswählen
//! ============================================================
//! OBJEKT Makro_Heizung
//! ============================================================
//! OBJEKT-TYP : Makro
//! BEZEICHNUNG : Makro Heizung 5 min
//! STARTWERT :
//! ------------------------------------------------------------
//! AUSFÜHRUNGSINTERVALL : jede Minute
//! AUSFÜHRUNG BEI EINGABE : nein
//! AUSFÜHRUNG BEI EMPFANG : nein
//! AUSFÜHRUNG BEI ÄNDERUNG : nein
//! ------------------------------------------------------------
//! KONF.:7DAD7BCA5ADC3DDD7BAABA5A
//!
//! ============================================================
//! VARIABLENDEFINITIONEN
//! ============================================================
//! NAME TYP STARTWERT
//! ------------------------------------------------------------
//! TemperaturSoll Zahl 0,0
//! ZeitSoll Zeichen
//! ZeitSollZeitFormat Zeit
//! TagesString Zeichen
//Makro Heizungssteuerung
//Wird gesteuert über die Eingabewerte des Fensters der Heizungssteuerung
//Mit der Urlaubseinstellung werden auch Feiertage erschlagen
//Thermostate sollten auf "manuell" stehen
//Temperatursturz muss ausgeschalten sein am Thermostat
//Grundeinstellungen einmal am Tag, falls jemand über Tage etwas verstellt
//Temperaturfestlegung ?
======================================================
Wenn Uhrzeit = "23:55:00" und A_010HeizungAnAus = 1 dann
Thermo_EG_WZ_HZK_Garten.Zeittabelle ausschalten
warte("00:00:05")
Thermo_EG_WZ_HZK_Nachb.Zeittabelle ausschalten
warte("00:00:05")
Thermo_ELW_HZK_SchlZi.Zeittabelle ausschalten
warte("00:00:05")
Thermo_ELW_HZK_Bad.Zeittabelle ausschalten
warte("00:00:05")
SETZEWERT(Thermo_EG_WZ_HZK_Garten, "MANU_MODE", Anz_Heizst_Absenkung)
warte("00:00:10")
SETZEWERT(Thermo_EG_WZ_HZK_Nachb, "MANU_MODE", Anz_Heizst_Absenkung)
warte("00:00:10")
SETZEWERT(Thermo_ELW_HZK_SchlZi, "MANU_MODE", Anz_Heizst_Absenkung)
warte("00:00:10")
SETZEWERT(Thermo_ELW_HZK_Bad, "MANU_MODE", Anz_Heizst_Absenkung)
warte("00:00:10")
EndeWenn
//============================================================
// WOHNZIMMER
// Urlaubseinstellung auslesen und einstellen
//============================================================
Wenn A_010HeizungAnAus = 1 und Virt_SchaZeitstHeizUrlaub = 1 und A_012AbsenkungHeizung = 0 dann
//Step auf 0 zurückstellen
Wenn Uhrzeit = "00:05:00" dann
Anz_HeizstWZStep := 0
EndeWenn
//Erste Einstellung auslesen, erste Position sollte immer ausgefüllt sein
Wenn Anz_HeizstWZStep = 0 dann
ZeitSoll := TEXTTEIL(Anz_Heizst_UrlaubWZ, 1, 5)
ZeitSoll := ZeitSoll + ":00"
ZeitSollZeitFormat := ZeitSoll
TemperaturSoll:= TEXTTEIL(Anz_Heizst_UrlaubWZ, 7, 4)
Wenn Uhrzeit zwischen ZeitSollZeitFormat und (ZeitSollZeitFormat + "00:03:00") dann
Thermo_EG_WZ_HZK_Garten := TemperaturSoll
WARTE("00:00:05")
Thermo_EG_WZ_HZK_Nachb := TemperaturSoll
WARTE("00:00:05")
Anz_HeizstWZStep := 1
starte(Makro_Meldungen)
Meldung1:=Datum + " " + Uhrzeit + " Sollzeit: " + ZeitSoll + " Solltemperatur: " + TemperaturSoll
EndeWenn
EndeWenn
//Zweite Einstellung auslesen, erste Position sollte immer ausgefüllt sein
Wenn Anz_HeizstWZStep = 1 dann
ZeitSoll := TEXTTEIL(Anz_Heizst_UrlaubWZ, 12, 5)
Wenn ZeitSoll = "" ODER ZeitSoll = " " Dann
Anz_HeizstWZStep := 5
VERLASSEN
EndeWenn
ZeitSoll := ZeitSoll + ":00"
ZeitSollZeitFormat := ZeitSoll
TemperaturSoll:= TEXTTEIL(Anz_Heizst_UrlaubWZ, 18, 4)
Wenn Uhrzeit zwischen ZeitSollZeitFormat und (ZeitSollZeitFormat + "00:03:00") dann
Thermo_EG_WZ_HZK_Garten := TemperaturSoll
WARTE("00:00:05")
Thermo_EG_WZ_HZK_Nachb := TemperaturSoll
WARTE("00:00:05")
Anz_HeizstWZStep := 2
starte(Makro_Meldungen)
Meldung1:=Datum + " " + Uhrzeit + " Sollzeit: " + ZeitSoll + " Solltemperatur: " + TemperaturSoll
EndeWenn
EndeWenn
//Dritte Einstellung auslesen, erste Position sollte immer ausgefüllt sein
Wenn Anz_HeizstWZStep = 2 dann
ZeitSoll := TEXTTEIL(Anz_Heizst_UrlaubWZ, 23, 5)
Wenn ZeitSoll = "" ODER ZeitSoll = " " Dann
Anz_HeizstWZStep := 5
VERLASSEN
EndeWenn
ZeitSoll := ZeitSoll + ":00"
ZeitSollZeitFormat := ZeitSoll
TemperaturSoll:= TEXTTEIL(Anz_Heizst_UrlaubWZ, 29, 4)
Wenn Uhrzeit zwischen ZeitSollZeitFormat und (ZeitSollZeitFormat + "00:03:00") dann
Thermo_EG_WZ_HZK_Garten := TemperaturSoll
WARTE("00:00:05")
Thermo_EG_WZ_HZK_Nachb := TemperaturSoll
WARTE("00:00:05")
Anz_HeizstWZStep := 3
starte(Makro_Meldungen)
Meldung1:=Datum + " " + Uhrzeit + " Sollzeit: " + ZeitSoll + " Solltemperatur: " + TemperaturSoll
EndeWenn
EndeWenn
//Vierte Einstellung auslesen, erste Position sollte immer ausgefüllt sein
Wenn Anz_HeizstWZStep = 3 dann
ZeitSoll := TEXTTEIL(Anz_Heizst_UrlaubWZ, 34, 5)
Wenn ZeitSoll = "" ODER ZeitSoll = " " Dann
Anz_HeizstWZStep := 5
VERLASSEN
EndeWenn
ZeitSoll := ZeitSoll + ":00"
ZeitSollZeitFormat := ZeitSoll
TemperaturSoll:= TEXTTEIL(Anz_Heizst_UrlaubWZ, 40, 4)
Wenn Uhrzeit zwischen ZeitSollZeitFormat und (ZeitSollZeitFormat + "00:03:00") dann
Thermo_EG_WZ_HZK_Garten := TemperaturSoll
WARTE("00:00:05")
Thermo_EG_WZ_HZK_Nachb := TemperaturSoll
WARTE("00:00:05")
Anz_HeizstWZStep := 4
starte(Makro_Meldungen)
Meldung1:=Datum + " " + Uhrzeit + " Sollzeit: " + ZeitSoll + " Solltemperatur: " + TemperaturSoll
EndeWenn
EndeWenn
//Fünfte Einstellung auslesen, erste Position sollte immer ausgefüllt sein
Wenn Anz_HeizstWZStep = 4 dann
ZeitSoll := TEXTTEIL(Anz_Heizst_UrlaubWZ, 45, 5)
Wenn ZeitSoll = "" ODER ZeitSoll = " " Dann
Anz_HeizstWZStep := 5
VERLASSEN
EndeWenn
ZeitSoll := ZeitSoll + ":00"
ZeitSollZeitFormat := ZeitSoll
TemperaturSoll:= TEXTTEIL(Anz_Heizst_UrlaubWZ, 51, 4)
Wenn Uhrzeit zwischen ZeitSollZeitFormat und (ZeitSollZeitFormat + "00:03:00") dann
Thermo_EG_WZ_HZK_Garten := TemperaturSoll
WARTE("00:00:05")
Thermo_EG_WZ_HZK_Nachb := TemperaturSoll
WARTE("00:00:05")
Anz_HeizstWZStep := 5
starte(Makro_Meldungen)
Meldung1:=Datum + " " + Uhrzeit + " Sollzeit: " + ZeitSoll + " Solltemperatur: " + TemperaturSoll
EndeWenn
EndeWenn
EndeWenn
//============================================================
// WOHNZIMMER
// Tageseinstellung auslesen und einstellen
//============================================================
Wenn A_010HeizungAnAus = 1 und Virt_SchaZeitstHeizUrlaub = 0 und A_012AbsenkungHeizung = 0 dann
//Step auf 0 zurückstellen
Wenn Uhrzeit = "00:05:00" dann
Anz_HeizstWZStep := 0
EndeWenn
//Zuordnung Tage
Wenn Wochentag = "Montag" dann
TagesString := Anz_Heizst_MontagWZ
EndeWenn
Wenn Wochentag = "Dienstag" dann
TagesString := Anz_Heizst_DienstagWZ
EndeWenn
Wenn Wochentag = "Mittwoch" dann
TagesString := Anz_Heizst_MittwochWZ
EndeWenn
Wenn Wochentag = "Donnerstag" dann
TagesString := Anz_Heizst_DonnerstagWZ
EndeWenn
Wenn Wochentag = "Freitag" dann
TagesString := Anz_Heizst_FreitagWZ
EndeWenn
Wenn Wochentag = "Samstag" dann
TagesString := Anz_Heizst_SamstagWZ
EndeWenn
Wenn Wochentag = "Sonntag" dann
TagesString := Anz_Heizst_SonntagWZ
EndeWenn
//Erste Einstellung auslesen, erste Position sollte immer ausgefüllt sein
Wenn Anz_HeizstWZStep = 0 dann
ZeitSoll := TEXTTEIL(TagesString, 1, 5)
ZeitSoll := ZeitSoll + ":00"
ZeitSollZeitFormat := ZeitSoll
TemperaturSoll:= TEXTTEIL(TagesString, 7, 4)
Wenn Uhrzeit zwischen ZeitSollZeitFormat und (ZeitSollZeitFormat + "00:03:00") dann
Thermo_EG_WZ_HZK_Garten := TemperaturSoll
WARTE("00:00:05")
Thermo_EG_WZ_HZK_Nachb := TemperaturSoll
WARTE("00:00:05")
Anz_HeizstWZStep := 1
starte(Makro_Meldungen)
Meldung1:=Datum + " " + Uhrzeit + " Sollzeit: " + ZeitSoll + " Solltemperatur: " + TemperaturSoll
EndeWenn
EndeWenn
//Zweite Einstellung auslesen, erste Position sollte immer ausgefüllt sein
Wenn Anz_HeizstWZStep = 1 dann
ZeitSoll := TEXTTEIL(TagesString, 12, 5)
Wenn ZeitSoll = "" ODER ZeitSoll = " " Dann
Anz_HeizstWZStep := 5
VERLASSEN
EndeWenn
ZeitSoll := ZeitSoll + ":00"
ZeitSollZeitFormat := ZeitSoll
TemperaturSoll:= TEXTTEIL(TagesString, 18, 4)
Wenn Uhrzeit zwischen ZeitSollZeitFormat und (ZeitSollZeitFormat + "00:03:00") dann
Thermo_EG_WZ_HZK_Garten := TemperaturSoll
WARTE("00:00:05")
Thermo_EG_WZ_HZK_Nachb := TemperaturSoll
WARTE("00:00:05")
Anz_HeizstWZStep := 2
starte(Makro_Meldungen)
Meldung1:=Datum + " " + Uhrzeit + " Sollzeit: " + ZeitSoll + " Solltemperatur: " + TemperaturSoll
EndeWenn
EndeWenn
//Dritte Einstellung auslesen, erste Position sollte immer ausgefüllt sein
Wenn Anz_HeizstWZStep = 2 dann
ZeitSoll := TEXTTEIL(TagesString, 23, 5)
Wenn ZeitSoll = "" ODER ZeitSoll = " " Dann
Anz_HeizstWZStep := 5
VERLASSEN
EndeWenn
ZeitSoll := ZeitSoll + ":00"
ZeitSollZeitFormat := ZeitSoll
TemperaturSoll:= TEXTTEIL(TagesString, 29, 4)
Wenn Uhrzeit zwischen ZeitSollZeitFormat und (ZeitSollZeitFormat + "00:03:00") dann
Thermo_EG_WZ_HZK_Garten := TemperaturSoll
WARTE("00:00:05")
Thermo_EG_WZ_HZK_Nachb := TemperaturSoll
WARTE("00:00:05")
Anz_HeizstWZStep := 3
starte(Makro_Meldungen)
Meldung1:=Datum + " " + Uhrzeit + " Sollzeit: " + ZeitSoll + " Solltemperatur: " + TemperaturSoll
EndeWenn
EndeWenn
//Vierte Einstellung auslesen, erste Position sollte immer ausgefüllt sein
Wenn Anz_HeizstWZStep = 3 dann
ZeitSoll := TEXTTEIL(TagesString, 34, 5)
Wenn ZeitSoll = "" ODER ZeitSoll = " " Dann
Anz_HeizstWZStep := 5
VERLASSEN
EndeWenn
ZeitSoll := ZeitSoll + ":00"
ZeitSollZeitFormat := ZeitSoll
TemperaturSoll:= TEXTTEIL(TagesString, 40, 4)
Wenn Uhrzeit zwischen ZeitSollZeitFormat und (ZeitSollZeitFormat + "00:03:00") dann
Thermo_EG_WZ_HZK_Garten := TemperaturSoll
WARTE("00:00:05")
Thermo_EG_WZ_HZK_Nachb := TemperaturSoll
WARTE("00:00:05")
Anz_HeizstWZStep := 4
starte(Makro_Meldungen)
Meldung1:=Datum + " " + Uhrzeit + " Sollzeit: " + ZeitSoll + " Solltemperatur: " + TemperaturSoll
EndeWenn
EndeWenn
//Fünfte Einstellung auslesen, erste Position sollte immer ausgefüllt sein
Wenn Anz_HeizstWZStep = 4 dann
ZeitSoll := TEXTTEIL(TagesString, 45, 5)
Wenn ZeitSoll = "" ODER ZeitSoll = " " Dann
Anz_HeizstWZStep := 5
VERLASSEN
EndeWenn
ZeitSoll := ZeitSoll + ":00"
ZeitSollZeitFormat := ZeitSoll
TemperaturSoll:= TEXTTEIL(TagesString, 51, 4)
Wenn Uhrzeit zwischen ZeitSollZeitFormat und (ZeitSollZeitFormat + "00:03:00") dann
Thermo_EG_WZ_HZK_Garten := TemperaturSoll
WARTE("00:00:05")
Thermo_EG_WZ_HZK_Nachb := TemperaturSoll
WARTE("00:00:05")
Anz_HeizstWZStep := 5
starte(Makro_Meldungen)
Meldung1:=Datum + " " + Uhrzeit + " Sollzeit: " + ZeitSoll + " Solltemperatur: " + TemperaturSoll
EndeWenn
EndeWenn
EndeWenn
//============================================================
// ELW Schlafzimmer
// Urlaubseinstellung auslesen und einstellen
//============================================================
Wenn A_010HeizungAnAus = 1 und Virt_SchaZeitstHeizUrlaub = 1 und A_012AbsenkungHeizung = 0 dann
//Step auf 0 zurückstellen
Wenn Uhrzeit = "00:05:00" dann
Anz_HeizstELWSZiStep := 0
EndeWenn
//Erste Einstellung auslesen, erste Position sollte immer ausgefüllt sein
Wenn Anz_HeizstELWSZiStep = 0 dann
ZeitSoll := TEXTTEIL(Anz_Heizst_UrlaubELWSZi, 1, 5)
ZeitSoll := ZeitSoll + ":00"
ZeitSollZeitFormat := ZeitSoll
TemperaturSoll:= TEXTTEIL(Anz_Heizst_UrlaubELWSZi, 7, 4)
Wenn Uhrzeit zwischen ZeitSollZeitFormat und (ZeitSollZeitFormat + "00:03:00") dann
Thermo_ELW_HZK_SchlZi := TemperaturSoll
WARTE("00:00:05")
Anz_HeizstELWSZiStep := 1
starte(Makro_Meldungen)
Meldung1:=Datum + " " + Uhrzeit + " Sollzeit: " + ZeitSoll + " Solltemperatur: " + TemperaturSoll
EndeWenn
EndeWenn
//Zweite Einstellung auslesen, erste Position sollte immer ausgefüllt sein
Wenn Anz_HeizstELWSZiStep = 1 dann
ZeitSoll := TEXTTEIL(Anz_Heizst_UrlaubELWSZi, 12, 5)
Wenn ZeitSoll = "" ODER ZeitSoll = " " Dann
Anz_HeizstELWSZiStep := 5
VERLASSEN
EndeWenn
ZeitSoll := ZeitSoll + ":00"
ZeitSollZeitFormat := ZeitSoll
TemperaturSoll:= TEXTTEIL(Anz_Heizst_UrlaubELWSZi, 18, 4)
Wenn Uhrzeit zwischen ZeitSollZeitFormat und (ZeitSollZeitFormat + "00:03:00") dann
Thermo_ELW_HZK_SchlZi := TemperaturSoll
WARTE("00:00:05")
Anz_HeizstELWSZiStep := 2
starte(Makro_Meldungen)
Meldung1:=Datum + " " + Uhrzeit + " Sollzeit: " + ZeitSoll + " Solltemperatur: " + TemperaturSoll
EndeWenn
EndeWenn
//Dritte Einstellung auslesen, erste Position sollte immer ausgefüllt sein
Wenn Anz_HeizstELWSZiStep = 2 dann
ZeitSoll := TEXTTEIL(Anz_Heizst_UrlaubELWSZi, 23, 5)
Wenn ZeitSoll = "" ODER ZeitSoll = " " Dann
Anz_HeizstELWSZiStep := 5
VERLASSEN
EndeWenn
ZeitSoll := ZeitSoll + ":00"
ZeitSollZeitFormat := ZeitSoll
TemperaturSoll:= TEXTTEIL(Anz_Heizst_UrlaubELWSZi, 29, 4)
Wenn Uhrzeit zwischen ZeitSollZeitFormat und (ZeitSollZeitFormat + "00:03:00") dann
Thermo_ELW_HZK_SchlZi := TemperaturSoll
WARTE("00:00:05")
Anz_HeizstELWSZiStep := 3
starte(Makro_Meldungen)
Meldung1:=Datum + " " + Uhrzeit + " Sollzeit: " + ZeitSoll + " Solltemperatur: " + TemperaturSoll
EndeWenn
EndeWenn
//Vierte Einstellung auslesen, erste Position sollte immer ausgefüllt sein
Wenn Anz_HeizstELWSZiStep = 3 dann
ZeitSoll := TEXTTEIL(Anz_Heizst_UrlaubELWSZi, 34, 5)
Wenn ZeitSoll = "" ODER ZeitSoll = " " Dann
Anz_HeizstELWSZiStep := 5
VERLASSEN
EndeWenn
ZeitSoll := ZeitSoll + ":00"
ZeitSollZeitFormat := ZeitSoll
TemperaturSoll:= TEXTTEIL(Anz_Heizst_UrlaubELWSZi, 40, 4)
Wenn Uhrzeit zwischen ZeitSollZeitFormat und (ZeitSollZeitFormat + "00:03:00") dann
Thermo_ELW_HZK_SchlZi := TemperaturSoll
WARTE("00:00:05")
Anz_HeizstELWSZiStep := 4
starte(Makro_Meldungen)
Meldung1:=Datum + " " + Uhrzeit + " Sollzeit: " + ZeitSoll + " Solltemperatur: " + TemperaturSoll
EndeWenn
EndeWenn
//Fünfte Einstellung auslesen, erste Position sollte immer ausgefüllt sein
Wenn Anz_HeizstELWSZiStep = 4 dann
ZeitSoll := TEXTTEIL(Anz_Heizst_UrlaubELWSZi, 45, 5)
Wenn ZeitSoll = "" ODER ZeitSoll = " " Dann
Anz_HeizstELWSZiStep := 5
VERLASSEN
EndeWenn
ZeitSoll := ZeitSoll + ":00"
ZeitSollZeitFormat := ZeitSoll
TemperaturSoll:= TEXTTEIL(Anz_Heizst_UrlaubELWSZi, 51, 4)
Wenn Uhrzeit zwischen ZeitSollZeitFormat und (ZeitSollZeitFormat + "00:03:00") dann
Thermo_ELW_HZK_SchlZi := TemperaturSoll
WARTE("00:00:05")
Anz_HeizstELWSZiStep := 5
starte(Makro_Meldungen)
Meldung1:=Datum + " " + Uhrzeit + " Sollzeit: " + ZeitSoll + " Solltemperatur: " + TemperaturSoll
EndeWenn
EndeWenn
EndeWenn
//============================================================
// ELW Schlafzimmer
// Tageseinstellung auslesen und einstellen
//============================================================
Wenn A_010HeizungAnAus = 1 und Virt_SchaZeitstHeizUrlaub = 0 und A_012AbsenkungHeizung = 0 dann
//Step auf 0 zurückstellen
Wenn Uhrzeit = "00:05:00" dann
Anz_HeizstELWBadStep := 0
EndeWenn
//Zuordnung Tage
Wenn Wochentag = "Montag" dann
TagesString := Anz_Heizst_MontagELWSZi
EndeWenn
Wenn Wochentag = "Dienstag" dann
TagesString := Anz_Heizst_DienstagELWSZi
EndeWenn
Wenn Wochentag = "Mittwoch" dann
TagesString := Anz_Heizst_MittwochELWSZi
EndeWenn
Wenn Wochentag = "Donnerstag" dann
TagesString := Anz_Heizst_DonnerstagELWSZi
EndeWenn
Wenn Wochentag = "Freitag" dann
TagesString := Anz_Heizst_FreitagELWSZi
EndeWenn
Wenn Wochentag = "Samstag" dann
TagesString := Anz_Heizst_SamstagELWSZi
EndeWenn
Wenn Wochentag = "Sonntag" dann
TagesString := Anz_Heizst_SonntagELWSZi
EndeWenn
//Erste Einstellung auslesen, erste Position sollte immer ausgefüllt sein
Wenn Anz_HeizstELWSZiStep = 0 dann
ZeitSoll := TEXTTEIL(TagesString, 1, 5)
ZeitSoll := ZeitSoll + ":00"
ZeitSollZeitFormat := ZeitSoll
TemperaturSoll:= TEXTTEIL(TagesString, 7, 4)
Wenn Uhrzeit zwischen ZeitSollZeitFormat und (ZeitSollZeitFormat + "00:03:00") dann
Thermo_ELW_HZK_SchlZi := TemperaturSoll
WARTE("00:00:05")
Anz_HeizstELWSZiStep := 1
starte(Makro_Meldungen)
Meldung1:=Datum + " " + Uhrzeit + " Sollzeit: " + ZeitSoll + " Solltemperatur: " + TemperaturSoll
EndeWenn
EndeWenn
//Zweite Einstellung auslesen, erste Position sollte immer ausgefüllt sein
Wenn Anz_HeizstELWSZiStep = 1 dann
ZeitSoll := TEXTTEIL(TagesString, 12, 5)
Wenn ZeitSoll = "" ODER ZeitSoll = " " Dann
Anz_HeizstELWSZiStep := 5
VERLASSEN
EndeWenn
ZeitSoll := ZeitSoll + ":00"
ZeitSollZeitFormat := ZeitSoll
TemperaturSoll:= TEXTTEIL(TagesString, 18, 4)
Wenn Uhrzeit zwischen ZeitSollZeitFormat und (ZeitSollZeitFormat + "00:03:00") dann
Thermo_ELW_HZK_SchlZi := TemperaturSoll
WARTE("00:00:05")
Anz_HeizstELWSZiStep := 2
starte(Makro_Meldungen)
Meldung1:=Datum + " " + Uhrzeit + " Sollzeit: " + ZeitSoll + " Solltemperatur: " + TemperaturSoll
EndeWenn
EndeWenn
//Dritte Einstellung auslesen, erste Position sollte immer ausgefüllt sein
Wenn Anz_HeizstELWSZiStep = 2 dann
ZeitSoll := TEXTTEIL(TagesString, 23, 5)
Wenn ZeitSoll = "" ODER ZeitSoll = " " Dann
Anz_HeizstELWSZiStep := 5
VERLASSEN
EndeWenn
ZeitSoll := ZeitSoll + ":00"
ZeitSollZeitFormat := ZeitSoll
TemperaturSoll:= TEXTTEIL(TagesString, 29, 4)
Wenn Uhrzeit zwischen ZeitSollZeitFormat und (ZeitSollZeitFormat + "00:03:00") dann
Thermo_ELW_HZK_SchlZi := TemperaturSoll
WARTE("00:00:05")
Anz_HeizstELWSZiStep := 3
starte(Makro_Meldungen)
Meldung1:=Datum + " " + Uhrzeit + " Sollzeit: " + ZeitSoll + " Solltemperatur: " + TemperaturSoll
EndeWenn
EndeWenn
//Vierte Einstellung auslesen, erste Position sollte immer ausgefüllt sein
Wenn Anz_HeizstELWSZiStep = 3 dann
ZeitSoll := TEXTTEIL(TagesString, 34, 5)
Wenn ZeitSoll = "" ODER ZeitSoll = " " Dann
Anz_HeizstELWSZiStep := 5
VERLASSEN
EndeWenn
ZeitSoll := ZeitSoll + ":00"
ZeitSollZeitFormat := ZeitSoll
TemperaturSoll:= TEXTTEIL(TagesString, 40, 4)
Wenn Uhrzeit zwischen ZeitSollZeitFormat und (ZeitSollZeitFormat + "00:03:00") dann
Thermo_ELW_HZK_SchlZi := TemperaturSoll
WARTE("00:00:05")
Anz_HeizstELWSZiStep := 4
starte(Makro_Meldungen)
Meldung1:=Datum + " " + Uhrzeit + " Sollzeit: " + ZeitSoll + " Solltemperatur: " + TemperaturSoll
EndeWenn
EndeWenn
//Fünfte Einstellung auslesen, erste Position sollte immer ausgefüllt sein
Wenn Anz_HeizstELWSZiStep = 4 dann
ZeitSoll := TEXTTEIL(TagesString, 45, 5)
Wenn ZeitSoll = "" ODER ZeitSoll = " " Dann
Anz_HeizstELWSZiStep := 5
VERLASSEN
EndeWenn
ZeitSoll := ZeitSoll + ":00"
ZeitSollZeitFormat := ZeitSoll
TemperaturSoll:= TEXTTEIL(TagesString, 51, 4)
Wenn Uhrzeit zwischen ZeitSollZeitFormat und (ZeitSollZeitFormat + "00:03:00") dann
Thermo_ELW_HZK_SchlZi := TemperaturSoll
WARTE("00:00:05")
Anz_HeizstELWSZiStep := 5
starte(Makro_Meldungen)
Meldung1:=Datum + " " + Uhrzeit + " Sollzeit: " + ZeitSoll + " Solltemperatur: " + TemperaturSoll
EndeWenn
EndeWenn
EndeWenn
//============================================================
// ELW Bad
// Urlaubseinstellung auslesen und einstellen
//============================================================
Wenn A_010HeizungAnAus = 1 und Virt_SchaZeitstHeizUrlaub = 1 und A_012AbsenkungHeizung = 0 dann
//Step auf 0 zurückstellen
Wenn Uhrzeit = "00:05:00" dann
Anz_HeizstELWBadStep := 0
EndeWenn
//Erste Einstellung auslesen, erste Position sollte immer ausgefüllt sein
Wenn Anz_HeizstELWBadStep = 0 dann
ZeitSoll := TEXTTEIL(Anz_Heizst_UrlaubELWBad, 1, 5)
ZeitSoll := ZeitSoll + ":00"
ZeitSollZeitFormat := ZeitSoll
TemperaturSoll:= TEXTTEIL(Anz_Heizst_UrlaubELWBad, 7, 4)
Wenn Uhrzeit zwischen ZeitSollZeitFormat und (ZeitSollZeitFormat + "00:03:00") dann
Thermo_ELW_HZK_Bad := TemperaturSoll
WARTE("00:00:05")
Anz_HeizstELWBadStep := 1
starte(Makro_Meldungen)
Meldung1:=Datum + " " + Uhrzeit + " Sollzeit: " + ZeitSoll + " Solltemperatur: " + TemperaturSoll
EndeWenn
EndeWenn
//Zweite Einstellung auslesen, erste Position sollte immer ausgefüllt sein
Wenn Anz_HeizstELWBadStep = 1 dann
ZeitSoll := TEXTTEIL(Anz_Heizst_UrlaubELWBad, 12, 5)
Wenn ZeitSoll = "" ODER ZeitSoll = " " Dann
Anz_HeizstELWBadStep := 5
VERLASSEN
EndeWenn
ZeitSoll := ZeitSoll + ":00"
ZeitSollZeitFormat := ZeitSoll
TemperaturSoll:= TEXTTEIL(Anz_Heizst_UrlaubELWBad, 18, 4)
Wenn Uhrzeit zwischen ZeitSollZeitFormat und (ZeitSollZeitFormat + "00:03:00") dann
Thermo_ELW_HZK_Bad := TemperaturSoll
WARTE("00:00:05")
Anz_HeizstELWBadStep := 2
starte(Makro_Meldungen)
Meldung1:=Datum + " " + Uhrzeit + " Sollzeit: " + ZeitSoll + " Solltemperatur: " + TemperaturSoll
EndeWenn
EndeWenn
//Dritte Einstellung auslesen, erste Position sollte immer ausgefüllt sein
Wenn Anz_HeizstELWBadStep = 2 dann
ZeitSoll := TEXTTEIL(Anz_Heizst_UrlaubELWBad, 23, 5)
Wenn ZeitSoll = "" ODER ZeitSoll = " " Dann
Anz_HeizstELWBadStep := 5
VERLASSEN
EndeWenn
ZeitSoll := ZeitSoll + ":00"
ZeitSollZeitFormat := ZeitSoll
TemperaturSoll:= TEXTTEIL(Anz_Heizst_UrlaubELWBad, 29, 4)
Wenn Uhrzeit zwischen ZeitSollZeitFormat und (ZeitSollZeitFormat + "00:03:00") dann
Thermo_ELW_HZK_Bad := TemperaturSoll
WARTE("00:00:05")
Anz_HeizstELWBadStep := 3
starte(Makro_Meldungen)
Meldung1:=Datum + " " + Uhrzeit + " Sollzeit: " + ZeitSoll + " Solltemperatur: " + TemperaturSoll
EndeWenn
EndeWenn
//Vierte Einstellung auslesen, erste Position sollte immer ausgefüllt sein
Wenn Anz_HeizstELWBadStep = 3 dann
ZeitSoll := TEXTTEIL(Anz_Heizst_UrlaubELWBad, 34, 5)
Wenn ZeitSoll = "" ODER ZeitSoll = " " Dann
Anz_HeizstELWBadStep := 5
VERLASSEN
EndeWenn
ZeitSoll := ZeitSoll + ":00"
ZeitSollZeitFormat := ZeitSoll
TemperaturSoll:= TEXTTEIL(Anz_Heizst_UrlaubELWBad, 40, 4)
Wenn Uhrzeit zwischen ZeitSollZeitFormat und (ZeitSollZeitFormat + "00:03:00") dann
Thermo_ELW_HZK_Bad := TemperaturSoll
WARTE("00:00:05")
Anz_HeizstELWBadStep := 4
starte(Makro_Meldungen)
Meldung1:=Datum + " " + Uhrzeit + " Sollzeit: " + ZeitSoll + " Solltemperatur: " + TemperaturSoll
EndeWenn
EndeWenn
//Fünfte Einstellung auslesen, erste Position sollte immer ausgefüllt sein
Wenn Anz_HeizstELWBadStep = 4 dann
ZeitSoll := TEXTTEIL(Anz_Heizst_UrlaubELWBad, 45, 5)
Wenn ZeitSoll = "" ODER ZeitSoll = " " Dann
Anz_HeizstELWSZiStep := 5
VERLASSEN
EndeWenn
ZeitSoll := ZeitSoll + ":00"
ZeitSollZeitFormat := ZeitSoll
TemperaturSoll:= TEXTTEIL(Anz_Heizst_UrlaubELWBad, 51, 4)
Wenn Uhrzeit zwischen ZeitSollZeitFormat und (ZeitSollZeitFormat + "00:03:00") dann
Thermo_ELW_HZK_Bad := TemperaturSoll
WARTE("00:00:05")
Anz_HeizstELWBadStep := 5
starte(Makro_Meldungen)
Meldung1:=Datum + " " + Uhrzeit + " Sollzeit: " + ZeitSoll + " Solltemperatur: " + TemperaturSoll
EndeWenn
EndeWenn
EndeWenn
//============================================================
// ELW Bad
// Tageseinstellung auslesen und einstellen
//============================================================
Wenn A_010HeizungAnAus = 1 und Virt_SchaZeitstHeizUrlaub = 0 und A_012AbsenkungHeizung = 0 dann
//Step auf 0 zurückstellen
Wenn Uhrzeit = "00:05:00" dann
Anz_HeizstELWBadStep := 0
EndeWenn
//Zuordnung Tage
Wenn Wochentag = "Montag" dann
TagesString := Anz_Heizst_MontagELWBad
EndeWenn
Wenn Wochentag = "Dienstag" dann
TagesString := Anz_Heizst_DienstagELWBad
EndeWenn
Wenn Wochentag = "Mittwoch" dann
TagesString := Anz_Heizst_MittwochELWBad
EndeWenn
Wenn Wochentag = "Donnerstag" dann
TagesString := Anz_Heizst_DonnerstagELWBad
EndeWenn
Wenn Wochentag = "Freitag" dann
TagesString := Anz_Heizst_FreitagELWBad
EndeWenn
Wenn Wochentag = "Samstag" dann
TagesString := Anz_Heizst_SamstagELWBad
EndeWenn
Wenn Wochentag = "Sonntag" dann
TagesString := Anz_Heizst_SonntagELWBad
EndeWenn
//Erste Einstellung auslesen, erste Position sollte immer ausgefüllt sein
Wenn Anz_HeizstELWBadStep = 0 dann
ZeitSoll := TEXTTEIL(TagesString, 1, 5)
ZeitSoll := ZeitSoll + ":00"
ZeitSollZeitFormat := ZeitSoll
TemperaturSoll:= TEXTTEIL(TagesString, 7, 4)
Wenn Uhrzeit zwischen ZeitSollZeitFormat und (ZeitSollZeitFormat + "00:03:00") dann
Thermo_ELW_HZK_Bad := TemperaturSoll
WARTE("00:00:05")
Anz_HeizstELWBadStep := 1
starte(Makro_Meldungen)
Meldung1:=Datum + " " + Uhrzeit + " Sollzeit: " + ZeitSoll + " Solltemperatur: " + TemperaturSoll
EndeWenn
EndeWenn
//Zweite Einstellung auslesen, erste Position sollte immer ausgefüllt sein
Wenn Anz_HeizstELWBadStep = 1 dann
ZeitSoll := TEXTTEIL(TagesString, 12, 5)
Wenn ZeitSoll = "" ODER ZeitSoll = " " Dann
Anz_HeizstELWBadStep := 5
VERLASSEN
EndeWenn
ZeitSoll := ZeitSoll + ":00"
ZeitSollZeitFormat := ZeitSoll
TemperaturSoll:= TEXTTEIL(TagesString, 18, 4)
Wenn Uhrzeit zwischen ZeitSollZeitFormat und (ZeitSollZeitFormat + "00:03:00") dann
Thermo_ELW_HZK_Bad := TemperaturSoll
WARTE("00:00:05")
Anz_HeizstELWBadStep := 2
starte(Makro_Meldungen)
Meldung1:=Datum + " " + Uhrzeit + " Sollzeit: " + ZeitSoll + " Solltemperatur: " + TemperaturSoll
EndeWenn
EndeWenn
//Dritte Einstellung auslesen, erste Position sollte immer ausgefüllt sein
Wenn Anz_HeizstELWBadStep = 2 dann
ZeitSoll := TEXTTEIL(TagesString, 23, 5)
Wenn ZeitSoll = "" ODER ZeitSoll = " " Dann
Anz_HeizstELWBadStep := 5
VERLASSEN
EndeWenn
ZeitSoll := ZeitSoll + ":00"
ZeitSollZeitFormat := ZeitSoll
TemperaturSoll:= TEXTTEIL(TagesString, 29, 4)
Wenn Uhrzeit zwischen ZeitSollZeitFormat und (ZeitSollZeitFormat + "00:03:00") dann
Thermo_ELW_HZK_Bad := TemperaturSoll
WARTE("00:00:05")
Anz_HeizstELWBadStep := 3
starte(Makro_Meldungen)
Meldung1:=Datum + " " + Uhrzeit + " Sollzeit: " + ZeitSoll + " Solltemperatur: " + TemperaturSoll
EndeWenn
EndeWenn
//Vierte Einstellung auslesen, erste Position sollte immer ausgefüllt sein
Wenn Anz_HeizstELWBadStep = 3 dann
ZeitSoll := TEXTTEIL(TagesString, 34, 5)
Wenn ZeitSoll = "" ODER ZeitSoll = " " Dann
Anz_HeizstELWBadStep := 5
VERLASSEN
EndeWenn
ZeitSoll := ZeitSoll + ":00"
ZeitSollZeitFormat := ZeitSoll
TemperaturSoll:= TEXTTEIL(TagesString, 40, 4)
Wenn Uhrzeit zwischen ZeitSollZeitFormat und (ZeitSollZeitFormat + "00:03:00") dann
Thermo_ELW_HZK_Bad := TemperaturSoll
WARTE("00:00:05")
Anz_HeizstELWBadStep := 4
starte(Makro_Meldungen)
Meldung1:=Datum + " " + Uhrzeit + " Sollzeit: " + ZeitSoll + " Solltemperatur: " + TemperaturSoll
EndeWenn
EndeWenn
//Fünfte Einstellung auslesen, erste Position sollte immer ausgefüllt sein
Wenn Anz_HeizstELWBadStep = 4 dann
ZeitSoll := TEXTTEIL(TagesString, 45, 5)
Wenn ZeitSoll = "" ODER ZeitSoll = " " Dann
Anz_HeizstELWBadStep := 5
VERLASSEN
EndeWenn
ZeitSoll := ZeitSoll + ":00"
ZeitSollZeitFormat := ZeitSoll
TemperaturSoll:= TEXTTEIL(TagesString, 51, 4)
Wenn Uhrzeit zwischen ZeitSollZeitFormat und (ZeitSollZeitFormat + "00:03:00") dann
Thermo_ELW_HZK_Bad := TemperaturSoll
WARTE("00:00:05")
Anz_HeizstELWBadStep := 5
starte(Makro_Meldungen)
Meldung1:=Datum + " " + Uhrzeit + " Sollzeit: " + ZeitSoll + " Solltemperatur: " + TemperaturSoll
EndeWenn
EndeWenn
EndeWenn
//Absenkung während Heizperiode
========================================================
//Auslesen Zeiten aus String Tage und Einstellungen ausführen
Wenn A_010HeizungAnAus = 1 und Virt_SchaZeitstHeizUrlaub = 0 und A_012AbsenkungHeizung = 1 dann
Wenn Uhrzeit = "00:05:00" dann
Thermo_EG_WZ_HZK_Garten := Anz_Heizst_Absenkung
WARTE("00:00:05")
Thermo_EG_WZ_HZK_Nachb := Anz_Heizst_Absenkung
WARTE("00:00:05")
Thermo_ELW_HZK_SchlZi := Anz_Heizst_Absenkung
WARTE("00:00:05")
Thermo_ELW_HZK_Bad := Anz_Heizst_Absenkung
WARTE("00:00:05")
EndeWenn
EndeWenn
//Heizung aus, Sommereinstellung
========================================================
Wenn A_010HeizungAnAus = 0 dann
Wenn Uhrzeit = "00:05:00" dann
Thermo_EG_WZ_HZK_Garten := Anz_Heizst_Sommer
WARTE("00:00:05")
Thermo_EG_WZ_HZK_Nachb := Anz_Heizst_Sommer
WARTE("00:00:05")
Thermo_ELW_HZK_SchlZi := Anz_Heizst_Sommer
WARTE("00:00:05")
Thermo_ELW_HZK_Bad := Anz_Heizst_Absenkung
WARTE("00:00:05")
EndeWenn
EndeWenn
Es ist mir klar, dass die "Grund-Wenn-Abfrage" mehrfach vorhanden ist und prinzipiell einfach genügt, werde ich noch am Schluss rauswerfen.
Ev. hat jemand die Muse darüber zu schauen.
Gruß Axel