LabVIEWForum.de - Gray Code in Binär - SSI Encoder

LabVIEWForum.de

Normale Version: Gray Code in Binär - SSI Encoder
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo zusammen,

dacht ich frag mal in die Runde ob jemand von euch schon einmal eine SSI Encoder Antwort im Gray Format umgerechnet hat. Und zwar bekomme ich von einem Encoder folgende Antwort:

12 Bit Multiturn (4096)
15 Bit Singleturn (32786)

Diese Werte sind allerdings "gray codiert". Nun müsste ich die Werte in Binär bzw. in ein dezimalformat umrechnen. Derzeit liegen sie als Binärarray vor. Hat mir der ein oder andere ein Tip???

Vielen Dank
Hallo,
schau mal hier.
Converting Gray Codes to Their Corresponding Standard Binary Numbers
https://decibel.ni.com/content/docs/DOC-13286
Guten Morgen,

hab ihn einem amerikanischen Forum eine passende Lösung gefunden, welche ich auch umgesetzt hab. Funktioniert einwandfrei (siehe Anhang)

Viele Grüße und Danke

EDIT: Lösung ignorieren... siehe unten Wink
Hallo Nullstrom,

kannst du die Quelle auch angeben?

- Wieso rechnest du einmal die komplette SSI-Angabe von 27bit und dann jeweils noch einmal die 12bit und 15bit-Anteile? zumindest der 12bit-Anteil sollte identisch ausfallen…
- Wieso nimmst du erst ein 15bit-Arraysubset und formst dieses dann noch einmal in ein 15bittiges Array um? Rube-Goldberg lässt grüßen!
- Im Link oben gab es auch Implementierungen, die ohne boolsches Array auskommen und deutlich effizienter sind…
- IndexArray benötigt keine Null am Indexeingang…
- Deine Lösung wäre hier auch als VI interessant, am besten reduziert auf die Kernfunktion "Graycode to Binary" (d.h. ohne deine FPGA-Aufrufe drumherum)…
Ich hab gerade gemerkt, das ich totaler Müll programmiert hab - bzw. einen Denkfehler hatte.

Hab jetzt erst einmal die Quelle wieder suchen müssen. Die Idee bzw. das VI hatte ich aus folgendem Link:
http://forums.ni.com/t5/Motion-Control-a...d-p/406509

Nun zu meinem Denkfehler:

Der Encoder gibt mir (in meinem Falle) 30 Bit aus. Diese setzen sich wie folgt zusammen:

- 3 Fehlerbits
- 15 Bit Single
- 12 Bit Multi

wie man sehen kann, hatte ich erst die einteilung vorgenommen und dann den jeweiligen Bereich von Gray zu Binär umgewandelt -> was absoluter schwachsinn ist. Der Fehler äußerte sich indem mein Single Wert von 0...32768,32767...0 gezählt hat. War also nicht sofort ersichtlich.

nachdem ich jetzt noch einmal eine Nacht drüber gepennt hab, kam mir folgende Idee:

Ich werf erstmal meine 3 Fehlerbits weg. Anschließend übersetzte ich die 27 Positionsbits von Gray ins Binäre und dort teile ich dann in Single und Multi -> siehe da, es funktioniert Smile

PS: Falls ich irgend ein Urheberrecht verletze bzgl. des Links oben, sagt mir bescheid Wink
Hallo Nullstrom,

gleich noch ein Profil_ergaenzen hinterher, wenn du inzwischen auf LV2014 umgestiegen bist!
Erledigt Smile

Die Updates kommen schneller ins Haus geflattert als ich es hier nachtragen kann Big Grin
Hallo Nullstrom,

ich habe den Code aus deinem Link mal umgebaut, er sieht jetzt so aus:
[attachment=51645]
Das könnte man noch etwas vereinfachen:
[attachment=51648]
Habt ihr die Anhänge aus dem Link in Beitrag #2 gesehen? Nix umwandeln nach Array of Boolean, gleich die Logik in U32...

Gruß, Jens
Seiten: 1 2
Referenz-URLs