Referenzdesign Teilscheiben

Absolut-Teilscheiben mit Auflösung ungleich 2ⁿ: zyklischer Gray-Code für 360 und 1000 Positionen

Absolut-Teilscheiben mit Auflösung ungleich 2ⁿ: zyklischer Gray-Code für 360 und 1000 Positionen

Für 360 oder 1000 Absolutpositionen, bei denen auch zwischen letztem und erstem Code nur ein Bit wechselt, schneidet man den symmetrischen Mittelteil des reflektierten Gray-Codes heraus und entfernt an beiden Enden je (2ⁿ − M)/2 Codes. Dieser Artikel leitet Symmetrie-, Schnitt- und Decodierformeln her, erklärt, warum eine ungerade Positionszahl unmöglich ist, und gibt Spurzahl, Elementbreite, Decodiertabelle und Layout-Prüfpunkte für 360 und 1000 Positionen an.

Teiltische, Ventilstellantriebe und Geräte mit Dezimalanzeige brauchen oft 360 (1° je Position) oder 1000 Absolutpositionen pro Umdrehung. Die Bitzahl des Gray-Codes ergibt 2ⁿ Codes pro Umdrehung, und weder 360 noch 1000 ist eine Potenz von 2. Am naheliegendsten wäre es, die ersten 360 Codes eines 9-Bit-Gray-Codes zu nehmen – doch der erste Code G(0) = 000000000 und der letzte G(359) = 111010100 unterscheiden sich in 5 Bit; kippen die Bits beim Überfahren der Nahtstelle in leicht unterschiedlicher Reihenfolge, kann ein Zwischencode weit entfernt von der wahren Position gelesen werden. Dieser Artikel zeigt eine Konstruktion, bei der sich auch erster und letzter Code nur in einem Bit unterscheiden, die Decodierformel und die Punkte, auf die im Layout zu achten ist.

512 Codes des reflektierten 9-Bit-Gray-Codes; an jedem Ende 76 entfernt, Indizes 76…435 bleiben; beim Überfahren der Nahtstelle 359 → 0 ändert sich nur das MSB b8; rot ist das in jedem Schritt wechselnde Bit.
Abb. 1 – 512 Codes des reflektierten 9-Bit-Gray-Codes; an jedem Ende 76 entfernt, Indizes 76…435 bleiben; beim Überfahren der Nahtstelle 359 → 0 ändert sich nur das MSB b8; rot ist das in jedem Schritt wechselnde Bit.

Symmetrie des reflektierten Gray-Codes

Der reflektierte n-Bit-Gray-Code lautet G(i) = i XOR (i » 1), i = 0…2ⁿ − 1. Ersetzt man i durch sein Spiegelbild i′ = 2ⁿ − 1 − i, also das bitweise Komplement der n Bits von i:

i′ = i XOR (2ⁿ − 1), i′ » 1 = (i » 1) XOR (2^(n−1) − 1)

Die XOR-Verknüpfung beider Ausdrücke ergibt

G(2ⁿ − 1 − i) = G(i) XOR 2^(n−1)

Zwei zum Mittelpunkt symmetrische Codes unterscheiden sich also nur im MSB. Daher stammt das Wort „reflektiert“: Die unteren n − 1 Bits der zweiten Hälfte spiegeln die erste Hälfte, das MSB wechselt von 0 auf 1.

Schnittbedingung und Decodierung

Für einen zyklischen Code mit M Positionen behält man die mittleren Indizes i = s … 2ⁿ − 1 − s und entfernt an beiden Enden je

s = (2ⁿ − M) / 2

Codes. Der erste Code des Abschnitts G(s) und der letzte G(2ⁿ − 1 − s) sind genau ein Spiegelpaar und unterscheiden sich nur im MSB; auch der Schluss vom letzten zum ersten Code ändert also nur ein Bit, innerhalb des Abschnitts wechselt ohnehin nur ein Bit pro Schritt. Die Bitzahl ist n = ⌈log₂M⌉; s muss ganzzahlig sein, also muss M gerade sein.

Die Decodierung erfolgt in zwei Schritten: zuerst Gray in Binär wandeln, b(n−1) = g(n−1), b(k) = b(k+1) XOR g(k); dann den Offset abziehen, p = B − s. Ist B < s oder B > 2ⁿ − 1 − s, wurde ein entfernter Code gelesen, was direkt als Lesefehler gewertet werden kann. Soll der mechanische Nullpunkt anders liegen, addiert man eine Konstante modulo M.

Der symmetrische Schnitt ist nicht die einzige Möglichkeit. Eine Suche über alle Startpunkte des 9-Bit-Codes ergibt 4 zusammenhängende Abschnitte der Länge 360, deren erster und letzter Code sich in einem Bit unterscheiden, mit Startpunkten 76, 204, 332 und 460; die letzten drei überqueren die Nahtstelle 511 → 0, die Decodierung braucht eine zusätzliche Modulo-Operation. Der symmetrische Abschnitt hat lückenlos aufeinanderfolgende Binärwerte und kommt mit einer einzigen Subtraktion aus – das ist am bequemsten.

Warum eine ungerade Positionszahl unmöglich ist

Man betrachtet die n-Bit-Codes als Ecken eines n-dimensionalen Würfels; „nur ein Bit ändern“ ist ein Schritt entlang einer Kante, und jeder Schritt kehrt die Parität der Anzahl der Bits mit dem Wert 1 im Codewort um. Nach einem vollen Umlauf zurück am Start muss die Parität wiederhergestellt sein, also muss die Zahl der Schritte – die Positionszahl M – gerade sein. Diese Aussage hängt nicht vom Konstruktionsverfahren ab: Kein zyklischer Code mit nur einem Bitwechsel pro Schritt kann eine ungerade Positionszahl haben.

Wird eine ungerade Positionszahl benötigt (zum Beispiel 125), gibt es zwei Auswege: einen zyklischen Code mit 2M Positionen erzeugen und am Ausgang durch 2 teilen – für 125 Positionen den 250er-Abschnitt eines 8-Bit-Codes mit s = 3; oder an der Nahtstelle einen gleichzeitigen Wechsel von zwei Bits zulassen und das Lesen durch Synchronisation mit der Inkrementalspur absichern, was eine zusätzliche Analyse der Lesetoleranz an der Nahtstelle erfordert.

Parameter für 360 und 1000 Positionen

Größe360 Positionen1000 Positionen
Spurzahl n910
Offset s7612
Behaltene Indizes76…43512…1011
Winkel je Position1°0,36° (21,6′)
Beispielradius des LSB15 mm18 mm
Elementbogenlänge 2πr/M261,8 μm113,1 μm
Feinste Streifenbreite (2 Elemente)523,6 μm226,2 μm
Erster / letzter Code001101010 / 1011010100000001010 / 1000001010
Anteil ungültiger Codes152/512 = 29,7 %24/1024 = 2,3 %

Decodiertabelle für 360 Positionen (Auszug):

Position pIndex iCodewort b8…b0Binär BB − 76
076001101010760
177001101011771
179255010000000255179
180256110000000256180
359435101101010435359

Die Spurstrukturen zeigt Abb. 2. Nach dem Schnitt sinkt die Zahl der Übergänge jeder Spur entsprechend: Bei 360 Positionen sind es für b0 noch 180 Übergänge, für b1 noch 90, und b8 ist weiterhin eine halbe Umdrehung hell und eine halbe dunkel.

Abwicklung der 9 Spuren des gekürzten Gray-Codes für 360 Positionen: links die volle Umdrehung, rechts vergrößert um die Nahtstelle; nur b8 wechselt an der Nahtstelle, und das lichtdurchlässige Segment von b4 über die Nahtstelle ist nur 8 Positionen breit.
Abb. 2 – Abwicklung der 9 Spuren des gekürzten Gray-Codes für 360 Positionen: links die volle Umdrehung, rechts vergrößert um die Nahtstelle; nur b8 wechselt an der Nahtstelle, und das lichtdurchlässige Segment von b4 über die Nahtstelle ist nur 8 Positionen breit.

Zwei Punkte, auf die im Layout zu achten ist

Unregelmäßige Streifenbreiten an der Nahtstelle. Nach dem Schnitt setzt sich das Segment jeder Spur, das über die Nahtstelle reicht, aus zwei Stücken von Abschnittsanfang und -ende zusammen; seine Breite entspricht nicht mehr dem Regelwert der Spur. Bei 360 Positionen beträgt die Regelstreifenbreite von b4 32 Positionen, das lichtdurchlässige Segment über die Nahtstelle aber nur 8 Positionen; auch b6 und b7 haben unregelmäßige Segmente von 232 bzw. 104 Positionen. Die feinste Strichbreite wird weiterhin von den 2 Elementen von b0 bestimmt, die Herstellbarkeit leidet also nicht, aber Layoutprüfung und AOI-Regeln dürfen nicht nach „feste Streifenbreite je Spur“ geschrieben werden, sondern müssen über die volle Umdrehung Position für Position mit der Codetabelle vergleichen.

Begrenzte Fehlererkennung durch ungültige Codes. Entfernte Codes treten im normalen Lesebetrieb nie auf; wird einer gelesen, kann ein Fehler gemeldet werden. Bei einem einzelnen falsch gelesenen Bit fallen jedoch bei 360 Positionen nur etwa 9,9 % der Fälle in einen ungültigen Code, bei 1000 Positionen nur etwa 1,4 %; ein falsches MSB ergibt genau den Spiegelcode, der stets gültig ist und nie erkannt wird. Wird eine Lesecode-Diagnose benötigt, ist weiterhin eine zusätzliche Prüfung erforderlich.

Praxishinweise

  • Schnittformel: n = ⌈log₂M⌉, s = (2ⁿ − M)/2, behalten i = s…2ⁿ − 1 − s; für 360 Positionen s = 76, für 1000 Positionen s = 12.
  • Die Decodierung braucht nur die Gray-Binär-Wandlung und das Abziehen von s; ein Binärwert außerhalb s…2ⁿ − 1 − s gilt als Lesefehler.
  • Nicht einfach die ersten M Codes nehmen: Bei 360 Positionen unterscheiden sich erster und letzter Code in 5 Bit, an der Nahtstelle kann ein weit von der wahren Position entfernter Code gelesen werden.
  • Für eine ungerade Positionszahl gibt es keinen zyklischen Einschrittcode; stattdessen 2M Positionen erzeugen und durch 2 teilen oder an der Nahtstelle mit der Inkrementalspur synchronisieren.
  • Das Layout Position für Position gegen die Codetabelle der vollen Umdrehung prüfen, nicht nach „fester Streifenbreite je Spur“: Bei 360 Positionen hat b4 an der Nahtstelle ein Segment von nur 8 Positionen Breite.
  • Entfernte Codes fangen nur etwa 10 % oder weniger der Einzelbitfehler ab, MSB-Fehler werden nie erkannt; für die Diagnose sind zusätzliche Maßnahmen nötig.

Fazit

Im reflektierten Gray-Code unterscheiden sich zwei zum Mittelpunkt symmetrische Codes nur im MSB; schneidet man den symmetrischen Mittelteil heraus, erhält man einen zyklischen Gray-Code für jede gerade Positionszahl, die Decodierung braucht nur eine zusätzliche Subtraktion. Eine ungerade Positionszahl lässt sich wegen der Parität nicht als zyklischer Einschrittcode verwirklichen. 360 und 1000 Positionen brauchen 9 bzw. 10 Spuren; im Layout sind besonders die unregelmäßigen Streifenbreiten an der Nahtstelle zu prüfen.


Übersetzung des chinesischen Originalartikels (0303). ENC7 – Hersteller von Encoderscheiben (Anfrage) · Fachartikel · https://enc7.com

© Langfang Jingzheng Optoelectronic Technology Co., Ltd. Alle Rechte vorbehalten. Dieser Artikel wurde mit KI-Unterstützung erstellt.

Have a drawing? Get an engineer's review.

Send your outer diameter, bore, line count or bit count, substrate and readhead wavelength. Our engineers check manufacturability and reply with a quotation and sample lead time.

WhatsApp