Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Ergebnis 1 bis 8 von 8

Thema: Array of Byte umwandeln in eine Realzahl

  1. #1
    Registriert seit
    10.03.2016
    Beiträge
    4
    Danke
    3
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    folgendes Problem:

    Über Profibus bekomme ich den Messwert eines Lastmessbolzen. Der Teilnehmer übergibt mir, wie in den Anhängen Dargestellt 16 Bytes in HEX, diese wiederrum sind in ASCII auf Zahlen umzuwandeln.
    Als fertige Lösung benötige ich am Ende Byte 4 - 13 als real Zahl, um mathematische Operationen vorzunehmen.

    Jemand einen denkanstoß/Idee wie ich das ganze Umwandeln kann?

    Danke!

    Lastmessbolzen1.jpgLastmessbolzen.jpg
    Zitieren Zitieren Array of Byte umwandeln in eine Realzahl  

  2. #2
    Registriert seit
    30.10.2009
    Ort
    10 km vom Herzen der Natur
    Beiträge
    1.628
    Danke
    120
    Erhielt 340 Danke für 255 Beiträge

    Standard

    Zitat Zitat von kranbau Beitrag anzeigen
    Als fertige Lösung benötige ich am Ende Byte 4 - 13 als real Zahl, um mathematische Operationen vorzunehmen.
    Kann es sein, dass Du Byte 3 - 12 meinst?

    Mit dem Format, das Du bekommst, ist es etwas kompliziert. Mit den Standard IEC-Konvertern ist hier nichts zu machen. Ich würde in einem anderen DB einen String mit der maximalen Länge 9 anlegen, anschließend manuell die aktuelle Länge auf 9 setzen und die Bytes 3 - 9 und 11 - 12 dort ab Byte 2 zusammenhängend hin kopieren (also als Byte 2 - 10). Anschließend kannst Du diesen String mit der IEC-Standardfunktion STRNG_DI konvertieren. Jetzt hast Du Deine Zahl um Faktor 100 zu groß. Jetzt noch nach REAL umwandeln und durch 100 teilen. Fertig.
    Gruß
    Michael

  3. Folgender Benutzer sagt Danke zu M-Ott für den nützlichen Beitrag:

    kranbau (10.03.2016)

  4. #3
    kranbau ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    10.03.2016
    Beiträge
    4
    Danke
    3
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo,

    danke für die Antwort. Genau, ich meine natürlich ab Byte 3!

    Leider bin ich noch nicht so tief in der materie drin. Könntest du auf den Part des Kopierens in den String etwas genauer eingehen?

    Danke!

  5. #4
    Registriert seit
    09.11.2007
    Ort
    Rhein Main (Darmstadt)
    Beiträge
    663
    Danke
    61
    Erhielt 112 Danke für 80 Beiträge

    Standard

    Achtung, in dem Telegramm sind weitere Sicherheiten eingebaut!

    Wenn da die Last mit errechnet wird, kann das bei einem Kran (Themenstarter heisst kranbau) schon aus Gründen der Sicherheit gefährlich werden, nur mal eben so zu rechnen!
    Als Freelancer immer auf der Suche nach interessanten Projekten.

  6. #5
    Registriert seit
    30.10.2009
    Ort
    10 km vom Herzen der Natur
    Beiträge
    1.628
    Danke
    120
    Erhielt 340 Danke für 255 Beiträge

    Standard

    Das ist das wenigste. Du musst einfach nur die Bytes, die die Ziffern Deines Originalstrings enthalten fortlaufend ab Byte 2 in den neuen String kopieren.
    Dein neuer String hat ja seine Anfangsadresse: DBx.DBBy.
    Jetzt kopierst Du aus Deinem Originalstring
    DBa.DBB3 nach DBx.DBBy+2
    DBa.DBB4 nach DBx.DBBy+3
    ...
    DBa.DBB9 nach DBx.DBBy+8
    DBa.DBB11 nach DBx.DBBy+9
    Dba.DBB12 nach DBx.DBBy+10
    Gruß
    Michael

  7. Folgender Benutzer sagt Danke zu M-Ott für den nützlichen Beitrag:

    kranbau (10.03.2016)

  8. #6
    kranbau ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    10.03.2016
    Beiträge
    4
    Danke
    3
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Danke für deine Hilfe, diese berrechnung Dient natürlich nicht einer Sicherheitsgerrichteten Funktion, sondern lediglich zu Visualisierungs zwecken.

    Ich bin also nun soweit, wie im Anhang dargestellt. Ich versuche die ersten 4 Ziffern als INT zu bekommen.

    Wo liegt mein Fehler?

    Grüße

    Lastmessbolzen11.jpgLastmessbolzen111.jpg
    Geändert von kranbau (10.03.2016 um 15:03 Uhr)

  9. #7
    Registriert seit
    30.10.2009
    Ort
    10 km vom Herzen der Natur
    Beiträge
    1.628
    Danke
    120
    Erhielt 340 Danke für 255 Beiträge

    Standard

    Zitat Zitat von mir selbst Beitrag anzeigen
    Das ist das wenigste. Du musst einfach nur die Bytes, die die Ziffern Deines Originalstrings enthalten fortlaufend ab Byte 2 in den neuen String kopieren.
    Dein neuer String hat ja seine Anfangsadresse: DBx.DBBy.
    Jetzt kopierst Du aus Deinem Originalstring
    DBa.DBB3 nach DBx.DBBy+2
    DBa.DBB4 nach DBx.DBBy+3
    ...
    DBa.DBB9 nach DBx.DBBy+8
    DBa.DBB11 nach DBx.DBBy+9
    Dba.DBB12 nach DBx.DBBy+10
    Du musst ab Byte 2 in den neuen STRING schreiben. Hast Du Dir mal in der Hilfe den Aufbau des STRING-Formats angeschaut?
    Gruß
    Michael

  10. Folgender Benutzer sagt Danke zu M-Ott für den nützlichen Beitrag:

    kranbau (10.03.2016)

  11. #8
    kranbau ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    10.03.2016
    Beiträge
    4
    Danke
    3
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Kurze Info um das ganze abzuschließen, es funktioniert!

    Danke...

    Lastmessbolzen1111.jpg

Ähnliche Themen

  1. Pointer in ein Byte Array umwandeln
    Von kai86 im Forum Simatic
    Antworten: 31
    Letzter Beitrag: 04.02.2011, 11:09
  2. Antworten: 14
    Letzter Beitrag: 15.10.2010, 11:50
  3. Antworten: 13
    Letzter Beitrag: 24.09.2009, 12:54
  4. Realzahl umwandeln
    Von maccap im Forum Hochsprachen - OPC
    Antworten: 10
    Letzter Beitrag: 13.11.2007, 14:48
  5. Umwandeln analogwert in Realzahl?
    Von Mecha02 im Forum Programmierstrategien
    Antworten: 4
    Letzter Beitrag: 26.07.2007, 17:50

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •