14.1.6. ecmHomeMot_MoveStart


SYNOPSIS

t_cmdidx  ecmHomeMot_MoveStart(_FF)(
  t_i32  NetID,
  t_i32  Axis,
  t_i32  Direction,
  t_i32  *ErrCode
)

Hint

Fast Function(_FF) 사용 가능

DESCRIPTION

  • 이 함수는 원점복귀 작업을 수행합니다.

  • ecmHomeMot_MoveStart, ecmHomeMot_MoveStart_FF 함수는 모션을 시작 시킨 후 바로 반환됩니다.

PARAMETER

  • NetID : Network 번호

  • Axis : 대상 축 번호

  • Direction : 원점 복귀 모션을 수행할 방향을 지정합니다.

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

RETURN VALUE

  • 이 리턴값은 함수의 cmdidx가 반환됩니다.

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
 //본 예제는 ecmHomeMot_MoveStart() 함수를 이용하여  x,y축 의 원점복귀를 수행하는 함수입니다. 단 원점복귀에 대한 환경설정은 이미 이루어진 것으로 가정합니다.

 #include "ComiEcatSdk_Api.h"
 #define AXISX   0
 #define AXISY   1

 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, AXISX, &Error_Num);
 ecmSxCtl_SetSvon(Device_Info.NetIdx, AXISY, &Error_Num);

 } //OnProgramInitial 함수 끝

 /***************************************************************
 * OnHomeSetSpeed : 이 함수는 속도설정의 변경이 필요할 때
 * 호출되는 가상의 함수 입니다. 이때 m_fVwork,  m_fAcc,  m_fDec, m_sPecVel변수를
 * 통하여 속도, 가속도 , 감속도, 홈리턴 속도 값이 적절하게 전달된다고 가정합니다.
 ***************************************************************/
 void OnHomeSetSpeed()
 {
       ecmHomeCfg_SetMode(Device_Info.NetIdx, AXISX, 7,&Error_Num);
       //X축의 홈복귀 모드를 설정합니다.  (함수 설명에 Rererence 참고)
        ecmHomeCfg_SetMode(Device_Info.NetIdx, AXISY, 7,&Error_Num);
       //Y축의 홈복귀 모드를 설정합니다.   (함수 설명에 Rererence 참고)
       ecmHomeCfg_SetOffset(Device_Info.NetIdx, AXISX, 1000, &Error_Num);
       //X축의 홈복귀 추가 이동 거리를 설정합니다.
       ecmHomeCfg_SetOffset(Device_Info.NetIdx, AXISY, 1000, &Error_Num);
       //Y축의 홈복귀 추가 이동 거리를 설정합니다.
       ecmHomeCfg_SetSpeedPatt(Device_Info.NetIdx, AXISX, ecmSMODE_SCURVE, m_fVworkx, m_fAccx, m_fDecx,  m_sPecVel , &Error_Num );
       //X축 가감속을 수행 모드로 설정 하고 속도, 가속도, 감속도 설정
       ecmHomeCfg_SetSpeedPatt(Device_Info.NetIdx, AXISY, ecmSMODE_SCURVE, m_fVworky m_fAccy, m_fDecy, m_sPecVel, &Error_Num );
       //Y축 가감속을 수행 모드로 설정 하고 속도, 가속도, 감속도 설정


 }

 /***************************************************************
 * OnHomeReturn : 이 함수는 가상의 함수로서  원점복귀를 실행합니다.
 ****************************************************************/
 void OnHomeRetrun()
 {
       t_i32 Direction = ecmDIR_P;   // +방향으로 원점 복귀 실행

       ecmHomeMot_MoveStart(Device_Info.NetIdx, AXISX, Direction, &Error_Num) ;
       // X축 원점복귀 시작
       ecmHomeMot_MoveStart(Device_Info.NetIdx, AXISY, Direction, &Error_Num) ;
       // Y축 원점복귀 시작
       if(!ecmHomeSt_WaitCompt (Device_Info.NetIdx, AXISX, &Error_Num)){
       //X축이 원점 복귀 하는 동안 블로킹하는 함수
               // 복귀 완료 대기 실패 예외 처리
               return;
       }

       if(!ecmHomeSt_WaitCompt (Device_Info.NetIdx, AXISY, &Error_Num)){
       //Y축이 원점 복귀 하는동안 블로킹하는 함수
               // 복귀 완료 대기 실패 예외 처리
               return;
       }


 }