Ankündigung

Einklappen
Keine Ankündigung bisher.

Ganzzahl zu Gleitkommawert

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

    HS/FS Ganzzahl zu Gleitkommawert

    Hallo zusammen,

    Irgendwie finde ich keine Lösung zu dem Problem.

    Mein Wechselrichter spuckt uint16, also Ganzzahl mit DPT 7.xxx aus. Ich würde aber gerne hier einen Kommawert haben. 65540 --> 655,40 (V vom DC Strang). Genauso bei der Stromstärke 420 --> 4,2 (A vom DC Strang).

    Wenn ich jetzt den Stromstärkentyp von 7.xxx auf 9.xxx (mA) ändere, erhalte ich einen Kommawert.
    Wenn ich von dem Spannungstyp aber umändere in 9.xxx (mV) bekomme ich nur "null" raus. Lasse ich das durch den Logikeditor laufen (Ganzzahl in Text --> Text in Float --> Float x0.01) passt es zwar bei >10000. Aber bei kleinerem Wert 600 (V) macht er natürlich 6 V draus.

    Wie kann man das am geschicktesten umgehen oder wie bekomme ich am einfachsten aus einer Ganzzahl den Kommawert?
    MfG
    Chris

    #2
    Im HS einfach Division mit 100 klappt nicht?

    Kommentar


      #3
      muss ich testen. Ich habe gedacht 440 x0.01 = 440 /100 !? Dürfte also keine Rolle spielen ob multiplizieren oder dividieren
      MfG
      Chris

      Kommentar


        #4
        Zitat von chris_s Beitrag anzeigen
        Ich habe gedacht 440 x0.01 = 440 /100 !? Dürfte also keine Rolle spielen ob multiplizieren oder dividieren
        Klar, macht keinen Unterschied. Konnte deinem 1. Post aber nicht entnehmen, dass du das bereits versucht hast. Bzw. das funktioniert definitiv, so lange du für das Ausgangs-KO einen passenden Datentyp gewählt hast.

        Kommentar


          #5
          Zitat von chris_s Beitrag anzeigen
          Hallo zusammen,

          ........... (Ganzzahl in Text --> Text in Float --> Float x0.01) passt es zwar bei >10000. Aber bei kleinerem Wert 600 (V) macht er natürlich 6 V draus.

          ........
          ich habe in Node Red alle Datentypen durch und auch im Homeserver entsprechend abgeändert. Knackpunkt ist anscheinend Ganzzahl zu Float. Irgendwie muss es ja funktionieren ein Komma zu setzen ggf. mit einer Umrechnung. Aber wenn ich Ganzzahl x0.01 mache, schneidet er mir natürlich den Rest ab, da Ganzzahl....
          MfG
          Chris

          Kommentar


            #6
            Kommen die Werte vom Bus?
            Du musst sie natürlich so annehmen wie sie sind. Sprich z.B. als 7.xxx, wenn sie so am Bus anliegen. - Direkt umformen geht da nicht, da es die binäre Datenstruktur ist.
            Dann im Logikeditor teilen / multiplizieren und in eine (andere) Variable Typ 9.xxx schreiben.
            Mit einer Variable klappt es nicht. Nimm gern für letzteres ein internes KO.

            Kommentar


              #7
              Danke.
              Die Werte kommen von deinem guten Modbus Baustein. Das Register macht allerdings bei diesen Daten uint16. Alle anderen sind float32 und lassen sich entsprechend multiplizieren. Aber bei den Ganzzahlen funktionierts einfach nicht.

              Habe schon diverse umrechnereien drin und auch alle DPT versucht (7.xxx --> 9.xxxx --> 14.xxxx) Aber irgendwie stehe ich da auf dem Schlauch. DPT natürlich im HS und NodeRed entsprechend gleichgezogen.

              Unbenannt.JPG

              Wenn ich im Bautein x0.01 multipliziere, dann erhalte ich nur die erste Ziffer (da Ganzzahl). oder muss ich dann auch den DPT ändern?

              Bei der jetzigen rumrechnerei oben, wird immer mit 0.01 multipliziert. Sehr fehlerbehaftet, da 60050 (=600,50 V) passt. Aber 200 (=200V --> 0,200V). Logik das nur Werte > 10000 mit 0.01 multipliziert werden?
              MfG
              Chris

              Kommentar


                #8
                Einfach mit 1 Multiplizieren, und am Ausgang das KO mit dem Float anhängen.

                Kommentar


                  #9
                  Ich verreck. Besten Dank. Sooo einfach wenn man es mal weiß.

                  Was ich bisher alles probiert habe. Und dann muss man einfach nur das KO auf DPT14.xxx ändern und laufen lassen
                  MfG
                  Chris

                  Kommentar


                    #10
                    Ich glaub ich muss im Baustein im Fall von Multiplikator < 1 das Result auf Float casten und weiterrechnen.

                    Ich hab grad ne Version im Testing. Dauert ggf. Noch 2-3 Tage. Aber versuche es mal nachzustellen.

                    Kommentar


                      #11
                      Hab meinen Baustein überprüft (in der Entwicklungsversion, sollte aber gleich sein). Es funktioniert so wie es soll.
                      Greenshot 2021-08-07 22.18.30.png

                      Weise ich dann den ersten Wert (value 3) einem 32Bit IEEE Float zu, ist alles gut. Für 16 Bit ist es zu klein, dass geht dann auf max-value.
                      Also es hängt IMHO nur an deinem DPT den du am Ausgang zuweist.

                      Schreib es mir sonst Bilateral, wenn doch am Baustein was falsch ist. Dann langweilen wir keinen mit Details :-)

                      Kommentar


                        #12
                        Hi,

                        habe ich auch gerade festgestellt. Bei 32bit funktionierts. Bei den 16bit geht er tatsächlich auf max und ich wunderte mich schon wo jetzt 655,35 V bzw. A herkommen.
                        MfG
                        Chris

                        Kommentar

                        Lädt...
                        X