KNX Data Secure Unterstützung
für KNX Logger und KNX Busmonitor

KNX Diagnose Monitor, Import des ETS Projektes deutlich beschleunigt, Suche in der Navigation
Mehr Informationen dazu hier im Forum

Insider Version 6 zur 4.5 jetzt für alle Mitglieder des Insider Clubs installierbar
Alle Infos zum Update im Timberwolf Wiki

Betriebsart Heizung steuern (HVAC-Modus)

Hier stellen Foristen und Kunden Ihre EIGENEN Logikbausteine vor. Diese Logikbausteine stehen jedem im Rahmen der vom Autor eingeräumten / genannten Lizenz zur Verfügung.
Forumsregeln
  • Denke bitte an aussagekräftige Titel und gebe dort auch die [Firmware] an. Wenn ETS oder CometVisu beteiligt sind, dann auch deren Version
  • Bitte mache vollständige Angaben zu Deinem Server, dessen ID und dem Online-Status in Deiner Signatur. Hilfreich ist oft auch die Beschreibung der angeschlossener Hardware sowie die verwendeten Protokolle
  • Beschreibe Dein Projekt und Dein Problem bitte vollständig. Achte bitte darauf, dass auf Screenshots die Statusleiste sichtbar ist
  • Bitte sei stets freundlich und wohlwollend, bleibe beim Thema und unterschreibe mit deinem Vornamen. Bitte lese alle Regeln, die Du hier findest: https://wiki.timberwolf.io/Forenregeln

Ersteller
Matze76
Reactions:
Beiträge: 315
Registriert: Mo Sep 24, 2018 9:59 am
Hat sich bedankt: 287 Mal
Danksagung erhalten: 195 Mal

Betriebsart Heizung steuern (HVAC-Modus)

#1

Beitrag von Matze76 »

Hallo zusammen,

bei diesem Baustein handelt es sich um eine Customlogik, mit der die Betriebsart (Komfort, Nacht/Eco, Frostschutz oder Standby) für einen Heizkreis/Raum/Stellantrieb aus diversen Eingangsbedingungen bestimmt wird und über den HVAC-Modus an das die Heizung regelnde Gerät übergeben werden kann.

Ich habe versucht, den Baustein möglichst generisch zu gestalten. Da ich aber keinen großen Überblick über die verschiedenen Systeme oder Anforderungen habe, ist er in dieser Version aber hauptsächlich auf meinen eigenen Anwendungsbereich zugeschnitten. Anregungen und Erweiterungswünsche nehme ich daher gerne entgegen!

Version:
1.0

Bild

Code:

Code: Alles auswählen

{
  "Input": [
    [
      "Winterbetrieb",
      "Im Sommerbetrieb (false) wird immer HVAC-Modus STANDBY (2) gesetzt",
      "$InWinterbetrieb",
      "c"
    ],
    [
      "Basis-HVAC-Modus (1 - 4)",
      "Wird im Winterbetrieb an den Ausgang übergeben, wenn alle anderen Bedingungen nicht erfüllt sind oder niedrigere Priorität haben (1= KOMFORT, 2 = STANDBY, 3 = NACHT/ECO, 4 = FROSTSCHUTZ)",
      "$InBasismodus",
      "c"
    ],
    [
      "Fenster offen",
      "Wenn Fenster oder Türen geöffnet sind, wird der HVAC-Modus STANDBY (2) übergeben",
      "$InFensterOffen",
      "c"
    ],
    [
      "Verzögerung Fenster [min]",
      "Verzögerung (in Minuten) bis das Schließen des Fensters den HVAC-Status wieder ändert",
      "$InFensterVerzoegerung",
      "c"
    ],
    [
      "Reise/Urlaub (-> STANDBY)",
      "true: abwesend / false: anwesend",
      "$InAbwStandby",
      "c"
    ],
    [
      "Nacht (-> NACHT/ECO)",
      "true: Nacht / false: Tag",
      "$InNacht",
      "c"
    ],
        [
      "-> STANDBY",
      "weiterer Eingang, der STANDBY auslöst",
      "$VAR<STANDBY?>",
      "c"
    ],
        [
      "-> NACHT/ECO",
      "weiterer Eingang, der NACHT/ECO auslöst",
      "$VAR<ECO?>",
      "c"
    ],
    [
      "-> FROSTSCHUTZ",
      "Eingang, der FROSTSCHUTZ auslöst",
      "$VAR<FROSTSCHUTZ?>",
      "c"
    ],
    [
      "Inhibit",
      "INHIBIT",
      "$VAR<Inhibit?>",
      "u"
    ]
  ],
  "Output": [
    [
      "HVAC-Modus",
      "HVAC-Modus (1= Komfort, 2 = Standby, 3 = Nacht/Eco, 4 = Frostschutz)",
      "$Out_HVAC",
      "c"
    ],
    [
      "Betriebsart Komfort",
      "TRUE bei Betriebsart Komfort",
      "$Out_Komfort",
      "c"
    ],
    [
      "Betriebsart Nacht/Eco",
      "TRUE bei Betriebsart Nacht/Eco",
      "$Out_Nacht",
      "c"
    ],
    [
      "Betriebsart Frostschutz",
      "TRUE bei Betriebsart Frostschutz",
      "$Out_Frostschutz",
      "c"
    ]
  ],
  "Module": [
    [
      "Break",
      [
        "$VAR<Inhibit?>"
      ]
    ],
    
    // Eingang "Basismodus" auf die Range der zulässigen HVAC-Status (1 - 4) prüfen (Wenn nicht bleibt $SetBasismodus auf dem Initialwert 1)
    ["Limiter","$InBasismodus","$SetBasismodus","$OutUnusedBool",["$OutValue_1", "$OutValue_4"]],
    
    // Wert am Eingang "Verzögerung Fenster" in Minuten umrechnen
    ["Polynomial", "$InFensterVerzoegerung", "$InFensterVerzoegerung_Sek",["$Konst_Null", "$Konst_Sekunden"]],
    
    // Ausschaltverzögerung nach Schließen des Fensters (Fenster offen-Eingang wechselt von TRUE auf FALSE)
    [ "Monoflop","$InFensterOffen","$InFensterOffen","$Delayed_ON","$InFensterVerzoegerung_Sek",4],  
    ["Or",["$Delayed_ON","$InFensterOffen"],"$InFensterOffen_Delayed"],
    
    // Standby auslösende Bedingungen zusammenfassen
    ["Or",["$VAR<STANDBY?>","$InFensterOffen_Delayed", "$InAbwStandby"],"$Lvl1_Standby"],
    
    // Nacht/Eco auslösende Bedingungen zusammenfassen
    ["Or",["$VAR<ECO?>","$InNacht"],"$Lvl1_Eco"],
 
    // Frostschutz auslösende Bedingungen zusammenfassen
    ["Or",["$VAR<FROSTSCHUTZ?>"],"$Lvl1_Frostschutz"],
 
    // zusammengefasste Eingänge in Binärwert umwandeln
    [
      "BinaryMultiplexer",
      [
        "$Lvl1_Standby",
        "$Lvl1_Eco",
        "$Lvl1_Frostschutz"
      ],
      "$InStat"
    ],
    
    // Steht der Basis-Modus auf 2 STANDBY ? -> dann $IsBasismodus2 = true
    ["Limiter","$SetBasismodus","$OutUnused","$IsBasismodus2",["$OutValue_2", "$OutValue_2"]],
    
    // Wenn Basis-Modus = 2 dann ist er immer vorrangig gegenüber Modus 3
    ["Multiplexer",["$OutValue_3","$OutValue_2"],"$OutValue2_3","$IsBasismodus2"],
    
    // Grundsätzlich zutreffenden Status aus der Kombination der zusammengefassten Eingänge bestimmen. Wenn keine Bedingung zutrifft dann auf den Basismodus setzen.
    // Priorität: Frostschutz -> Standby -> Nacht/Eco -> (Komfort - nur wenn das der Basis-Modus ist)
    ["Multiplexer",["$SetBasismodus","$OutValue_2","$OutValue2_3","$OutValue_2","$OutValue_4"],"$Lvl2_Mode","$InStat"],
    
    // Steht der Basis-Modus auf 4 FROSTSCHUTZ ? -> dann $IsBasismodus4 = true
    ["Limiter","$SetBasismodus","$OutUnused","$IsBasismodus4",["$OutValue_4", "$OutValue_4"]],
    
    // FROSTSCHUTZ hat höchste Priorität. Wenn dieser als Basismodus gesetzt ist kann er durch nichts übersteuert werden
    ["Multiplexer",["$Lvl2_Mode","$OutValue_4"],"$Lvl2_Mode","$IsBasismodus4"],
    
    // Im Sommerbetrieb immer Standby auf den Ausgang, sonst Ergebnis aus den Eingangsbedingungen.
    ["Multiplexer",["$OutValue_2","$Lvl2_Mode"],"$Out_HVAC","$InWinterbetrieb"],
    
    // Aus dem ausgehenden HVAC-Status auch die Ausgänge für einzelne Betriebsarten belegen
    ["Limiter","$Out_HVAC","$OutUnused","$Out_Komfort",["$OutValue_1", "$OutValue_1"]],
    ["Limiter","$Out_HVAC","$OutUnused","$Out_Nacht",["$OutValue_3", "$OutValue_3"]],
    ["Limiter","$Out_HVAC","$OutUnused","$Out_Frostschutz",["$OutValue_4", "$OutValue_4"]]
    
  ],
  "Level": [
    ["$InStat","integer",0],
    ["$Bit0","bool",false],
    ["$Bit1","bool",false],
    ["$Bit2","bool",false],
    ["$Bit3","bool",false],
    ["$InBasismodus","integer",1],
    ["$SetBasismodus","integer",1],["$InWinterbetrieb","bool",true],
    ["$InFensterOffen","bool",false],
    ["$InFensterOffen_Delayed","bool",false],
    ["$InFensterVerzoegerung","float",0.0],
    ["$InFensterVerzoegerung_Sek","float",0.0],
    ["$Delayed_ON","bool",false],
    ["$InNacht","bool",false],
    ["$InAbwStandby","bool",false],
    ["$VAR<STANDBY?>","bool",false],
    ["$VAR<ECO?>","bool",false],
    ["$VAR<FROSTSCHUTZ?>","bool",false],
    ["$Out_HVAC","integer",2],
    ["$Out_Komfort","bool",false],
    ["$Out_Nacht","bool",false],
    ["$Out_Frostschutz","bool",false],
    ["$OutValue_1","integer",1],
    ["$OutValue_2","integer",2],
    ["$OutValue_3","integer",3],
    ["$OutValue2_3","integer",3],
    ["$OutValue_4","integer",4],
    ["$OutUnused","integer",0],
    ["$OutUnusedBool","bool", false],
    ["$IsBasismodus2","bool",false],
    ["$IsBasismodus4","bool",false],
    ["$Lvl1_Standby","bool",false],
    ["$Lvl1_Eco","bool",false],
    ["$Lvl1_Frostschutz","bool",false],
    ["$Lvl2_Mode","integer",1],
    ["$Konst_Null","float",0.0],
    ["$Konst_Sekunden","float",60.0],
    ["$VAR<Inhibit?>","bool",false]
  ]
}
Ausgänge:
Der Ausgang „HVAC-Modus“ sendet einen Wert 1 – 4, der den jeweiligen HVAC-Modus repräsentiert:

1 = KOMFORT
2 = STANDBY
3 = NACHT/ECO
4 = FROSTSCHUTZ

In meinem Anwendungsfall (ich verwende die MDT Heizungsaktoren) ist dieser Ausgang mit einem KNX-Objekt verknüpft, dessen zugeordnete GA auf das Kommunikationsobjekt „Betriebsartvorwahl“ des Aktorkanals geht.

Hinweis: Der Timberwolf kennt den für den HVAC-Modus vorgesehenen DPT 20.102 noch nicht. Es kann stattdessen aber ein KNX-Objekt mit dem DPT 5.005 verwendet werden.

Als Alternative zum HVAC-Modus kann die Betriebsart auch einzeln über die drei weiteren Ausgänge (Betriebsart Komfort, Betriebsart Nacht/Eco, Betriebsart Frostschutz) gesteuert werden. Die Betriebsart Standby ergibt sich, wenn alle drei Ausgänge „false“ sind.

Eingänge:

Winterbetrieb (bool):
Sommerbetrieb (false) oder Winterbetrieb (true)

Basis-HVAC-Modus (integer):
Ein Wert zwischen 1 und 4, der den Basis-HVAC-Modus für den Raum/Heizkreis repräsentiert. Dieser gilt, wenn keine andere Eingangsbedingung mit höher priorisiertem Modus erfüllt ist.

Hier kann z. B. fest ein Parameter hinterlegt werden (z. B. 1 = KOMFORT). Natürlich ist es auch möglich, den Basismodus dynamisch über eine Verknüpfung des Eingangs zu bestimmen.

Fenster offen: (bool)
Ein geöffnetes Fenster (true) setzt grundsätzlich den HVAC-Modus STANDBY.

Verzögerung Fenster: (float)
Hier einen festen Parameter in Minuten hinterlegen ("0" setzen, wenn keine Verzögerung gewünscht wird).

Nachdem das Fenster geschlossen wurde (Fenster-Eingang wechselt von true auf false) bleibt der HVAC-Modus im STANDBY, bevor er wieder in einen anderen Modus (z. B. KOMFORT) umschaltet

Hintergrund: Ich nutze die Verzögerung für Räume mit Fußbodenheizung. Je nachdem wie viel kalte Luft der Temperatursensor durch das Lüften mitbekommen hat, würde der Aktor bei einem Hochsetzen der Betriebsart direkt nach dem Schließen des Fensters sofort die Ventile unnötig aufdrehen. Ich verzögere also die Zeit, bis sich die Raumlufttemperatur wieder normalisiert hat.

Reise/Urlaub:
Ist der Eingang „true“, wird ebenfalls grundsätzlich der HVAC-Modus 2 (STANDBY) gesetzt.

Nacht:
Ist der Eingang „true“, wird grundsätzlich der HVAC-Modus 3 (NACHT/ECO) gesetzt.

Weitere Eingänge:
Über das „+“-Zeichen besteht die Möglichkeit, beliebig viele weitere Eingänge hinzuzufügen, die entweder STANDBY, NACHT/ECO oder FROSTSCHUTZ setzen.

Diese sind jeweils gleichwertig mit anderen Eingängen, die den selben Modus steuern. Ein NACHT/ECO-Eingang funktioniert also genau so wie der Standard-„Nacht“-Eingang. Ich wollte nur erreichen, dass wenigstens die aus meiner Sicht gängigsten Eingänge standardmäßig vorhanden sind und sprechende Namen haben.

Priorität der Eingänge:
Die Priorität der Modi untereinander ist wie folgt festgelegt (von hoch nach niedrig):
FROSTSCHUTZ (4) → STANDBY (2)→ NACHT/ECO (3) → KOMFORT (1)

Dabei gilt:
  • Im Sommerbetrieb ist der Modus am Ausgang immer STANDBY (2)
  • Im Winterbetrieb: Der am Eingang Basis-HVAC-Modus anliegende Wert geht an den Ausgang, wenn keine andere Eingangsbedingung mit höher priorisiertem Modus erfüllt ist
  • Sind Eingangsbedingungen mit höherer Priorität als dem Basis-Modus erfüllt, wird der Modus mit der höchsten Priorität gesetzt.
Beispiel 1:
  • Als Basis-Modus ist KOMFORT (1) eingestellt. Keine anderen Bedingungen sind erfüllt → der HVAC-Ausgang erhält ebenfalls Modus 1.
  • Das Fenster wird geöffnet → Der HVAC-Ausgang wechselt auf STANDBY (2).
  • Die Nacht bricht herein und Eingang „Nacht“ wechselt auf „true“. Dieser Eingang löst grundsätzlich Modus NACHT/ECO (3) aus. Modus 3 wird aber nicht gesetzt, da STANDBY aufgrund des noch geöffneten Fensters eine höhere Priorität hat.
  • Das Fenster wird geschlossen. Nach Ablauf der Fenster-Verzögerungszeit wechselt der HVAC-Modus in den Status 3 (NACHT/ECO).
Beispiel 2:
  • Als Basis-Modus ist STANDBY (2) gesetzt.
  • Die Nacht bricht herein und Eingang „Nacht“ wechselt auf „true“. Dieser Eingang löst grundsätzlich Modus 3 (NACHT/ECO) aus. Da der Basis-Modus STANDBY jedoch eine höhere Priorität hat, bleibt der Ausgang in diesem Modus (sonst würde es ja hier zu einer „Nacht-Anhebung“ der Solltemperatur kommen).

Version 1.1
- Neuer Ausgang "Sperrobjekt", der bei geöffnetem Fenster (+ Verzögerungszeit) true ist.

Code: Alles auswählen

{
  "Input": [
    [
      "Winterbetrieb",
      "Im Sommerbetrieb (false) wird immer HVAC-Modus STANDBY (2) gesetzt",
      "$InWinterbetrieb",
      "c"
    ],
    [
      "Basis-HVAC-Modus (1 - 4)",
      "Wird im Winterbetrieb an den Ausgang übergeben, wenn alle anderen Bedingungen nicht erfüllt sind oder niedrigere Priorität haben (1= KOMFORT, 2 = STANDBY, 3 = NACHT/ECO, 4 = FROSTSCHUTZ)",
      "$InBasismodus",
      "c"
    ],
    [
      "Fenster offen",
      "Wenn Fenster oder Türen geöffnet sind, wird der HVAC-Modus STANDBY (2) übergeben",
      "$InFensterOffen",
      "c"
    ],
    [
      "Verzögerung Fenster [min]",
      "Verzögerung (in Minuten) bis das Schließen des Fensters den HVAC-Status wieder ändert",
      "$InFensterVerzoegerung",
      "c"
    ],
    [
      "Reise/Urlaub (-> STANDBY)",
      "true: abwesend / false: anwesend",
      "$InAbwStandby",
      "c"
    ],
    [
      "Nacht (-> NACHT/ECO)",
      "true: Nacht / false: Tag",
      "$InNacht",
      "c"
    ],
        [
      "-> STANDBY",
      "weiterer Eingang, der STANDBY auslöst",
      "$VAR<STANDBY?>",
      "c"
    ],
        [
      "-> NACHT/ECO",
      "weiterer Eingang, der NACHT/ECO auslöst",
      "$VAR<ECO?>",
      "c"
    ],
    [
      "-> FROSTSCHUTZ",
      "Eingang, der FROSTSCHUTZ auslöst",
      "$VAR<FROSTSCHUTZ?>",
      "c"
    ],
    [
      "Inhibit",
      "INHIBIT",
      "$VAR<Inhibit?>",
      "u"
    ]
  ],
  "Output": [
    [
      "HVAC-Modus",
      "HVAC-Modus (1= Komfort, 2 = Standby, 3 = Nacht/Eco, 4 = Frostschutz)",
      "$Out_HVAC",
      "c"
    ],
    [
      "Betriebsart Komfort",
      "Optional: TRUE bei Betriebsart Komfort",
      "$Out_Komfort",
      "c"
    ],
    [
      "Betriebsart Nacht/Eco",
      "Optional: TRUE bei Betriebsart Nacht/Eco",
      "$Out_Nacht",
      "c"
    ],
    [
      "Betriebsart Frostschutz",
      "Optional: TRUE bei Betriebsart Frostschutz",
      "$Out_Frostschutz",
      "c"
    ],
    [
      "Sperrobjekt",
      "Optional: Wird bei geöffnetem Fenster gesetzt, um bei Bedarf den Heizungsaktor zu sperren",
      "$Out_Sperrobjekt",
      "c"
    ]
  ],
  "Module": [
    [
      "Break",
      [
        "$VAR<Inhibit?>"
      ]
    ],
    
    // Eingang "Basismodus" auf die Range der zulässigen HVAC-Status (1 - 4) prüfen (Wenn nicht bleibt $SetBasismodus auf dem Initialwert 1)
    ["Limiter","$InBasismodus","$SetBasismodus","$OutUnusedBool",["$OutValue_1", "$OutValue_4"]],
    
    // Wert am Eingang "Verzögerung Fenster" in Minuten umrechnen
    ["Polynomial", "$InFensterVerzoegerung", "$InFensterVerzoegerung_Sek",["$Konst_Null", "$Konst_Sekunden"]],
    
    // Ausschaltverzögerung nach Schließen des Fensters (Fenster offen-Eingang wechselt von TRUE auf FALSE)
    [ "Monoflop","$InFensterOffen","$InFensterOffen","$Delayed_ON","$InFensterVerzoegerung_Sek",4],  
    ["Or",["$Delayed_ON","$InFensterOffen"],"$InFensterOffen_Delayed"],
    ["Multiplexer",["$InFensterOffen_Delayed"], "$Out_Sperrobjekt",0],
    
    // Standby auslösende Bedingungen zusammenfassen
    ["Or",["$VAR<STANDBY?>","$InFensterOffen_Delayed", "$InAbwStandby"],"$Lvl1_Standby"],
    
    // Nacht/Eco auslösende Bedingungen zusammenfassen
    ["Or",["$VAR<ECO?>","$InNacht"],"$Lvl1_Eco"],
 
    // Frostschutz auslösende Bedingungen zusammenfassen
    ["Or",["$VAR<FROSTSCHUTZ?>"],"$Lvl1_Frostschutz"],
 
    // zusammengefasste Eingänge in Binärwert umwandeln
    [
      "BinaryMultiplexer",
      [
        "$Lvl1_Standby",
        "$Lvl1_Eco",
        "$Lvl1_Frostschutz"
      ],
      "$InStat"
    ],
    
    // Steht der Basis-Modus auf 2 STANDBY ? -> dann $IsBasismodus2 = true
    ["Limiter","$SetBasismodus","$OutUnused","$IsBasismodus2",["$OutValue_2", "$OutValue_2"]],
    
    // Wenn Basis-Modus = 2 dann ist er immer vorrangig gegenüber Modus 3
    ["Multiplexer",["$OutValue_3","$OutValue_2"],"$OutValue2_3","$IsBasismodus2"],
    
    // Grundsätzlich zutreffenden Status aus der Kombination der zusammengefassten Eingänge bestimmen. Wenn keine Bedingung zutrifft dann auf den Basismodus setzen.
    // Priorität: Frostschutz -> Standby -> Nacht/Eco -> (Komfort - nur wenn das der Basis-Modus ist)
    ["Multiplexer",["$SetBasismodus","$OutValue_2","$OutValue2_3","$OutValue_2","$OutValue_4"],"$Lvl2_Mode","$InStat"],
    
    // Steht der Basis-Modus auf 4 FROSTSCHUTZ ? -> dann $IsBasismodus4 = true
    ["Limiter","$SetBasismodus","$OutUnused","$IsBasismodus4",["$OutValue_4", "$OutValue_4"]],
    
    // FROSTSCHUTZ hat höchste Priorität. Wenn dieser als Basismodus gesetzt ist kann er durch nichts übersteuert werden
    ["Multiplexer",["$Lvl2_Mode","$OutValue_4"],"$Lvl2_Mode","$IsBasismodus4"],
    
    // Im Sommerbetrieb immer Standby auf den Ausgang, sonst Ergebnis aus den Eingangsbedingungen.
    ["Multiplexer",["$OutValue_2","$Lvl2_Mode"],"$Out_HVAC","$InWinterbetrieb"],
    
    // Aus dem ausgehenden HVAC-Status auch die Ausgänge für einzelne Betriebsarten belegen
    ["Limiter","$Out_HVAC","$OutUnused","$Out_Komfort",["$OutValue_1", "$OutValue_1"]],
    ["Limiter","$Out_HVAC","$OutUnused","$Out_Nacht",["$OutValue_3", "$OutValue_3"]],
    ["Limiter","$Out_HVAC","$OutUnused","$Out_Frostschutz",["$OutValue_4", "$OutValue_4"]]
    
  ],
  "Level": [
    ["$InStat","integer",0],
    ["$Bit0","bool",false],
    ["$Bit1","bool",false],
    ["$Bit2","bool",false],
    ["$Bit3","bool",false],
    ["$InBasismodus","integer",1],
    ["$SetBasismodus","integer",1],["$InWinterbetrieb","bool",true],
    ["$InFensterOffen","bool",false],
    ["$InFensterOffen_Delayed","bool",false],
    ["$InFensterVerzoegerung","float",0.0],
    ["$InFensterVerzoegerung_Sek","float",0.0],
    ["$Delayed_ON","bool",false],
    ["$InNacht","bool",false],
    ["$InAbwStandby","bool",false],
    ["$VAR<STANDBY?>","bool",false],
    ["$VAR<ECO?>","bool",false],
    ["$VAR<FROSTSCHUTZ?>","bool",false],
    ["$Out_HVAC","integer",2],
    ["$Out_Komfort","bool",false],
    ["$Out_Nacht","bool",false],
    ["$Out_Frostschutz","bool",false],
    ["$Out_Sperrobjekt","bool",false],
    ["$OutValue_1","integer",1],
    ["$OutValue_2","integer",2],
    ["$OutValue_3","integer",3],
    ["$OutValue2_3","integer",3],
    ["$OutValue_4","integer",4],
    ["$OutUnused","integer",0],
    ["$OutUnusedBool","bool", false],
    ["$IsBasismodus2","bool",false],
    ["$IsBasismodus4","bool",false],
    ["$Lvl1_Standby","bool",false],
    ["$Lvl1_Eco","bool",false],
    ["$Lvl1_Frostschutz","bool",false],
    ["$Lvl2_Mode","integer",1],
    ["$Konst_Null","float",0.0],
    ["$Konst_Sekunden","float",60.0],
    ["$VAR<Inhibit?>","bool",false]
  ]
}
Nutzungsrechte:
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.
Zuletzt geändert von Robert_Mini am Do Feb 27, 2020 4:47 pm, insgesamt 3-mal geändert.
Gruß
Matthias

TWS 2500 ID:110 + PBM, VPN offen, Reboot nach Rücksprache

Robert_Mini
Reactions:
Beiträge: 3903
Registriert: So Aug 12, 2018 8:44 am
Hat sich bedankt: 1263 Mal
Danksagung erhalten: 2213 Mal

#2

Beitrag von Robert_Mini »

Super Sache. Bin zwar nicht sicher, ob ich die Logik brauche, aber schöne Umsetzung und tolle Doku!

Danke dafür!!

Lg
Robert

EDIT: Hab mir erlaubt auch für diesen Thread das Neuheit-Tag zu setzen.
Zuletzt geändert von Robert_Mini am So Nov 17, 2019 9:43 am, insgesamt 1-mal geändert.
Timberwolf Server 2500 / #117 (VPN offen + reboot nach Rückfrage) / zusätzlich: 3500M/#935, 3500L/#1297

Gecks
Reactions:
Beiträge: 106
Registriert: Mi Okt 31, 2018 12:53 am
Hat sich bedankt: 116 Mal
Danksagung erhalten: 77 Mal

#3

Beitrag von Gecks »

Tolle Sache, könnte ich bei mir auch benutzen.
Danke dafür Matze76.
TWS 950 ID: 352, VPN offen, Reboot jederzeit

markusrohr
Reactions:
Beiträge: 192
Registriert: Sa Dez 08, 2018 7:33 pm
Wohnort: Lostorf
Hat sich bedankt: 173 Mal
Danksagung erhalten: 94 Mal
Kontaktdaten:

#4

Beitrag von markusrohr »

Besten Dank, Matze76, wird im Lauf der Woche bei mir implementiert
Markus
Zuletzt geändert von markusrohr am So Nov 17, 2019 10:45 pm, insgesamt 1-mal geändert.
TWS 950 ID 238 mit PBM ID: 10008, 3 Kanäle, Wartungs-VPN aktiviert, Neustart bitte nur nach Nachfrage, markus.rohr@bluewin.ch

Ersteller
Matze76
Reactions:
Beiträge: 315
Registriert: Mo Sep 24, 2018 9:59 am
Hat sich bedankt: 287 Mal
Danksagung erhalten: 195 Mal

#5

Beitrag von Matze76 »

Hallo,

auf besonderen Wunsch (@Izeman ) habe ich einen Ausgang "Sperrobjekt" hinzugefügt. Dieser ist bei geöffnetem Fenster (+ Verzögerungszeit) unabhängig vom HVAC-Status true. Damit kann über das Sperrobjekt des Aktorkanals dieser bei geöffnetem Fenster gesperrt und damit ausgeschaltet werden (übersteuert dann STANDBY bzw. den höher priorisierten Status FROSTSCHUTZ).

Meinen Originalbeitrag kann ich nicht mehr ändern. Diese neue Version enthält aber keine weiteren Änderungen, so dass man mit V1.0 weiter arbeiten kann, wenn man diesen Anwendungsfall nicht benötigt.

Version 1.1
- Neuer Ausgang "Sperrobjekt", der bei geöffnetem Fenster (+ Verzögerungszeit) true ist.

Code: Alles auswählen

{
  "Input": [
    [
      "Winterbetrieb",
      "Im Sommerbetrieb (false) wird immer HVAC-Modus STANDBY (2) gesetzt",
      "$InWinterbetrieb",
      "c"
    ],
    [
      "Basis-HVAC-Modus (1 - 4)",
      "Wird im Winterbetrieb an den Ausgang übergeben, wenn alle anderen Bedingungen nicht erfüllt sind oder niedrigere Priorität haben (1= KOMFORT, 2 = STANDBY, 3 = NACHT/ECO, 4 = FROSTSCHUTZ)",
      "$InBasismodus",
      "c"
    ],
    [
      "Fenster offen",
      "Wenn Fenster oder Türen geöffnet sind, wird der HVAC-Modus STANDBY (2) übergeben",
      "$InFensterOffen",
      "c"
    ],
    [
      "Verzögerung Fenster [min]",
      "Verzögerung (in Minuten) bis das Schließen des Fensters den HVAC-Status wieder ändert",
      "$InFensterVerzoegerung",
      "c"
    ],
    [
      "Reise/Urlaub (-> STANDBY)",
      "true: abwesend / false: anwesend",
      "$InAbwStandby",
      "c"
    ],
    [
      "Nacht (-> NACHT/ECO)",
      "true: Nacht / false: Tag",
      "$InNacht",
      "c"
    ],
        [
      "-> STANDBY",
      "weiterer Eingang, der STANDBY auslöst",
      "$VAR<STANDBY?>",
      "c"
    ],
        [
      "-> NACHT/ECO",
      "weiterer Eingang, der NACHT/ECO auslöst",
      "$VAR<ECO?>",
      "c"
    ],
    [
      "-> FROSTSCHUTZ",
      "Eingang, der FROSTSCHUTZ auslöst",
      "$VAR<FROSTSCHUTZ?>",
      "c"
    ],
    [
      "Inhibit",
      "INHIBIT",
      "$VAR<Inhibit?>",
      "u"
    ]
  ],
  "Output": [
    [
      "HVAC-Modus",
      "HVAC-Modus (1= Komfort, 2 = Standby, 3 = Nacht/Eco, 4 = Frostschutz)",
      "$Out_HVAC",
      "c"
    ],
    [
      "Betriebsart Komfort",
      "Optional: TRUE bei Betriebsart Komfort",
      "$Out_Komfort",
      "c"
    ],
    [
      "Betriebsart Nacht/Eco",
      "Optional: TRUE bei Betriebsart Nacht/Eco",
      "$Out_Nacht",
      "c"
    ],
    [
      "Betriebsart Frostschutz",
      "Optional: TRUE bei Betriebsart Frostschutz",
      "$Out_Frostschutz",
      "c"
    ],
    [
      "Sperrobjekt",
      "Optional: Wird bei geöffnetem Fenster gesetzt, um bei Bedarf den Heizungsaktor zu sperren",
      "$Out_Sperrobjekt",
      "c"
    ]
  ],
  "Module": [
    [
      "Break",
      [
        "$VAR<Inhibit?>"
      ]
    ],
    
    // Eingang "Basismodus" auf die Range der zulässigen HVAC-Status (1 - 4) prüfen (Wenn nicht bleibt $SetBasismodus auf dem Initialwert 1)
    ["Limiter","$InBasismodus","$SetBasismodus","$OutUnusedBool",["$OutValue_1", "$OutValue_4"]],
    
    // Wert am Eingang "Verzögerung Fenster" in Minuten umrechnen
    ["Polynomial", "$InFensterVerzoegerung", "$InFensterVerzoegerung_Sek",["$Konst_Null", "$Konst_Sekunden"]],
    
    // Ausschaltverzögerung nach Schließen des Fensters (Fenster offen-Eingang wechselt von TRUE auf FALSE)
    [ "Monoflop","$InFensterOffen","$InFensterOffen","$Delayed_ON","$InFensterVerzoegerung_Sek",4],  
    ["Or",["$Delayed_ON","$InFensterOffen"],"$InFensterOffen_Delayed"],
    ["Multiplexer",["$InFensterOffen_Delayed"], "$Out_Sperrobjekt",0],
    
    // Standby auslösende Bedingungen zusammenfassen
    ["Or",["$VAR<STANDBY?>","$InFensterOffen_Delayed", "$InAbwStandby"],"$Lvl1_Standby"],
    
    // Nacht/Eco auslösende Bedingungen zusammenfassen
    ["Or",["$VAR<ECO?>","$InNacht"],"$Lvl1_Eco"],
 
    // Frostschutz auslösende Bedingungen zusammenfassen
    ["Or",["$VAR<FROSTSCHUTZ?>"],"$Lvl1_Frostschutz"],
 
    // zusammengefasste Eingänge in Binärwert umwandeln
    [
      "BinaryMultiplexer",
      [
        "$Lvl1_Standby",
        "$Lvl1_Eco",
        "$Lvl1_Frostschutz"
      ],
      "$InStat"
    ],
    
    // Steht der Basis-Modus auf 2 STANDBY ? -> dann $IsBasismodus2 = true
    ["Limiter","$SetBasismodus","$OutUnused","$IsBasismodus2",["$OutValue_2", "$OutValue_2"]],
    
    // Wenn Basis-Modus = 2 dann ist er immer vorrangig gegenüber Modus 3
    ["Multiplexer",["$OutValue_3","$OutValue_2"],"$OutValue2_3","$IsBasismodus2"],
    
    // Grundsätzlich zutreffenden Status aus der Kombination der zusammengefassten Eingänge bestimmen. Wenn keine Bedingung zutrifft dann auf den Basismodus setzen.
    // Priorität: Frostschutz -> Standby -> Nacht/Eco -> (Komfort - nur wenn das der Basis-Modus ist)
    ["Multiplexer",["$SetBasismodus","$OutValue_2","$OutValue2_3","$OutValue_2","$OutValue_4"],"$Lvl2_Mode","$InStat"],
    
    // Steht der Basis-Modus auf 4 FROSTSCHUTZ ? -> dann $IsBasismodus4 = true
    ["Limiter","$SetBasismodus","$OutUnused","$IsBasismodus4",["$OutValue_4", "$OutValue_4"]],
    
    // FROSTSCHUTZ hat höchste Priorität. Wenn dieser als Basismodus gesetzt ist kann er durch nichts übersteuert werden
    ["Multiplexer",["$Lvl2_Mode","$OutValue_4"],"$Lvl2_Mode","$IsBasismodus4"],
    
    // Im Sommerbetrieb immer Standby auf den Ausgang, sonst Ergebnis aus den Eingangsbedingungen.
    ["Multiplexer",["$OutValue_2","$Lvl2_Mode"],"$Out_HVAC","$InWinterbetrieb"],
    
    // Aus dem ausgehenden HVAC-Status auch die Ausgänge für einzelne Betriebsarten belegen
    ["Limiter","$Out_HVAC","$OutUnused","$Out_Komfort",["$OutValue_1", "$OutValue_1"]],
    ["Limiter","$Out_HVAC","$OutUnused","$Out_Nacht",["$OutValue_3", "$OutValue_3"]],
    ["Limiter","$Out_HVAC","$OutUnused","$Out_Frostschutz",["$OutValue_4", "$OutValue_4"]]
    
  ],
  "Level": [
    ["$InStat","integer",0],
    ["$Bit0","bool",false],
    ["$Bit1","bool",false],
    ["$Bit2","bool",false],
    ["$Bit3","bool",false],
    ["$InBasismodus","integer",1],
    ["$SetBasismodus","integer",1],["$InWinterbetrieb","bool",true],
    ["$InFensterOffen","bool",false],
    ["$InFensterOffen_Delayed","bool",false],
    ["$InFensterVerzoegerung","float",0.0],
    ["$InFensterVerzoegerung_Sek","float",0.0],
    ["$Delayed_ON","bool",false],
    ["$InNacht","bool",false],
    ["$InAbwStandby","bool",false],
    ["$VAR<STANDBY?>","bool",false],
    ["$VAR<ECO?>","bool",false],
    ["$VAR<FROSTSCHUTZ?>","bool",false],
    ["$Out_HVAC","integer",2],
    ["$Out_Komfort","bool",false],
    ["$Out_Nacht","bool",false],
    ["$Out_Frostschutz","bool",false],
    ["$Out_Sperrobjekt","bool",false],
    ["$OutValue_1","integer",1],
    ["$OutValue_2","integer",2],
    ["$OutValue_3","integer",3],
    ["$OutValue2_3","integer",3],
    ["$OutValue_4","integer",4],
    ["$OutUnused","integer",0],
    ["$OutUnusedBool","bool", false],
    ["$IsBasismodus2","bool",false],
    ["$IsBasismodus4","bool",false],
    ["$Lvl1_Standby","bool",false],
    ["$Lvl1_Eco","bool",false],
    ["$Lvl1_Frostschutz","bool",false],
    ["$Lvl2_Mode","integer",1],
    ["$Konst_Null","float",0.0],
    ["$Konst_Sekunden","float",60.0],
    ["$VAR<Inhibit?>","bool",false]
  ]
}
Gruß
Matthias

TWS 2500 ID:110 + PBM, VPN offen, Reboot nach Rücksprache

gbglace
Reactions:
Beiträge: 4088
Registriert: So Aug 12, 2018 10:20 am
Hat sich bedankt: 1415 Mal
Danksagung erhalten: 1901 Mal

#6

Beitrag von gbglace »

Hab es mal oben mit unten an eingefügt.
Grüße Göran
#1 Timberwolf 2600 Velvet Red TWS #225 / VPN aktiv / Reboot OK
#2 Timberwolf 2600 Organic Silver TWS #438 / VPN aktiv / Reboot OK
#PV 43,2 kWh Akku; 3x VE MP2 5000; 6,7 kWp > 18 Panele an 4x HM1500 + 1 HM800 WR; Open-DTU

Ersteller
Matze76
Reactions:
Beiträge: 315
Registriert: Mo Sep 24, 2018 9:59 am
Hat sich bedankt: 287 Mal
Danksagung erhalten: 195 Mal

#7

Beitrag von Matze76 »

gbglace hat geschrieben: Do Dez 26, 2019 3:19 pm Hab es mal oben mit unten an eingefügt.
Danke!

Ist es möglich, einzelne Bereiche im Forum so einzustellen, dass der Autor seine Beiträge ohne zeitliche Einschränkung editieren kann?
Falls ja, fände ich das für den Bereich "Zusätzliche Logikbausteine" nicht schlecht, damit man selber den Startbeitrag mit aktueller Version und Anleitung up to date halten kann.
Gruß
Matthias

TWS 2500 ID:110 + PBM, VPN offen, Reboot nach Rücksprache

StefanW
Elaborated Networks
Elaborated Networks
Reactions:
Beiträge: 10703
Registriert: So Aug 12, 2018 9:27 am
Wohnort: Frauenneuharting
Hat sich bedankt: 5303 Mal
Danksagung erhalten: 8685 Mal
Kontaktdaten:

#8

Beitrag von StefanW »

Matze76 hat geschrieben: Do Dez 26, 2019 6:02 pmIst es möglich, einzelne Bereiche im Forum so einzustellen, dass der Autor seine Beiträge ohne zeitliche Einschränkung editieren kann?
Ja.

Matze76 hat geschrieben: Do Dez 26, 2019 6:02 pmFalls ja, fände ich das für den Bereich "Zusätzliche Logikbausteine" nicht schlecht, damit man selber den Startbeitrag mit aktueller Version und Anleitung up to date halten kann.
Hab ich eingestellt, also dass der Startbeitrag in diesem Unterforum auf Dauer vom Ersteller bearbeitet werden kann.

==> Bitte ausprobieren (ich weiß nicht, ob das auch für schon eingestellte Beiträge "nachträglich" gilt".

lg

Stefan
Stefan Werner
Product Owner für Timberwolf Server, 1-Wire und BlitzART
Bitte WIKI lesen. Allg. Support nur im Forum. Bitte keine PN
Zu Preisen, Lizenzen, Garantie, HW-Defekt an service at elabnet dot de

Link zu Impressum und Datenschutzerklärung oben.

Ersteller
Matze76
Reactions:
Beiträge: 315
Registriert: Mo Sep 24, 2018 9:59 am
Hat sich bedankt: 287 Mal
Danksagung erhalten: 195 Mal

#9

Beitrag von Matze76 »

Super, danke! Ja, scheint auch nachträglich zu gelten. Ich kann den Startbeitrag jetzt editieren.
Gruß
Matthias

TWS 2500 ID:110 + PBM, VPN offen, Reboot nach Rücksprache

StefanW
Elaborated Networks
Elaborated Networks
Reactions:
Beiträge: 10703
Registriert: So Aug 12, 2018 9:27 am
Wohnort: Frauenneuharting
Hat sich bedankt: 5303 Mal
Danksagung erhalten: 8685 Mal
Kontaktdaten:

#10

Beitrag von StefanW »

Cool, freut mich. Kleine Wünsche werden sofort erfüllt. :lol: 8-)

lg

Stefan

PS. Kann ich für jedes Unterforum separat einstellen, wenn das sinnvoll auch in anderen Foren möglich ist, dann macht mir dort einen FR.
Stefan Werner
Product Owner für Timberwolf Server, 1-Wire und BlitzART
Bitte WIKI lesen. Allg. Support nur im Forum. Bitte keine PN
Zu Preisen, Lizenzen, Garantie, HW-Defekt an service at elabnet dot de

Link zu Impressum und Datenschutzerklärung oben.
Antworten

Zurück zu „Zusätzliche Logikbausteine“