Ankündigung

Einklappen
Keine Ankündigung bisher.

- √ - Umrechung via Baustein

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

    HS/FS - √ - Umrechung via Baustein

    hallo Jungs,
    ich rechne 2*1Byte WErte mittels dem Baustein folgendermassen um:

    5000|"Wandler\2*1ByteTo16Bit"|0|3|"1 Eingang 1 Byte"|"2 Eingang 1 Byte"|"Divisor"|1|"16-Bit"

    5001|3|1|0|0|0

    5002|1|0|0
    5002|2|0|0
    5002|3|10|0

    5004|1|0|0|1 #A1


    5012|0|""|"((int(EN[1]) * 256) + int(EN[2])) / 10"|""|1|0|0|0


    das hat bis jetzt auch ganz gut geklappt, allerdings habe ich nun bei Minusgraden das Problem, daß so nette Werte wie 6514°C rauskommen.
    Was mache ich denn falsch? Steh völlig auf dem Schlauch.

    Peter
    never fummel a running system...

    #2
    Schau mal den Datentyp an, in den du das Ergebnis schiebst!
    Gruß Matthias
    EIB übersetzt meine Frau mit "Ehepaar Ist Beschäftigt"
    - PN nur für PERSÖNLICHES!

    Kommentar


      #3
      Datentyp ist EIS10 (16BIT -32768 / 32768)
      Ich glaube das Unsigned 1 Bit ist falsch, aber wie ändern?

      Der Eingangswert ist
      0x1 0xf4
      da müsste irgendwas mit - 2,xx °C rauskommen...
      never fummel a running system...

      Kommentar


        #4
        Moin Peter,

        erzähl nochmal bitte welcher Wert -2,xx ergeben soll?
        das 0x1 0xf4 ?
        Das kann ja eigentlich nur EIS5 sein. Sonst wäre bei Typ int kein Komma möglich.
        Du musst halt nur noch etwas einbauen um zu verhindern das die Werte auf E1 und E2 zusammengehören.

        also z.B.
        Code:
         
        5012|0|"EI"|"-1"|""|0|0|1|0
        5012|0|"EI"|"-1"|""|0|0|2|0
        5012|0|"EC[1] and SN[1]==-1"|"EN[1]"|""|0|0|1|0
        5012|0|"EC[2] and SN[2]==-1"|"EN[2]"|""|0|0|2|0
        5012|1|"SN[1]==-1 or SN[2]==-1"|""|""|0|0|0|0
        5012|0|""|"(SN[1]<<8)+SN[2]"|""|1|0|0|0
        5012|0|""|"-1"|""|0|0|1|0
        5012|0|""|"-1"|""|0|0|2|0
        ausgang dann auf ein EIS5 legen
        Nils

        aktuelle Bausteine:
        BusAufsicht - ServiceCheck - Pushover - HS-Insight

        Kommentar


          #5
          das kommt via MOXA aus meiner Heizung ist ist der Beschreibung nach ein dWord.

          Alle anderen - sind aber immer positiv - rechne ich so um und die stimmen genau. Ich vermute, daß hat was mit signed / unsigned zu tun.

          Ich nehme an, daß das Erste Bit das Vorzeichen repräsentiert.
          never fummel a running system...

          Kommentar


            #6
            Hallo Peter,

            war da nicht mal die Aussage, dass intern immer mit Float gerechnet wird? Dann würde ich doch den 2-Byte-Temperaturwert empfehlen.

            Wie wird denn die negative Temperatur Deiner 2 Eigangs-Bytes markiert? Ist das das MSB aus der 0xF4?

            mfg Swen
            2 Objekte, 6 Linien + KNX/IP-Bereich, HS 3 SW 2.8, Visu mit 2x 15"-Touch, Softwaregateway KNX/IP für 2x Novelan Wärmepumpe, viele Ideen und wenig Zeit

            Kommentar


              #7
              tja, dass weiß ich eben nicht...
              Anbei die Anleitung, ich versteh das nicht.
              Es geht um die beiden Byte TA

              (Punkt 3, Byte 0X04 und 0X05)
              Wie bereits gesagt, im positiven Bereich gehts
              Angehängte Dateien
              never fummel a running system...

              Kommentar


                #8
                Hallo Peter,

                wie ist denn die Codierung im positiven Bereich? Stell mal ein paar Beispiele zusammen, dann finden wir schon raus wie sich das zusammensetzt.
                Also so in der Art: 0x03 0xC2 = 25.7°

                mfg Swen
                2 Objekte, 6 Linien + KNX/IP-Bereich, HS 3 SW 2.8, Visu mit 2x 15"-Touch, Softwaregateway KNX/IP für 2x Novelan Wärmepumpe, viele Ideen und wenig Zeit

                Kommentar


                  #9
                  habs gelöst, das 1.Bit im 1.Bytewert ist das "Sign", welches das Vorzeichen darstellt.
                  Habe eine einfache, aber effektive Lösung gefunden.
                  Vielen Dank


                  #### 2 Byte-Umwandlung (2Byte -> 16 Bit )
                  5000|"Wandler\2*1ByteTo16Bit_Signed"|0|3|"1 Eingang 1 Byte"|"2 Eingang 1 Byte"|"Divisor"|1|"16-Bit"

                  5001|3|1|0|1|0

                  5002|1|0|0
                  5002|2|0|0
                  5002|3|10|0

                  5003|1|0|0

                  5004|1|0|0|1 #A1


                  5012|0|"(int(EN[1]) < 128)"|"((int(EN[1]) * 256) + int(EN[2])) / 10"|""|1|0|0|0
                  5012|0|"(int(EN[1]) >= 128)"|"(((int(EN[1]) -128) * 256) + int(EN[2])) / 10 * (-1)"|""|1|0|0|0
                  never fummel a running system...

                  Kommentar

                  Lädt...
                  X