CDRFLEx.amovec
기능
비동기 방식의 movec모션으로 블렌딩을 위한 fBlendingRadius 인자를 갖지 않는 점을 제외하고 movec와 동일하게 작동한다. 그러나 해당 명령어는 비동기 방식의 특성상 모션 종료를 기다리지 않고 모션 시작과 동시에 리턴하여 다음 라인을 실행한다.
인수
| 인수명 | 자료형 | 기본값 | 설명 |
|---|---|---|---|
fTargetPos[0] | float[6] | - | 경유 지점 |
fTargetPos[1] | float[6] |
| 목표 위치 |
fTargetVel | float[2] | - | 선속도, 각속도 |
fTargetAcc | float[2] | - | 선가속도, 각가속도 |
fTargetTime | float | 0.f | 도달 시간 [sec] |
eMoveMode | enum.MOVE_MODE | MOVE_MODE_ ABSOLUTE | 상수 및 열거형 정의 참조 |
eMoveReference | enum.MOVE_REFERENCE | MOVE_REFERENCE_BASE | 상수 및 열거형 정의 참조 |
fTargetAngle2 | float | 0.f | angle1 |
fTargetAngle2 | float | 0.f | angle2 |
eBlendingType | enum.BLENDING_SPEED_TYPE | BLENDING_SPEED_TYPE_DUPLICATE | 상수 및 열거형 정의 참조 |
알아두기
- fTargetVel 에 하나의 인자를 입력한 경우(예를들어, fTargetVel ={30, 0}) 입력된 인자는 모션의 선속도에 대응되며, 각속도는 선속도에 비례하여 결정됩니다.
- fTargetAcc 에 하나의 인자를 입력한 경우(예를들어, fTargetAcc ={60, 0}) 입력된 인자는 모션의 선가속도에 대응되며, 각가속도는 선가속도에 비례하여 결정됩니다.
- fTargetTime 지정 시, fTargetVel, fTargetAcc 를 무시하고 fTargetTime 기준으로 처리됩니다.
- eMoveMode 가 MOVE_MODE_RELATIVE 인 경우 fTargetPos[0] 과 fTargetPos[1] 는 각각 앞 선 위치값에 대한 상대좌표로 정의됩니다. (fTargetPos[0]은 시작점 대비 상대좌표, fTargetPos[1]는 fTargetPos[0]대비 상대좌표)
- fTargetAngle1이 0보다 크고, fTargetAngle2이 0인 경우 fTargetAngle1은 Circular path 상의 총 회전각이 적용됩니다.
- fTargetAngle1과 fTargetAngle2가 0보다 큰 경우, fTargetAngle1은 circular path 상에서 정속으로 이동하는 총 회전각을, fTargetAngle2는 가속과 감속을 위한 회전 구간의 회전각을 의미합니다. 이때 총 이동각은 fTargetAngle1+ 2 X fTargetAngle2만큼 circular path 상을 움직입니다.
- 옵션 eBlendingType 와 fTargetVel / fTargetAcc 에 따른 블렌딩 상태의 경로는 movej() 모션 설명을 참조하십시오
리턴
| 값 | 설명 |
|---|---|
0 | 오류 |
1 | 성공 |
예제
// x1의 두 점을 경유하는 원호모션 시작 후 3초 후에 D-Out
float x1[2][6] = { { 559, 434.5, 651.5, 0, 180, 0 }, { 559, 434.5, 251.5, 0, 180, 0 } };
float tvel = { 50, 50 }; // 태스크 속도를 50(mm/sec), 50(deg/sec)로 설정
float tacc = { 100, 100 }; // 태스크 가속도를 100(mm/sec2), 100(deg/sec2)로 설정
drfl.amovec(x1, tvel, tacc);
Sleep(3000);
drfl.set_digital_output(GPIO_CTRLBOX_DIGITAL_INDEX_1, 1);