Hallo liebe Robotergemeinde,
ich brauche mal wieder eure Hilfe. Bei meiner vkrc4 Steuerung übertrage ich Koordinaten von der Technologie SPS auf den Roboter.
Die Werte sendet die Technologie SPS mit 32 Bit Länge als Gleitkommazahl. Gesendete Bit passen mit dem empfangenden Bits im Roboter über ein. Auswerten bzw. zurück rechnen tue ich mit dieser Funktion.
Deffct real Bits2Real(n:in)
Decl Int n
Decl Real F ; significand
Decl Int e ; exponent
Decl Bool neg ; negative sign
neg = n < 0 ; Save sign
n = n b_and 'h7fffffff' ; get magnitude
e = n/'h800000' ; extract exponent
e = e - 127 ; offset exponent
F = (n b_and 'h07fffff')/('h800000' + 0.0)
F = 1 + F
while e<>0
if e>0 then
f = f + f
e = e - 1
else
f = f / 2
e = e + 1
endif
endwhile
If neg Then ; Restore sign
F = -F
EndIf
return F
EndFct
Nun mein Problem die Rückrechnung ergibt nicht eine Gleitkommazahl wie in meinen Fall von 38.370 sondern dieses Ergebnis
FRAME KORR_FRAME={X 6.32652351E-12,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0}
Was ist bei der Funktion falsch damit ich wieder eine Gleitkommazahl bekomme? Oder wie kann man es anders machen bzw. besser?
Gruß