Ankündigung

Einklappen
Keine Ankündigung bisher.

2 Punkt Regler mit Hyterrese

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    [callidomus] 2 Punkt Regler mit Hyterrese

    Hi,

    ich möchte meine Geräteschuppen folgendes machen wenn die Temperatur unter 0 Grad Fällt soll eine Frostwächter angeschaltet werden. Wenn sie über 3 Grad geht soll er ausgeschaltet werden.

    Damit das Relais nicht zu oft Schaltet möchte ich das der Frostwächter mind 60min Läuft unabhängig von der Hysterrese.

    Wie mache ich das?

    Viele grüsse
    Jürgen

    #2
    Hi Jürgen,

    mal ins unreine geschrieben, ist nicht getestet, aber sollte grob so klappen:

    Code:
    [Temperatur]
        name = Aussentemperatur
        type = num
        hysterese = 0:3
        knx_dpt = 9
        knx_listen = <temp-ga>
        [[Frostwaechter]]
            name = Frostwächter
            type = bool
            knx_dtp = 1
            knx_send = <relais-ga>
            code = or
            trigger = .Hysterese | .Timer
            [[[Hysterese]]]
                name = Hysterese
                type = bool
                code = cd.Temperatur() < 1
                trigger = Temperatur
            [[[Timer]]]
                name = Min. 60 Minuten
                type = bool
                autotimer = 60m = aus
                code = 1 if cd.Temperatur() < 1 else 0 if value == 'aus' else cd.Temperatur.Timer()
                trigger = Temperatur
    Falls nicht, melde Dich, dann sehen wir weiter.

    Gruß, Waldemar
    OpenKNX www.openknx.de

    Kommentar


      #3
      hm, kannst du einen satz zu
      Code:
      code = 1 if cd.Temperatur() < 1 else 0 if value == 'aus' else cd.Temperatur.Timer()
      sagen?

      Kommentar


        #4
        Nein, aber gerne mehrere

        Ich habe versucht, Jürgens Regeln in einzelne Items zu gießen. Von oben nach unten:
        Temperatur:
        - empfängt die Temperatur vom Bus und triggert abhängige Items nur, wenn diese kleiner 0 oder größer 3 ist
        Frostwächter:
        - bildet das Relais ab, wann es an ist und "ver-oder-t" das Einschaltsignal (Hysterese) mit einem Timer, der 60 Minuten läuft
        Hysterese:
        - der ist bei Temperatur < 1 an, sonst aus. Da er aber nur mit Temperaturen < 0 oder > 3 getriggert wird, bildet er Jürgens Regel bezüglich Temperatur ab.
        Timer:
        - der sichert die minimalen 60 Minuten ab
        - Wird auf 1 gesetzt, wenn die Temperatur < 1 ist (effektiv < 0, da nur dann der Trigger kommt)
        - Wird auf 0 gesetzt, wenn der autotimer nach 60 Minuten ein "aus" liefert
        - Bei jedem anderen Trigger (Temperatur > 3, nochmal Temperatur < 1) behält er seinen Wert
        - Letztendlich bleibt der für 60 Minuten auf 1, geht dann auf 0
        - Wenn aber nach 1 Stunde die Temperatur weiterhin < 0 ist, wird dieses Item wieder für eine Stunde auf 1 gehen. Wenn man das nicht will, muss man das noch durch ein weiteres Hilfsitem verhindern.

        Hoffe, das hilft,
        Gruß, Waldemar
        OpenKNX www.openknx.de

        Kommentar


          #5
          top, danke

          Kommentar


            #6
            Hi Jürgen,

            ich wollte Dir (und anderen) mal zeigen, wie elegant das Ganze mit dem Zustandsautomaten geht.

            Die obige Item-Struktur angemommen (ohne hysterese):
            Code:
             [Temperatur]
                name = Aussentemperatur
                type = num
                knx_dpt = 9
                knx_listen = <temp-ga>
                [[Frostwaechter]]
                    name = Frostwächter
                    type = bool
                    knx_dpt = 1
                    knx_send = <relais-ga>
            Der untere Zustandsautomat löst das Problem (einfach als frostwaechter.csv speichern und in callidomus importieren):

            Code:
            State;Context;Group;Type;Selector;Property;Aggregator;Comparator;Value
            #Active;1;;;;;;;
            #Name;frostwaechter;;;;;;;
            #Trigger;Temperatur;;;;;;;
            #Desc;Jürgens Frostwaechter;;;;;;;
            #Selector;Temperatur.Frostwaechter;;;;;;;
            #Version;1;;;;;;;
            #Loglevel;Debug;;;;;;;
            #Delay;20;;;;;;;
            #Type;Machine;;;;;;;
            An;state;;active;;;;;1
            An;state;;desc;;;;;Frostwaechter einschalten
            An;state;;value;;;;;1
            An;enter;;condition;Temperatur;;;<;0
            An;during;900;action;evaluate;;;;
            An;exit;;condition;Temperatur;;;>;3
            An;exit;;condition;machine;age;;>;1h
            Aus;state;;active;;;;;1
            Aus;state;;desc;;;;;Frostwaechter ausschalten Dieser Zustand wird immer betreten
            Aus;state;;value;;;;;0
            Aus;enter;;condition;year;;;>;0
            Grundidee: Der Zustandsautomat hängt am Item Frostwaechter und die einzelnen Zustände schalten das Item.
            Der Zustand "An" wird immer dann betreten, wenn die Temperatur kleiner 0 ist. Er wird verlassen, wenn die Temperatur >3 ist und der Zustand > 1h gehalten wurde. Damit der exit-State auch zeitabhängig überprüft wird, wird - solange der An-Zustand anliegt - der Zustandsautomat alle 15 Minuten getriggert.
            Der Zustand "Aus" wird immer dann betreten, wenn der Zustand "An" nicht gilt.

            Was ich daran toll finde: Man kann Deinen Satz oben direkt in zwei Zustände gießen, die Bedingungen 1:1 übernehmen und muss nichts programmieren.

            Gruß, Waldemar
            OpenKNX www.openknx.de

            Kommentar


              #7
              Hi Waldemar,

              das ist gefühlte 10 mal leichter zu verstehen wie das mit den items....TOP!

              Und erfolgreicht getestet!

              VG
              Jürgen
              Zuletzt geändert von heckmannju; 25.11.2016, 00:00.

              Kommentar


                #8
                Wow,

                das ging schnell! Freut mich, wenn es klappt!

                Gruß, Waldemar
                OpenKNX www.openknx.de

                Kommentar

                Lädt...
                X