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을 전달하면 에러 코드를 반환하지 않습니다.
REFERENCE¶
이 함수에 전달되는 파일은 xml 형식의 텍스트 파일이어야 하며, 보정테이블 헤더 정보와 보정데이터를 모두 포함하고 있어야 합니다. 2차원보정에 사용되는 xml 파일의 내용은 아래의 예와 같이 작성하면 됩니다.
파일의 내용을 설명하기 전에 이해를 돕기 위해서 xml에서 사용되는 몇 가지 용어에 대해서 먼저 설명하겟습니다.
엘리먼트(Element): 데이터 항목 노드를 말하며, <엘리먼트명> ~ </엘리먼트명>으로 표기합니다.
엘리먼트내용(Element Content): 해당 엘리먼트의 값을 말하며, <엘리먼트명>엘리먼트내용</엘리먼트명> 과 같이 <엘리먼트명>과 </엘리먼트명>사이에 위치합니다. 이 값을 표기할 때는 인용부호(“”)를 붙이지 않습니다.
엘리먼트속성(Element Attribute): 엘리먼트내용값 이외에도 엘리먼트는 속성이라는 항목을 통해서 데이터를 표현할 수가 있습니다. <엘리먼트명 Attribute1=”data1” Attribute2=”data2”>와 같이 <엘리먼트> 태그 안에서 속성명=”데이터” 의 형식으로 정의합니다. 속성과 속성간에는 공백으로 분리합니다.
위와 같은 XML에 대한 간단한 용어를 숙지했다는 전제하에 아래에서 2차원 보정데이터 파일의 내용에 대해서 설명하도록 하겠습니다
<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);
|