11.1.14. ecmSxMot_MoveStart

Hint

FAST FUNCTION 모드 사용 가능

SYNOPSIS

t_cmdidx  ecmSxMot_MoveStart(_FF)(
  t_i32  NetID,
  t_i32  Axis,
  t_f64  Distance,
  t_i32  *ErrCode
)

DESCRIPTION

  • 하나의 축에 대하여 현재의 위치에서 지정한 거리(상대 위치)만큼 이동을 수행합니다.

  • ecmSxMot_MoveStart(_FF) 는 모션을 시작시킨 후에 바로 반환됩니다.

PARAMETER

  • NetID : Network 번호

  • Axis : 대상 축 번호.

  • Distance : 이동할 거리를 지정합니다.

  • ErrCode : 이 매개 변수를 통하여 현재의 에러 코드를 반환합니다. 단, 이 매개 변수에 NULL을 전달하면 에러 코드를 반환하지 않습니다.

RETURN VALUE

  • CmdIdx를 반환 합니다. CmdIdx는 ComiECAT SDK라이브러리에서 발생시킨 명령들의 일련 번호입니다. 단, 이 값이 0이면 함수의 수행이 실패했음을 의미합니다.

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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
 //본 예제는 ecmSxMot_MoveStart  사용하여 첫번 째 축을 (+)5000 이동하는 예 입니다.
 #include "ComiEcatSdk_Api.h"
 #define AXIS0   0

 t_32 Error_Num =  0;//함수 별  에러 코드 저장 변수

 /***************************************************************
 * OnProgramInitial : 이 함수는 가상의 함수로서 프로그램 초기화 루틴이
 * 적용되는 부분을 의미합니다.      //5~9장 사이 내용 참고
 ***************************************************************/
 void OnProgramInitial()
 {
       TEcDevInfo Device_Info;  //디바이스 정보 저장 할 구조체
       t_i32 Device_Num = 0;

       t_success nIsLoaded = ecDll_Load ();

       if(!ecGn_LoadDevices(&Error_Num)){   //장치 로드
               //로드 실패시 예외  처리
       }

       if(!ecGn_GetDevInfo(Device_Num,&Device_Info, &Error_Num)){
               //디바이스 정보 로드 실패 시 예외 처리
       }

       ecNet_SetAlState(Device_Info.NetIdx, ecAL_STATE_OP, &Error_Num);
  //ALState OP모드로 전환

 ecmSxCtl_SetSvon(Device_Info.NetIdx, AXIS0, &Error_Num);

 } //OnProgramInitial 함수 끝

 /********************************************************************
 * OnMoveSetting : 이 함수는 이동을 위한 준비 단계 함수
 * ecmSxCfg_SetMioProp, ecmSxCfg_SetSpeedPatt, ecmSxCfg_SetJerkRatio
   ecmSxCfg_SetUnitDist,  ecmSxCfg_SetUnitSpeed 를 이용하여 세팅
 * 많은 세팅 관련 함수가 있지만 경우에 따라 사용자가 선택해서 사용
 *********************************************************************/


 void OnMoveSetting ()
{
       ecmSxCfg_SetMioProp(Device_Info.NetIdx, AXIS0, propID, propID, &Error_Num)
       //모션 입출력 신호 환경설정 (관련 함수 설명 참고)

       t_i64 UnitDist = //논리적 거리를 1 을 이동하기 위해 출력되어져하는 펄수 수 지정

       ecmSxCfg_SetUnitDist( Device_Info.NetIdx, AXIS0, UnitDist , &Error_Num);

       t_f64 UnitSpeed = //단위 속도에 대한 펄스 출력 소도 설정 값
       ecmSxCfg_SetUnitSpeed([Device_Info.NetIdx, AXIS0, UnitSpeed, &Error_Num);

       /* t_f64 VIni =  0//초기 속도 설정 및 반환 값
       t_f64 Vend = 0// 종료 속도 설정 및 반환 값
       t_f64 VWork = 40000//작업 속도에 대한 설정 및 반환 값
       t_f64 Acc = 10000//가속도에 대한 설정 및 반환 값
       t_f64 Dec – 10000//감속도에 대한 설정 및 반환값
       Speed 설정 관련 매개 변수 값 */

       ecmSxCfg_SetSpeedPatt(Device_Info.NetIdx, AXIS0, 0, 0, 40000, 10000, 10000, &Error_Num );

       t_f64 JerkTimeRatio = 1.0 //Jeck 값
       ecmSxCfg_SetJerkRatio (Device_Info.NetIdx, AXIS0, JerkTimeRatio, &Error_Num);


 }

 /***************************************************************
 * DO_MOVE : 작업 명령 시에 호출되는 가상의 함수 입니다.
 *cmsSetCfgSetSpeedPattern으로 설정된 첫번째 축(Axis)의 속도모드를
 *그대로 유지 하면서 상대 위치 만큼 +5000 이동
 ***************************************************************/
 void DO_MOVE()
 {
       //cmsSetCfgSetSpeedPattern으로 설정된 첫번째 축(Axis)의 속도모드를
       //그대로 유지 하면서 상대 위치 만큼 +5000 이동

       ecmSxMot_MoveStart(Device_Info.NetIdx, AXIS0, 5000m &Error_Num);    //Move +5000

       if(!ecmSxSt_WaitCompt(Device_Info.NetIdx, AXIS0, &Error_Num)){
       //축이 +5000 만큼 이동 되는 동안 블로킹하는 함수
               // 모션 완료 대기 실패 예외 처리
               return;
       }
 }

REFERENCE

  • ecmSxCtl_SetSvon 함수는 서보드라이버에게 서보온 명령을 하달하고 실제 서보온 상태가 변경되는 것을 확인한 후에 반환됩니다. 서보드라이버가 서보온 명령을 받고 실제로 서보온이 완료되기까지는 일정한 시간이 소요되므로 ecmSxCtl_SetSvon 함수의 수행 시간은 서보드라이버 제품의 특성에 따라서 수백 msec 또는 그 이상의 시간이 걸릴 수 있습니다.

  • 만일 많은 수의 서보드라이버의 서보온 상태를 읽괄적으로 제어하기 위해서 ecmSxCtl_SetSvon 함수를 순차적으로 실행한다면 시간이 많이 소요될 수 있습니다. 이러한 경우에 ecmSxCtl_SetSvon 함수의 Fast Function 모드인 ecmSxCtl_SetSvon _FF 함수를 사용하면 많은 수의 서보온을 일괄적으로 실행할 때에 빠르게 진행시킬 수 있습니다.