Ankündigung

Einklappen
Keine Ankündigung bisher.

Hilfe für HS Logic

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

    Hilfe für HS Logic

    Hallo Zusammen,

    ich schreibe gerade eine Baustein für den HS und habe dabei ein Problem.
    Ich möchte das der Speicher 1 wenn er den Wert 0.60 erreicht hat den Wert 0 erhält.
    Soll einfach ein Reset des Speicher 1 werden.

    Habe da leider so meine Probleme wenn der Speicher keine ganzen Zahlen enthält.

    Was mache ich in meinem Baustein falsch?

    5012|0|"OC[1] and (float(SN[1])==float(0.60))"|"0"|""|0|0|1|0


    Bitte um eure Hilfe.


    Gruß
    Mables

    #2
    Wie wäre es mit der Abfrage auf 'größer-gleich'? So werden evtl. Fehler aufgrund der internen Darstellung vermieden.
    Gruß, Rainer

    Kommentar


      #3
      Die Alternative wäre round(....
      Gruß Matthias
      EIB übersetzt meine Frau mit "Ehepaar Ist Beschäftigt"
      - PN nur für PERSÖNLICHES!

      Kommentar


        #4
        Gute lektüre ist im verzeichnis /dat die logic.dat. Da sieht man z.B.

        Code:
        5004|9019|4|0|1|2
        5012|9019|0|""|"round(EN[1]*1000000) == round(EN[2]*1000000)"|""|1|0|0|2
        5012|9019|0|"(EI==0)"|"round(EN[1]*1000000) == round(EN[2]*1000000)"|""|3|0|0|4
        Gruß Matthias
        EIB übersetzt meine Frau mit "Ehepaar Ist Beschäftigt"
        - PN nur für PERSÖNLICHES!

        Kommentar


          #5
          Hallo ihr 2,

          danke das war die Lösung!
          Ich verstehe aber nicht wieso das "==" nicht funktionierte.

          Ich zähle den Speicher 1 mit dieser Zeile hoch.

          5012|0|"OC[1] and (EN[1]>=1)"|"float(SN[1])+float(0.01)"|""|0|0|1|0

          Ich dachte, da kann ein > (größer) ja gar nicht sein.
          Könnt ihr mir das erklären?

          Danke für die Hilfe!


          Gruß
          Mables

          Kommentar


            #6
            Gleitkomma-arithmetik

            Hallo Mables,

            sieh mal hier: Gleitkommazahl ? Wikipedia

            Das Problem ist, dass schon 0,1 nicht als binäre Zahl geschrieben eine nicht-endliche Anzahl von Stellen haben müsste (Periode).

            Gruß
            snowdd
            Deutschsprachiges homebridge-knx-Forum unter https://github.com/snowdd1/homebridge-knx-de

            Kommentar


              #7
              Hallo snowdd,

              danke für die Antwort!
              Ich verstehe es zwar nicht ganz, aber kann man meine Interpretation gelten lassen oder liege ich da total falsch?

              Wenn es sich um Gleitkommazahlen handelt, dann ist nicht sicher gestellt, dass eine Dezimalzahl mit zwei Stellen nach dem Komma (z.B. 2,56) auch eine Gleitkommazahl mit zwei Stellen nach dem Komma ergibt.

              Dadurch könnte z.B. aus 2,56 -> 2,5601 werden.


              Bin mal auf deine / eure Antworten gespannt.



              Grüße
              Mables

              Kommentar


                #8
                Korrekt.
                Gruß Matthias
                EIB übersetzt meine Frau mit "Ehepaar Ist Beschäftigt"
                - PN nur für PERSÖNLICHES!

                Kommentar


                  #9
                  Hallo Matthias,

                  das heisst dann aber auch, dass es in Verbindung mit Gleitkommazahlen kein "==" geben kann / darf, da das vermutlich immer in die Hose geht.


                  Gruß
                  Mables

                  Kommentar


                    #10
                    nein, aber die Wahrscheinlikeit bei mehreren Stellen hinter dem Komma ist eben gering, den Treffer zu erzielen
                    never fummel a running system...

                    Kommentar

                    Lädt...
                    X