11.2.41. ecmSxCfg_PosCorr2D_SetTableFromFile


SYNOPSIS

t_success  ecmSxCfg_PosCorr2D_SetTableFromFile (
  t_i32  NetID,
  t_i32  Axis,
  char  *szFilePath,
  t_i32  *ErrCode
)

DESCRIPTION

  • 이 함수는 보정 테이블의 헤더 정보 및 보정데이터 값을 파일을 통해서 설정하도록 하는 함수입니다.

  • 이 함수는 내부에서 ecmSxCfg_PosCorr2D_SetTableHeader() 함수와 ecmSxCfg_PosCorr2D_SetTableData() 함수를 사용하여 헤더 정보와 보정데이터를 모두 설정합니다. 따라서 이 함수를 사용하면 사용자는 ecmSxCfg_PosCorr2D_SetTableHeader() 함수와 ecmSxCfg_PosCorr2D_SetTableData() 함수를 사용할 필요가 없습니다.

PARAMETER

  • NetID : Network 번호.

  • Axis : 대상 축 번호.

  • szFilePath : 보정테이블 정보가 들어 있는 파일의 경로.

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

RETURN VALUE

  • 함수 수행의 성공 여부를 반환합니다.

Value

Meaning

0

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

1

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

REFERENCE

  • 이 함수에 전달되는 파일은 xml 형식의 텍스트 파일이어야 하며, 보정테이블 헤더 정보와 보정데이터를 모두 포함하고 있어야 합니다. 2차원보정에 사용되는 xml 파일의 내용은 아래의 예와 같이 작성하면 됩니다.

../../../_images/ecmSxCfg_PosCorr2D_SetTableFromFile_00.jpg
  • 파일의 내용을 설명하기 전에 이해를 돕기 위해서 xml에서 사용되는 몇 가지 용어에 대해서 먼저 설명하겟습니다.

    • 엘리먼트(Element): 데이터 항목 노드를 말하며, <엘리먼트명> ~ </엘리먼트명>으로 표기합니다.

    • 엘리먼트내용(Element Content): 해당 엘리먼트의 값을 말하며, <엘리먼트명>엘리먼트내용</엘리먼트명> 과 같이 <엘리먼트명>과 </엘리먼트명>사이에 위치합니다. 이 값을 표기할 때는 인용부호(“”)를 붙이지 않습니다.

    • 엘리먼트속성(Element Attribute): 엘리먼트내용값 이외에도 엘리먼트는 속성이라는 항목을 통해서 데이터를 표현할 수가 있습니다. <엘리먼트명 Attribute1=”data1” Attribute2=”data2”>와 같이 <엘리먼트> 태그 안에서 속성명=”데이터” 의 형식으로 정의합니다. 속성과 속성간에는 공백으로 분리합니다.

위와 같은 XML에 대한 간단한 용어를 숙지했다는 전제하에 아래에서 2차원 보정데이터 파일의 내용에 대해서 설명하도록 하겠습니다

  1. <PC-2D> ~ </PC-2D> 2차원보정에 사용되는 XML 파일의 내용은 ‘<PC-2D>’로 시작해서 ‘</PC-2D>’ 끝나야 합니다. 2차원보정 테이블과 관련된 정보는 모두 이 블록 내에서 정의되어야 합니다.

1-1. <Header> ~ </Header> 보정테이블의 헤더 정보가 들어가는 영역입니다.

1-1-1. <TargetAxis> ~ </TargetAxis> 대상축의 헤더 정보를 설정하는 영역입니다. 이 엘리먼트의 내용(Element Content) 값은 대상축에 해당하는 축 번호를 설정합니다. 이 값은 ecmSxCfg_PosCorr2D_SetTableFromFile() 함수의 Axis 매개 변수값과 일치해야 합니다. 이 엘리먼트에서 정의해야 하는 속성(Attribute)은 아래와 같습니다.

속성명

설 명

StartPos

대상축 기준좌표의 시작 위치를 의미합니다.

StepSize

대상축 기준좌표의 간격을 의미합니다. 이 값은 각 열(Column)의 기준 좌표의 간격을 의미합니다. 테이블의 첫 번째 열은 StartPos에 해당하는 위치의 보정값이고, 두 번째 열은 (StartPos+StepSize)에 해당하는 위치의 보정값이며, 세 번째 열은 (StartPos+2*StepSize)에 해당하는 위치의 보정값이 되는 것입니다.

StepCount

보정값을 정의한 대상축의 논리좌표 개수를 의미합니다. 이 값은 결국 보정테이블의 열(Column)의 갯수를 의미합니다

1-1-2. <ReferAxis> ~ </ReferAxis> 참조축의 헤더 정보를 설정하는 영역입니다. 이 엘리먼트의 내용(Element Content) 값은 참조축에 해당하는 축 번호를 설정합니다. 이 엘리먼트에서 정의해야 하는 속성(Attribute)은 아래와 같습니다.

속성명

설 명

StartPos

참조축 기준좌표의 시작 위치를 의미합니다.

StepSize

참조축 기준좌표의 간격을 의미합니다. 이 값은 각 행(Row)의 기준 좌표의 간격을 의미합니다. 테이블의 첫 번째 행은 StartPos에 해당하는 위치의 보정값이고, 두 번째 행은 (StartPos+StepSize)에 해당하는 위치의 보정값이며, 세 번째 행은 (StartPos+2*StepSize)에 해당하는 위치의 보정값이 되는 것입니다.

StepCount

보정값을 정의한 참조축의 논리좌표 개수를 의미합니다. 이 값은 결국 보정테이블의 행(Row)의 갯수를 의미합니다

1-2. <Table> ~ </Table> 보정테이블 데이터가 정의되는 영역입니다. 보정데이터는 대상축의 기준위치에서의 보정오프셋값으로 정의되며, 각 기준위치에서 모터의 실제 위치와 기준위치의 관계는 모터실제위치 = 기준위치 + 보정오프셋 의 관계가 됩니다. 보정테이블은 2차원 배열로 정의되며 각 데이터는 쉼표(,)로 분리됩니다. 열의 개수는 TargetAxis의 StepCount속성에서 정의한 값과 같아야 하며, 행의 개수는 ReferAxis의 StepCount 속성에서 정의한 값과 같아야 합니다. 공백이나 탭문자는 무시됩니다.

EXAMPLE

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
 #include "ComiEcatSdk_Api.h"
  #define NETID               0
  #define TARGET_AXIS 0

  // 2차원보정 기능 비활성화
  ecmSxCfg_PosCorr2D_SetEnable(NETID, TARGET_AXIS, false, NULL);
  // 2차원보정테이블을 파일을 통해서 설정
  ecmSxCfg_PosCorr2D_SetTableFromFile (NETID, TARGET_AXIS, "c:\\PosCorr2D.xml", NULL);
  // 2차원보정 기능 활성화
  ecmSxCfg_PosCorr2D_SetEnable(NETID, TARGET_AXIS, true, NULL);

  // 이후에 TARGET_AXIS가 이송(단축, 보간, 마스터-슬레이브 등 어떤 이송이든 모두 적용)될 때는 보정테이블이 적용되어서 논리좌표에 대응되는 보정좌표로 모터가 이송되게 됨

  // 프로그램의 종료 시점이나  2차원 위치보정 기능이 필요없는 경우에는 Reset 함수 실행해주는 것이 바람직함
  ecmSxCfg_PosCorr2D_Reset(NETID, TARGET_AXIS, NULL);