Ankündigung

Einklappen
Keine Ankündigung bisher.

- √ - HS gleitende Maximalwerte im Zeitintervall, über Archiv?

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

    - √ - HS gleitende Maximalwerte im Zeitintervall, über Archiv?

    Hallo hab wiederr mal eine HS-Frage, habe mir eigentlich abgewöhnt prozedural zu denken, aber irgendwie geht es so wie ich jetzt denke auch nicht ...

    Ich möchte quasi einen gleitenden Maximalwert über die letzten x Stunden haben. Da ich ja nix zum Zwischenspeichern /Protokolieren habe (eigenes Array anlegen) und ein bißchen Logik, mit Maximalwert nach getriggerter Zeit ja keinen gleitenden sondern nur einen Abschnittsweisen Maximalwert liefert, dachte ich an folgenden Weg. Ich lege ein Datenarchiv an, das genau die gewünschte Zeit z.B. 6 Stunden als Zeitraum eigestellt hat. In der Visu hab ich gesehen, dass man für Archive auch Maximalwerte ausgeben lassen kann, also dachte ich es muss doch irgendeine Funktion geben die mir Max(Archivname) liefert.

    Tja, wie gesagt: Dachte ich...

    Nur finden tue ich nix. Hat jemand einen Tip für mich???

    Grüße aus Wiesbaden
    MIKE

    #2
    Zitat von MikeR Beitrag anzeigen
    Hallo hab wiederr mal eine HS-Frage, habe mir eigentlich abgewöhnt prozedural zu denken, aber irgendwie geht es so wie ich jetzt denke auch nicht ...

    Ich möchte quasi einen gleitenden Maximalwert über die letzten x Stunden haben.
    .......

    Nur finden tue ich nix. Hat jemand einen Tip für mich???
    Grüße aus Wiesbaden
    MIKE
    Hallo Mike,
    ich hatte mal die gleiche Frage im "alten Forum" gestellt, war allerdings für ELVIS. Vielleicht geht dir ein Licht auf.
    http://www.eib-userclub.de/forum/sho...47&postcount=2

    Grüße
    samosir

    Kommentar


      #3
      Hmmm, bei den Quellwerten kann es sich aber um rein zufällige, sprich funktional unabhängige Werte handeln. z.B. Windgeschwindigkeit.

      Da kann in einem Intervall von z.B. 6 Stunden der Wert an der ältesten Intervallgrenze der höchste sein. Schreitet das Intervall um ein paar Minuten voran dann ist das Maximum vielleicht irgendwo in der Mitte des Intervalles, oder ganz am Anfang oder zufällig immer noch am Ende... Ich müsste also a.) die gemerkten Werte voranschreiten lassen (der hinten letzte fällt raus, der neue kommt vorne dazu, also eine klassische Warteschlange) und dann den Maximalwert unter allen vorhandenen ermitteln.

      Wie gesagt den ersten Zeil derledigt ein Archiv im HS. Bloß komm ich nicht an die Daten, genauer an den Maximalwert dran. Schätze wenn ich ein Diagramm basierend auf dem Archiv anlege, dass nur einen Datenpunkt hat und als Kurven einmal das Minimum und einmal das Maximum angebe habe ich geua was ich will, natürlich aber leider nur graphisch, nicht als Wert!

      Kommentar


        #4
        hallo mike,

        schau mal bei tilo, ich glaube der hat dafür einen baustein.
        bei mir zeigt allerdings seine seite derzeit ein 404 an.
        glück auf

        günther

        Kommentar


          #5
          Link zum Logikbaustein auf Tilos Seite:

          http://www.eib4fun.de/homeserver/hs_logik.html#MinMax

          "Wer immer tut, was er schon kann, bleibt immer das, was er schon ist." Henry Ford

          Kommentar


            #6
            Ich glaube mit dem Baustein von Thilo ist nur "normales" Berechnen von Extrema möglich, also Intervall startet, Baustein läuft und ermittelt werde ab Intervallbeginn.
            Ich möchte jedoch ein Intervall, der über die Zeit gleitet, quasi ein Zeitfenster in dem die Extrema gefunden werden.
            Da ich bisher zu der Idee mit dem Archiv nix gehört hab, gehe ich mal davon aus, dass das eine Sackgasse ist. Wobei das eigentlich genau das ist was ich brauche, nämlich ein Automatismus, der in einem festen Zeitrahmen Werte aufzeichnet, ist der Zeitrahmen überschritten werden alte Werte gelöscht um Platz für die neuen zu machen...

            Was ich allerdings darauf aufsetzend btauche ist nicht die Diagrammgenerierung, sondern die die dort sicher implementierte suche für die Exrema. NUr leider ist das funktional und zugriffstechnisch ja nicht offengelegt, oder hab ich was übersehen?

            Kommentar


              #7
              Wollte nur mal zwischendurch ankündigen dass ich einen entsprechenden Baustein gerade entwickele. Werde Ihne wohl morgen zur Verfügung stellen.

              Was der Baustein Macht:

              Eingänge:
              • Wert
              • Zeitfenster (Minuten)
              • Präzision (Sekunden)
              • Flags
              Ausgänge:
              • Min/Max gleitend
              • Min/Max Absolut
              Kurzerklärung:

              Die Absolutausgänge bilden die min/max Werte über den ganzen Zeitraum (wird wohl noch ein reset hinzu kommen). Die Gleitende min/max bilden den Min/Max wert über das Zeitfenster in Minuten (360 für 6 Stunden).

              Die Präzision gibt an in welchem Rythmus das Zeitfenster rückt. Dafür ist wichtig dass sich der Wert in Sekunden des Zeitfensters ein multiple von der Präzision ist. Ansonsten wird das Zeitfenster automatisch erweitert.

              Beispiel:

              Zeitfenster: 5 Minuten
              Präzision: 60 Sekunden

              Bedeutet: Die gleitende Werte werden über die letzten 5 Minuten +/- 60 Sekunden gebildet. Bedeutet soviel dass wenn das Modul 6 Minuten gelaufen ist vergisst es die erste Minute und somit ist der Gleitende Wert wieder der der letzen 5 Minuten, etc...

              Die Präzision ist nötig um zu vermeiden dass der Speicherbedarf des Moduls unübersichtlich wird weil die Werte in einem Feld gespeichert werden müssen (Im Beispiel oben 5 Werte).

              Der Baustein wacht darüber dass die Werte Plausibel und nicht zu gross sind. Er erlaubt maximal 1000 Werte im Feld (Willsagen Zeitfenster*60/Präzision<=1000). Ausserdem wird zumindets die erste Version eine dynamische Umstellung der Zeitwerte nicht unterstützen.

              Flags: Im Moment nur ein (Bit 0), wenn gesetzt geht der Baustein davon aus dass ein richtiger Wert bereits bei der Initialisierung des HS anliegt (z.B. Gescannter Wert und/oder Remanentspeicher). Ist das Bit nicht gesetzt beginnt der Baustein erst zu Arbeiten wenn der erste Wert am Eingang eintrifft.

              Tritt ein Fehler auf (nicht kohärente Zeitangaben (z.B. Präzision>Zeitfenster, oder negativ oder mehr als 1000 Werte ergibt). Gibt der Baustein an allen Ausgängen eine nagative Fehlernummer aus und arbeitet nicht.

              Gruss,
              Gaston

              Kommentar


                #8
                Hallo Gaston,

                Wow,
                das klingt super gut!

                Dachte schon ich müsste mir über IP-Telegramme senden/empfangen und ein Progrämmelchen auf dem PC eine Krücke bauen.

                Vielen Dank schonmal vorab!
                MIKE

                Kommentar


                  #9
                  So, der Baustein ist zum Testen bereit. Der letzte Ausgang (Aufrufe) ist ein debugging Ausgang der bei der definitiven version verschwinden wird. Reset für absolut und gleitende Werte sind separat vorhanden.

                  Viel Spass,
                  Gaston
                  Angehängte Dateien

                  Kommentar


                    #10
                    Super,

                    werde es gleich heute nacht zum Testen einbauen!

                    Danke
                    MIKE

                    Kommentar


                      #11
                      Hallo Gastron,

                      hat jetzt nix mit nörgeln zu tun, nur vielleicht als Verbesserungsvorschlag weil's mir beim Durchlesen aufgefallen ist:

                      Vielleicht könnte man sich im Baustein (mit Ausgängen) den Zeitpunkt (Datum und Uhrzeit) für die Extrema merken. ERhöht natürlich den Speicherbedarf, weil ja im Prinzip für jeden Meßpunkt die Zeit gespeichert werden muss..

                      Gruß aus Wiesbaden
                      MIKE

                      Kommentar


                        #12
                        Zitat von MikeR Beitrag anzeigen
                        Hallo Gastron,

                        hat jetzt nix mit nörgeln zu tun, nur vielleicht als Verbesserungsvorschlag weil's mir beim Durchlesen aufgefallen ist:

                        Vielleicht könnte man sich im Baustein (mit Ausgängen) den Zeitpunkt (Datum und Uhrzeit) für die Extrema merken. ERhöht natürlich den Speicherbedarf, weil ja im Prinzip für jeden Meßpunkt die Zeit gespeichert werden muss..

                        Gruß aus Wiesbaden
                        MIKE
                        Das würde ich auch niemals als nörgeln empfinden. Für gute Ideen bin ich immer offen. Allerdings geht dein Vorschlag an die Grenzen des (heute) machbaren da man im HS eigentlich keine Schleifen machen kann dies aber hier benötigt wird.

                        Ich werde heute mal ein wenig in die Trickkiste greifen denn ich glaube ich hab einen Weg gefunden mit dem ich diese Limitation umgehen kann. Mal sehen...

                        Gruss,
                        Gaston

                        Kommentar


                          #13
                          Puh, da musste ich tiefer in die trickkiste greifen als ich ohnehin schon dachte. Aber es scheint zu funktionieren.

                          Zeit- (min/glt)=Zeitpunkt an dem das Minimum zuerst(-) gesehen wurd
                          Zeit+ (min/glt)=Zeitpunkt an dem das Minimum zuerst(+) gesehen wurd
                          Zeit- (max/glt)=Zeitpunkt an dem das Maximum zuerst(-) gesehen wurd
                          Zeit+ (max/glt)=Zeitpunkt an dem das Maximum zuerst(+) gesehen wurd

                          Der Baustein gibt nun für die gleitenden Min/Max werte jeweils den ersten und letzten Zeitpunkt wo der entsprechende Wert im Zeitfenster gesehen wurde. Natürlich können zwischen den beiden Zeitpunkten andere Werte eingegangen sein.

                          Die Ausgabe wird in Sekunden seit "Zeitbeginn" ausgegeben. Diesen Wert auf den ZeitText Baustein (auch im Archiv) auf den Sekunden Eingang geben und am Ausgang erscheint die Zeit (ohne Datum) als Text.

                          Die zeiten für die Absolutwerte werden noch nachgereicht wenn der Baustein läuft. Ist ein Klax gegnüber den hier eingebauten.

                          Eine kleine Einschränkung gibt es auch noch für den Zeitpunkt an dem der Wert zuletzt gesehen wurde. Dieser Zeitpunkt ist entweder ein "Präzisionsspürung", oder wann der Wert zuseltzt empfangen wurde.

                          Ein Beispiel:

                          Zeitfenster: 24 Stunden und Präzision 1 Stunde (Ich gehe beim Beispiel davon aus dass der Präzisionstimer jede vole Stunde abläuft und sich somit das Fenster verrückt)

                          Der Tagesmaximalwert wurde zuerst um 4:15 Uhr gemessen (Min erster Wert (min-) und Min letzter Wert(min+) ist dann 4:15). Nun bleibt der Wert zwar konstant und wird dadurch vom Sender nicht mehr gesendet. Um 5 Uhr läuft der Präzisionstimer ab und min+ wird jetzt 5 Uhr, dann um 6 Uhr das gleiche min+=6 Uhr etc... Aendert sich nun der Wert kurzzeitig nach oben (kein neues minima) und kommt dann wieder auf den alten minimum Wert oder durch irgend einen Grund wird das Minimum nochmal an den Baustein gesendet, sagen wir um 6:20, dann ird dies die neue Uhrzeit von min+.

                          So nun bleibt der Wert wieder konstant bis 7:30. Dh, um 7:00 läuft der Präzisionstimer ab und 7:00 wird die neue min+ Zeit. Ab 7:30 ist der Wert immer grösser als das Minimum vor 7:30. Solange das Zeitfenster bis 7:00 aktiv ist (also bis 8:00 am nächsten Tag (Zeitfenster+Präzision)) solange wird min+ 7:00 bleiben obwohl 7:30 der richtige Wert wäre denn da hat sich der Wert geändert.

                          Zwei Lösungen sind denkbar:

                          1. Die Präzisionzeit ist eben die zu erwartende Präzision, legedlich wenn sich der Wert ändert wird ide augenblickliche Zeit gepeichert. Somit ist zumindest nach dem ändern des Wertes die richtige Zeit verfügbar.

                          2. Wenn die Präzisionszeit einen bestimmten Wert übersteigt wird ein zweiter Timer gestartet der die zeit updated wenn sich der Wert nicht geändert hat. (Watchdog).

                          3. 1 & 2 kombiniert

                          Gruss,
                          Gaston
                          Angehängte Dateien

                          Kommentar


                            #14
                            Hi Gaston,

                            klingt ziemlich gut, leider komme ich erst am WE, so fürchte ich, zum testen. Die Stelle "...am Ausgang erscheint die Zeit (ohne Datum)" hat mich allerdings stutzig gemacht. Evtl. will man ja auch bei niedriger Zeit-Präzision eher Langzeit-Extrema aufzeichnen. So wie ich es (komm gerade aus einer Kneipe ) verstanden habe, ist das aber eher eine Frage der Baustein-externen Logik-Beschaltung...

                            Grüße und nochmal Danke
                            aus Wiesbaden
                            MIKE

                            Kommentar


                              #15
                              Hi Mike,

                              Also am Ausgang des Min/Max Bausteins liegt die Zeit in Unix Manier (Sekunden sei "Epoche", meistens 1.1.1970), sprich mit Datum vor. Mein Zeit baustein unterstützt zur Zeit nur kein Datum (war eigentlich für Sonnenaufgang/untergang gedacht). Ich werde dies aber noch ändern. Über den Felder eingang kann man die feder bestimmen die man haben möchte (1=HH, 2=HH:MM, 3=HH:MM:SS)

                              Gruss,
                              Gaston

                              Kommentar

                              Lädt...
                              X