• 목록
  • 아래로
  • 위로
  • 1
  • 곰부리
  • 조회 수 9609
PLC 인덱스 레지스터리는 2가지의 용도로 많이 사용합니다.
D와 같이 일반 워드로 생각하고 임시적으로 이용할때 쓰는것과
C언어의 포인터개념가 비슷한 주소를 어떤 규칙을 가지고 참조할때 많이 사용하고 있습니다.
 
보편적으로 많이 사용하는 것은 2번재인 포인터 개념입니다.
 
Q시리즈부터 16개(Z0~Z15)로 수량이 많이 늘어나 좋아졌지요..
그러면, 2번째 어떤 개념이랴 하면은,
 
보통 저희가 디바이스를 참조할때 M2,D100,T4,X5   이런식으로 주소(디바이스번호)를 고정으로 사용하고 있습니다.
그런데, 만약 A조건일때는 D100,B조건일때는 D102...... 이런 식으로 인식할경우가 많습니다.
그래서, 나온것이 Z를 이용하는 것으로 어떤 Z에 원하는 값을 넣고나서
" D100Z0 " 이런식으로 작성을 하게되면 Z0에 따라 실행할때 참조하는 디바이스 번호가 자동으로
변경되는 것입니다.
        X00
|----| |--------------[ mov D50 D100Z0 ]
 
위의 명령에서 Z0에 따라 D50이 복사되는 위치가 변경이 되는 것입니다.
예;
  Z0 = "0"    ==>  D50의 값이 D100 에 복사된다.
  Z0 = "1"    ==>  D50의 값이 D101 에 복사된다.
  Z0 = "2"    ==>  D50의 값이 D102 에 복사된다.
  Z0 = "3"    ==>  D50의 값이 D103 에 복사된다.
  Z0 = "4"    ==>  D50의 값이 D104 에 복사된다.
                   |
                   |
                   |
  Z0 = "1000"    ==>  D50의 값이 D1000에 복사된다.
 
현재 모든 디바이스 형식에 사용할수 있는데, 딴 한가지는 안되고 있습니다.
Q부터 사용가능하게된 워드의 비트번호를 이용하고 일반 릴레이식으로 사용하는 곳은
Z가 지원하지 않고 있습니다.(흑흑, 이게 되면 스텝양이 많이 줄수 있었는데)
 
D100Z0 (O)   , D100Z0.C  (X) ,   D100.CZ0 (X)
대신 전용명령을 이용한 Test나 Bset, Brst를 기존처럼 이용해야 합니다.
 
어느 정도 설명이 되었는가요? 많은 도움이 되었기를








----------------------------------------------추가




move d4010 z1
inc d8000z1
 
일단 쉽게 설명 드리자면 모델이 10개 있다고 가정합시다
모델1번은 d8000 번에 inc하고
모델2번은 d8001번에 "
모델3번은 d8002  "
이런식으로 10번째는 모델10번은 d8010이 inc를 하고싶을때
 
d4010에 모델 번호를 넣어줍니다
위프로그램 앞에 다른 프로그램이 있겟죠
|m1|----------------------------[mov k1 d4010]
|m2|----------------------------[mov k2 d4010]
이런식으로 d4010에 원하는 숫자를 넣어줍니다
 
그리고 나서 d8000z1이라고 있는데 이건 d8000 + z1이라는 말입니다
즉 d4010에 1을 move 해놓았을경우 d8000z1은 d8001번이 되는것입니다
2를 넣으면 8002가 되겠죠..
 
이런식으로 프로그램 양을 줄이고자 할때 주로 사용합니다
모델이 몇개 안될때는 구지 인덱스 프로그램을 쓰지 않아도 되지만
만약 100개정도 된다면 인덱스의 효과를 충분히 볼수있겟죠..
 
설명은 모델기준으로 하였지만 다른 기타 이유로도 인덱스 프로그램을 많이 적용합니다..
열심히하자님 포함 1명이 추천

추천인 1

작성자
곰부리 10 Lv. (69%) 114516/121000P

자료는 포인트로 구매하세요

문의 공일공-육칠사사-팔이공칠

공유

facebooktwitterpinterestbandkakao story
퍼머링크

댓글 1

권한이 없습니다.