Contents Up Previous Next

Daten Format

Daten werden von den Modulen im Intel Format (little Endian) versendet und beim Empfangen in eben diesem Format interpretiert.

Ist man sich bei der Erstellung eigener Treiber nicht sicher, kann man die ,,Bytedreherei'' per ,,CHECK MC PC COMMUNICATION'', bzw. ,,CHECK PC MC COMMUNICATION'' mit definierten Testdaten prüfen.


Gleitkommazahlen

Die Norm IEEE 754 (Gleitkommazahlen) wurde in den frühen 1980er entwickelt, um unter anderem eine konsistente Gleitkommazahlenrepräsentation über verschiedene Rechnerarchitekturen zu erreichen. Dieser Standard wird eingehalten, wenn die Parameter als Gleitkommazahlen zum Modul gesendet bzw. von diesem zur Steuerung übermittelt werden. Eine Gleitkommazahl wird hierbei mit 32-Bit dargestellt.

Vorzeichen Bit Exponent Mantisse (normiert)
1 Bit (bit 32) 8 Bit (bit 23.. bit 30) 23 Bit (bit 1.. bit 22)
s e f

Da die Mantisse immer auf ,,1'' normiert ist, werden nur die Nachkommastellen gespeichert. Die führende ,,1'' wird nicht mit abgespeichert. Ein Float-Wert kann wie folgt berechnet werden.

(-1)^(s)*2^(e-127)*(1.f)(bin)
Einige Beispiele:

Vorzeichen Exponent Mantisse
1 Bit 8 Bit 23 Bit
7/4 0 01111111 11000000000000000000000
-34.432175 1 10000100 00010011011101010001100
-959818 1 10010010 11010100101010010100000
+0 0 00000000 00000000000000000000000
-0 1 00000000 00000000000000000000000
2^(-126) = 1.175*10^(-38)
kleinste positive Zahl 0 00000001 00000000000000000000000
(2-2^(-23)) 2^(127) = 3.403*10^(38)
größte positive Zahl 0 11111110 11111111111111111111111
unendlich 0 11111111 11111111111111111111111
NaN 0 11111111 nicht alle ,,0'' oder ,,1''
2^(-23) = 1.192*10^(-7)
kleinste aufzulösende Zahl 0 01101000 00000000000000000000000
2^(-128) 0 00000000 01000000000000000000000

Zweierkomplement

Das Zweierkomplement ist eine Möglichkeit um negative Zahlen im Binärsystem darzustellen. Bei dem Modul wird das Zweierkomplement für die Darstellung negativer Ganzzahlen benötigt. (Interger-Einheitensystem).

Positive Zahlen werden im Zweierkomplement mit einer führenden 0 (Vorzeichenbit) versehen und ansonsten nicht verändert. Negative Zahlen werden mit einer führenden 1 als Vorzeichenbit versehen und wie folgt kodiert: Sämtliche Ziffern der entsprechenden positiven Zahl werden negiert. Zum Ergebnis wird 1 addiert. Beispielhafte Umwandlung der negativen Dezimalzahl -4(dez) ins Zweierkomplement:

  1. Vorzeichen ignorieren und ins Binärsystem umrechnen : 4(dez)=00000100(bin)=0x04(hex)
  2. Invertieren, da negativ : 11111011(bin)=0xFB(hex)
  3. Eins addieren, da negativ : 11111011(bin) + 00000001(bin) = 11111100(bin) = 0xFC(hex)= -4(dez)

Etwas mathematischer:
Ist x eine negative Zahl, so errechnet sich x im Zweierkomplement (x(z)) mit n Stellen wie folgt:

x(z)=2^(n)-|x|
Dementsprechend gilt auch
x(z)+|x|=2^(n)

Da die Module im ,,Integer-Einheitensystem'' immer mit Int32 (4 Byte) arbeiten, lassen sich die Bytefolgen für negative Zahlen x (z.B. -112) einfach wie folgt berechnen:

y=4294967296(dez)-|x|--> y=4294967296_dez-112(dez)=4294967184(dez)
y=0x100000000(hex)-|x|--> y=0x100000000(hex)-0x70(hex)=0xFFFFFF90(hex)