Wandeln REAl to 2x Word Schneider electric Unity

dkf

Level-1
Beiträge
2
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

Ich möchte (muss) mit Schneider electric Unity eine REAL-Größe in zwei 16Bit-Wörtern (lowbyte/highbyte) im Datenformat ASCII an einen übergeordneten Rechner übertragen. Mit nicht komma-behaftenen Zahlen ist das kein Problem, hier jedoch soll der Dezimalpunkt (wenn vorhanden), mit übertragen werden, also alle Zahlenwerte von 0,01 - 9999 sind möglich.
Ich grüble seit einigen Tagen immer mal wieder daran herum, habe jetzt mal das Internet bemüht und bin zwar auf keinen Lösungsansatz, aber immerhin auf dieses Forum hier gestoßen.
Vielleicht ist das Ganze ganz einfach und ich habe mich nur verrannt, aber - hat jemand einen Tip?

freundliche Grüsse

dkf
 
kenn mich mit schneider nicht aus aber vlt geht es über ein String. Erklär es anhand B&R ST weiß nicht ob Funktionen bei Codesys gibt oder wie die dort heißen

Weiß nicht ob es was ähnliches gibt denk aber schon:

Benutzerdatentyp der aus 2 Strings ein für low ein für Highbytes besteht anlegen

Anfangsadresse ermitteln (B&R ST: ADR(Benutzerdatentyp ) )

Anfangsadresse Real ermitteln (B&R ST: ADR(REAL) )

Funktion zum kopieren von Speicherbereichen
(bei B&R ST memcpy(AdrBenutzerdatentyp, AdrReal, 4) )
und REAL bereich auf Benutzerdatentypbereich schieben.

dann müsstest auf die beiden teile deines Benutzerdatentyps zugreifen und je ein teil drin haben.

hab das noch nich ausprobiert was dann da genau drin steht, aber so hätte ich das versucht, länge von strings müssen auch passen
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wenn Du die Kommastelle erhalten willst mußt Du den Realwert x 10 nehmen und dann in DINT umwandeln

z.B. 3,4 = 34

dann später beim zurückrechen in real wieder durch 10 teilen

34:10=3,4 anders kannst Du die Kommastellen nicht übertragen da Int ja nur ganze Zahlen kennt.

Für 2 Stellen dann 100 nehmen
 
Zurück
Oben