코드 디스크 레퍼런스 설계

2의 거듭제곱이 아닌 분해능의 앱솔루트 디스크: 360위치와 1000위치용 순환 그레이 코드

2의 거듭제곱이 아닌 분해능의 앱솔루트 디스크: 360위치와 1000위치용 순환 그레이 코드

마지막 코드와 첫 코드 사이에도 한 비트만 바뀌는 360 또는 1000 절대 위치를 얻으려면, 반사 그레이 코드의 대칭 중앙 구간을 취하고 양 끝에서 (2ⁿ − M)/2개 코드를 제거한다. 이 글은 대칭성, 절단식과 디코딩식을 유도하고, 홀수 위치가 불가능한 이유를 설명하며, 360위치와 1000위치의 트랙 수, 요소 폭, 디코딩 표, 배치 점검 사항을 제시한다.

분할 테이블, 밸브 액추에이터, 십진 표시 계기는 한 회전에 360(위치당 1°) 또는 1000개의 절대 위치를 요구하는 경우가 많다. 그레이 코드의 비트 수는 한 회전에 2ⁿ개 코드를 주는데, 360도 1000도 2의 거듭제곱이 아니다. 가장 직접적인 방법은 9비트 그레이 코드의 앞쪽 360개 코드를 쓰는 것이지만, 첫 코드 G(0) = 000000000과 마지막 코드 G(359) = 111010100은 5비트가 다르다. 이음매를 지날 때 비트가 조금 다른 순서로 바뀌면 실제 위치와 동떨어진 중간 코드를 읽을 수 있다. 이 글은 첫 코드와 마지막 코드도 한 비트만 다른 구성, 디코딩식, 배치 시 주의점을 제시한다.

9비트 반사 그레이 코드의 512개 코드. 양 끝에서 76개씩 제거하고 인덱스 76…435를 남긴다. 디스크가 359 → 0 이음매를 지날 때 MSB b8만 바뀌며, 빨강은 각 걸음에서 바뀌는 비트이다.
그림 1 9비트 반사 그레이 코드의 512개 코드. 양 끝에서 76개씩 제거하고 인덱스 76…435를 남긴다. 디스크가 359 → 0 이음매를 지날 때 MSB b8만 바뀌며, 빨강은 각 걸음에서 바뀌는 비트이다.

반사 그레이 코드의 대칭성

n비트 반사 그레이 코드는 G(i) = i XOR (i » 1), i = 0…2ⁿ − 1이다. i를 거울상 i′ = 2ⁿ − 1 − i, 즉 i의 n비트를 비트별로 반전한 값으로 바꾸면

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

두 식을 XOR하면

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

즉 중점에 대해 대칭인 두 코드는 MSB만 다르다. “반사”라는 말이 여기서 나왔다. 후반부의 하위 n − 1비트는 전반부의 거울상이고 MSB는 0에서 1로 바뀐다.

절단 조건과 디코딩

M위치 순환 코드를 얻으려면 중앙 인덱스 i = s … 2ⁿ − 1 − s를 남기고 양 끝에서 각각

s = (2ⁿ − M) / 2

개 코드를 제거한다. 구간의 첫 코드 G(s)와 마지막 코드 G(2ⁿ − 1 − s)는 정확히 거울쌍이어서 MSB만 다르므로, 마지막에서 처음으로 닫힐 때도 한 비트만 바뀐다. 구간 안에서는 원래 걸음마다 한 비트만 바뀐다. 비트 수는 n = ⌈log₂M⌉이고, s가 정수여야 하므로 M은 짝수여야 한다.

디코딩은 두 단계다. 먼저 그레이를 이진으로 변환하고 b(n−1) = g(n−1), b(k) = b(k+1) XOR g(k), 그다음 오프셋을 빼서 p = B − s로 한다. B < s 또는 B > 2ⁿ − 1 − s이면 제거된 코드를 읽은 것이므로 바로 읽기 오류로 판정할 수 있다. 기계 원점을 다른 곳에 두려면 M을 법으로 하는 상수를 더한다.

대칭 절단만이 유일한 방법은 아니다. 9비트 코드를 모든 시작점에서 탐색하면, 첫 코드와 마지막 코드가 한 비트만 다른 길이 360의 연속 구간이 4개 있고 시작점은 76, 204, 332, 460이다. 뒤의 세 개는 511 → 0 이음매를 넘으므로 디코딩에 모듈로 연산이 하나 더 필요하다. 대칭 구간은 이진값이 연속이어서 뺄셈 한 번으로 디코딩되므로 가장 편하다.

홀수 위치가 불가능한 이유

n비트 코드를 n차원 입방체의 꼭짓점으로 보면, “한 비트만 바꾸기”는 모서리를 따라 한 걸음 가는 것이고, 걸음마다 코드 워드에서 1인 비트 개수의 홀짝성이 뒤집힌다. 한 바퀴를 돌아 출발점으로 돌아오면 홀짝성이 원래대로여야 하므로 걸음 수, 즉 위치 수 M은 짝수여야 한다. 이 결론은 구성 방법과 무관하다. 걸음마다 한 비트만 바뀌는 순환 코드는 어떤 것도 홀수 위치를 가질 수 없다.

홀수 위치(예: 125)가 필요할 때는 두 가지 길이 있다. 하나는 2M위치 순환 코드를 만들고 출력에서 2로 나누는 것(125위치라면 s = 3인 8비트 코드의 250구간), 다른 하나는 이음매에서 두 비트가 동시에 바뀌는 것을 허용하고 인크리멘탈 트랙과의 동기로 읽기를 보장하는 것인데, 이 경우 이음매의 읽기 공차를 따로 분석해야 한다.

360위치와 1000위치의 파라미터

항목360위치1000위치
트랙 수 n910
오프셋 s7612
남기는 인덱스76…43512…1011
위치당 각도1°0.36° (21.6′)
LSB 반경 예15 mm18 mm
요소 호 길이 2πr/M261.8 μm113.1 μm
가장 가는 바 폭(요소 2개)523.6 μm226.2 μm
첫 코드 / 마지막 코드001101010 / 1011010100000001010 / 1000001010
무효 코드 비율152/512 = 29.7%24/1024 = 2.3%

360위치 디코딩 표(발췌):

위치 p인덱스 i코드 워드 b8…b0이진 BB − 76
076001101010760
177001101011771
179255010000000255179
180256110000000256180
359435101101010435359

트랙 패턴은 그림 2에 있다. 절단 후 각 트랙의 전이 수는 그만큼 줄어든다. 360위치에서 b0는 180번, b1은 90번이며, b8은 여전히 반 바퀴 밝고 나머지 반 바퀴 어둡다.

360위치 절단 그레이 코드 9개 트랙의 전개도. 왼쪽은 한 바퀴 전체, 오른쪽은 이음매 부근 확대. 이음매에서는 b8만 바뀌고, 이음매를 가로지르는 b4의 투명 구간은 8위치 폭에 불과하다.
그림 2 360위치 절단 그레이 코드 9개 트랙의 전개도. 왼쪽은 한 바퀴 전체, 오른쪽은 이음매 부근 확대. 이음매에서는 b8만 바뀌고, 이음매를 가로지르는 b4의 투명 구간은 8위치 폭에 불과하다.

배치에서 주의할 두 가지

이음매의 불규칙한 바 폭. 절단 후 각 트랙에서 이음매를 가로지르는 구간은 구간 시작부와 끝부분에서 온 두 조각으로 이루어지므로, 그 폭이 더 이상 해당 트랙의 정규값이 아니다. 360위치에서 b4의 정규 바 폭은 32위치이지만 이음매를 가로지르는 투명 구간은 8위치뿐이고, b6와 b7에도 232위치와 104위치의 불규칙 구간이 있다. 최소 선폭은 여전히 b0의 요소 2개로 정해지므로 제조성에는 영향이 없지만, 배치 검증과 AOI 규칙을 “트랙별 고정 바 폭”으로 쓸 수는 없고 한 바퀴 전체에 걸쳐 코드 표와 위치별로 대조해야 한다.

무효 코드로는 오류 검출이 제한적. 제거된 코드는 정상 읽기에서 나타나지 않으므로 이를 읽으면 오류로 판정할 수 있다. 그러나 비트 하나가 틀린 경우 무효 코드에 빠지는 비율은 360위치에서 약 9.9%, 1000위치에서 약 1.4%에 불과하다. MSB가 틀리면 코드가 거울 코드로 바뀌는데, 이는 항상 유효하므로 결코 검출되지 않는다. 읽은 코드의 진단이 필요하면 별도의 검사가 있어야 한다.

엔지니어링 요점

  • 절단식: n = ⌈log₂M⌉, s = (2ⁿ − M)/2, i = s…2ⁿ − 1 − s를 남긴다. 360위치는 s = 76, 1000위치는 s = 12이다.
  • 디코딩은 그레이→이진 변환 후 s를 빼기만 하면 된다. 이진값이 s…2ⁿ − 1 − s 밖이면 읽기 오류로 판정한다.
  • 앞쪽 M개 코드를 그대로 쓰지 않는다. 360위치에서는 처음과 끝이 5비트 다르고, 이음매에서 실제 위치와 동떨어진 코드를 읽을 수 있다.
  • 홀수 위치에는 한 걸음 순환 코드가 없다. 2M위치로 만들어 2로 나누거나, 이음매에서 인크리멘탈 트랙과 동기시킨다.
  • 배치는 “트랙별 고정 바 폭”이 아니라 한 바퀴 코드 표와 위치별로 대조해 검증한다. 360위치에서 b4는 이음매에 8위치 폭 구간밖에 없다.
  • 제거된 코드는 단일 비트 오류의 약 10% 이하만 잡아내고 MSB 오류는 전혀 검출하지 못하므로, 진단에는 추가 조치가 필요하다.

정리

반사 그레이 코드에서 중점에 대해 대칭인 두 코드는 MSB만 다르다. 대칭 중앙 구간을 취하면 임의의 짝수 위치에 대한 순환 그레이 코드를 얻고, 디코딩은 뺄셈 한 번만 추가하면 된다. 홀수 위치는 패리티 때문에 한 걸음 순환 코드로 구현할 수 없다. 360위치와 1000위치는 각각 9개와 10개 트랙이 필요하며, 이음매의 불규칙한 바 폭은 배치에서 따로 점검해야 한다.


중국어 원문 기사 번역 (0303). ENC7 코드 디스크 제조사 (문의) · 기술 자료 · https://enc7.com

© Langfang Jingzheng Optoelectronic Technology Co., Ltd. 무단 전재를 금합니다. 이 글은 AI의 도움을 받아 작성되었습니다.

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