cmmCmpTrgHigh_WriteData¶
SYNOPSIS¶
VT_I4 cmmCmpTrgHigh_WriteData(
[in] VT_I4 Axis, [in] VT_I4 CMPH_No,
[in] VT_R8 IniPos, [in] VT_R8 Interval
)
DESCRIPTION¶
이 함수는 특정 축에 고속위치비교출력 회로 모듈을 할당하고, 위치비교 트리거(Trigger) 신호를 출력할 위치를 등록하는 함수입니다. 고속위치비교출력 기능은 연속적인 등간격 위치비교 출력을 지원합니다. IniPos 매개 변수를 통하여 설정된 초기 위치로부터 시작하여 Interval 매개 변수에 의해서 지정된 간격의 위치마다 트리거 신호를 출력합니다. 고속위치비교출력 기능을 사용하기 위해서는 cmmCmpTrgHigh_Start()를 사용하십시오.
PARAMETER¶
Axis: 축번호. 축번호는 상수값으로 [cmX1] 부터 0 번째 축을 기준 축으로 임의의 축을 설정할 수 있습니다.
CMPH_No: 사용할 고속위치비교출력 회로 모듈 번호를 설정합니다. 하나의 COMI-LX504a 장치에는 2 개의 고속위치비교출력 회로 모듈이 제공됩니다. 사용자는 이 2 개의 모듈을 원하는 축에 할당하여 사용할 수 있습니다. 여기에서 설정하는 값은 장치(Board) 내에서의 모듈 번호를 설정합니다. 따라서 이 값은 반드시 0 또는 1 이어야 합니다.
IniPos: 트리거 출력을 발생하는 맨 처음 위치를 설정합니다. 고속위치비교출력 기능이 시작된 이후에 모터의 위치가 이 값이 가리키는 위치가 되면 트리거 신호가 출력되기 시작하고 Interval 에서 지정하는 간격의 위치를 지날 때마다 자동으로 트리거 신호가 출력되게 됩니다.
Interval: 트리거 출력을 발생하는 위치 간격을 설정합니다.
RETURN VALUE¶
Value |
Meaning |
---|---|
음수 |
수행 실패 |
cmERR_NONE |
수행 성공 |
SEE ALSO¶
cmmCmpTrgHigh_ReadData, cmmCmpTrgSetConfig, cmmCfgSetMioProperty (#, cmCMP_PWIDTH, #)
REFERENCE¶
고속위치비교출력 기능도 CMP 출력을 사용하므로 카운터소스, 위치비교 방식 등의 설정을 하는 cmmCmpTrgSetConfig() 함수는 일반 위치비교 출력 기능과 마찬가지로 적용됩니다.
출력 펄스의 폭은 cmmCfgSetMioProperty () 함수를 사용하여 설정합니다. 이때 PropID 매개 변수에 cmCMP_PWIDTH 를 지정하고 펄스폭을 설정합니다. cmmCfgSetMioProperty (축번호, cmCMP_PWIDTH, 펄스폭매개 변수) 의 형태로 설정합니다. 펄스폭의 기본 설정은 Command 출력의 한 주기에 해당하는 펄스가 출력되는 것입니다.
Warning
이 함수는 COMI-LX504a 제품에 대해서만 사용 가능한 함수입니다.
EXAMPLE¶
아래의 예제에서는 X 축을 0 에서 50000 좌표로 이동시키면서 피드백 위치가 1000 부터 시작하여 100 의 간격 마다 트리거 신호를 출력하도록 하는 예제입니다. 다시 말해서 피드백 위치가 1000, 1100, 1200, 1300, … 이 될 때마다 트리거 펄스가 출력되도록 하는 예입니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | C/C++
#define AXIS 12 // 축번호는 통합 축 번호 사용함을 예시하기 위해서 12 번 축으로 하였으며 다른 뜻은 없음
#define CMPH_No 0 // CMPH_No 는 통합축 번호와 관계없이 해당 축이 속한 장치내에서 제공하는 2 개의 모듈 중에
// 하나를 지정해야 한다. 따라서 이 값은 항상 0 또는 1 중의 하나의 값이어야 한다.
cmmSxMoveTo(AXIS, 0, cmFALSE);
// 비교기 설정: 이 것은 다른 일반 위치비교출력 기능과 같습니다 //
cmmCmpTrgSetConfig (AXIS, cmCNT_FEED, cmEQ_BIDIR);
// AXIS 축에 고속위치비교출력 기능을 할당하고 초기 위치와 간격을 설정한다. //
cmmCmpTrgHigh_WriteData (AXIS, CMPH_No, 1000, 100);
// 고속위치비교출력 기능 시작 //
cmmCmpTrgHigh_Start(AXIS);
// X 축을 50000 포인트로 이동한다. 이동할 때 피드백 위치가 1000, 1100, 1200,… 일때 트리거 신호 출력됨 //
cmmSxMoveTo(AXIS, 50000, cmFALSE);
cmmCmpTrgHigh_Stop(AXIS) ; // 고속위치비교 기능 종료
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | Visual Basic
Const AXIS = 12 ‘축번호는 통합 축 번호 사용함을 예시하기 위해서 12 번 축으로 하였으며 다른 뜻은 없음
Const CMPH_No = 0 ‘ CMPH_No 는 통합축 번호와 관계없이 해당 축이 속한 장치내에서 제공하는 2 개의 모듈 중에
‘ 하나를 지정해야 한다. 따라서 이 값은 항상 0 또는 1 중의 하나의 값이어야 한다.
Call cmmSxMoveTo(AXIS, 0, cmFALSE)
‘ 비교기 설정: 이 것은 다른 일반 위치비교출력 기능과 같습니다.
Call cmmCmpTrgSetConfig (AXIS, cmCNT_FEED, cmEQ_BIDIR)
‘ AXIS 축에 고속위치비교출력 기능을 할당하고 초기 위치와 간격을 설정한다.
Call cmmCmpTrgHigh_WriteData (AXIS, CMPH_No, 1000, 100)
‘ 고속위치비교출력 기능 시작
Call cmmCmpTrgHigh_Start(AXIS)
‘ X 축을 50000 포인트로 이동한다. 이동할 때 피드백 위치가 1000, 1100, 1200,… 일때 트리거 신호 출력됨
Call cmmSxMoveTo(AXIS, 50000, cmFALSE)
Call cmmCmpTrgHigh_Stop(AXIS) ‘ 고속위치비교 기능 종료
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | Delphi
Const AXIS = 12; // 축번호는 통합 축 번호 사용함을 예시하기 위해서 12 번 축으로 하였으며 다른 뜻은 없음
Const CMPH_No = 0;// CMPH_No 는 통합축 번호와 관계없이 해당 축이 속한 장치내에서 제공하는 2 개의 모듈 중에
// 하나를 지정해야 한다. 따라서 이 값은 항상 0 또는 1 중의 하나의 값이어야 한다.
cmmSxMoveTo(AXIS, 0, cmFALSE);
// 비교기 설정: 이 것은 다른 일반 위치비교출력 기능과 같습니다 //
cmmCmpTrgSetConfig(AXIS, cmCNT_FEED, cmEQ_BIDIR);
// AXIS 축에 고속위치비교출력 기능을 할당하고 초기 위치와 간격을 설정한다. //
cmmCmpTrgHigh_WriteData(AXIS, CMPH_No, 1000, 100);
// 고속위치비교출력 기능 시작 //
cmmCmpTrgHigh_Start(AXIS);
// X 축을 50000 포인트로 이동한다. 이동할 때 피드백 위치가 1000, 1100, 1200,… 일때 트리거 신호 출력됨 //
cmmSxMoveTo(AXIS, 50000, cmFALSE);
cmmCmpTrgHigh_Stop(AXIS) ; // 고속위치비교 기능 종료
|