배열형 명령어 사용 방법
펑션 블록의 입력 변수와 출력 변수는 변수의 디바이스 어드레스 설정과는 별개로 연속적인 공간을 사용합니다.
위 그림의 펑션 블록의 경우, 입력 변수 IN1 / IN2 / IN3은 각각 D10 / M100 / X30의 디바이스 설정으로 입력 값을 전달 받습니다. 출력 변수 OUT1 / OUT2 / OUT3은 각각 D100 / D101 / D102으로 출력 값을 설정합니다.
이 펑션 블록에서 아래 그림과 같이 BMOV(블록 데이터 전송)을 사용할 경우,
결과는 아래와 같습니다. 일반적으로 의도하는 IN1 변수의 디바이스 D10 / D11 /D12 의 블록 데이터 전송이 아닌 변수 순번에 따른 블록 데이터 전송으로 처리됩니다.
<해결방법>
이 문제의 해결 방법은 인덱스 레지스터를 사용하는 것으로 다음과 같습니다.
입력으로 D10이 아닌 배열형 디바이스의 시작주소인 10을 입력합니다.
펑션 블록 프로그램에서 입력 받은 10을 인덱스 레지스터인 R0에 대입합니다.
대입 후 D0R0와 같이 인덱스 레지스터로 BMOV 명령을 실행합니다.
처리 결과는 다음과 같습니다. 입력 변수 "IN1"의 주소값으로 명령 처리가 수행됩니다.
실제 수행 결과는 아래와 같습니다.