LabVIEWForum.de - Float mit CANopen

LabVIEWForum.de

Normale Version: Float mit CANopen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Liebes Forum,

um einen Float mit CANopnen zu nutzen müsste ich einen Float mit einem Int Bitmuster nutzen. In C habe ich das so erledigt, jedoch habe ich keinerlei Ahnung wie man das mit Labview macht. Casten Bringt nichts, da sonst der Wert ja nur gerundet wird.

float f = engine_parameter / 10.0;
int i=*(int*) &f;

Ich hoffe Ihr könnt mir diesbezüglich weiterhelfen.
Viele liebe Grüße
unix1970
Hallo unix,

üblicherweise hat man eine DBC-Datei (oder ähnliches), die die Skalierung/Wertebereiche der Signale beschreibt. Anhand dieser Tabellen kannst du deinen Float sehr einfach in einen passenden Datentyp (gern mal U16/U32/I16) umrechnen…

Außerdem sollte dein C-Konstrukt in etwa so aussehen:
[attachment=49405]
Aber dann castet er ihn mir nur. Ich brauche aber das selbe Bitmuster. Also mit Vorzeichen Bias und Mantisse aber gespeichert als ein int, damit ich das auf den CAN schreiben kann. Deshalb mach ich auch den Umweg in C über die Pointer und Adressen.
Hallo unix,

Zitat:Deshalb mach ich auch den Umweg in C über die Pointer und Adressen.
Als LabVIEW-Programmierer sind diese Sternchen für mich erstmal nur bessere Smileys… Big Grin

Zitat:Casten Bringt nichts, da sonst der Wert ja nur gerundet wird.
Vorhin hast du noch gesagt, das TypeCast nicht das ist, was du haben willst. Jetzt dagegen willst du es:
Zitat:Ich brauche aber das selbe Bitmuster. Also mit Vorzeichen Bias und Mantisse aber gespeichert als ein int

(type)cast ist etwas anderes als von Float nach Int konvertieren

Nimm doch einfach die TypeCast-Funktion, wenn du das brauchst!
Referenz-URLs