Ankündigung

Einklappen
Keine Ankündigung bisher.

Logik für Fertigmeldung und Reset bei Präsenz mit MDT Logikmodul gesucht

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

    Logik für Fertigmeldung und Reset bei Präsenz mit MDT Logikmodul gesucht

    Hallo,

    vielleicht kann mir jemand mit einer Logik helfen, bin von den Möglichkeiten noch etwas geplättet...

    Ich messe mit einem Aktor den Stromverbrauch der Waschmaschine und lasse per Lastüberschreitung ausgeben ob die Maschine läuft oder nicht. Jetzt möchte ich bei Wechsel von Lastüberschreitung "EIN" auf "AUS" eine GA "Waschmaschine fertig" auf "EIN" setzen und zyklisch alle 10 Minuten senden lassen. Sobald in der Waschküche einmal Präsenz erkannt wurde, soll die GA "Waschmaschine fertig" auf "AUS" gesetzt werden.
    Welche Hauptfunktion nehme ich da am besten?

    Danke!!
    Klayman

    #2
    Ein einfaches UND wird nicht funktionieren.

    Die formulierten Bedingungen klingen nach "wenn, dann"; beim MDT Logikmodul wird das oft mit 'Universallogik' umgesetzt.

    Kommentar


      #3
      Es ist eher eine WHILE-Schleife mit interner Variable oder so ähnlich. Pseudo-Code wäre in etwa so:

      Code:
      //Trigger: Fallende Flanke bei GA-WaMaLastüberschreitung
      
      BOOL WaMaFertig = Ga-WaMaLastüberschreitung * (-1)
      WHILE (WaMaFertig == 1) {
           IF (GA-Presence ==0 ) {
               SendEvery15Min(GA-WaMaFertig)
           }
           ELSE IF (GA-Presence == 1) {
                WaMaFertig = 0
           }
      }

      Kommentar


        #4
        Das SCN-LOG1.02 kann leider keinen Code ausführen; vielmehr arbeiten fast alle Hauptfunktionen scheinbar mit statischen Zuständen. Wenn der Pseudo-Code drei Abfragen benötigt, wird auch die Realisierung im Logikmodul mehrere Hauptfunktionen erfordern.

        Eine interner Variable wird mit einer GA gebildet, die mehrfach am Logikmodul verbunden ist.
        1. GA "Waschmaschine fertig" auf "EIN" setzen:
          Für die Abfrage Lastüberschreitung "EIN" auf "AUS" würde ich die Hauptfunktion "Filter / Begrenzer" nehmen, "nur AUS durchlassen". Das Ergebnis ist zu invertieren, was der Filter aber nicht kann; kann der Aktor die Lastüberschreitung invertiert ausgeben?
        2. GA "Waschmaschine fertig" auf "AUS" setzen:
          auch wieder mit einem Filter, schon wieder ein invertiertes Signal
        Naheliegend scheint mir, eine zusätzliche GA mit dem invertierten Ergebnis zu verwenden, um die beiden Inverter in 1. und 2. zusammenzufassen zu einen Inverter für die gewünschte GA "Waschmaschine fertig"

        Manche Hauptfunktionen können zyklisch senden.

        Hinweis: Diese einfache Realisierung wird auch "Waschmaschine fertig" senden, wenn in der Waschküche Präsenz erkannt wurde.

        Kommentar


          #5
          Lösungsbeispiel:
          Universallogik, Eingang 1 Waschmaschine Vergleichswert 0, dann Ausgang Wert 1, sonst Wert 0,
          Ausgang sendet bei Eingangstelegramm Eingang1,
          Ausgang zyklisches Senden aktiv,
          Sperre bei Wert 1 (GA vom PM), Ausgangswert auf Wert für Sperre setzen => Wert 0

          Sollte so funktionieren.

          Kommentar


            #6
            Hi,

            ich hätte einen Vorschlag, der mit 2 Funktionen des Logikmoduls wohl auskommt (glaube ich, hab es nicht getestet). Deswegen noch ne Frage vorher:
            • Hast Du noch einen freien PM-Kanal (im Waschkeller), der bei Präsenz reagieren kann und der nur 1 senden kann (keine 0)?
            Ansonsten ist es recht einfach. Die Kernkomponente ist ein zyklischer Sender mit Sperre:
            Signal-bis-AUS.png
            An den Ausgang 1 schließt Du das gewünschte Gerät an, dass Dir Dein "Waschmaschine fertig" Signal auswertet. Der Ausgang der Lastüberschreitung kommt an den Sperreingang.

            Bisher ist folgendes erreicht: Wenn Lastüberschreitung = 1 (also die "Waschmaschine läuft"), wird der Signalgeber gesperrt und es gibt keine Meldung (logischerweise). Sobald die Lastüberschreitung auf 0 geht, sendet der Ausgang im gewünschten Zeitintervall die Fertig-Meldungen.

            Jetzt wird die GA vom PM (die nur eine 1 bei Präsenz sendet) als weitere hörende Adresse auf die Sperre gelegt. Wenn also jetzt jemand in den Keller kommt, wird der zyklische Sender wieder gesperrt und die Meldungen hören auf. Natürlich darf der PM keine 0 mehr senden, weil dann die zyklische Meldung wieder los ginge.

            Wenn Dein PM keine 0 unterdrücken kann, dann muss Du den obigen Filter von knxPaul verwenden, der darf dann eben nur 1 durchlassen. Das wäre dann die 2. benötigte Funktion.

            Diese Lösung hat auch einen Nachteil: Wenn die Waschmaschine fertig ist, wenn jemand im Waschkeller ist, wird trotzdem die Fertig-Meldung kommen und erst verschwinden, wenn man das nächste mal in den Waschkeller kommt.

            Gruß.Waldemar

            P.S.: Die Lösung von hjk ist ganz klar besser, da nur ein Funktionsblock. Nimm die!
            Zuletzt geändert von mumpf; 14.03.2021, 12:45. Grund: P.S. zugefügt
            OpenKNX www.openknx.de

            Kommentar


              #7
              Danke für Eure Tipps!! HJKs Lösung funktioniert hervorragend. Einziger Schönheitsfehler: Wenn der PM wieder aus sendet, dann sendet die Logik WaMa inaktiv bis in alle Ewigkeit weiter. Ohne aus vom PM bleibt die Logik gesperrt. Kein Problem bei einer realistischen Wiederholung alle 15 Minuten, aber Ihr wisst ja, die Schönheit der Arbeit und so ;-)
              Die Meldung wird übrigens von einem OpenHAB Server ausgewertet und dann ein kurzer Hinweis auf dem TV-Bildschirm angezeigt. Als nächstes soll noch eine Meldung über Sonos kommen, diese aber nur zu Tagzeigen und mit der Möglichkeit manuell zu bestätigen.

              Super, vielen Dank nochmal.
              Beste Grüße,
              Klayman

              Kommentar


                #8
                So, weil's hier so schön war: Gibt es auch eine Möglichkeit auf die Geschwindigkeit einer Änderung zu reagieren? Also z.B. reagiere wenn die Temperatur binnen 3 Minuten um mehr als 20% ansteigt. Das wäre z.B. bei der KWL nützlich, also wenn die Feuchtigkeit der abgesaugten Luft schnell steigt. Oder beim Erkennen ob jemand duscht anhand der Abwassertemperatur...

                Viele Grüße,
                Klayman :-)

                Kommentar


                  #9
                  Mathematisch ist die Geschwindigkeit einer Änderung - nein, der Ruck ist die Änderung der Geschwindigkeit 🤨

                  Möglichkeiten auf die genannten Änderung zu reagieren gibt es; mit dem Logik-Modul kann ich mir das aber nicht vorstellen. Schon die Formulierung mit Pseudo-Code wird zeigen, dass dafür ein mächtigeres "Werkzeug" benötigt wird, für das man wirklich Code schreiben kann.
                  Das 3 Minuten Zeitfenster muss ja praktisch kontinuierlich mit dem Zeitverlauf mitwandern - zugegeben, ich denke in SPS-Realisierung - mit KNX-Telegrammen:
                  • Im Minutentakt zyklisch senden
                  • Die Telegramme speichern in einem Ringpuffer (???)
                  • Jeden neuen Wert vergleichen mit dem vor 3 Minuten
                  Kann der OpenHAB Server da helfen?

                  Kommentar


                    #10
                    Hi,

                    das geht, ich muss das mal raussuchen. Ich schalte meine Dusch-Ambientenbeleuchtung anhand einer rapiden Steigerung der Luftfeuchte über das MDT-Logikmodul ein.

                    Ich weiß nicht, ob es heute Abend noch klappt, sonst melde ich mich morgen.

                    Gruß, Waldemar
                    OpenKNX www.openknx.de

                    Kommentar


                      #11
                      Das geht über den Universalrechner mit Zeittakt auf den Impulseingang.

                      Hier ein Beispiel, wie man mit aktueller und verzögerter Temperatur rechnet:
                      https://knx-user-forum.de/forum/öffe...35#post1586335

                      Kommentar


                        #12
                        Ja, so hab ich es auch gelöst. Ich stell das trotzdem mal rein, als bebildertes Beispiel:

                        Die Grundfunktion ist ein Vergleicher, der feststellt, ob sich der Wert über einen bestimmten Schwellwert geändert hat:
                        Duscherkennung-Vergleicher.jpg
                        Bei mir geht es wie gesagt um Luftfeuchte, hier vergleiche ich, ob "Wert neu" - "Wert alt" > 5 ist, ob sich die Luftfeuchte also um 5% erhöht hat. In einer anderen Funktion merke ich mir jede Minute den "alten" Wert:
                        Duscherkennung-Formel.jpg
                        Technisch addiere ich zur aktuellen Luftfeuchte eine 0 (behalte also den Wert). Das mache ich jede Minute, was nichts anderes heißt als dass das Ergebnis der Formel nur jede Minute aktualisiert wird (der Impulseingang wird vom Minutentakt des Logikmoduls versorgt). Für den Vergleicher ist jetzt der aktuelle Wert der Wert 1 und das Ergebnis der Formel Wert 2 = alter Wert.

                        Die Gesamtaussage beider Logiken ist: Gib eine 1 aus, wenn sich innerhalt der letzten Minute die Luftfeuchte um mehr als 5% erhöht hat.

                        Wenn Du längere Zeitintervalle als 1 Minute brauchst (weil z.B. Dein Temperatursensor zu träge ist), musst Du den Minutentakt über ein nichtnachtriggerbares Treppenlicht verlangsamen oder Dir über "zyklisch senden" selbst was passendes zusammenbasteln.

                        Gruß, Waldemar
                        OpenKNX www.openknx.de

                        Kommentar


                          #13
                          Hmm, das verlinkte Beispiel von hjk habe ich ehrlich gesagt nicht verstanden. Der Takt kommt über einen weiteren Funktionsblock oder das minütliche Taktsignal des Logikmoduls. Aber was soll die Multiplikation mit den Prozentwerten??
                          Waldemars Lösung verstehe ich schon eher. Das Addieren von 0 beim Minutentakt erzeugt einen um 1 Minute verzögerten Wert der dann in einem weiteren Funktionsblock verglichen wird.
                          Man braucht aber immer zwei Blöcke, auch bei der von hjk verlinkten Lösung!?

                          Viele Grüße,
                          Klayman
                          Zuletzt geändert von klayman; 16.03.2021, 00:52.

                          Kommentar


                            #14
                            Zitat von klayman Beitrag anzeigen
                            Man braucht aber immer zwei Blöcke, auch bei der von hjk verlinkten Lösung!?
                            Ja - mindestens - wenn eine Minute ausreicht.
                            Zitat von mumpf Beitrag anzeigen
                            so hab ich es auch gelöst
                            Die Beschreibungen sollen sich ergänzen:
                            • der Taktgeber von "hjk"
                            • der Vergleicher von Waldemar
                            Zitat von klayman Beitrag anzeigen
                            Aber was soll die Multiplikation mit den Prozentwerten??
                            Dort wurde die Formel umgestellt - und mit 25 % gerechnet anstelle Deinen 20 %

                            Kommentar


                              #15
                              Tut mir leid, aber ich muss nochmal fragen: Ich habe jetzt mumpfs Beispiel nachgebaut. So wie die Temperatur beim Duschen ansteigt muss ich auf 1 maximal 2 Grad pro Minute runtergehen. Allerdings ist die Temperatur am Rohr sonst sehr stabil über den Tag. Aber wie wirkt sich die Hysterese aus? Sagen wir die Logik reagiert ab 2 Grad pro Minute und die Hysterese steht auf 1 Grad, dann schaltet die Logik bei 1,5°C/min wieder ab, richtig? Aber was passiert am anderen Ende der Hysterese, also bei 2,5°C, wird die ignoriert?

                              Weitere Frage: Gibt es eine alternative Hauptfunktion zum Temperatur-/Wertvergleicher der zyklisches Senden erlaubt?

                              Kommentar

                              Lädt...
                              X