11.2.8. ecmSxCfg_AutoTorq_SetMultiVal


SYNOPSIS

t_success  ecmSxCfg_AutoTorq_SetMultiVal (
  t_i32  NetID,
  t_i32  Axis,
  t_i32  ValIndex,
  t_i32  TorqVal,
  t_i32  Duration,
  t_i32  *ErrCode
)

DESCRIPTION

  • 이 함수는 자동토크출력 기능에서의 토크값 설정 모드(Torque Value Mode)가 ‘Multi-Value Mode’로 설정된 경우에만 사용되는 함수로서, Multi-Value 리스트의 아이템 각각의 토크 값과 출력 시간을 정의하는 함수입니다.

PARAMETER

  • NetID : Network 번호

  • Axis : 대상 축 번호.

  • ValIndex : 설정하고자 하는 값의 Multi-Value 리스트내에서의 순서이다. 이 값은 0 부터 설정될 수 있으며, ecmSxCfg_AutoTorq_SetValMode() 함수의 NumMultiVals 매개변수를 통해서 정의한 값보다 작아야 합니다.

  • Torqval : 출력 토크값을 설정합니다. 토크값은 0.1% 단위의 값으로 설정합니다. 다시 말해서 이 값을 1로 하면 모터 정격의0.1%의 토크를 의미하며, 10은 모터 정격의1%의 토크를 의미합니다.

  • Duration : 해당 토크값을 출력한는 지속 시간을 msec 단위로 설정합니다.

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

RETURN VALUE

  • 이 리턴값은 불 형(Boolean Type) 을 가지고 있습니다.

Value

Meaning

0

함수 수행에 실패하였음을 의미합니다.

1

함수 수행에 성공하였음을 의미합니다.

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
C/C++
  // Single-Value 모드로 설정하여 자동토크출력기능을 사용하는 예 제입니다.
  #include "ComiEcatSdk_Api.h"

  #define AXIS                 0

  #define NUM_TORQ_VALS       5
  t_i32 nErrCode;
  t_i32 nTroqList[NUM_TORQ_VALS] = {100, 90, 80, 70, 50};
  t_i32 nTimeList[NUM_TORQ_VALS] = {10, 10, 10, 10, 1000};
  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)){
          //디바이스 정보 로드 실패 시 예외 처리
      }
      //ALState OP모드로 전환
      ecNet_SetAlState(Device_Info.NetIdx,  ecAL_STATE_OP, &Error_Num);

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

  } //OnProgramInitial 함수 끝

  /********************************************************************
  * OnMuiltTorq: 이 함수는 OnMuiltTorq 사용 입니다
  * 많은 세팅 관련 함수가 있지만 경우에 따라 사용자가 선택해서 사용
  *********************************************************************/
  void OnMuiltTorq ()
  {

  // 1) 토크값설정모드(Torque Value Mode) 설정
      if(!ecmSxCfg_AutoTorq_SetValMode (Device_Info.NetIdx , AXIS, ecmATRQ_VAL_MULTI, NUM_TORQ_VALS, &Error_Num))
          {
          //실패 시 에러처리
      }
      // 2) Mutliple 출력 토크값 설정
      for(int i=0; i<NUM_MULT_TORQ_VALS; i++) {
          ecmSxCfg_AutoTorq_SetMultiVal(Device_Info.NetIdx , AXIS, i, nTroqList[i], nTimeList[i], &Error_Num);
      }

      // 3) 자동토크출력 기능 활성화
      if(!ecmSxCfg_AutoTorq_SetEnable (Device_Info.NetIdx , AXIS, true, true, &Error_Num))
          {
          //실패 시 예외처리
      }

      // 4) PTP 이송을 수행한다. => 이 이송이 완료되면 자동으로 토크 출력됨.
      if(!ecmSxMot_Move (Device_Info.NetIdx , AXIS, 100000, &Error_Num))
      {
          //실패 시 예외처리
      }

      // 5) 자동토크출력 기능이 완료될 때까지 기다린다.
      // 참고로, 토크모드로 전환되면 ecmSxSt_GetMotState() 함수는 ecmMST_IN_AUTO_TORQ_MDOE(15) 값을 반환한다.
      if(!ecmSxSt_WaitCompt (Device_Info.NetIdx , AXIS, &Error_Num))
          {
          //실패 시 예외처리
      }
  // 6) 앞서 ecmSxCfg_AutoTorq_SetValue() 함수를 실행할 때 IsOneShotEnable 매개변수의 값을 true로 하였으므로 여기에서 비활성화하지 않아도 자동으로 비활성화된다. 그렇지 않으면 여기에서 ecmSxCfg_AutoTorq_SetValue() 함수를 이용해서 비활성화할 필요 있다. //
  }