Ankündigung

Einklappen
Keine Ankündigung bisher.

Temperaturvergleich

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

    Temperaturvergleich

    Hallo zusammen,

    ich möchte einen vom Wiregate bereitgestellten Temperaturwert mit einem festen Wert vergleichen.
    Das habe ich in der Art geschrieben:

    if ('GA des 1W Temperaturwerts'f16<30.0) then ....

    Habs auch schon so probiert:

    if ('GA des 1W Temperaturwerts'f16<30.0f16) then ....

    Das scheint nicht zu funktionieren, daher die Frage, wie ich einen derartigen Vergleich schreiben muss.

    Danke für Eure Hilfe,
    Felix

    #2
    Hi Felix,

    Code:
    if change('GA des 1W Temperaturwerts'f16<30.0f16) and ('GA des 1W Temperaturwerts'f16<30.0f16) then {
    ...
    } endif
    Wenn Du das change wegläßt, wird es aufgrund des Validierungsschemas nur einmal geprüft ob die GA < 30 ist. Die If-Schleife wird also nur einmal durchlaufen solange diese Bedingung erfüllt ist.

    Mit change() sorgst Du dafür, das die If Verzweigung jedesmal geprüft wird, wenn sich der Wert der GA geändert hat.

    Gruß,
    Bernd

    Kommentar


      #3
      Zitat von daF Beitrag anzeigen
      [..]
      if ('GA des 1W Temperaturwerts'f16<30.0) then ....
      [..]
      if ('GA des 1W Temperaturwerts'f16<30.0f16) then ....
      [..]
      NB da 30.0 schon f16 ist, sind die Abfragen identisch und ... die Bedingung wird nur beim ersten positiven Vergleich gültig, danach muss sie erst ungültig werden, damit sie wieder gültig wird.

      Evtl. kommst du mit Debuggen weiter, indem du den Wert der Ga in eine Variable schreibst und du dann die Variable im EibStudio ausließt, etwa so:

      GAdes1WTemperaturwert = 0f16
      GAdes1WTemperaturwert = 'GA des 1W Temperaturwerts'
      if (GAdes1WTemperaturwert<30.0f16) then ...

      Da zeigt sich ziemlich schnell, ob es z.B. an den Typen liegt oder die GA nicht kommt.
      BR
      Marc

      Kommentar


        #4
        Danke für die Tipps. Werd das mit dem "change" testen.

        Grüße,
        Felix

        Kommentar


          #5
          hmm, gibts irgendeine Möglichkeit, eine if-Anweisung immer ausführen zu lassen?

          Wenn ich z.B. die RTR davon abhängig machen will, ob alle Fenster zu sind, hätte ich nun einfach eine if-Schleife mit dieser Abfrage um die RTR gebaut, welche die RTR nur ausführt, solage die Fenster zu sind. Wenn ich das jetzt richtig verstanden habe, geht das so nicht, weil er die RTR sonst nur einmal ausführt und dann nicht mehr.

          Kommentar


            #6
            Zitat von bmx Beitrag anzeigen
            Hi Felix,

            Code:
            if change('GA des 1W Temperaturwerts'f16<30.0f16) and ('GA des 1W Temperaturwerts'f16<30.0f16) then {
            ...
            } endif
            Wenn Du das change wegläßt, wird es aufgrund des Validierungsschemas nur einmal geprüft ob die GA < 30 ist. Die If-Schleife wird also nur einmal durchlaufen solange diese Bedingung erfüllt ist.
            Das stimmt nicht ganz:
            if change('GA des 1W Temperaturwerts'f16<30.0f16)
            würde überprüfen, ob der Vergleich sich geändert hat, also ist dies genau das, was das Validierungsschema macht. Es ändert sich ja nur was, wenn die Grenze einmal über oder unterschritten wird.

            Das müsste so heissen:
            if change('GA des 1W Temperaturwerts'f16) and 'GA des 1W Temperaturwerts'f16<30.0f16 then write('Beschattung'b01, EIN) endif

            Wenn Du hier z.B. eine Beschattung schaltest, würde die bei jeder
            Änderung der GA des 1W Temperaturwerts' die Beschattung GA mit EIN geschrieben werden (30° vorausgesetzt)

            Noch hartnäckiger ist die eval()-Funktion.
            if eval('GA des 1W Temperaturwerts'f16) and 'GA des 1W Temperaturwerts'f16<30.0f16 then write('Beschattung'b01, EIN) endif

            Diese würde bei jedem Verarbeitungszyklis ein EIN senden (30° vorausgesetzt). Das ist also potenziell problematisch. Ich würde beim ersten Code (ohne change und eval) bleiben und das Programm entsprechend umgestalten.
            offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
            Enertex Produkte kaufen

            Kommentar


              #7
              Vielen Dank für Deine Hilfe.

              Diese eval-Funktion finde ich im Handbuch gar nicht. Ist die nicht drin?

              Noch eine Frage, wenn eine weitere if-Anweisung im else Zweig steht, wird diese if-Anweisung dann immer ausgeführt, oder auch nur, wenn sich die in dieser Anweisung abgefragten Bedingungen geändert haben?

              Kommentar


                #8
                Zitat von daF Beitrag anzeigen
                Vielen Dank für Deine Hilfe.
                Diese eval-Funktion finde ich im Handbuch gar nicht. Ist die nicht drin?
                eval markieren und F1 drücken. S. 148
                Noch eine Frage, wenn eine weitere if-Anweisung im else Zweig steht, wird diese if-Anweisung dann immer ausgeführt, oder auch nur, wenn sich die in dieser Anweisung abgefragten Bedingungen geändert haben?
                Code:
                 if a > 1 then {
                    Anweisung1
                } else {
                   if b>3 then Anweisung2 endif
                } endif
                Wenn ź.b. von 23 auf 0 wechselt (b immer 2 bleibt) wird beim Wechsel einmal Anweisung2 ausgeführt.
                offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
                Enertex Produkte kaufen

                Kommentar


                  #9
                  Vielen Dank.

                  Ich hatte noch eine alte Version des Handbuchs. Da war noch nichts drin. Hab mir eben das aktuelle runtergeladen.

                  Schönen Abend noch,
                  Felix

                  Kommentar


                    #10
                    Zitat von daF Beitrag anzeigen
                    Vielen Dank.
                    Ich hatte noch eine alte Version des Handbuchs. Da war noch nichts drin. Hab mir eben das aktuelle runtergeladen.
                    Im EibStudio selbst ist die aktuelle Versions des Handbuchs mit eingebunden.
                    offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
                    Enertex Produkte kaufen

                    Kommentar

                    Lädt...
                    X