Ankündigung

Einklappen
Keine Ankündigung bisher.

Richtig konvertieren

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

    Richtig konvertieren

    Hallo zusammen,

    hoffe alle hatten eine super Start ins neue Jahr.

    Benötige ein wenig Hilfe.

    Um mit Variablen wie z.Bsp. varkosten=0.23f16 multiplizieren zu können, muss man u32 Werte die eine Aktor liefert in f32 konvertieren.

    Was mich dabei stört, ist die dann doch nicht unerhebl. Abweichung in den Werten.

    Beispiele:
    Zähler = 66.226
    Nach Konvertierung nach f16 wird angezeigt: 66.232

    Bei Summe Energie werden mir 62 kWh angezeigt. (passt auch wenn man die Unterwerte von Aussen, EG,OG und UG addiert)

    Aber....
    als Ergebnis Zählerstand (Summe Zähler + Energie) wird 66314 angezeigt.
    Das passt irgendwie alles nicht. Die Abweichung ist einfach zu groß

    Hat jemand eine Idee wie man das lösen kann?

    Danke und Gruß
    Ralf
    Angehängte Dateien

    #2
    Hi Ralf,

    nimm kein f16 für Berechnungen. Das ist nur ein Ein- oder Ausgabeformat von KNX. Warum, kannst Du hier nachlesen.

    Gruß,
    Bernd

    Kommentar


      #3
      ok, aber um mittels mpchart Werte anzeigen zu lassen benötige ich f16.
      Habe alles andere ausprobiert, Compiler meckert wenn

      Habe nun folgendes Problem.

      Stand auf dem Gaszähler 22130,424.
      Diesen Wert möchte ich mit dem dazukommenden Gasverbrauch (ermittelt über Reed mit 0,1cbm / Imp) addieren.
      GA Gasverbrauch hat den Typ u32

      [highlight=epc]
      Gas=22130.42f16
      Gasverbrauch=convert("Gas-6/6/0",0f16)/10f16
      Gaszaehler=Gas+Gasverbrauch

      if stime(0) then webdisplay(23,Gaszaehler,INFO,INACTIVE,GREEN) endif
      if stime(0) then webdisplay(24,Gasverbrauch,INFO,INACTIVE,GREEN) endif
      if cycle(10,0) then mpchart(1,Time,Gaszaehler,0,27) endif
      if cycle(10,0) then mpchart(2,Time,Gasverbrauch,0,27) endif
      [/highlight]

      Es muss doch möglich sein im Rahmen der convert Funktion genau den Wert für Gas = 22130,42 mit dem für Gasverbrauch = z.B. 6,7 so zu addieren, dass die Summe korrekt ist.
      Momentan wird ohne Veränderung immer 22138,88 angezeigt, welche allein durch convert auf f16 von Gas herrührt.
      Korrekt müsste 22137,12 angezeigt werden.

      Wie gelingt mir das???

      Danke, verzweifle langsam.

      Gruß
      Ralf

      Kommentar


        #4
        Moin Ralf,

        nochmal: nicht mit f16 rechnen! Mache es entweder im Integerbereich, wissend das Du noch ein Komma verschieben müßtest oder nimm direkt f32. Für die Charts reicht es aus, wenn Du direkt vor dem Chart den Wert in ein f16 konvertierst.

        Ich habe nachfolgenden Code mal getestet:

        [highlight=epc]
        Gas=22130.42f32
        Gasverbrauch=convert('6/6/0'f32,0f32)/10f32
        Gaszaehler=Gas+Gasverbrauch

        if stime(0) then webdisplay(23,stringformat( Gaszaehler,4,0,0,2),INFO,INACTIVE,GREEN) endif
        if stime(0) then webdisplay(24,stringformat( Gasverbrauch,4,0,0,2),INFO,INACTIVE,GREEN) endif

        if cycle(1,0) then mchart(1,Time,convert(Gaszaehler,0f16),0) endif
        if cycle(1,0) then mchart(2,Time,convert(Gasverbrauch,0f16),0) endif

        [WebServer]
        page(1)[$Startseite$,$Linkbereich$]
        header(0)
        footer(0)
        Design $black$
        fastinit

        shifter(23)[TEMPERATURE]$Gaszähler$
        shifter(24)[TEMPERATURE]$Gasverbrauch$

        mchart(1) [DOUBLE,SXY] ($Gaszähler$,LINEDOTS)
        mchart(2) [DOUBLE,SXY] ($Gasverbrauch$,LINEDOTS)

        [/highlight]

        Time habe ich einfach mal hochgezählt damit was passiert...

        stringformat( Gaszaehler,4,0,0,2) sorgt dafür, das eine Fließkommazahl mit 2 Nachkommastellen dargestellt wird.

        Gruß,
        Bernd

        Kommentar


          #5
          prima, danke
          gebe zu dass mit den Typen und konvertierung untereinander nicht ganz zu durchdringen.
          Bei f23 störte mich dann immer die Anzeige in der Visu. Auf stringformat bin ich noch gar nicht gekommen. Teste das Ganze heute abend aus.

          Nochmal Danke

          Gruß

          Ralf

          Kommentar


            #6
            BINGO!!!

            Werte sind korrekt und addiert wird auch korrekt.

            Gruß
            Ralf

            Kommentar


              #7
              Hallo,

              glaube, verstanden zu haben, dass man nicht mit einem f16-Wert rechnen sollte usw.
              Meinen RTR schickt die Raumtemperatur als f16 auf den Bus. Die Werte, die der eibPC anzeigt, entsprechen nicht der eigentlichen Temperatur. Bsp.: die Temperatur beträgt 20,8 °C. Gesendet wird ein 2 Bytewert 0x1904 ( was umgerechnet den 20,8 °C entspricht). So wird es auch in der ETS angezeigt. Der eibPC verwendet bzw zeigt den Wert 19,04 °C an. Auch eine Umwandlung in u16 führt zu dem Wert 1904. Was kann ich tun, damit ich den "richtigen" Wert von 20,8 angezeigt bekomme?

              Gruß Markus

              Kommentar


                #8
                Hallo Markus,

                dachte schon nur ich hätte das Problem.
                Möchtest Du den Wert als mchart oder button mit pdisplay/webdisplay anzeigen lassen?

                Bei mchart muss man f16 nehmen , bei mir hat der Compiler sonst immer gemeckert. Im anderen Fall kannst Du das von Bernd gezeigte Beispiel nutzen.
                Stelle alles auf f32 mit convert um und nutze dann das stringformat bei der display Funktion. Bei mir werden die Werte ausser beim mchart jetzt richtig angezeigt.

                Gruß

                Ralf

                Kommentar


                  #9
                  Was kann ich tun, damit ich den "richtigen" Wert von 20,8 angezeigt bekomme?
                  du könntest den Wert mit dem entsprechenden Faktor multiplizieren....

                  - falls der Faktor konstant ist - schau einmal bei anderen Temperaturwerten....
                  EPIX
                  ...und möge der Saft mit euch sein...
                  Getippt von meinen Zeigefingern auf einer QWERTZ Tastatur

                  Kommentar

                  Lädt...
                  X