S7-200 - Wandlung Dezimalzahl nach Hex

smartie

Level-1
Beiträge
298
Reaktionspunkte
22
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

irgendwie sitze ich hier grad auf dem Schlauch und komme nicht weiter, vielleicht könnt ihr mir helfen:

Mit einer S7-226 (6ES7216-2AD23-0XB0) möchte ich einen Datenstring an einen Servoantrieb senden.
Zur Berechnung der Prüfsumme muss der Wert meiner Variable (welche im Datenstring übertragen wird) in HEX vorliegen.

Bei der Berechnung der Variable möchte ich mit natürlich mit Dezimalzahlen (und nicht mit HEX) arbeiten.

Mein Problem ist nun die Umwandlung meines Dezimal- in einen HEX-Wert.

In meinem Beispiel soll die Variable den Wert +19476 haben.
Die sollte einem HEX Wert von 4C14 enstprechen.


Ich finde nur keinen Weg DEZ nach HEX umzuwandeln.

Als Lösungsansatz habe ich versucht aus dem DEZ - Wert einen ASCII String (ITA) zu bilden:

Code:
LD     SM0.0
ITA    VW4000, VB5000, 16#0
Dabei erhalte ich folgendes Ergebniss:

VW 4000 +19476

VB 5000 ASCII ' '
VB 5001 ASCII ' '
VB 5002 ASCII ' '
VB 5003 ASCII '1'
VB 5004 ASCII '9'
VB 5005 ASCII '4'
VB 5006 ASCII '7'
VB 5007 ASCII '6'

Diesen ASCII - String versuche ich nun in einen HEX - Wert zu wandeln (ATH):

Code:
LD     SM0.0
ATH    VB5003, VB6001, 5
Dabei erhalte ich folgendes Ergebniss:

VB 6001 16#19
VB 6002 16#47
VB 6003 16#60

Aber DEZ 19476 entspricht ja nicht HEX 19476 sondern HEX 4C14. :confused:

Ich hoffe ihr versteht mein Problem und habt einen Lösungsansatz für mich.

Vielen Dank schon mal im vorraus

smartie
 
Ich bin mir nicht sicher ob ich das Problem richtig verstehe aber...
Ob Hex der Dez ist doch egal. In beiden Varianten hat die Variable doch den gleichen Inhalt, nur die Darstellung für den Menschen ist unterschiedlich.
D.h. schreibst Du den Wert auf ein Ausgangswort, so leuchten die gleichen LEDs, egal ob der Wert nun 10#19476 oder 16#4C14 ist.
 
Das eigentliche Problem besteht doch darin das der Datenstring der an den Servotreiber gesendet wird in HEX vorliegen muss.

Im wesentlichen stimmt das schon was ihr schreibt, letzlich ist es ja nur eine Art der Anzeige ob ich den HEX oder den DEZ Wert sehe.

In der S7-300 würde ich in dem Datenbaustein, in dem ich den Datenstring für den Servo bilde, einfach die Variablen vom Datentyp " Word "definieren und hätte somit den Wert in HEX angezeigt.

Jetzt arbeite ich aber mit einer S7-226, die Frage wäre nun also wie muss ich hier vorgehen?

Gruß smartie
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wenn ich richtig verstanden habe, es geht um eine LECOM-Schnittstelle.
Wie schon gesagt wurde nimm "HTA", dann wird dein DEZ Wert automatisch als HEX interpretiert.
 

Anhänge

  • 05.05.jpg
    05.05.jpg
    140,6 KB · Aufrufe: 31
Zuletzt bearbeitet:
Zurück
Oben