cmlPmOverrideMove


SYNOPSYS

VT_I4 cmlPmOverrideMove  ([in] VT_I4 BoardID,  [in] VT_I4 Node, [in] VT_I4 Channel,
[in] VT_R8 NewDistance, [in] VT_I4 IsHardApply, [out] VT_PI4 AppliedState )

DESCRIPTION

  • 이 함수는 cmlPmSxMoveStart() 이송 함수를 통하여 수행되는 상대좌표 In-position 모션에 대하여 상대좌표 값, 즉 목표 거리 값을 오버라이딩 하는 함수입니다.

  • 이 함수의 사용과 호출에 있어, 제공된 ㈜커미조아의 함수 헤더 Visual Basic 에서는 함수의 첨두어 cml 가 붙지 않습니다.

PARAMETER

▶ BoardID : 사용자가 설정한 디바이스(보드) ID.

▶ NodeId : 사용자가 제어하고자 하는 노드 번호.

▶ Channel : 축 번호. 통합 축으로 관리되는 축 번호를 의미하며, 상수 값으로 0 (Zero Based) 이상, 최대 통합 축 개수 - 1 이하의 값을 축 번호로 설정할 수 있습니다.

▶ NewDistance : 새로운 목표 거리 값을 지정합니다. 이 값의 기준 위치는 오버라이드 하고자 하는 대상이 되는 cmlPmSxMoveStart() 작업에서 사용한 기준점과 같습니다. 즉, 새로운 목표 거리는 cmlPmSxMoveStart() 함수를 실행하기 바로 직전의 위치를 기준으로 계산하여야 합니다.

▶ IsHardApply : Override 불가 시점에서도 Override 설정을 강제로 적용.

▶ AppliedState : cmlPmOverrideMove() 함수의 적용 성공/실패 여부를 반환 합니다.

Value

Meaning

0(cmlFALSE)

모션 에러가 발생하였거나 이미 이송이 완료되어 위치 오버라이드가 적용되지 않음

1(cmlTRUE)

위치 오버라이드가 적용됨

RETURN VALUE

Value

Meaning

음수

수행 실패

ERR_NONE

수행 성공

REFERENCE

  • 위치 오버라이드를 수행하려는 시점에 이미 이송이 완료되어 버린 경우에는 위치 오버라이드는 무시되고 반환값을 0으로 반환합니다. 따라서 사용자는 반환값이 0인 경우에는 이미 이송이 완료되어 오버라이드가 적용되지 않은 것으로 인지하여야 하며, 그럼에도 불구하고 목표 좌표를 수정해야 하는 경우에는 cmlPmSxMove() 또는 cmlPmSxMoveTo() 함수를 추가적으로 수행해야 합니다. 이러한 경우에는 오버라이드라는 개념 보다는 추가 이송의 개념을 의미합니다.

EXAMPLE

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
   C/C++
   #include “ComiMLink2_SDK.h”
   #include “ComiMLink2_SDK_Def.h”
   long BoardID = 0;
   //0번 축의 속도를 설정합니다.
   cmlPmCfgSetSpeedPattern(BoardID, 0, ccmlX1, cmlMODE_S, 5000, 30000, 30000 );
   cmlPmSxSetSpeedRatio(BoardID, 0, ccmlX1, ccmlSMODE_KEEP, 100, 100, 100 );
   //0번 축을 구동 시킵니다.
   cmlPmSxMoveStart(BoardID, 0, ccmlX1, 15000 );
   long nAppliedState = 0;
   /*이동 할 거리를 20000으로 오버라이드 합니다.
   IsHardApply 인자를 cmlTRUE로 할 경우에는 모션이
   종료된 상태에서도 강제로 이동시킵니다.*/
   cmlPmOverrideMove(BoardID, 0, ccmlX1, 20000, cmlTRUE, &nAppliedState );