PLC/프로그래밍 및 명령어 활용

PLC 간접 주소 지정과 인덱스 레지스터: 원리부터 실무 사례까지

기계의 심장 박사 2026. 3. 22. 00:57
반응형

 

[PLC 주소 지정의 마법사, 인덱스 레지스터] 수백 개의 데이터를 하나하나 코딩하시겠습니까? 아니면 변수 하나로 제어하시겠습니까? PLC 프로그래밍의 효율을 극대화하는 인덱스 레지스터(Z, V)의 원리와 활용법을 파헤쳐 봅니다.

 

PLC에서 똑같은 로직을 반복해서 짜야 할 때, 예를 들어 "1번 창고부터 100번 창고까지 데이터를 순차적으로 검사해라"라는 명령을 내린다면 어떨까요? MOV 명령어를 100번 쓰는 대신, 주소를 '변수'처럼 바꿔가며 쓸 수 있게 해주는 것이 바로 **인덱스 레지스터(Index Register)**입니다. 😊

 

1. 인덱스 레지스터의 개념: '주소의 덧셈' ➕

인덱스 레지스터(보통 미쓰비시 PLC에서는 Z, 다른 기종에서는 V 등으로 표기)는 기존 주소에 숫자를 더해주는 역할을 합니다. 핵심은 "기본 주소 + 인덱스 값 = 최종 주소"라는 공식입니다.

  • 🔹 D0Z0의 의미: 만약 Z0의 값이 5라면, D0Z0은 실제로는 D5(0+5)를 가리킵니다.
  • 🔹 동적 주소 지정: 루프(FOR-NEXT) 문 안에서 Z0의 값을 0부터 1씩 증가시키면 D0, D1, D2... 순서대로 접근할 수 있습니다.
💡 비유로 이해하기
"아파트 1층(D0)에서 Z층만큼 위로 올라가세요"라고 명령하는 것과 같습니다. Z가 10이면 11층(D10)에 도착하는 원리입니다.

 

2. 체험형: 가상 데이터 포인터 실습 🔍

아래 시뮬레이터에서 인덱스 레지스터 Z0의 값을 변경해 보세요. 기준 주소 D100에 Z0의 값이 더해져 어떤 주소의 데이터를 읽어오는지 실시간으로 확인할 수 있습니다.

D100Z0 주소 계산기

Z0 = 0
기준 주소
D100
+
Z0 값
0
=
최종 접근 주소
D100

※ 슬라이더를 움직여 주소의 변화를 확인하세요!

 

3. 현장 실무 적용 사례 📚

✅ 사례 1: 수량 카운팅 및 로깅

1호기부터 10호기까지 생산량을 각각 D100~D109에 저장할 때, INC D100Z0 로직을 사용합니다. Z0에 호기 번호만 넣어주면 단 한 줄의 코드로 모든 호기의 카운터를 제어할 수 있습니다.

✅ 사례 2: 레시피(Recipe) 호출

제품 모델 번호가 1번이면 D1000대의 파라미터를, 2번이면 D2000대의 파라미터를 불러와야 할 때, MOV D1000Z0 D100과 같이 인덱스를 곱셈 연산과 조합하여 대량의 데이터를 스마트하게 관리합니다.

 

4. 인덱스 레지스터 사용 시 주의사항 ⚠️

  • 범위 초과 에러(Address Error): D100Z0을 썼는데 Z0값이 너무 커서 PLC가 가진 메모리 범위를 넘어가면 시스템 에러가 발생합니다. 항상 Z0의 최대값을 제한하는 로직이 필요합니다.
  • 32비트 연산 주의: 인덱스 레지스터 자체는 보통 16비트입니다. 만약 매우 큰 주소 오프셋이 필요하다면 32비트 인덱스 처리 방식을 매뉴얼에서 확인해야 합니다.
  • 인덱스 수식의 가독성: 너무 복잡하게 중첩된 인덱스(D0Z0Z1 등)는 나중에 유지보수하는 사람이 로직을 파악하기 매우 힘듭니다. 적절한 주석은 필수입니다!

 

📝 핵심 요약

  • 인덱스 레지스터는 기준 주소에 값을 더해 최종 주소를 결정한다.
  • 반복되는 로직을 한 줄의 코드로 줄여주는 마법 같은 도구다.
  • FOR-NEXT 루프와 함께 사용할 때 가장 강력한 위력을 발휘한다.
  • 주소 범위를 벗어나지 않도록 데이터 클램프(제한)를 잊지 말자.

인덱스 레지스터를 정복하면 PLC 프로그램의 양은 줄어들고 기능은 강력해집니다. 오늘 실습한 내용을 바탕으로 여러분의 프로그램을 한 단계 더 업그레이드해 보세요! 궁금한 점은 댓글로 남겨주세요. 😊

반응형