Ankündigung

Einklappen
Keine Ankündigung bisher.

Logikfrage - konsistentes Prozessdatenabbild

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

    Logikfrage - konsistentes Prozessdatenabbild

    Hallo!

    Ich bin auf ein Problem in der edomi Logik gestoßen, dass ich irgendwie nicht gelöst bekomme.
    Ich habe durchaus Erfahrung mit diversen Programmierumgebungen die Baustein-basiert sind, aber nicht eventgetriggert sondern Zeitscheibenbasiert, also die Bausteine werden in einer bestimmten Reihenfolge in einem bestimmten Zeitraster abgearbeitet.

    Zum Problem:

    Ich nutze einen LBS 19001260, der per HTTP Werte von meiner WP pollt. Bis alle ~30 Werte abgefragt sind, vergehen 10s, also wird so ca. alle 300ms ein Ausgang beschrieben.
    Nun verwende ich einige dieser Daten aus dem LBS, und verknüpfe diese logisch. Beispiel:
    Wenn Rücklauf-Temp > Vorlauf-Temp und Betriebsart Warmwasser oder Heizen, dann wird gerade abgetaut.

    Problem ist nun, dass während einer Abarbeitung des LBS 19001260, jeder Ausgang ein Telegramm auslöst, was wiederrum meine logischen Verknüpfungen triggert.
    Wenn jedoch ein Teil der Daten noch Alt, ein anderer Teil neu ist, entstehen inkonsistente Zwischenstände, die sich zwar wieder bereinigen, aber für Schrott in den Archiven sorgen.

    Mir fällt keine Lösung ein, wie ich das irgendwie gelöst bekomme - Ideen?
    OpenKNX www.openknx.de | NanoBCU und OpenKNX-HW verfügbar

    #2
    Ins blaue:
    Wenn du alle Ausgänge zusätzlich über eine Klemme noch über einen counter laufen lässt?
    Erst wenn der count 30 erreicht hat gibt eine sperre die weitere Logik frei ?
    Jean-Luc Picard: "Things are only impossible until they are not."

    Kommentar


      #3
      ob nun ein counter oder wie auch immer - da fiele mir schon was ein.

      Die Frage ist aber: wie realisiert man eine "Sperre", also dass eine Logik nur ausgeführt wird wenn ich das auch will...
      OpenKNX www.openknx.de | NanoBCU und OpenKNX-HW verfügbar

      Kommentar


        #4
        Indem man gewisse Dinge getriggert sendet. Der Wertauslöser ist dafür zB ein netter Baustein.
        Du kannst in diesen (mehrere davon!) sämtliche Werte der WP "speichern" und dann per gemeinsamen Trigger,
        wenn zB der letzte Wert der WP ausgelesen wurde, weiterleiten...
        Je nachdem, was Sinn in deinem Zusammenhang macht...

        Kommentar


          #5
          damit wird doch aber auch nur die Zeit verkürzt, in der die Telegramm nacheinander abgearbeitet werden. Gleichzeitig sind sie nie, oder?

          Beispiel:
          4 Ausgänge des WP-LBS gehen auf Vergleicher und dann auf ein UND4. Der UND4 wird in allen 4mal nacheinander getriggert. Erst nach dem 4ten ist der Ausgabewert gültig.
          Ich müsste also NACH der Logik ansetzen mit der Freigabe durch den Wertauslöser.

          Muss ich mal durchdenken.

          OpenKNX www.openknx.de | NanoBCU und OpenKNX-HW verfügbar

          Kommentar


            #6
            In deinem Beispiel könnte auch eine Verzögerung 16000112 helfen

            Kommentar


              #7
              So in etwa:

              logik.JPG

              die Logik ist dabei vereinfacht, in der Realität ist die komplexer.

              Das würde denke ich funktionieren. Aber jedoch wird die Logik nur dann ausgewertet, wenn der LBS einmal "durch" ist.
              Will man in der Logik auch Werte verarbeiten, die nicht vom LBS19001260 kommen, bräuchte man statt eines "Wertauslöser" der einmalig was durchlässt ein "Latch" das Telegramme durchlässt wenn Trigger = 1 und nicht, wenn 0..
              Angehängte Dateien
              OpenKNX www.openknx.de | NanoBCU und OpenKNX-HW verfügbar

              Kommentar


                #8
                Zitat von SirSydom Beitrag anzeigen
                damit wird doch aber auch nur die Zeit verkürzt, in der die Telegramm nacheinander abgearbeitet werden. Gleichzeitig sind sie nie, oder?
                Darum musst Du dir das für deinen Zweck überlegen! Bau mal was und poste einen Screenshot mit einer konkreten Frage dazu.
                Das mit dem UND4 geht, oft hilft dahinter noch ein <>0 ->1 Filter, da man die 0 ja oft nicht haben will.
                Mit dem dortigen UND kannst Du dann zB den Wert einer Rechnung "freigeben", also entsperren, da er dann Richtig ist, weil eben alle Wert aktuell vorliegen.

                ABER: Setzt die WP die Werte zwischen Abfragen überhaupt wieder auf 0 zurück, damit das funktioniert? Ansonsten könntest Du noch mit "Impuls" arbeiten...

                sG
                Joe

                Kommentar


                  #9
                  Hier gibst Du den Wert des UND4 weiter, also 1. Macht das bei Temperaturangaben sinn?
                  Ich verstehe noch nicht, was Du genau erreichen willst....

                  Kommentar


                    #10
                    wie geschrieben, habe ich die Logik aufgrund der Komplexität hier nicht wiedergegeben.
                    Ich vergleiche diverse Werte gegeneinander, und auf konkrete Werte.

                    z.B. wenn die Modulation >0 und Leistung WW <= 0 und Leistung Heizen <= 0 dann ist der Zustand "kühlen".
                    Beim Übergang von "Aus" nach "Warmwasserbereitung" wird zuerst der Ausgang des LBS mit dem Wert der Modulation aktualisiert. die Ausgänge für Leistung WW und Heizen sind noch "alt", haben also 0.

                    Damit erkennt meine Logik "kühlen".
                    3 sek später kommt das telegramm bei "Leistung Warmwasser" und die Logik erkennt dann korrekt: "Zustand Warmwasserbereitung".
                    Für eine reine Anzeige in der Visu relativ unproblamtisch. Für die Aufzeichnung oder triggern von irgendwelchen Events unbrauchbar.
                    OpenKNX www.openknx.de | NanoBCU und OpenKNX-HW verfügbar

                    Kommentar


                      #11
                      Ich würde alles auf Wertauslöser legen und die dann mit Verzögerungsbausteinen triggern.. in der richtigen Reihenfolge dann..

                      Gruß Martin
                      Die Selbsthilfegruppe "UTF-8-Probleme" trifft sich diesmal abweichend im groüen Saal.

                      Kommentar


                        #12
                        Eine fixe Verzögerung von x Sekunden halte ich für denkbar ungeeignet, weil es sich ja hier nicht um eine Echzeitanwendung mit definierte Reaktionszeit handelt.. da hat das Gateway zu WP mal viel zu tun und antwortet langsamer, schon gehts in die Hose..

                        Da ist der Ansatz den letzten Ausgang des LBS zu nutzen mMn besser. Setzt natürlich vorraus, dass dieser Ausgang immer gesetzt wird und als lezter gesetzt wird. Bei dem konkreten LBS ist das aber so.
                        OpenKNX www.openknx.de | NanoBCU und OpenKNX-HW verfügbar

                        Kommentar


                          #13
                          Ich würd mir, wenn du das mit den Wertauslöser probiert einen eigenen WertauslöserLBS basteln, der zb. 20 Ein & Ausgänge hat,
                          die dann eben nur vom letzten Ausgang deines Gateways getriggert wird.. wäre dann übersichtlicher.. Den Code gibts ja schon fertig..
                          musst ja nur um weitere Ein/Ausgänge erweitern..

                          Die Selbsthilfegruppe "UTF-8-Probleme" trifft sich diesmal abweichend im groüen Saal.

                          Kommentar


                            #14
                            Zitat von SirSydom Beitrag anzeigen
                            Setzt natürlich vorraus, dass dieser Ausgang immer gesetzt wird und als lezter gesetzt wird. Bei dem konkreten LBS ist das aber so.
                            Oder du prüfst wirklich, ob alle Ausgänge aktualisiert wurde. Mit dem UND4 zB müsste das ja gehen... Teste es doch einfach mal und poste einen Screenshot mit Livewerten, wenn Du dazu noch unterstützung brauchst...

                            Kommentar

                            Lädt...
                            X