cemOverrideMove¶
SYNOPSIS¶
VT_I4 cemOverrideMove(
VT_I4 Axis,
VT_R8 NewDistance,
VT_I4 IsHardApply,
VT_PI4 AppliedState
)
DESCRIPTION¶
cemSxMoveStart 이송 함수를 통하여 수행되는 상대 좌표 In-position 모션에 대하여 목표 상대 좌표 값, 즉 목표 거리 값을 오버라이딩 합니다.
PARAMETER¶
Axis : 축 번호. 통합 축으로 관리되는 축 번호를 의미하며, 상수 값으로 0 (Zero Based) 이상,. (최대 통합 축 개수 - 1) 이하의 값을 축 번호로 설정할 수 있습니다.
NewDistance : : 새로운 목표 거리 값을 지정합니다. 이 값의 기준 위치는 오버라이드 하고자 하는. 대상이 되는 cemSxMoveStart 이송 작업에서 사용한 기준점과 같습니다. 즉, 새로운 목표 거리는. cemSxMoveStart 함수를 실행하기 바로 직전의 위치를 기준으로 계산하여야 합니다.
IsHardApply : 위치 오버라이드 불가 시점에서도 오버라이드 설정을 강제로 적용합니다.
AppliedState : cemOverrideMove() 함수의 적용 성공/실패 여부를 반환 합니다.
Value |
Meaning |
---|---|
0 (CE_FALSE) |
모션 에러가 발생하였거나 이미 이송이 완료되어 위치 오버라이드가 적용되지 않음. |
1 (CE_TRUE) |
위치 오버라이드가 적용됨. |
RETURN VALUE¶
Value |
Meaning |
---|---|
음수 |
수행 실패 |
0 (ceERR_NONE) |
수행 성공 |
Note
위치 오버라이드를 수행하려는 시점에 이미 이송이 완료되어 버린 경우에는 위치 오버라이드는
무시되고 AppliedState 매개변수는 ‘0’ 을 반환합니다. 따라서 사용자는 AppliedState 매개변수의 반환값이 ‘0’인 경우에는 이미 이송이 완료되어 오버라이드가 적용되지 않은 것으로 인지하여야 하며, 그럼에도 불구하고 목표 좌표를 수정해야 하는 경우에는 cemSxMove 또는 cemSxMoveTo 함수를 추가적으로 수행해야 합니다. 이러한 경우에는 오버라이드라는 개념 보다는 추가 이송의 개념을 의미합니다.
Example¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | /* 다음 예제는 모션이 정지해 있는 경우 단축 이송 명령을 수행하고,
이송 중인 경우에는 목표 위치를 오버라이드 합니다. */
/* ‘nIsAbsMode’ 는 상대 좌표 이송 / 절대 좌표 이송 설정 변수라 가정합니다.
0 (CE_FALSE) : 상대 좌표 이송 / 1 (CE_TRUE) : 절대 좌표 이송 */
void OnOverrideMove ()
{
long nAppliedState; // 위치 오버라이드 수행 여부 정보
long nIsStopped; // 이송 상태 확인
cemSxIsDone ( cemX1, &nIsStopped );
// 0 (CE_FALSE ) : 모션 이송 중
// 1 (CE_TRUE ) : 모션 정지 상태
if ( nIsStopped == CE_TRUE ) // 정지 상태 이므로 단축 이송을 수행합니다.
{
if ( nIsAbsMode == CE_TRUE )
{
cemSxMoveToStart ( cemX1, 10000 );
}
else
{
cemSxMoveStart ( cemX1, 10000 );
}
}
else // 이송중이므로 목표 위치를 오버라이드 합니다.
{
/* IsHardApply 인자를 CE_TRUE 로 할 경우에는 모션이 종료된 상태에서도 강제로 이송시킵니다. */
if ( nIsAbsMode == CE_TRUE )
{
cemOverrideMoveTo ( cemX1, 20000, CE_TRUE, &nAppliedState );
}
else
{
cemOverrideMove ( cemX1, 20000, CE_TRUE, &nAppliedState );
}
}
}
|