Skip to content

트리거 관련 기능

Function Description
AxcTriggerSetFunction 지정 CNT 채널의 트리거 관련 기능을 설정한다.
AxcTriggerGetFunction 지정 CNT 채널의 트리거 관련 기능 설정을 확인한다.
AxcTriggerSetOutput 지정 CNT 채널의 트리거 출력을 강제로 발생시킨다.
AxcTriggerSetBlockLowerPos 지정 CNT 채널의 트리거 정보의 하한 위치 값을 설정한다.
AxcTriggerGetBlockLowerPos 지정 CNT 채널의 트리거 정보의 하한 위치 값을 확인한다.
AxcTriggerSetBlockUpperPos 지정 CNT 채널의 트리거 정보의 상한 위치 값을 설정한다.
AxcTriggerGetBlockUpperPos 지정 CNT 채널의 트리거 정보의 상한 위치 값을 확인한다.
AxcTriggerSetPosPeriod 지정 CNT 채널의 주기 위치 트리거 기능을 사용하기 위한 거리의 주기 값을 설정한다.
AxcTriggerGetPosPeriod 지정 CNT 채널의 주기 위치 트리거 기능을 사용하기 위한 거리의 주기 값을 확인한다.
AxcTriggerSetDirectionCheck 지정 CNT 채널의 주기 위치 트리거 기능 사용시 카운터 증/감에 대한 트리거 펄스 출력 유무를 설정한다.
AxcTriggerGetDirectionCheck 지정 CNT 채널의 주기 위치 트리거 기능 사용시 카운터 증/감에 대한 트리거 펄스 출력 유무를 확인한다.
AxcTriggerSetBlock 지정 CNT 채널의 위치 주기 모드 상한/하한 위치 및 거리 주기 값을 설정한다.
AxcTriggerGetBlock 지정 CNT 채널의 위치 주기 모드 상한/하한 위치 및 거리 주기 값을 확인한다.
AxcTriggerSetTime 지정 CNT 채널의 트리거 출력 펄스 폭을 설정한다.
AxcTriggerGetTime 지정 CNT 채널의 트리거 출력 펄스 폭을 확인한다.
AxcTriggerSetLevel 지정 CNT 채널의 트리거 펄스 신호의 출력 레벨을 설정한다.
AxcTriggerGetLevel 지정 CNT 채널의 트리거 펄스 신호의 출력 레벨을 확인한다.
AxcTriggerSetFreq 지정 CNT 채널의 시간 주기 트리거 기능을 위한 주파수를 설정한다.
AxcTriggerGetFreq 지정 CNT 채널의 시간 주기 트리거 기능을 위한 주파수를 설정한다.
AxcTriggerSetEnable 지정 CNT 채널의 트리거 출력 기능을 활성화/비활성화한다.
AxcTriggerGetEnable 지정 CNT 채널의 트리거 출력 기능 활성화 상태를 확인한다.
AxcTriggerSetAbs 지정 CNT 채널의 절대 위치 트리거 기능을 위한 위치 정보를 설정한다.
AxcTriggerSetAbsDouble 지정 CNT 채널의 절대 위치 트리거 기능을 위한 double 형 위치 정보를 설정한다.

AxcTriggerSetFunction

Purpose

지정 CNT 채널에 카운터 값에 따른 기능을 설정한다.

Format

C++
DWORD AxcTriggerSetFunction(long lChannelNo, DWORD uMode);
C#
uint AxcTriggerSetFunction(int lChannelNo, uint uMode);

Parameters

[in/out] Name [Init Value] Explanation
[in]lChannelNo 모듈 번호 (0 ~ N-1), N : 전체 CNT 채널 개수
[in]uMode 기능 설정(모듈 ID에 따라 다른 기능)

Return Values

[0000] AXT_RT_SUCCESS : AXL 라이브러리 초기화 성공, 연결 상태 정상
[1053] AXT_RT_NOT_OPEN : 라이브러리 초기화 실패
[3251] AXT_RT_CNT_NOT_MODULE : CNT 모듈 없음
[3302] AXT_RT_CNT_INVALID_CHANNEL_NO : 유효하지 않은 CNT 채널 번호
[1152] AXT_RT_NETWORK_ERROR : network slave 타입 CNT 모듈 연결 상태 문제 발생
[1054] AXT_RT_NOT_SUPPORT_VERSION : 지원하지 않는 CNT 모듈

Description

지정 CNT 채널의 카운터 정보를 사용한 기능을 설정한다. 모듈 ID에 따라 설정 기능이 다양하게 적용된다. 아래는 각 모듈 ID에 따른 기능 설정에 대한 내용이다.

모듈 ID 트리거 기능 설정 값
AXT_SIO_CN2CH(VER : 0xB0) 0x00~0x01
- [00h] : 카운터 절대 위치에 따른 트리거 펄스 출력 기능
- [01h] : 설정된 시간 주기마다 트리거 펄스 출력
AXT_SIO_CN2CH(VER : 0xA6) 0x00~0x01
- [00h] : 카운터 주기 위치에 따른 트리거 펄스 출력 기능
- [01h] : 설정된 시간 주기마다 트리거 펄스 출력
모듈 ID 트리거 기능 설정 값
AXT_SIO_CN2CH(VER : 0xB0) 0x00~0x01
- [00h] : 카운터 절대 위치에 따른 트리거 펄스 출력 기능
- [01h] : 설정된 시간 주기마다 트리거 펄스 출력
AXT_SIO_CN2CH(VER : 0xA6) 0x00~0x01
- [00h] : 카운터 주기 위치에 따른 트리거 펄스 출력 기능
- [01h] : 설정된 시간 주기마다 트리거 펄스 출력
AXT_SIO_HPC4(VER < 0xB0) 0x00~0x03
- [00h] : 설정된 시간 주기마다, 설정된 개수의 트리거 펄스를 출력
- [01h] : 설정된 시간 주기마다 트리거 펄스 출력
- [02h] : 카운터 절대 위치에 따른 트리거 펄스 출력
- [03h] : 카운터 상대 위치에 따른 트리거 펄스 출력
AXT_SIO_RCNT2SIIIH 0x00~0x01
- [00h] : 카운터 주기 위치에 따른 트리거 펄스 출력
- [01h] : 카운터 절대 위치에 따른 트리거 펄스 출력
AXT_SIO_RCNT2SIIIH_R
AXT_SIO_RCNT2RTEX
AXT_SIO_RCNT2MLIII
AXT_SIO_RCNT2MLII Not support(지원하지 않음)

예제 코드

// 0번째 채널에 트리거 기능을 0x1로 설정한다.
AxcTriggerSetFunction(0, 0x1);

// 0번째 채널에 트리거 기능을 확인한다.
DWORD uMode;
AxcTriggerGetFunction(0, &uMode);

AxcTriggerGetFunction

Purpose

지정 CNT 채널에 카운터 값에 따른 기능을 설정을 확인한다.

Format

C++
DWORD AxcTriggerGetFunction(long lChannelNo, DWORD* upMode);
C#
uint AxcTriggerGetFunction(int lChannelNo, ref uint upMode);

Parameters

[in/out] Name [Init Value] Explanation
[in]lChannelNo 모듈 번호 (0 ~ N-1), N : 전체 CNT 채널 개수
[out]upMode 기능 설정(모듈 ID에 따라 다른 기능)

Return Values

[0000] AXT_RT_SUCCESS : AXL 라이브러리 초기화 성공, 연결 상태 정상
[1053] AXT_RT_NOT_OPEN : 라이브러리 초기화 실패
[3251] AXT_RT_CNT_NOT_MODULE : CNT 모듈 없음
[3302] AXT_RT_CNT_INVALID_CHANNEL_NO : 유효하지 않은 CNT 채널 번호
[1152] AXT_RT_NETWORK_ERROR : network slave 타입 CNT 모듈 연결 상태 문제 발생
[1054] AXT_RT_NOT_SUPPORT_VERSION : 지원하지 않는 CNT 모듈

Description

지정 CNT 채널의 카운터 정보를 사용한 기능을 설정을 확인한다. 각 제품별 기능 설정 값은 AxcTriggerGetFunction 함수 설명을 참고하여야 한다.

예제 코드

// 0번째 채널에 트리거 기능을 0x1로 설정한다.
AxcTriggerSetFunction(0, 0x1);

// 0번째 채널에 트리거 기능을 확인한다.
DWORD uMode;
AxcTriggerGetFunction(0, &uMode);

AxcTriggerSetOutput

Purpose

지정 CNT 채널의 트리거 출력을 강제로 발생시킨다.

Format

C++
DWORD AxcTriggerSetOutput(long lChannelNo, DWORD uOutVal);
C#
uint AxcTriggerSetOutput(int lChannelNo, uint uOutVal);

Parameters

[in/out] Name [Init Value] Explanation
[in]lChannelNo 모듈 번호 (0 ~ N-1), N : 전체 CNT 채널 개수
[in]uOutVal 강제 출력 여부 설정(0 : 출력하지 않음, 1: 출력)

Return Values

[0000] AXT_RT_SUCCESS : AXL 라이브러리 초기화 성공, 연결 상태 정상
[1053] AXT_RT_NOT_OPEN : 라이브러리 초기화 실패
[3251] AXT_RT_CNT_NOT_MODULE : CNT 모듈 없음
[3302] AXT_RT_CNT_INVALID_CHANNEL_NO : 유효하지 않은 CNT 채널 번호
[1152] AXT_RT_NETWORK_ERROR : network slave 타입 CNT 모듈 연결 상태 문제 발생
[1054] AXT_RT_NOT_SUPPORT_VERSION : 지원하지 않는 CNT 모듈

Description

AxmTriggerSetLevel으로 설정된 신호 출력 Level로 AxmTriggerSetTime 동안 Trigger 출력을 발생 시킨다.

모듈 ID 트리거 강제 출력 설정 값
AXT_SIO_CN2CH
(VER : 0xB0)
Not support(지원하지 않음)
AXT_SIO_CN2CH
(VER : 0xA6)
AXT_SIO_HPC4
(VER < 0xB0)
0x00~0x01
- [00h] : Don’t care
- [01h] : AxmTriggerSetTime 설정된 시간 동안 AxmTriggerSetLevle로 설정된 신호 레벨로 트리거 펄스가 출력된다.
AXT_SIO_RCNT2SIIIH 0x00~0x01
- [00h] : Don’t care
- [01h] : AxmTriggerSetTime 설정된 시간 동안 AxmTriggerSetLevle로 설정된 신호 레벨로 트리거 펄스가 출력된다.
AXT_SIO_RCNT2SIIIH_R
AXT_SIO_RCNT2RTEX
AXT_SIO_RCNT2MLIII
AXT_SIO_RCNT2MLII Not support(지원하지 않음)

주의 사항

함수 실행 전 AxmTriggetSetEnable 로 트리거 기능을 사용하도록 설정 필요.

예제 코드

// 트리거 출력 기능을 사용하도록 설정한다.
AxcTriggerSetEnable(0, TRUE);

// 0번 CNT 채널에 트리거 펄스를 강제 발생시킨다.
AxcTriggerSetOutput(0, TRUE);

AxcTriggerSetBlockLowerPos

Purpose

지정 CNT 채널의 트리거 정보의 하한 위치 값을 설정한다.

Format

C++
DWORD AxcTriggerSetBlockLowerPos(long lChannelNo, double dLowerPosition);
C#
uint AxcTriggerSetBlockLowerPos(int lChannelNo, double dLowerPosition);

Parameters

[in/out] Name [Init Value] Explanation
[in]lChannelNo 모듈 번호 (0 ~ N-1), N : 전체 CNT 채널 개수
[in]dLowerPosition 트리거 기능 적용 하한 위치 값(AxcMotSetMoveUnitPerPulse 단위)

Return Values

[0000] AXT_RT_SUCCESS : AXL 라이브러리 초기화 성공, 연결 상태 정상
[1053] AXT_RT_NOT_OPEN : 라이브러리 초기화 실패
[3251] AXT_RT_CNT_NOT_MODULE : CNT 모듈 없음
[3302] AXT_RT_CNT_INVALID_CHANNEL_NO : 유효하지 않은 CNT 채널 번호
[1152] AXT_RT_NETWORK_ERROR : network slave 타입 CNT 모듈 연결 상태 문제 발생
[1054] AXT_RT_NOT_SUPPORT_VERSION : 지원하지 않는 CNT 모듈

Description

지정 CNT 채널의 트리거 기능을 사용하기 위한 하한 위치 값을 설정한다. 주기 위치 트리거 방식을 사용할 경우 주기 위치 범위의 작은 값을 설정하고, 절대 위치 트리거 방식의 경우 절대 위치 정보들 중 가장 작은 값보다 작은 값을 설정하여야 한다.

주의 사항

AxcTriggetSetUpperPos 로 설정된 위치보다 작은 값을 사용하여야 한다.

예제 코드

// 트리거 범위를 100 ~ 20000으로 설정한다.
AxcTriggerSetBlockUpperPos(0, 20000.);
AxcTriggerSetBlockLowerPos(0, 100.);

AxcTriggerGetBlockLowerPos

Purpose

지정 CNT 채널의 트리거 정보의 하한 위치 값을 확인한다.

Format

C++
DWORD AxcTriggerGetBlockLowerPos(long lChannelNo, double* dpLowerPosition);
C#
uint AxcTriggerGetBlockLowerPos(int lChannelNo, ref double dpLowerPosition);

Parameters

[in/out] Name [Init Value] Explanation
[in]lChannelNo 모듈 번호 (0 ~ N-1), N : 전체 CNT 채널 개수
[out]dpLowerPosition 트리거 기능 적용 하한 위치 값(AxcMotSetMoveUnitPerPulse 단위)

Return Values

[0000] AXT_RT_SUCCESS : AXL 라이브러리 초기화 성공, 연결 상태 정상
[1053] AXT_RT_NOT_OPEN : 라이브러리 초기화 실패
[3251] AXT_RT_CNT_NOT_MODULE : CNT 모듈 없음
[3302] AXT_RT_CNT_INVALID_CHANNEL_NO : 유효하지 않은 CNT 채널 번호
[1152] AXT_RT_NETWORK_ERROR : network slave 타입 CNT 모듈 연결 상태 문제 발생
[1054] AXT_RT_NOT_SUPPORT_VERSION : 지원하지 않는 CNT 모듈

Description

지정 CNT 채널의 트리거 기능을 사용하기 위한 하한 위치 값을 확인한다. 주기 위치 트리거 방식을 사용할 경우 주기 위치 범위의 작은 값을 설정하고, 절대 위치 트리거 방식의 경우 절대 위치 정보들 중 가장 작은 값보다 작은 값을 설정되어야 한다.

예제 코드

// 트리거 범위를 100 ~ 20000으로 설정한다.
AxcTriggerSetBlockUpperPos(0, 20000.);
AxcTriggerSetBlockLowerPos(0, 100.);

// 설정된 트리거 범위 하한 값을 확인한다.
double dLowerPos;
AxcTriggerGetBlockLowerPos(0, &dLowerPos);

AxcTriggerSetBlockUpperPos

Purpose

지정 CNT 채널의 트리거 정보의 상한 위치 값을 설정한다.

Format

C++
DWORD AxcTriggerSetBlockUpperPos(long lChannelNo, double dUpperPosition);
C#
uint AxcTriggerSetBlockUpperPos(int lChannelNo, double dUpperPosition);

Parameters

[in/out] Name [Init Value] Explanation
[in]lChannelNo 모듈 번호 (0 ~ N-1), N : 전체 CNT 채널 개수
[in]dUpperPosition 트리거 기능 적용 상한 위치 값(AxcMotSetMoveUnitPerPulse 단위)

Return Values

[0000] AXT_RT_SUCCESS : AXL 라이브러리 초기화 성공, 연결 상태 정상
[1053] AXT_RT_NOT_OPEN : 라이브러리 초기화 실패
[3251] AXT_RT_CNT_NOT_MODULE : CNT 모듈 없음
[3302] AXT_RT_CNT_INVALID_CHANNEL_NO : 유효하지 않은 CNT 채널 번호
[1152] AXT_RT_NETWORK_ERROR : network slave 타입 CNT 모듈 연결 상태 문제 발생
[1054] AXT_RT_NOT_SUPPORT_VERSION : 지원하지 않는 CNT 모듈

Description

지정 CNT 채널의 트리거 기능을 사용하기 위한 하한 위치 값을 설정한다. 주기 위치 트리거 방식을 사용할 경우 주기 위치 범위의 큰 값을 설정하고, 절대 위치 트리거 방식의 경우 절대 위치 정보들 중 가장 큰 값보다 큰 값을 설정하여야 한다.

주의 사항

AxcTriggetSetLowerPos 로 설정된 위치보다 큰 값을 사용하여야 한다.

예제 코드

// 트리거 범위를 100 ~ 20000으로 설정한다.
AxcTriggerSetBlockUpperPos(0, 20000.);
AxcTriggerSetBlockLowerPos(0, 100.);

AxcTriggerGetBlockUpperPos

Purpose

지정 CNT 채널의 트리거 정보의 상한 위치 값을 확인한다.

Format

C++
DWORD AxcTriggerGetBlockUpperPos(long lChannelNo, double* dpUpperrPosition);
C#
uint AxcTriggerGetBlockUpperPos(int lChannelNo, ref double dpUpperrPosition);

Parameters

[in/out] Name [Init Value] Explanation
[in]lChannelNo 모듈 번호 (0 ~ N-1), N : 전체 CNT 채널 개수
[out]dpUpperPosition 트리거 기능 적용 상한 위치 값(AxcMotSetMoveUnitPerPulse 단위)

Return Values

[0000] AXT_RT_SUCCESS : AXL 라이브러리 초기화 성공, 연결 상태 정상
[1053] AXT_RT_NOT_OPEN : 라이브러리 초기화 실패
[3251] AXT_RT_CNT_NOT_MODULE : CNT 모듈 없음
[3302] AXT_RT_CNT_INVALID_CHANNEL_NO : 유효하지 않은 CNT 채널 번호
[1152] AXT_RT_NETWORK_ERROR : network slave 타입 CNT 모듈 연결 상태 문제 발생
[1054] AXT_RT_NOT_SUPPORT_VERSION : 지원하지 않는 CNT 모듈

Description

지정 CNT 채널의 트리거 기능을 사용하기 위한 상한 위치 값을 확인한다. 주기 위치 트리거 방식을 사용할 경우 주기 위치 범위의 큰 값을 설정하고, 절대 위치 트리거 방식의 경우 절대 위치 정보들 중 가장 큰 값보다 큰 값을 설정되어야 한다.

예제 코드

// 트리거 범위를 100 ~ 20000으로 설정한다.
AxcTriggerSetBlockUpperPos(0, 20000.);
AxcTriggerSetBlockLowerPos(0, 100.);

// 설정된 트리거 범위 상한 값을 확인한다.
double dUpperPos;
AxcTriggerGetBlockUpperPos(0, &dUpperPos);

AxcTriggerSetPosPeriod

Purpose

지정 CNT 채널의 주기 위치 트리거 기능을 사용하기 위한 거리의 주기 값을 설정한다.

Format

C++
DWORD AxcTriggerSetPosPeriod(long lChannelNo, double dPeriod);
C#
uint AxcTriggerSetPosPeriod(int lChannelNo, double dPeriod);

Parameters

[in/out] Name [Init Value] Explanation
[in]lChannelNo 모듈 번호 (0 ~ N-1), N : 전체 CNT 채널 개수
[in]dPeriod 주기 트리거 기능을 위한 거리 주기 값(AxcMotSetMoveUnitPerPulse 단위)

Return Values

[0000] AXT_RT_SUCCESS : AXL 라이브러리 초기화 성공, 연결 상태 정상
[1053] AXT_RT_NOT_OPEN : 라이브러리 초기화 실패
[3251] AXT_RT_CNT_NOT_MODULE : CNT 모듈 없음
[3302] AXT_RT_CNT_INVALID_CHANNEL_NO : 유효하지 않은 CNT 채널 번호
[1152] AXT_RT_NETWORK_ERROR : network slave 타입 CNT 모듈 연결 상태 문제 발생

Description

지정 CNT 채널의 주기 위치 트리거 기능을 사용하기 위한 거리 주기를 설정한다.

예제 코드

// 트리거 주기 거리를 100으로 설정한다.
AxcTriggerSetPosPeriod(0, 100.);

AxcTriggerGetPosPeriod

Purpose

지정 CNT 채널의 주기 위치 트리거 기능을 사용하기 위한 거리의 주기 값을 확인한다.

Format

C++
DWORD AxcTriggerGetPosPeriod(long lChannelNo, double* dpPeriod);
C#
uint AxcTriggerGetPosPeriod(int lChannelNo, ref double dpPeriod);

Parameters

[in/out] Name [Init Value] Explanation
[in]lChannelNo 모듈 번호 (0 ~ N-1), N : 전체 CNT 채널 개수
[in]dpPeriod 주기 트리거 기능을 위하 거리 주기 값(AxcMotSetMoveUnitPerPulse 단위)

Return Values

[0000] AXT_RT_SUCCESS : AXL 라이브러리 초기화 성공, 연결 상태 정상
[1053] AXT_RT_NOT_OPEN : 라이브러리 초기화 실패
[3251] AXT_RT_CNT_NOT_MODULE : CNT 모듈 없음
[3302] AXT_RT_CNT_INVALID_CHANNEL_NO : 유효하지 않은 CNT 채널 번호
[1152] AXT_RT_NETWORK_ERROR : network slave 타입 CNT 모듈 연결 상태 문제 발생

Description

지정 CNT 채널의 주기 위치 트리거 기능을 사용하기 위한 거리 주기를 설정 값을 확인한다.

예제 코드

// 0채널의 주기 위치 트리거 기능을 사용하기 위한 거리 주기를 확인한다.
double dPos;
AxcTriggerGetPosPeriod (0, &dPos);

AxcTriggerSetDirectionCheck

Purpose

지정 CNT 채널의 주기 위치 트리거 기능 사용시 카운터 증/감에 대한 트리거 펄스 출력 유무를 설정한다.

Format

C++
DWORD AxcTriggerSetDirectionCheck(long lChannelNo, DWORD uDirection);
C#
uint AxcTriggerSetDirectionCheck(int lChannelNo, uint uDirection);

Parameters

[in/out] Name [Init Value] Explanation
[in]lChannelNo 모듈 번호 (0 ~ N-1), N : 전체 CNT 채널 개수
[in]uDirection 주기 위치 트리거 사용 시 카운터 증/감에 따른 동작 설정
0x00~0x02
[00h] : 카운터 증가/감소 시 위치 주기마다 트리거 펄스 발생
[01h] : 카운터 증가 시에만 위치 주기마다 트리거 펄스 발생
[02h] : 카운터 감소 시에만 위치 주기마다 트리거 펄스 발생

Return Values

[0000] AXT_RT_SUCCESS : AXL 라이브러리 초기화 성공, 연결 상태 정상
[1053] AXT_RT_NOT_OPEN : 라이브러리 초기화 실패
[3251] AXT_RT_CNT_NOT_MODULE : CNT 모듈 없음
[3302] AXT_RT_CNT_INVALID_CHANNEL_NO : 유효하지 않은 CNT 채널 번호
[3306] AXT_RT_CNT_INVALID_VALUE : 유효하지 않은 신호 입력 방식
[1152] AXT_RT_NETWORK_ERROR : network slave 타입 CNT 모듈 연결 상태 문제 발생

Description

지정 CNT 채널에 위치 주기 트리거 기능을 사용할 경우, 카운터가 증가 또는 감소하여 거리 주기에 도달하면 트리거 펄스가 출력된다. 이때 특정한 방향으로 카운터 값이 변할 때만 트리거 펄스를 출력하고자 할 경우 AxcTriggerSetDirectionCheck를 사용하여 설정할 수 있다.

예제 코드

// 0번째 채널에 주기 위치 트리거 기능 사용 중 카운터 증가할 때만 트리거 펄스 발생 설정.
AxcTriggerSetDirectionCheck (0, 1);

AxcTriggerGetDirectionCheck

Purpose

지정 CNT 채널의 주기 위치 트리거 기능 사용 시 카운터 증/감에 대한 트리거 펄스 출력 유무를 확인한다.

Format

C++
DWORD AxcTriggerGetDirectionCheck(long lChannelNo, DWORD* upDirection);
C#
uint AxcTriggerGetDirectionCheck(int lChannelNo, ref uint upDirection);

Parameters

[in/out] Name [Init Value] Explanation
[in]lChannelNo 모듈 번호 (0 ~ N-1), N : 전체 CNT 채널 개수
[out]dpwDirection 주기 위치 트리거 사용시 카운터 증/감에 따른 동작 설정
0x00~0x02
[00h] : 카운터 증가/감소 시 위치 주기마다 트리거 펄스 발생
[01h] : 카운터 증가 시에만 위치 주기마다 트리거 펄스 발생
[02h] : 카운터 감소 시에만 위치 주기마다 트리거 펄스 발생

Return Values

[0000] AXT_RT_SUCCESS : AXL 라이브러리 초기화 성공, 연결 상태 정상
[1053] AXT_RT_NOT_OPEN : 라이브러리 초기화 실패
[3251] AXT_RT_CNT_NOT_MODULE : CNT 모듈 없음
[3302] AXT_RT_CNT_INVALID_CHANNEL_NO : 유효하지 않은 CNT 채널 번호
[3306] AXT_RT_CNT_INVALID_VALUE : 유효하지 않은 신호 입력 방식
[1152] AXT_RT_NETWORK_ERROR : network slave 타입 CNT 모듈 연결 상태 문제 발생

Description

지정 CNT 채널에 위치 주기 트리거 기능을 사용할 경우, 카운터가 증가 또는 감소하여 거리 주기에 도달하면 트리거 펄스가 출력된다. 이때 특정한 방향으로 카운터 값이 변할 때만 트리거 펄스를 출력하고자 할 경우 AxcTriggerSetDirectionCheck/ AxcTriggerGetDirectionCheck 를 사용하여 설정/확인할수 있다.

예제 코드

// 0번째 채널에 주기 위치 트리거 기능 사용 중 카운터 증가할 때만 트리거 펄스 발생 설정/확인.
AxcTriggerSetDirectionCheck(0, 1);
DWORD uDirCheck;
AxcTriggerGetDirectionCheck(0, &uDirCheck);

AxcTriggerSetBlock

Purpose

지정 CNT 채널의 위치 주기 모드 상한/하한 위치 및 거리 주기 값을 설정한다.

Format

C++
DWORD AxcTriggerSetBlock(long lChannelNo, double dLower, double dUpper, double dABSod);
C#
uint AxcTriggerSetBlock(int lChannelNo, double dLower, double dUpper, double dABSod);

Parameters

[in/out] Name [Init Value] Explanation
[in]lChannelNo 모듈 번호 (0 ~ N-1), N : 전체 CNT 채널 개수
[in]dLowerPosition 트리거 기능 적용 하한 위치 값(AxcMotSetMoveUnitPerPulse 단위)
[in]dUpperPosition 트리거 기능 적용 상한 위치 값(AxcMotSetMoveUnitPerPulse 단위)
[in]dABSod 주기 트리거 기능을 위한 거리 주기 값(AxcMotSetMoveUnitPerPulse 단위)

Return Values

[0000] AXT_RT_SUCCESS : AXL 라이브러리 초기화 성공, 연결 상태 정상
[1053] AXT_RT_NOT_OPEN : 라이브러리 초기화 실패
[3251] AXT_RT_CNT_NOT_MODULE : CNT 모듈 없음
[3302] AXT_RT_CNT_INVALID_CHANNEL_NO : 유효하지 않은 CNT 채널 번호
[1152] AXT_RT_NETWORK_ERROR : network slave 타입 CNT 모듈 연결 상태 문제 발생

Description

지정 CNT 채널의 트리거 기능을 사용하기 위한 하한/상한 위치 값을 설정한다. 또한 주기 위치 트리거 방식에 사용되는 거리 주기 값도 함께 설정한다.

주의 사항

트리거 기능 적용 하한 위치 값 < 트리거 기능 적용 상한 위치 값

예제 코드

// 트리거 범위를 100 ~ 20000로, 거리 주기를 100으로 설정한다.
AxcTriggerSetBlock(0, 100., 20000, 100.);

AxcTriggerGetBlock

Purpose

지정 CNT 채널의 위치 주기 모드 상한/하한 위치 및 거리 주기 값을 확인한다.

Format

C++
DWORD AxcTriggerGetBlock(long lChannelNo, double *dpLower, double *dpUpper, double *dpABSod);
C#
uint AxcTriggerGetBlock(int lChannelNo, ref double dpLower, ref double dpUpper, ref double dpABSod);

Parameters

[in/out] Name [Init Value] Explanation
[in]lChannelNo 모듈 번호 (0 ~ N-1), N : 전체 CNT 채널 개수
[out]dpLowerPosition 트리거 기능 적용 하한 위치 값(AxcMotSetMoveUnitPerPulse 단위)
[out]dpUpperPosition 트리거 기능 적용 상한 위치 값(AxcMotSetMoveUnitPerPulse 단위)
[out]dpABSod 주기 트리거 기능을 위한 거리 주기 값(AxcMotSetMoveUnitPerPulse 단위)

Return Values

[0000] AXT_RT_SUCCESS : AXL 라이브러리 초기화 성공, 연결 상태 정상
[1053] AXT_RT_NOT_OPEN : 라이브러리 초기화 실패
[3251] AXT_RT_CNT_NOT_MODULE : CNT 모듈 없음
[3302] AXT_RT_CNT_INVALID_CHANNEL_NO : 유효하지 않은 CNT 채널 번호
[1152] AXT_RT_NETWORK_ERROR : network slave 타입 CNT 모듈 연결 상태 문제 발생

Description

지정 CNT 채널의 트리거 기능을 사용하기 위한 하한/상한 위치 값을 확인한다. 또한 주기 위치 트리거 방식에 사용되는 거리 주기 값도 함께 확인한다.

주의 사항

트리거 기능 적용 하한 위치 값 < 트리거 기능 적용 상한 위치 값

예제 코드

// 트리거 범위를 100 ~ 20000로, 거리 주기를 100으로 설정한다.
AxcTriggerSetBlock(0, 100., 20000, 100.);

// 트리거 범위, 거리 주기를 확인한다.
double dLowerPos, dUpperPos, dDisPeriod;
AxcTriggerGetBlock(0, &dLowerPos, &dUpperPos, &dDisPeriod);

AxcTriggerSetTime

Purpose

지정 CNT 채널의 트리거 출력 펄스 폭을 설정한다.

Format

C++
DWORD AxcTriggerSetTime(long lChannelNo, double dTrigTime);
C#
uint AxcTriggerSetTime(int lChannelNo, double dTrigTime);

Parameters

[in/out] Name [Init Value] Explanation
[in]lChannelNo 모듈 번호 (0 ~ N-1), N : 전체 CNT 채널 개수
[in]dTrigTime 트리거 펄스 폭(단위 : uSec)

Return Values

[0000] AXT_RT_SUCCESS : AXL 라이브러리 초기화 성공, 연결 상태 정상
[1053] AXT_RT_NOT_OPEN : 라이브러리 초기화 실패
[3251] AXT_RT_CNT_NOT_MODULE : CNT 모듈 없음
[3302] AXT_RT_CNT_INVALID_CHANNEL_NO : 유효하지 않은 CNT 채널 번호
[1152] AXT_RT_NETWORK_ERROR : network slave 타입 CNT 모듈 연결 상태 문제 발생

Description

지정 CNT 채널의 트리거 출력 펄스의 폭(시간)을 uSec 단위로 설정한다.

예제 코드

// 트리거 펄스 폭을 1mSec로 설정한다.
AxcTriggerSetTime (0, 1000);

AxcTriggerGetTime

Purpose

지정 CNT 채널의 트리거 출력 펄스 폭을 확인한다.

Format

C++
DWORD AxcTriggerGetTime(long lChannelNo, double* dpTrigTime);
C#
uint AxcTriggerGetTime(int lChannelNo, ref double dpTrigTime);

Parameters

[in/out] Name [Init Value] Explanation
[in]lChannelNo 모듈 번호 (0 ~ N-1), N : 전체 CNT 채널 개수
[out]dpTrigTime 트리거 펄스 폭(단위 : uSec)

Return Values

[0000] AXT_RT_SUCCESS : AXL 라이브러리 초기화 성공, 연결 상태 정상
[1053] AXT_RT_NOT_OPEN : 라이브러리 초기화 실패
[3251] AXT_RT_CNT_NOT_MODULE : CNT 모듈 없음
[3302] AXT_RT_CNT_INVALID_CHANNEL_NO : 유효하지 않은 CNT 채널 번호
[1152] AXT_RT_NETWORK_ERROR : network slave 타입 CNT 모듈 연결 상태 문제 발생

Description

지정 CNT 채널의 트리거 출력 펄스의 폭(시간)을 uSec 단위로 확인한다.

예제 코드

// 트리거 펄스 폭을 확인한다.
double dTime;
AxcTriggerGetTime(0, &dTime);

AxcTriggerSetLevel

Purpose

지정 CNT 채널의 트리거 펄스 신호의 출력 레벨을 설정한다.

Format

C++
DWORD AxcTriggerSetLevel(long lChannelNo, DWORD uLevel);
C#
uint AxcTriggerSetLevel(int lChannelNo, uint uLevel);

Parameters

[in/out] Name [Init Value] Explanation
[in]lChannelNo 모듈 번호 (0 ~ N-1), N : 전체 CNT 채널 개수
[in]uLevel 트리거 펄스 출력 레벨 설정
[00h] : 트리거 출력 펄스 레벨(LOW), 출력하지 않을 때(HIGH)
[01h] : 트리거 출력 펄스 레벨(HIGH), 출력하지 않을 때(LOW)

Return Values

[0000] AXT_RT_SUCCESS : AXL 라이브러리 초기화 성공, 연결 상태 정상
[1053] AXT_RT_NOT_OPEN : 라이브러리 초기화 실패
[3251] AXT_RT_CNT_NOT_MODULE : CNT 모듈 없음
[3302] AXT_RT_CNT_INVALID_CHANNEL_NO : 유효하지 않은 CNT 채널 번호
[1152] AXT_RT_NETWORK_ERROR : network slave 타입 CNT 모듈 연결 상태 문제 발생

Description

지정 CNT 채널의 트리거 펄스 신호의 출력 레벨을 설정한다.

예제 코드

// 0채널의 트리거 출력 레벨을 HIGH로 설정한다.
AxcTriggerSetLevel(0, 1);

AxcTriggerGetLevel

Purpose

지정 CNT 채널의 트리거 펄스 신호의 출력 레벨을 확인한다.

Format

C++
DWORD AxcTriggerGetLevel(long lChannelNo, DWORD* upLevel);
C#
uint AxcTriggerGetLevel(int lChannelNo, ref uint upLevel);

Parameters

[in/out] Name [Init Value] Explanation
[in]lChannelNo 모듈 번호 (0 ~ N-1), N : 전체 CNT 채널 개수
[out]upLevel 트리거 펄스 출력 레벨 설정
[00h] : 트리거 출력 펄스 레벨(LOW), 출력하지 않을 때(HIGH)
[01h] : 트리거 출력 펄스 레벨(HIGH), 출력하지 않을 때(LOW)

Return Values

[0000] AXT_RT_SUCCESS : AXL 라이브러리 초기화 성공, 연결 상태 정상
[1053] AXT_RT_NOT_OPEN : 라이브러리 초기화 실패
[3251] AXT_RT_CNT_NOT_MODULE : CNT 모듈 없음
[3302] AXT_RT_CNT_INVALID_CHANNEL_NO : 유효하지 않은 CNT 채널 번호
[1152] AXT_RT_NETWORK_ERROR : network slave 타입 CNT 모듈 연결 상태 문제 발생

Description

지정 CNT 채널의 트리거 펄스 신호의 출력 레벨을 확인한다.

예제 코드

// 0번째 채널에 트리거 출력 레벨을 확인.
DWORD uLevel;
AxcTriggerGetLevel(0, &uLevel);

AxcTriggerSetFreq

Purpose

지정 CNT 채널의 시간 주기 트리거 기능을 위한 주파수를 설정한다.

Format

C++
DWORD AxcTriggerSetFreq(long lChannelNo, DWORD uFreqency);
C#
uint AxcTriggerSetFreq(int lChannelNo, uint uFreqency);

Parameters

[in/out] Name [Init Value] Explanation
[in]lChannelNo 모듈 번호 (0 ~ N-1), N : 전체 CNT 채널 개수
[in]uFreqency 시간 주기 트리거 기능을 위한 주파수(1Hz ~ 500KHz) 설정(단위 :Hz)

Return Values

[0000] AXT_RT_SUCCESS : AXL 라이브러리 초기화 성공, 연결 상태 정상
[1053] AXT_RT_NOT_OPEN : 라이브러리 초기화 실패
[3251] AXT_RT_CNT_NOT_MODULE : CNT 모듈 없음
[3302] AXT_RT_CNT_INVALID_CHANNEL_NO : 유효하지 않은 CNT 채널 번호
[1152] AXT_RT_NETWORK_ERROR : network slave 타입 CNT 모듈 연결 상태 문제 발생

Description

지정 CNT 채널의 시간 주기 트리거 기능을 위한 주파수를 설정한다. AxcTriggerSetFunction으로 시간주기 트리거 기능을 설정하였을 경우 사용되는 설정 값이다.

예제 코드

// 0번째 채널에 트리거 시간 주기를 위한 주파수(1KHz)를 설정한다.
AxcTriggerSetFreq(0, 1000);
DWORD uFreq;

// 0번째 채널에 트리거 시간 주기를 위한 주파수를 확인한다.
AxcTriggerGetFreq (0, & uFreq);

AxcTriggerGetFreq

Purpose

지정 CNT 채널의 시간 주기 트리거 기능을 위한 주파수를 설정한다.

Format

C++
DWORD AxcTriggerGetFreq(long lChannelNo, DWORD* upFreqency);
C#
uint AxcTriggerGetFreq(int lChannelNo, ref uint upFreqency);

Parameters

[in/out] Name [Init Value] Explanation
[in]lChannelNo 모듈 번호 (0 ~ N-1), N : 전체 CNT 채널 개수
[out]upFreqency 시간 주기 트리거 기능을 위한 주파수(1Hz ~ 500KHz) 설정(단위 :Hz)

Return Values

[0000] AXT_RT_SUCCESS : AXL 라이브러리 초기화 성공, 연결 상태 정상
[1053] AXT_RT_NOT_OPEN : 라이브러리 초기화 실패
[3251] AXT_RT_CNT_NOT_MODULE : CNT 모듈 없음
[3302] AXT_RT_CNT_INVALID_CHANNEL_NO : 유효하지 않은 CNT 채널 번호
[1152] AXT_RT_NETWORK_ERROR : network slave 타입 CNT 모듈 연결 상태 문제 발생

Description

지정 CNT 채널의 시간 주기 트리거 기능을 위한 주파수를 확인한다. AxcTriggerSetFunction으로 시간 주기 트리거 기능을 설정하였을 경우 사용되는 설정 값이다.

예제 코드

// 0번째 채널에 트리거 시간 주기를 위한 주파수(1KHz)를 설정한다.
AxcTriggerSetFreq(0, 1000);
DWORD uFreq;

// 0번째 채널에 트리거 시간 주기를 위한 주파수를 확인한다.
AxcTriggerGetFreq (0, & uFreq);

AxcTriggerSetEnable

Purpose

지정 CNT 채널의 트리거 출력 기능을 활성화/비활성화 한다.

Format

C++
DWORD AxcTriggerSetEnable(long lChannelNo, DWORD uUsage);
C#
uint AxcTriggerSetEnable(int lChannelNo, uint uUsage);

Parameters

[in/out] Name [Init Value] Explanation
[in]lChannelNo 모듈 번호 (0 ~ N-1), N : 전체 CNT 채널 개수
[in]uUsage 트리거 기능(트리거 신호 출력) 활성화/비활성화

Return Values

[0000] AXT_RT_SUCCESS : AXL 라이브러리 초기화 성공, 연결 상태 정상
[1053] AXT_RT_NOT_OPEN : 라이브러리 초기화 실패
[3251] AXT_RT_CNT_NOT_MODULE : CNT 모듈 없음
[3302] AXT_RT_CNT_INVALID_CHANNEL_NO : 유효하지 않은 CNT 채널 번호
[1152] AXT_RT_NETWORK_ERROR : network slave 타입 CNT 모듈 연결 상태 문제 발생

Description

지정 CNT 모듈의 트리거 기능을 활성화하여 지정 위치 또는 주기 위치에 따라 트리거 출력 신호에 펄스를 발생시키거나, 트리거 기능을 비활성화하여 트리거 출력 신호 발생을 중지한다. 트리거 기능은 CNT 모듈의 각 채널의 현재 위치 값을 기준으로 절대 위치 또는 주기 위치에 따라 트리거 신호를 출력하는 것이다. 이때 설정된 트리거 기능을 활성화하고 비활성화하기 위해 AxcTriggerSetEnable를 사용한다. 트리거 기능을 비활성화 할 경우 트리거 출력 신호는 AxcTriggerSetLevel로 설정된 Active 레벨과 반대의 레벨의 신호가 유지되게 된다.

예제 코드

// 0번 채널의 트리거 신호 기능을 활성화한다.
AxcTriggerSetEnable(0, ENABLE);

AxcTriggerGetEnable

Purpose

지정 CNT 채널의 트리거 출력 기능 활성화 상태를 확인한다.

Format

C++
AxcTriggerGetEnable(long lChannelNo, DWORD* upUsage);
C#
uint AxcTriggerGetEnable(int lChannelNo, ref uint upUsage);

Parameters

[in/out] Name [Init Value] Explanation
[in]lChannelNo 모듈 번호 (0 ~ N-1), N : 전체 CNT 채널 개수
[out]upUsage 트리거 기능(트리거 신호 출력) 활성화/비활성화 상태 확인

Return Values

[0000] AXT_RT_SUCCESS : AXL 라이브러리 초기화 성공, 연결 상태 정상
[1053] AXT_RT_NOT_OPEN : 라이브러리 초기화 실패
[3251] AXT_RT_CNT_NOT_MODULE : CNT 모듈 없음
[3302] AXT_RT_CNT_INVALID_CHANNEL_NO : 유효하지 않은 CNT 채널 번호
[1152] AXT_RT_NETWORK_ERROR : network slave 타입 CNT 모듈 연결 상태 문제 발생

Description

지정 CNT 모듈의 트리거 기능을 활성화하여 지정 위치 또는 주기 위치에 따라 트리거 출력 신호에 펄스를 발생시키거나, 트리거 기능을 비활성화하여 트리거 출력 신호 발생을 중지한다. 트리거 기능은 CNT 모듈의 각 채널의 현재 위치 값을 기준으로 절대 위치 또는 주기 위치에 따라 트리거 신호를 출력하는 것이다. 이때 설정된 트리거 기능을 활성화하고 비활성화하기 위해 AxcTriggerSetEnable를 사용한다. 트리거 기능을 비활성화할 경우 트리거 출력 신호는 AxcTriggerSetLevel로 설정된 Active 레벨과 반대의 레벨의 신호가 유지되게 된다.

예제 코드

// 0번째 채널에 트리거 기능 활성화 상태를 확인한다.
DWORD uUsage;
AxcTriggerGetEnable(0, &uUsage);

AxcTriggerSetAbs

Purpose

지정 CNT 채널의 절대 위치 트리거 기능을 위한 위치 정보를 설정한다

Format

C++
DWORD AxcTriggerSetAbs(long lChannelNo, DWORD uTrigNum, DWORD* uTrigPos, DWORD uDirection);
C#
uint AxcTriggerSetAbs(int lChannelNo, uint uTrigNum, ref uint uTrigPos, uint uDirection);

Parameters

[in/out] Name [Init Value] Explanation
[in]lChannelNo 모듈 번호 (0 ~ N-1), N : 전체 CNT 채널 개수
[in]uTrigNum 절대 위치 트리거 기능을 위한 위치 정보의 개수(제품에 따른 다르게 적용)
[in]uTrigPos 절대 위치 트리거 기능을 위한 위치 정보(제품에 따른 다르게 적용)
[in]uDirection 절대 위치 트리거 기능을 위한 위치 정보 기입 방향
(0 : 위치 증가 방향 기입, 1: 위치 감소 방향 위치 기입)

Return Values

[0000] AXT_RT_SUCCESS : AXL 라이브러리 초기화 성공, 연결 상태 정상
[1053] AXT_RT_NOT_OPEN : 라이브러리 초기화 실패
[3251] AXT_RT_CNT_NOT_MODULE : CNT 모듈 없음
[3302] AXT_RT_CNT_INVALID_CHANNEL_NO : 유효하지 않은 CNT 채널 번호
[1152] AXT_RT_NETWORK_ERROR : network slave 타입 CNT 모듈 연결 상태 문제 발생

Description

지정 CNT 채널의 절대 위치 트리거 기능을 사용하기 위한 정보를 설정한다. 각 제품마다 절대 위치 설정 방법이 다르게 적용되므로 주의가 필요하다.

  • AXT_SIO_CN2CH(VER : 0xB0) 의 절대 위치 정보 설정 방식

절대 위치 정보는 각 위치에 해당하는 트리거 유/무에 대한 비트 형식으로 설정되어야 한다.
AxcTriggerSetBlockLowerPos에서 시작하여 절대 위치 정보(uTrigPos) 하나당 32개의 펄스 단위 위치에 대한 정보가 비트 형식으로 사용되게 된다.
예를 들어, AxcTriggerSetBlockLowerPos로 절대 위치 트리거 위치를 1000으로 설정하고, 절대위치 트리거 위치가 1000, 1001, 1002, 1003, 1031의 위치라고 한다면 uTrigNum을 1로 uTrigPos[0]을 0x8000000F로 설정하여야 한다.

32 펄스 단위의 위치마다 uTrigPos가 하나씩 할당되며, 해당 32 펄스 단위 범위 안의 uTrigPos의 값에서 각 비트에 할당된 위치 값이 ‘1’이면 트리거 펄스가 출력되게 된다. 모션 구동과 연계하여 트리거 정보 입력 시간이 오래 걸릴 경우 대기 시간을 최소화하기 위해 트리거 정보 입력 후 일정 시간 대기 후 모션 구동을 동시에 진행할 수 있는데, 이 경우 모션의 이동 방향에 따라 트리거 정보의 갱신 방향도 일치하여야 한다.

예를 들어, CCW(-방향)으로 모터를 구동하기 전 트리거 정보 입력은 uDirection에 ‘1’을 설정하여 사용하여야 한다. uTrigNum은 131072(0x20000) 개를 넘을 수 없다. 또한 32비트 단위로 위치 정보가 기입되기 때문에 AxcTriggerSetBlockLowerPos와 AxcTriggerSetBlockUpperPos는 32 펄스 단위로 나누어 떨어지는 위치로 설정하는 것을 권장하며, 실제 트리거 영역보다 넓게 설정된 위치 구간은 해당 영역의 트리거 정보(uTrigPos)를 ‘0’으로 설정하여 무시하도록 설정하면 된다.

  • 트리거 설정 예

AxcTriggerSetBlockLowerPos : 10
AxcTriggerSetBlockUpperPos : 60
uTrigNum : 2
uDirection : 0
트리거 위치 : (11, 12, 15, 20, 21, 22, 23, 40, 41, 42, 43, 50, 51, 56) 일때 uTrigPos는

uTrigPos[0] : 11000000 // 00000000 // 00111100 // 00100110 -> 0xC0003C26
uTrigPos[1] : 00000000 // 00000000 // 01000011 // 00000011 -> 0x00004303

절대 위치 변경 빈도는 최고 1Mcount/Sec 를 넘을 수 없으며, 특히 AxcTriggerSetTime 으로 설정된 트리거 펄스 폭 동안 절대 위치 정보에 의해 발생된 트리거 신호는 무시될 수 있다.

  • AXT_SIO_HPC4 의 절대 위치 정보 설정 방식

절대 위치 값을 지정하는 방식으로 uTrigNum 개수만큼 uTrigpos에 펄스 단위의 위치를 설정하면 된다.
이때 uTrigNum의 최대 값은 500 이며, uDirection은 사용되지 않는다.

<트리거 설정 예>

트리거 위치 : (11, 12, 15, 20, 21, 22, 23, 40, 41, 42, 43, 50, 51, 56) 일 때

uTrigNum : 14
uTrigPos[0] = 11, uTrigPos[1] = 12, uTrigPos[2] = 15, uTrigPos[3] = 20, uTrigPos[4] = 21,
uTrigPos[5] = 22, uTrigPos[6] = 23, uTrigPos[7] = 40, uTrigPos[8] = 41, uTrigPos[9] = 42,
uTrigPos[10] = 43, uTrigPos[11] = 50, uTrigPos[12] = 51, uTrigPos[13] = 56

절대 위치 변경 빈도는 최고 0.5Mcount/Sec 를 넘을 수 없으며, 특히 AxcTriggerSetTime 으로 설정된 트리거 펄스 폭 동안 절대 위치 정보에 의해 발생된 트리거 신호는 무시될 수 있다.

  • AXT_SIO_RCNT2SIIIH, AXT_SIO_RCNT2SIIIH_R, AXT_SIO_RCNT2RTEX, AXT_SIO_RCNT2MLIII 의 절대 위치 정보 설정 방식

절대 위치 값을 지정하는 방식으로 uTrigNum 개수만큼 uTrigpos에 펄스 단위의 위치를 설정하면 된다.
이때 uTrigNum의 최대 값은 512 이며, uDirection은 사용되지 않는다. 그 외 트리거 설정 방식을 AXT_SIO_HPC4 동일하다.

절대 위치 변경 빈도는 최고 0.5Mcount/Sec 를 넘을 수 없으며, 특히 AxcTriggerSetTime 으로 설정된 트리거 펄스 폭 동안 절대 위치 정보에 의해 발생된 트리거 신호는 무시될 수 있다.

예제 코드

// 0번째 채널에 절대 위치 트리거를 설정한다.(SIO-HPC4)
AxcTriggerSetEnable(0, FALSE);
AxcTriggerSetFunction(0, 2);
uTrigPos[0] = 11;
uTrigPos[1] = 12;
uTrigPos[2] = 15;
uTrigPos[3] = 20;
uTrigPos[4] = 21;
uTrigPos[5] = 22;
uTrigPos[6] = 23;
uTrigPos[7] = 40;
uTrigPos[8] = 41;
uTrigPos[9] = 42;
uTrigPos[10] = 43;
uTrigPos[11] = 50;
uTrigPos[12] = 51;
uTrigPos[13] = 56;
AxcTriggerSetAbs(0, 14, uTrigPos, 0);
AxcTriggerSetEnable(0, TRUE);

AxcTriggerSetAbsDouble

Purpose

지정 CNT 채널의 절대 위치 트리거 기능을 위한 double 형 위치 정보를 설정한다.

Format

C++
DWORD AxcTriggerSetAbsDouble(long lChannelNo, DWORD uTrigNum, double* dTrigPos, DWORD uDirection = 0);
C#
uint AxcTriggerSetAbsDouble(int lChannelNo, uint uTrigNum, ref double dTrigPos, uint uDirection = 0);

Parameters

[in/out] Name [Init Value] Explanation
[in]lChannelNo 모듈 번호 (0 ~ N-1), N : 전체 CNT 채널 개수
[in]uTrigNum 절대 위치 트리거 기능을 위한 위치 정보의 개수
[in]dTrigPos 절대 위치 트리거 기능을 위한 위치 정보
[in]uDirection 주의) AXT_SIO_CN2CH(VER : 0xB0) 전용
절대 위치 트리거 기능을 위한 위치 정보 기입 순서(= Data를 Write 하는 순서)
0: 배열 순
(uTrigPos[0], uTrigPos[1], ... , uTrigPos[uTrigNum-1])
1: 배열의 역순
(uTrigPos[uTrigNum-1], uTrigPos[uTrigNum-2], ... , uTrigPos[0])

Return Values

[0000] AXT_RT_SUCCESS : 함수 수행 성공
[1053] AXT_RT_NOT_OPEN : 라이브러리 초기화 실패
[1152] AXT_RT_NETWORK_ERROR : Network Slave 타입 CNT 모듈 연결 상태 문제 발생
[3251] AXT_RT_CNT_NOT_MODULE : CNT 모듈 없음
[3302] AXT_RT_CNT_INVALID_CHANNEL_NO : 유효하지 않은 채널 번호
[3306] AXT_RT_CNT_INVALID_VALUE: (SIO-CN2CH(VER: 0xB0) 한정) Trigger Data Range 가 4,194,304 를 초과함
(Trigger Data 의 첫 번째 정보와 마지막 정보 간 펄스 범위가 4,194,304 를 초과할 수 없음)

Description

지정 CNT 채널의 절대 위치 트리거 기능을 사용하기 위한 정보를 설정한다.

AXT_SIO_CN2CH(VER : 0xB0) 의 절대 위치 정보 설정 방식

절대 위치 값을 지정하는 방식으로 uTrigNum 개수만큼 dTrigpos를 설정하면 된다.
이때 uTrigNum의 최대 값은 4,194,304(=0x20000개*32bit)로, dTrigPos를 4,194,304개까지 등록할 수 있다.

AxcTriggerSetAbsDouble은 절대 위치 정보를 트리거 유/무에 대한 32 펄스 단위 비트 형식으로 사용자가 직접 계산하여야 하는 AxcTriggerSetAbs 함수의 번거로움을 개선한 함수로, 절대 위치 트리거 기능을 보다 직관적으로 사용할 수 있다. 트리거 설정 방법은 아래 예시를 참고하면 된다.

또한, 모션의 이동 방향과 트리거 정보의 갱신 방향이 일치해야 사용자가 설정한 트리거 정보를 누락 없이 수행할 수 있다. 예를 들어 dTrigPos 배열의 data가 오름차순일 경우 CCW(-방향)로 모터를 구동하려면 uDirection을 ‘1’로 설정하여 모션의 이동 방향과 트리거 정보의 갱신 방향을 일치시켜 주어야 한다.

또한 SIO-CN2CH(0xB0) 모듈은 AxcTriggerSetAbsDouble 함수 호출 시 사용자가 입력한 트리거 정보를 바탕으로 한 최적의 LowerPos와 UpperPos를 자동으로 계산해주기 때문에 사용자가 별도로 LowerPos와 UpperPos를 지정해줄 필요가 없다.

트리거 설정 예제 1
uTrigNum : 15
트리거 위치 : (10, 11, 12, 15, 20, 21, 22, 23, 40, 41, 42, 43, 50, 51, 56) 일 때

// 0번 채널에 절대 위치 트리거를 설정한다.(SIO-CN2CH(0xB0))
long lChannelNo = 0;
DWORD uTrigMode = 0;        // [00h: Absolute Mode]
double dTrigTime = 70.0;    // 70us
DWORD uTrigNum = 15;
double dTrigPos[15] = {0, };
DWORD uDirection = 0;       // 위치 정보 기입 - [00h: 배열 순] // dTrigPos[0], dTrigPos[1], ...

AxcTriggerSetEnable(lChannelNo, FALSE);
AxcTriggerSetFunction(lChannelNo, uTrigMode);
AxcTriggerSetTime(lChannelNo, dTrigTime);

dTrigPos[0] = 10; dTrigPos[1] = 11; dTrigPos[2] = 12; dTrigPos[3] = 15;
dTrigPos[4] = 20; dTrigPos[5] = 21; dTrigPos[6] = 22; dTrigPos[7] = 23;
dTrigPos[8] = 40; dTrigPos[9] = 41; dTrigPos[10] = 42; dTrigPos[11] = 43;
dTrigPos[12] = 50; dTrigPos[13] = 51; dTrigPos[14] = 56;

AxcTriggerSetAbsDouble(lChannelNo, uTrigNum, dTrigPos, uDirection);

// AxcTriggerSetAbsDouble 함수 호출 후 AxcTriggerGetBlockLowerPos/UpperPos 함수로 LowerPos, UpperPos 확인 시 LowerPos는 10, UpperPos는 73임을 확인할 수 있다.
AxcTriggerSetEnable(lChannelNo, TRUE);

트리거 설정 예제 2
Unit/Pulse : 0.1 (1Pulse당 0.1unit)
트리거 위치 : (1.0, 1.1, 1.2, 1.5, 2.0, 2.1, 2.2, 2.3, 4.0, 4.1, 4.2, 4.3, 5.0, 5.1, 5.6) 일 때

// 0번 채널에 절대 위치 트리거를 설정한다.(SIO-CN2CH(0xB0))
long lChannelNo = 0;
DWORD uTrigMode = 0; // [00h: Absolute Mode]
double dUnitPerPulse = 0.1; // 1Pulse당 0.1unit
double dTrigTime = 70.0; // 70us
DWORD uTrigNum = 15;
double dTrigPos[15] = {0, };
DWORD uDirection = 1; // 위치 정보 기입 - [01h: 배열의 역순] // dTrigPos[14], dTrigPos[13], ...

AxcTriggerSetEnable(lChannelNo, FALSE);
AxcMotSetMoveUnitPerPulse(lChannelNo, dUnitPerPulse);
AxcTriggerSetFunction(lChannelNo, uTrigMode);
AxcTriggerSetTime(lChannelNo, dTrigTime);

dTrigPos[0] = 1.0; dTrigPos[1] = 1.1; dTrigPos[2] = 1.2; dTrigPos[3] = 1.5;
dTrigPos[4] = 2.0; dTrigPos[5] = 2.1; dTrigPos[6] = 2.2; dTrigPos[7] = 2.3;
dTrigPos[8] = 4.0; dTrigPos[9] = 4.1; dTrigPos[10] = 4.2; dTrigPos[11] = 4.3;
dTrigPos[12] = 5.0; dTrigPos[13] = 5.1; dTrigPos[14] = 5.6;

AxcTriggerSetAbsDouble(lChannelNo, uTrigNum, dTrigPos, uDirection);

// AxcTriggerSetAbsDouble 함수 호출 후 AxcTriggerGetBlockLowerPos/UpperPos 함수로 LowerPos, UpperPos 확인 시 LowerPos는 1.0, UpperPos는 7.3임을 확인할 수 있다.
AxcTriggerSetEnable(lChannelNo, TRUE);
주의) 절대 위치 변경 빈도는 최고 1Mcount/Sec 를 넘을 수 없으며, 특히 AxcTriggerSetTime 으로 설정된 트리거 펄스 폭 동안 절대 위치 정보에 의해 발생된 트리거 신호는 무시될 수 있다.

AXT_SIO_RCNT2RTEX, AXT_SIO_RCNT2MLIII, AXT_SIO_RCNT2SIIIH_R 의 절대 위치 정보 설정 방식

절대 위치 값을 지정하는 방식으로 uTrigNum 개수만큼 dTrigpos를 설정하면 된다.
이때 uTrigNum의 최대 값은 512 이며, uDirection은 사용되지 않는다.

트리거 설정 예
Unit/Pulse : 0.1(1Pulse당 0.1unit)
트리거 위치 : (1.0, 1.1, 1.2, 1.5, 2.0, 2.1, 2.2, 2.3, 4.0, 4.1, 4.2, 4.3, 5.0, 5.1, 5.6) 일 때

// 0번 채널에 절대 위치 트리거를 설정한다.
long lChannelNo = 0;
DWORD uTrigMode = 0; // [00h: Absolute Mode]
double dUnitPerPulse = 0.1; // 1Pulse당 0.1unit
double dTrigTime = 70.0; // 70us
double dLowerPos, dUpperPos = 0.0;
DWORD uTrigNum = 15;
double dTrigPos[15] = {0, };

AxcTriggerSetEnable(lChannelNo, FALSE);
AxcMotSetMoveUnitPerPulse(lChannelNo, dUnitPerPulse);
AxcTriggerSetFunction(lChannelNo, uTrigMode);
AxcTriggerSetTime(lChannelNo, dTrigTime);

dTrigPos[0] = 1.0; dTrigPos[1] = 1.1; dTrigPos[2] = 1.2; dTrigPos[3] = 1.5;
dTrigPos[4] = 2.0; dTrigPos[5] = 2.1; dTrigPos[6] = 2.2; dTrigPos[7] = 2.3;
dTrigPos[8] = 4.0; dTrigPos[9] = 4.1; dTrigPos[10] = 4.2; dTrigPos[11] = 4.3;
dTrigPos[12] = 5.0; dTrigPos[13] = 5.1; dTrigPos[14] = 5.6;
dLowerPos = 0.0; // 모든 Trigger Data를 포함하는 값으로 LowerPos, UpperPos를 설정해주어야 함
dUpperPos = 6.0;

AxcTriggerSetBlockLowerPos(lChannelNo, dLowerPos);
AxcTriggerSetBlockUpperPos(lChannelNo, dUpperPos);
AxcTriggerSetAbsDouble(lChannelNo, uTrigNum, dTrigPos); // SIO-CN2CH(0xB0)를 제외한 카운터 모듈은 uDirection 사용하지 않음
AxcTriggerSetEnable(lChannelNo, TRUE);
주의) 절대 위치 변경 빈도는 최고 1Mcount/Sec를 넘을 수 없으며, 특히 AxcTriggerSetTime으로 설정된 트리거 펄스 폭 동안 절대 위치 정보에 의해 발생된 트리거 신호는 무시될 수 있다.