CDRFLEx.amovesj
기능
비동기 방식의 movesj모션으로 비동기 처리 방식외에는 movesj()와 동일하게 동작하며, 모션 종료를 기다리지 않고 모션 시작과 동시에 리턴하여 다음 라인을 실행한다. amovesj()에 의한 모션이 종료되기 전에 발생하는 새로운 모션 명령어는 안전상의 이유로 오류를 발생시킨다. 따라서 amovesj()와 이어지는 새로운 모션명령어 사이에는 mwait() 함수을 사용하여 amovesj()에 의한 모션이 종료된 것을 확인한 후 새로운 모션 명령어가 시작되도록 해야한다.
인수
| 인수명 | 자료형 | 기본값 | 설명 |
|---|---|---|---|
fTargetPos | float[MAX_SPLINE_POINT] [6] | - | 최대 100개까지의 경유점 리스트 |
nPosCount | unsigned char | - | 유효 경유점 개수 |
fTargetVel | float/float[6] | - | 속도 |
fTargetAcc | float/float[6] | - | 가속도 |
fTargetTime | float | 0.0 | 도달 시간 [sec] |
eMoveMode | enum.MOVE_MODE | MOVE_MODE_ ABSOLUTE | 상수 및 열거형 정의 참조 |
알아두기
- fTargetTime 을 지정할 경우 fTargetVel, fTargetAcc 를 무시하고 fTargetTime 기준으로 처리됩니다.
- eMoveMode 가 MOVE_MODE_RELATIVE 인 경우 position list의 각 pos는 앞 선 pos에 대한 상대좌표로 정의됩니다. (position list=[q1, q2, ...,q(n-1), q(n)]로 이루어질 때 q1은 시작점 대비 상대각도, q(n)은 q(n-1) 대비 상대좌표)
- 선행모션과 후행모션에 대한 온라인 블랜딩을 지원하지 않습니다.
리턴
| 값 | 설명 |
|---|---|
0 | 오류 |
1 | 성공 |
예제
// jpos의 모든 점을 경유하는 스플라인모션 시작 후 3초 후에 D-Out
float jpos[4][6];
float jvel=10;
float jacc=10;
int jposNum = 4;
jpos[0][0]=0; jpos[0][1]=0; jpos[0][2]=-30; jpos[0][3]=0; jpos[0][4]=-30; jpos[0][5]=0;
jpos[1][0]=90; jpos[1][1]=0; jpos[1][2]=0; jpos[1][3]=0; jpos[1][4]=0; jpos[1][5]=0;
jpos[2][0]=0; jpos[2][1]=0; jpos[2][2]=-30; jpos[2][3]=0; jpos[2][4]=-30; jpos[2][5]=0;
jpos[3][0]=-90; jpos[3][1]=0; jpos[3][2]=0; jpos[3][3]=0; jpos[3][4]=0; jpos[3][5] = 0;
drfl.movesj(jpos, jposNum, jvel, jacc);
Sleep(3000);
drfl.set_digital_output(GPIO_CTRLBOX_DIGITAL_INDEX_1, 1);