Forum: Mikrocontroller und Digitale Elektronik Wer findet den Algorithmus dieser Codierung heraus? sPLAN4.0 sPLAN7.0


von Bernhard S. (bernhard)


Angehängte Dateien:

Lesenswert?

Geschätztes Forum,bitte helft mir.

Im Programm sPLAN wird z.B, die X-Koordinate mit 3 Bytes gespeichert.

Aber wie erfolgt die Kodierung?


Byte1----Byte0------angezeigte Koordinate
00000000-00000000--> 0
01000001-00100000--> 1
01000001-10100000--> 2
01000001-11110000--> 3
01000010-00100000--> 4
01000010-01001000--> 5
01000010-01110000--> 6
01000010-10001100--> 7
01000010-10100000--> 8
01000010-10110100--> 9
01000010-11001000--> 10
01000010-11011100--> 11
01000010-11110000--> 12
01000011-00000010--> 13
01000011-00001100--> 14
01000011-00010110--> 15
01000011-00100000--> 16
01000011-00101010--> 17
01000011-00110100--> 18
01000011-00111110--> 19
01000011-01001000--> 20



Hier im Beispiel habe ich Byte2 mal ausgeblendet, ist Null.

Danke

Bernhard

von c-hater (Gast)


Lesenswert?

Bernhard S. schrieb:

> Aber wie erfolgt die Kodierung?

Das dürfte eine Gleit- oder Festkommadarstellung sein. Offensichtlich 
wird intern mit mit einer anderen Einheit gerechnet als der angezeigten.

Es gilt also, zuerst mal das Maximum und das Minimum der Anzeige-Einheit 
zu finden. Dann schaut man sich an, was das jeweils encodiert ergibt. 
Aus den beiden Sachen kann man mit einiger Sicherheit erstmal ermitteln, 
ob Gleit- oder Festkomma und auch den Umrechnungsfaktor zur 
Binärdarstellung. Bei Gleitkomma auch noch, wie sich die Bits auf 
Mantisse und Exponent verteilen, da ist man dann also schon fertig 
(jedenfalls für die regulären Fälle).

Bei Festkomma ist dann hingegen noch ein wenig Heuristik nötig, um die 
Lage des virtuellen Kommas zu ermitteln und damit die tatsächlich intern 
verwendete Einheit.

Ich würde übrigens vollkommen empirisch darauf tippen, dass es 
tatsächlich nicht drei, sondern 6 Bytes pro Zahl sind und Gleitkomma. 
Sprich: Datentyp "single". Und die Einheit dürfte irgendwas wie 1/72" 
oder 1/96" sein.

von Bernhard S. (bernhard)


Lesenswert?

...ok,

danke für den Tipp, werde mich nochmals intensiv mit den einzenen Bits

beschäftigen

von Holger L. (max5v)


Lesenswert?

Werden die Koordinaten bei unterschiedlichen Zoom, Rastermaß 
Einstellungen denn immer gleich gespeichert?
Wen nicht, könnte man mit ein wenig Glück durch vergleichen auf die 
Lösung kommen.

von c-hater (Gast)


Lesenswert?

c-hater schrieb:

> Das dürfte eine Gleit- oder Festkommadarstellung sein. Offensichtlich
> wird intern mit mit einer anderen Einheit gerechnet als der angezeigten.

Was mir gerade noch einfällt:

Es besteht die realistische Möglichkeit, dass man irgendwo in den 
Optionen des Programms die Anzeige-Einheit konfigurieren kann. Wenn das 
so ist, kann man davon ausgehen, dass eine der hier angebotenen Optionen 
entweder direkt der intern verwendeten Einheit entspricht oder zumindest 
in einem ganzzahligen Verhältnis zu dieser steht.

Das würde die weiteren Ermittlungen dramatisch vereinfachen...

von Wolfgang (Gast)


Lesenswert?

Holger L. schrieb:
> Wen nicht, könnte man mit ein wenig Glück durch vergleichen auf die
> Lösung kommen.

Wenn man den Bytewert (Byte1 * 256 + Byte0) gegen die angezeigte 
Koordinate plottet, sieht man, dass die Steigung bereichsweise vom Wert 
der angezeigte Koordinate abhängt. Die Steigung ändert sich jeweils um 
einen Faktor 2, was IMHO für eine Float Kodierung mit spricht.

von Bernhard S. (bernhard)


Angehängte Dateien:

Lesenswert?

@alle

Danke für Eure Hilfe und Tipps, diese führten zur Lösung.

Es ist eine Fließkommazahl

Die Koordinaten für sPlan40, sPlan50, sPlan60 und sPlan70 werden mit 
diesem Verahren abgespeichert.

Einen einfachen 32Bit-Float-Rechner fand ich hier:

https://www.h-schmidt.net/FloatConverter/IEEE754de.html


Bernhard

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.