5.1.6. secSlv_WriteCoeSdo_A


Warning

이 함수는 해당 슬레이브가 PreOP 이상의 AL-STATE 에 있을 때에만 사용 가능합니다. 슬레이브가 INITIAL 상태에 있을 때 이 함수를 사용하면 읽기 실패합니다

SYNOPSIS

t_i32 ecSlv_WriteCoeSdo_A (
  [in] t_i32 NetID,
  [in] t_ui16 SlaveIdx,
  [in] t_i32 Index,
  [in] t_i32 SubIndex,
  [in] t_i32 IsComptAccess,
  [in] t_i32 DataSize,
  [in] void* pBuf,
  [out] t_i32 *ErrCode)

DESCRIPTION

  • 지정한 슬레이브에서 지정된 SDO(Service Data Object) 오브젝트를 설정하는 함수입니다.

PARAMETER

  • NetID : 사용자가 사용 할 Network 번호

  • SlaveIndex : 슬레이브 번호 (1 Base)

  • Index : 오브젝트 인덱스(Object Index)

  • SubIndex : 오브젝트 서브인덱스(Sub-index)

  • IsComptAccess: 오브젝트가 배열이나 구조체로 이루어진 경우 해당 오브젝트의 모든 서브인덱스에 해당하는 값을 읽을지 결정하는 플래그.

Value

Meaning

0

지정한 서브인덱스에 대해서만 값을 읽습니다

1

모든 서브인덱스에 대한 데이터를 한꺼번에 읽습니다. 이 경우에는 SubIndex 값을 0으로 전달해야 하며, 버퍼는 오브젝트의 전체 데이터 구조와 일치하는 버퍼가 제공되어야 합니다

  • DataSize : 읽어올 Data Size. 이 값은 오브젝트 사전에서 정의된 해당 오브젝트의 데이터 크기와 일치해야 합니다. 그렇지 않으면 읽기에 실패할 수 있습니다.

  • pBuf: 데이터를 전달할 버퍼. ([in])

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

RETURN VALUE

  • 반환 값이 양수이면 쓴 데이터의 크기를 반환하는 것입니다. 반환 값이 음수이면 에러코드를 반환하는 것입니다.

EXAMPLE

../../../_images/secSlv_ReadCoeSdo_A_00.jpg
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
//ETS-EC04H 슬레이브에서 채널의 Input Pulse Mode를 변화시키는 예제
//Slave Address는 1, 0번 채널을 변화시킨다고 가정

#define NETID  0
#define SLAVE_ADDR     0x1
t_i32 errCode;
t_ui8 PulseMode = 4; // CW / CCW
t_ui8 PulseMode_rtn = 0;

secSlv_WriteCoeSdo_A(NETID, SLAVE_ADDR, 0x8000, 0x0D, false, 4, &PulseMode, &errCode);

//값이 제대로 설정되었는지 확인
secSlv_ReadCoeSdo_A(NETID, SLAVE_ADDR, 0x8000, 0x0D, false, 4, &PulseMode_rtn, &errCode);

printf("설정된 Pulse Mode 값은 %d 입니다!", PulseMode_rtn);