Reelle Zahl in Binär

PaulAtreides

Well-Known Member
Folgende Binärzahlen ergeben diese Zahlen. Kommt jemand auf die Kodierung?

1000 0010 1100 0110 - 6,4
1000 0010 1100 0001 - 6,3
1000 0010 1011 1110 - 6,2
1000 0010 1011 0011 - 6,0
1000 0010 1010 0110 - 5,8
1000 0000 1000 0001 - 0,0
1000 0001 1111 1010 - 4,9
1000 0001 1111 0100 - 4,7
 
Ist das - ein Minuszeichen oder soll das ein Trenner sein, um die Binärzahl von der Dezimalzahl abzutrennen?
 
Nehmen wir mal 6,4. Der Exponent wäre 2, auf Bit 11 bis 15 abgebildet also 10001 -> Damit kann es kein 16 Bit IEEE-754 sein. Aber das wäre auch zu einfach gewesen. ;)
 
"Die Kodierung, die verwendet werden muss, damit die Binärzahl 1000 0010 1100 0110 die Zahl 6,4 ergibt, ist die IEEE 754-Standard-Kodierung für 32-Bit-Gleitkommazahlen. Mit dieser Kodierung wird die Binärzahl 1000 0010 1100 0110 als -0,07421875 interpretiert, was der Dezimalzahl -6,4 entspricht.". Also ist das doch ein Minus...
 
Der Binärwert stammt aus einer Aufzeichnung einer Busübertragung. Der Wert stellt ein 4-20 mA Signal dar. Die Statusanzeige zeigt (+)6,4 mA an. Wie kommst du von -0,07421875 auf -6,4?
 
Hast du eventuell paar mehr Infos bezüglich des Herstellers oder welcher Binärwert bei 4mA bzw 20mA ankommt?
 
Wie ist das 4 - 20mA Signal skaliert? Welche Hardware liefert das Signal? Es könnte sich ja auch z.B. um 12 Bit Integer Werte und zusätzliche Informationen in den restlichen Bits handeln, ähnlich wie in Siemens Analog Hardware.
 
ohne genau hingesehen zu haben, mal der Einwurf: ist das überhaupt Binär?

In technischen Anwendungen wird ja sehr oft der Gray-Code verwendet oder irgendeine Mischform, halt mit zusätzlichen Informationen in übrigen Bits, wie Ein - Aus Zustand oder Richtungen.
Deshalb habe ich auch gar nicht genau hingesehen, weil es meist für einen einfachen Geist, wie meiner einer, ziemlich unmöglich ist, hier die passende Eingebung zu haben. Schon das Finden des kleinsten Wertes kann echt problematisch sein, denn 00000 muss nun nicht etwa bedeuten, dass dies auch 0mA sind und negative Werte einfach ein negativer Spiegel des Binärwertes. Hier können sich Hersteller so richtig austoben und ohne zusätzliche Beschreibungen und Dokumentation kann die Deutung von Einsen und Nullen schwierig sein.
 
Hi,

kommt das von einem Feldbus (z.B. HART)? Dann würde ich da in der Spec schauen was dort für ein Zahlenformat für Analogwerte definiert ist.

Gruß,
Peter
 
Das Bussignal ist RS485. Von einem Erweiterungsmodul werden 2 Analogeingänge und 8 Digitaleingänge an ein Gerät gesendet. Das Modul hat auch einen analogen Ausgang und zwei Relais. Die Werte die ich hier aufgeschrieben habe sind ein Teil des Signals das vom Modul gesendet wird. Durch Ausprobieren konnte ich den Teil identifizieren, der das 4 bis 20 mA Signal betrifft. Den Wert 1000 0000 1000 0001 - 0,0 erhalte ich, wenn ich den Stecker vom 4-20mA Sensor abziehe. Ich vermute, dass das Erweiterungsmodul das 4-20 mA Signal ohne Skalierung überträgt und die gesamte Umrechnung im Gerät durchgeführt wird. Mehr weiß ich nicht.
 
IEEE Umwandlung anzeigen : s. < https://zahlensysteme-rechner.de/ieee-754-konverter/ >

Anhand folgender Tabelle denke ich momentan nicht, daß es IEEE754 16-bit ist. Evtl. ist ein Offset drauf. Die linke 1 könnte aber das Vorzeichen sein.
REAL*4 : IEEE754 16 bit
Dein Wert : Dein Format , Umrechnung in 16bit IEEE754
-6.4 : 1100 0110 0110 0110
-6.4 : 1000 0010 1100 0110 , -4.231929779052734375 E-5

-6.3 : 1100 0110 0100 1101
-6.3 : 1000 0010 1100 0001 , -42021274566650390625 E-5

0 : 0000 0000 0000 0000
0 : 1000 0000 1000 0001 , -7.688999176025390625 E-6
 
Das Bussignal ist RS485. Von einem Erweiterungsmodul werden 2 Analogeingänge und 8 Digitaleingänge an ein Gerät gesendet. Das Modul hat auch einen analogen Ausgang und zwei Relais. Die Werte die ich hier aufgeschrieben habe sind ein Teil des Signals das vom Modul gesendet wird. Durch Ausprobieren konnte ich den Teil identifizieren, der das 4 bis 20 mA Signal betrifft. Den Wert 1000 0000 1000 0001 - 0,0 erhalte ich, wenn ich den Stecker vom 4-20mA Sensor abziehe. Ich vermute, dass das Erweiterungsmodul das 4-20 mA Signal ohne Skalierung überträgt und die gesamte Umrechnung im Gerät durchgeführt wird. Mehr weiß ich nicht.
Könnte dann Modbus Format sein

 
Ich vermute, dass das Erweiterungsmodul das 4-20 mA Signal ohne Skalierung überträgt und die gesamte Umrechnung im Gerät durchgeführt wird.
naja.
Du hast die Änderungen in Zehntel mA gemessen, aber woher kennst du denn zB die Auflösung des AD-Wandlers?
Verstehst du, was ich meine?
Hättest du deine "Binärzahlen" nun einer Tabelle mit hundertstel oder tausendstel Auflösung des Analog-Wertes gegenüber gestellt, würde das alles vielleicht ganz anders und womöglich noch viel schlimmer aussehen.
Zudem ist das Messen kleiner Ströme immer ziemlich wild, weil zu viele Störungen alleine auf den Messleitungen sich tummeln können.

Mal nur kurz angedacht, es seien wirklich Binärzahlen und diese hätten direkt einen Zusammenhang zu den gemessen Strömen, dann müsste der sich in irgendeiner Regelmäßigkeit zeigen. Linear oder logarithmisch, aber nicht hin und her.
Und weiter angenommen, der Wert
1000 0000 1000 0001 - 0,0
bedeutet etwa gleich Null*. Dann kann man alle Anderen Werte als Differenz dazu ausgeben und sich das mal ansehen.
Also, was ich meine, die Anzahl Digits pro mA bestimmen. Das muss dann irgendwie vernünftig aussehen und wenn ich das mal so überschlagen habe, tut es das mit deiner kleinen Tabelle nicht. Ich erhalte da Werte, die zwischen ungefähr 77 und 94 Digits pro mA liegen und ziemlich wild herumfluten, sich also nicht merklich in einer Richtung verändern.

Die Konsequenz daraus ist, dass womöglich die Messungen nicht genau genug sind oder die Korrelation der Ergebnisse irgendwie Faxen enthält oder es eben schon erwähnte Besonderheiten in dem Code gibt und er nicht ein reiner Binärcode ist.

Nun hängt es natürlich auch davon ab, was du überhaupt daraus machen willst. Denn grundsätzlich ist so ein ca-Wert von 80 Digits pro mA innerhalb deiner Tabelle ja nicht so schlecht und führt nicht direkt zu unvernünftigen Werten, wenn du den dort anwendest.
Du musst dann aber auch bedenken, dass du nur im untersten Bereich gemessen hast. Ich meine, bei einem Erfassungsbereich von 4 bis 20 mA ist 6,4mA sehr dicht beim kleinsten Wert und man kann nicht wissen, wie sich das weiter entwickelt. Sinnvoll wäre es vielleicht, die Werte für 0mA (mit einem Abschluss-Widerstand und nicht mit offenem Eingang) und dann 4,0; 12,0; 20,0 und vielleicht zur Sicherheit mal ein zwei Werte dazwischen zu bestimmen und die Ergebnisse genauer anzusehen.


*wieso nicht 0000 0000 0000 0000 = 0,00, was doch viel sinnvoller wäre, wenn es um Binärzahlen geht.
1000 0000 1000 0001 = 1000 0000 1000 0000 im Rahmen der Messungenauigkeit und das macht dann wenigstens einen gewissen Sinn, weil 1111 1111 1111 1111 * 1/2 genau das ist. Glaube ich.
 
Zurück
Oben