Sortierung von mehreren Eingängen

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • schurli
    Extension Master
    • 29.01.2019
    • 121

    #1

    Sortierung von mehreren Eingängen

    Hallo Loxonauten,

    folgendes Problem, für das ich noch keine zufriedenstellende Lösung gefunden habe. Ich habe mehrere Eingänge, die analoge Werte liefern, und von denen möchte ich den höchsten Werte herausbekommen. Wie geht das?

    Konkret: Ich habe 11 Raumklimasensoren bei mir verbaut und ich möchte herausbekommen in welchem Raum die höchste CO2 Konzentration ist und wie hoch dieser Wert ist (damit ich danach die Lüftung entsprechend ansteuern kann). Wie mache ich das?.

    Was ich schon probiert habe ist, die Eingänge zusammen an einen Eingang eines Status Bausteins zu hängen und in diesem eine Bedingung zu definieren wie z.B. I1 > 1000, damit, wenn einer der vielen Eingänge über 1000ppm ist, sich die Lüftung einschaltet. Nur wenn man mehrere Eingänge an einen Statusbaustein hängt, dann nimmt sich Loxone einen beliebigen aller Eingängewerte als I1 und nicht den mit dem höchsten Wert.

    Mir fällt keine elegante Lösung des Problems ein. Habe ich was übersehen?

    Danke
  • Michael Sommer
    Lox Guru
    • 25.08.2015
    • 1957

    #2
    Einfach dafür mehrere Min-/Max-Auswahlbausteine in Kaskade hintereinander verdrahten
    Haustechnik UG: MS2, 7 Extensionen, WAGO 750er I/O-Module, 19"-Notbedienebene, EMA-Anlage
    ELT-UG: MS1, 5 Extensionen, Notbedienebene, RM+WM-Anlage, Mehrere Shellys,
    OG: MS1, 8 Extensionen, Notbedienebene, Mehrere Shellys
    EG: konvent. E-Installation, Autarke EZR-Regelkreise (0-10V) für Stat.-HZG mit Aufschaltung (Schwellwert) des Heizkreises auf den Miniserver UG, Zeitsteuerung EG-Wohnung aus Miniserver UG). Mehrere Shellys
    LoxBerry-Nutzer: Stats4Lox,
    Testserver: 2xMS-GEN1

    Kommentar

    • schurli
      Extension Master
      • 29.01.2019
      • 121

      #3
      Ah, super, danke! Der MinMax Baustein war mir nicht bekannt.

      Gibt es jetzt noch eine elegante Möglichkeit herauszufinden um welchen Eingang es sich handelt, d.h. in welchem Raum sich der Höchstwert befindet?

      Kommentar

      • Iksi
        Lox Guru
        • 27.08.2015
        • 1111

        #4
        Du könntest jeweils den Raumwert mit dem Max Wert vergleichen. Wenn die identisch sind ist es dieser Raum....

        Kommentar

        • schurli
          Extension Master
          • 29.01.2019
          • 121

          #5
          An das hab ich auch schon gedacht, wird nur ein bisschen aufwendig wenn man den Status Baustein verwendet und 11 Eingänge zum Vergleichen hat. Aber lösbar 😀
          danke!!

          Kommentar

          • Iksi
            Lox Guru
            • 27.08.2015
            • 1111

            #6
            Du wirst pro Raum einen Vergleichsbaustein nehmen müssen. Der Statusbaustei kann keine Eingänge mit einander vergleichen, immer nur gegen fest eingestellte Werte....

            Kommentar

            • romildo
              Lebende Foren Legende
              • 25.08.2015
              • 5161

              #7
              .... oder Du machst es mittels Programmbaustein
              Beispiel:

              Klicke auf die Grafik für eine vergrößerte Ansicht  Name: Maximalwert.png Ansichten: 22 Größe: 188,8 KB ID: 367243

              Edit: Habe gerade gesehen dass der Code unter CODE nicht richtig angezeigt wird.
              Daher hier halt unter HTML

              HTML-Code:
              int nEvents;
              int i;
              int Eingang = 12; //Anzahl Eingänge maximal 13, Wert 0-12
              int Wert_aktuell[Eingang];
              int Wert_max = 0;
              int Wert_eingang = 0;
              
              while (1==1) {
                nEvents = getinputevent();
                if (nEvents){
                  Wert_max = 0;
                  for (i=0; i < Eingang; i++) {
                    Wert_aktuell[i] = getinput(i);
                    if (Wert_aktuell[i] >= Wert_max) {
                      Wert_max = Wert_aktuell[i];
                      Wert_eingang = i+1;
                    }
                  }
                  setoutput(0,Wert_eingang);
                  setoutput(1,Wert_max);
                }
                sleep(100);
              }​
              ​
              Zuletzt geändert von romildo; 19.11.2022, 07:44.
              lg Romildo

              Kommentar


              • maxw
                maxw kommentierte
                Kommentar bearbeiten
                Sehr schicke Lösung, Romildo!
                Ich habe den Programmbaustein schon lange nicht mehr verwendet, aber das hier ist ein perfekter Fall dafür.
            Lädt...