QNA 게시판입니다.
궁금한점 있으시면 문의하세요. 답변은 댓글로 되어집니다.
내용에 그림을 삽입을 원할 경우, 파일첨부를 한 뒤 "본문 삽입"을 하시면 그림을 삽입 할 수 있습니다.
안녕하세요, 문의 감사드립니다.
Position Compare(EQU) 기능은 CPU의 연산 능력과 상관없는 Servo IC의 기능입니다.
이 기능은 ASIC 된 칩의 Hardware Logic에 의해서 수행되므로,
CPU의 부하와는 전혀 상관없이 매우 빨리 동작합니다. ( 수 nsec 이내 )
따라서, 아래 작성하신 PLC가 동작한다고 해서 EQU가 발생하지 않거나 멈추는 일은 생길 수 없습니다.
다만, 한 가지 아래 내용 중에 이상한 부분은
"M901"의 경우에는 Servo IC의 Hardware Count를 읽는 Read Only Register(읽기 전용)인데,
이 부분에 설정을 하고 있는 곳이 있습니다.
혹시, 이러한 부분에서 기능상 잘못 이해하고 계신 것은 아닌지요?
사실 제대로 고친다면 다음과 같이 하실 수 있습니다.
P901 = M901
M908 = P901 + 1
M909 = P901 - 1
M910 = 4 ; 20 um
위와 같이 설정하셔야 맞습니다.
내용 확인하신 후에 다시 연락 주시면 감사하겠습니다.
오늘도 행복한 하루 되세요.
>
>안녕하세요.
>
>제가 ACC-21E2, 엔코더 20um와 ACC-51E를 사용하여 20um 마다 트리거를 발생할려고 실험 중입니다.
>
>자주묻는 질문 중 Position Compare(EQU) 기능 설명자료를 보고 프로그램 작성을 했습니다.
>
>I122 = 20
>M908 = 233
>M909 = 231
>M901 = 232
>M910 = 4
>
>위처럼 설정을 하고 프로그램을 실행했을 경우 M908과 M909가 어느정도 증가하다가 정지합니다.
>EQU 출력 또한 정지된 상태로 됩니다.
>
>혹시 엔코더 분해능이 부족하여 아래 while문을 처리하는 동안 실제 H/W cts (M901)가 M908~M909을 벗어나
>EQU가 동작이 멈추는 건가요???? 아니면 EQU가 동작하는동안 벗어나서 그런건가요??
>
>해결 방안 좀 알려주세요....
>
>
>
>* EQU 동작시 실행되는 프로그램
>-------------------------------------------------------
>; 여기서 부터는 EQU 출력 개수를 카운트 합니다.
>While (P102 < P111)
> P116 = M916
> P1200 = 7
> If (P116 != P117) ; EQU 출력 상태가 '0'->'1' 으로 바뀔 때마다 카운트 합니다.
> AND ( P116 = 1 )
> P102 = P102+1
> EndIf
> P117 = P116
>EndWhile
>------------------------------------------------------
>
Position Compare(EQU) 기능은 CPU의 연산 능력과 상관없는 Servo IC의 기능입니다.
이 기능은 ASIC 된 칩의 Hardware Logic에 의해서 수행되므로,
CPU의 부하와는 전혀 상관없이 매우 빨리 동작합니다. ( 수 nsec 이내 )
따라서, 아래 작성하신 PLC가 동작한다고 해서 EQU가 발생하지 않거나 멈추는 일은 생길 수 없습니다.
다만, 한 가지 아래 내용 중에 이상한 부분은
"M901"의 경우에는 Servo IC의 Hardware Count를 읽는 Read Only Register(읽기 전용)인데,
이 부분에 설정을 하고 있는 곳이 있습니다.
혹시, 이러한 부분에서 기능상 잘못 이해하고 계신 것은 아닌지요?
사실 제대로 고친다면 다음과 같이 하실 수 있습니다.
P901 = M901
M908 = P901 + 1
M909 = P901 - 1
M910 = 4 ; 20 um
위와 같이 설정하셔야 맞습니다.
내용 확인하신 후에 다시 연락 주시면 감사하겠습니다.
오늘도 행복한 하루 되세요.
>
>안녕하세요.
>
>제가 ACC-21E2, 엔코더 20um와 ACC-51E를 사용하여 20um 마다 트리거를 발생할려고 실험 중입니다.
>
>자주묻는 질문 중 Position Compare(EQU) 기능 설명자료를 보고 프로그램 작성을 했습니다.
>
>I122 = 20
>M908 = 233
>M909 = 231
>M901 = 232
>M910 = 4
>
>위처럼 설정을 하고 프로그램을 실행했을 경우 M908과 M909가 어느정도 증가하다가 정지합니다.
>EQU 출력 또한 정지된 상태로 됩니다.
>
>혹시 엔코더 분해능이 부족하여 아래 while문을 처리하는 동안 실제 H/W cts (M901)가 M908~M909을 벗어나
>EQU가 동작이 멈추는 건가요???? 아니면 EQU가 동작하는동안 벗어나서 그런건가요??
>
>해결 방안 좀 알려주세요....
>
>
>
>* EQU 동작시 실행되는 프로그램
>-------------------------------------------------------
>; 여기서 부터는 EQU 출력 개수를 카운트 합니다.
>While (P102 < P111)
> P116 = M916
> P1200 = 7
> If (P116 != P117) ; EQU 출력 상태가 '0'->'1' 으로 바뀔 때마다 카운트 합니다.
> AND ( P116 = 1 )
> P102 = P102+1
> EndIf
> P117 = P116
>EndWhile
>------------------------------------------------------
>