Skip to content

입력 신호 및 카운터 값 정보

Function Description
AxcSignalSetEncInputMethod 지정 CNT 채널의 Encoder 입력 방식을 설정한다.
AxcSignalGetEncInputMethod 지정 CNT 채널의 Encoder 입력 방식을 확인한다.
AxcSignalSetEncReverse 지정 CNT 채널의 카운터 증가 감소 방향을 반전한다.
AxcSignalGetEncReverse 지정 CNT 채널의 카운터 증가 감소 방향 설정을 확인한다.
AxcSignalSetEncSource 지정 CNT 채널의 카운터 입력 신호원을 설정한다.
AxcSignalGetEncSource 지정 CNT 채널의 카운터 입력 신호원을 확인한다.
AxcStatusSetActPos 지정 CNT 채널의 현재 카운터 값을 설정한다.
AxcStatusGetActPos 지정 CNT 채널의 현재 카운터 값을 확인한다.
AxcMotSetMoveUnitPerPulse 지정 CNT 채널의 위치 정보 단위를 설정한다.
AxcMotGetMoveUnitPerPulse 지정 CNT 채널의 위치 정보 단위를 확인한다.

AxcSignalSetEncInputMethod

Purpose

지정 CNT 채널의 Encoder 입력 방식을 설정한다.

Format

C++
DWORD AxcSignalSetEncInputMethod(long lChannelNo, DWORD uMethod);
C#
uint AxcSignalSetEncInputMethod(int lChannelNo, uint uMethod);

Parameters

[in/out] Name [Init Value] Explanation
[in]lChannelNo 모듈 번호 (0 ~ N-1), N : 전체 CNT 채널 개수
[in]uMethod Encoder(CNT 입력 신호) 방식 설정, 제품 마다 다른 값

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 채널의 카운터 대상 신호의 입력 방식을 지정한다. 각 CNT 모듈 ID 마다 신호 입력 방식에 따라 기능이 상이하므로 주의하여야 한다. 아래는 제품별 입력 방식 설정 값에 대한 내용이다.

모듈 ID 유효한 입력 방식 설정 값 모듈
AXT_SIO_CN2CH 0x00~0x03
- [00h]정방향 Up/Down 1체배
- [01h]정방향 2상 1체배
- [02h]정방향 2상 2체배
- [03h]정방향 2상 4체배
SIO-CN2CH 2ch, local bus type
AXT_SIO_HPC4 SIO-HPC4 4ch, local bus type
AXT_SIO_RCNT2SIIIH N3SIIIH-CNT2 2ch, network slave
AXT_SIO_RCNT2SIIIH_R N3SIIIH-CNT2 2ch, network slave
AXT_SIO_RCNT2RTEX N3RTEX-CNT2 2ch, network slave
AXT_SIO_RCNT2MLIII N3MLIII-CNT2 2ch, network slave
AXT_SIO_RCNT2MLII 0x00 ~ 0x03, 0x08, 0x09, 0x0A
- [00h]정방향 Up/Down 1체배
- [01h]정방향 2상 1체배
- [02h]정방향 2상 2체배
- [03h]정방향 2상 4체배
- [08h]정방향 Pulse/Dir
- [09h]정방향 Pulse/Dir 2체배
- [0Ah]정방향 Up/Down 2체배
PL2900 2ch, network slave(3rd party)

설정된 입력 방식에 대한 처리 방법은 다음의 그림과 같다.

input-signal

input-signal

예제 코드

// 0번째 채널에 Encoder 입력 방식을 2상 4체배 방식으로 설정.
AxcSignalSetEncInputMethod (0, ObverseSqr4Mode);

// 0번째 채널에 Encoder 입력 방식을 확인.
DWORD uMethod;
AxcSignalGetEncInputMethod (0, &uMethod);

AxcSignalGetEncInputMethod

Purpose

지정 CNT 채널의 Encoder 입력 방식을 확인한다.

Format

C++
DWORD AxcSignalGetEncInputMethod(long lChannelNo, DWORD* upMethod);
C#
uint AxcSignalGetEncInputMethod(int lChannelNo, ref uint upMethod);

Parameters

[in/out] Name [Init Value] Explanation
[in]lChannelNo 모듈 번호 (0 ~ N-1), N : 전체 CNT 채널 개수
[out]upUpMethod Encoder(CNT 입력 신호) 방식 설정, 제품 마다 다른 값

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 모듈 ID 마다 신호 입력 방식에 따라 기능이 상이하므로 주의하여야 한다.

예제 코드

// 0번째 채널에 Encoder 입력 방식을 2상 4체배 방식으로 설정.
AxcSignalSetEncInputMethod (0, ObverseSqr4Mode);

// 0번째 채널에 Encoder 입력 방식을 확인.
DWORD Method;
AxcSignalGetEncInputMethod (0, &Method);

AxcSignalSetEncReverse

Purpose

지정 CNT 채널의 카운터 증가 감소 방향을 반전한다.

Format

C++
DWORD AxcSignalSetEncReverse(long lChannelNo, DWORD uReverse);
C#
uint AxcSignalSetEncReverse(int lChannelNo, uint uReverse);

Parameters

[in/out] Name [Init Value] Explanation
[in]lChannelNo 모듈 번호 (0 ~ N-1), N : 전체 CNT 채널 개수
[in]uReverse 카운터 방향 반전 설정(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

지정 CNT 채널의 카운터 증가 감소 방향을 반전한다. AxcSignalSetEncInputMethod 로 설정한 입력 신호에 대한 카운터의 증가/감소 방향이 반전된다.

주의 사항

AXT_SIO_RCNT2MLII(JEPMC-PL2900, MLII network slave) 모듈은 지원하진 않으며, PhaseA/B 의 결선을 서로 바꾸어 카운터 증가/감소 방향을 반전하여야 한다.

예제 코드

// 0번째 채널에 카운터 방향 반전 기능을 사용한다.
AxcSignalSetEncReverse (0, TRUE);

// 0번째 채널에 카운터 방향 반전 기능을 확인한다.
DWORD Method;
AxcSignalGetEncReverse (0, &Method);

AxcSignalGetEncReverse

Purpose

지정 CNT 채널의 카운터 증가 감소 방향 반전 설정 값을 확인한다.

Format

C++
DWORD AxcSignalGetEncReverse(long lChannelNo, DWORD* upReverse);
C#
uint AxcSignalGetEncReverse(int lChannelNo, ref uint upReverse);

Parameters

[in/out] Name [Init Value] Explanation
[in]lChannelNo 모듈 번호 (0 ~ N-1), N : 전체 CNT 채널 개수
[out]upReverse 카운터 방향 반전 상태(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

지정 CNT 채널의 카운터 증가 감소 방향 반전 설정 값을 확인한다.

예제 코드

// 0번째 채널에 카운터 방향 반전 기능을 사용한다.
AxcSignalSetEncReverse(0, TRUE);

// 0번째 채널에 카운터 방향 반전 기능을 확인한다.
DWORD Method;
AxcSignalGetEncReverse(0, &Method);

AxcSignalSetEncSource

Purpose

지정 CNT 채널의 카운터 입력 신호원을 설정한다.

Format

C++
DWORD AxcSignalSetEncSource(long lChannelNo, DWORD uSource);
C#
uint AxcSignalSetEncSource(int lChannelNo, uint uSource);

Parameters

[in/out] Name [Init Value] Explanation
[in]lChannelNo 모듈 번호 (0 ~ N-1), N : 전체 CNT 채널 개수
[in]uSource 카운터 입력 신호 원(0 : Phase A/B, 1: Phase Z)

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 채널의 카운터 입력 신호원을 설정한다.

uSource Value
0x0 Phase-A와 Phase-B 신호를 카운터 입력 신호로 설정됨.
0x1 Phase-Z 신호를 카운터 입력 신호로 설정됨.

주의 사항

AXT_SIO_CN2CH 와 AXT_SIO_HPC4 전용 함수이다.

예제 코드

// 0번째 채널에 카운터 입력 신호를 Phase-A/B 로 설정한다.
AxcSignalSetEncSource (0, 0);

// 0번째 채널에 카운터 입력 신호 확인한다.
DWORD uSource;
AxcSignalGetEncSource(0, &uSource);

AxcSignalGetEncSource

Purpose

지정 CNT 채널의 카운터 입력 신호원을 확인한다.

Format

C++
DWORD AxcSignalGetEncSource(long lChannelNo, DWORD* upSource);
C#
uint AxcSignalGetEncSource(int lChannelNo, ref uint upSource);

Parameters

[in/out] Name [Init Value] Explanation
[in]lChannelNo 모듈 번호 (0 ~ N-1), N : 전체 CNT 채널 개수
[out]upSource 카운터 입력 신호원(0 : Phase A/B, 1: Phase Z)

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 채널의 카운터 입력 신호원을 설정한다.

uSource Value
0x0 Phase-A와 Phase-B 신호를 카운터 입력 신호로 설정됨.
0x1 Phase-Z 신호를 카운터 입력 신호로 설정됨.

주의 사항

AXT_SIO_CN2CH 와 AXT_SIO_HPC4 전용 함수이다.

예제 코드

// 0번째 채널에 카운터 입력 신호를 Phase-A/B 로 설정한다.
AxcSignalSetEncSource (0, 0);

// 0번째 채널에 카운터 입력 신호 확인한다.
DWORD uSource;
AxcSignalGetEncSource (0, &uSource);

AxcStatusSetActPos

Purpose

지정 CNT 채널의 현재 카운터 값을 설정한다.

Format

C++
DWORD AxcStatusSetActPos(long lChannelNo, double dbActPos);
C#
uint AxcStatusSetActPos(int lChannelNo, double dbActPos);

Parameters

[in/out] Name [Init Value] Explanation
[in]lChannelNo 모듈 번호 (0 ~ N-1), N : 전체 CNT 채널 개수
[in]dActPos 설정 카운터 값(모듈 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 모듈 연결 상태 문제 발생

Description

지정 CNT 채널의 카운터 값을 설정한다. 설정 단위는 AxcMotSetMoveUnitPerPulse 를 사용하여 미리 지정되어야 한다.

모듈 ID 설정 카운터 범위
AXT_SIO_CN2CH(VER : 0xB0)
AXT_SIO_CN2CH(VER : 0xA6)
펄스 단위 : -2^27 ~ (2^27-1)
AXT_SIO_HPC4(VER < 0xB0) 펄스 단위 : -2^31 ~ (2^31-1)
AXT_SIO_RCNT2SIIIH
AXT_SIO_RCNT2SIIIH_R
AXT_SIO_RCNT2RTEX
AXT_SIO_RCNT2MLIII
펄스 단위 : -2^27 ~ (2^27-1)
AXT_SIO_RCNT2MLII 펄스 단위 : -2^31 ~ (2^31-1)

예제 코드

// 0채널 카운터 값을 1233.0으로 설정한다.
double dPos;
dPos = 1233.0;

AxcStatusSetActPos (0, &dPos)

AxcStatusGetActPos

Purpose

지정 CNT 채널의 현재 카운터 값을 확인한다.

Format

C++
DWORD AxcStatusGetActPos(long lChannelNo, double* dpActPos);
C#
uint AxcStatusGetActPos(int lChannelNo, ref double dpActPos);

Parameters

[in/out] Name [Init Value] Explanation
[in]lChannelNo 모듈 번호 (0 ~ N-1), N : 전체 CNT 채널 개수
[out]dpActPos 현재 카운터 값(모듈 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 모듈 연결 상태 문제 발생

Description

지정 CNT 채널의 카운터 값을 확인한다. AxcMotSetMoveUnitPerPulse 로 설정된 단위를 기준으로 현재 카운터 값을 확인할 수 있다. 각 모듈 ID에 따라 펄스 단위의 카운터 값의 범위는 다음과 같다.

모듈 ID 카운터 범위 (펄스 단위)
AXT_SIO_CN2CH(VER : 0xB0) -2^31 ~ (2^31-1)
AXT_SIO_CN2CH(VER : 0xA6) -2^31 ~ (2^31-1)
AXT_SIO_HPC4(VER < 0xB0) -2^31 ~ (2^31-1)
AXT_SIO_RCNT2SIIIH -2^27 ~ (2^27-1)
AXT_SIO_RCNT2SIIIH_R
AXT_SIO_RCNT2RTEX
AXT_SIO_RCNT2MLIII
AXT_SIO_RCNT2MLII -2^31 ~ (2^31-1)

예제 코드

// 0채널 카운터 값 확인.
double dPos;
AxcStatusGetActPos (0, &dPos);

AxcMotSetMoveUnitPerPulse

Purpose

지정 CNT 채널의 위치 정보 단위를 설정한다.

Format

C++
DWORD AxcMotSetMoveUnitPerPulse(long lChannelNo, double dMoveUnitPerPulse);
C#
uint AxcMotSetMoveUnitPerPulse(int lChannelNo, double dMoveUnitPerPulse);

Parameters

[in/out] Name [Init Value] Explanation
[in]lChannelNo 모듈 번호 (0 ~ N-1), N : 전체 CNT 채널 개수
[in]dMoveUnitPerPulse 위치 정보 단위 설정 값

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 채널에 위치 정보 단위를 설정한다.

Ex) 볼스크류와 로터리 모터로 구성된 기구물에서 볼스크류 리드 피치가 10mm이고 로터리 모터의 1회전당 10000펄스 일 때 CNT 모듈 라이브러리의 모든 위치 정보를 “mm”단위로 사용하고자 한다면 다음과 같이 설정하여야 한다.

dMoveUnitPerPulse = (1회전 시 움직이는 기구물 거리[mm])/1회전에 필요한 펄스 수 = 10/10000 = 0.001

예제 코드

// 1회전당 : 10000 펄스, Screw pitch : 10mm  mm 단위 위치정보 사용
AxcMotSetMoveUnitPerPulse(0, 0.001);

AxcMotGetMoveUnitPerPulse

Purpose

지정 CNT 채널의 위치 정보 단위를 확인한다.

Format

C++
DWORD AxcMotGetMoveUnitPerPulse(long lChannelNo, double* dpMoveUnitPerPuls);
C#
uint AxcMotGetMoveUnitPerPulse(int lChannelNo, ref double dpMoveUnitPerPuls);

Parameters

[in/out] Name [Init Value] Explanation
[in]lChannelNo 모듈 번호 (0 ~ N-1), N : 전체 CNT 채널 개수
[out]dpMoveUnitPerPuls 위치 정보 단위

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 채널의 위치 정보 단위를 확인한다.

예제 코드

// 0채널 위치 정보 단위 확인
double dMoveUnitPerPulse;
AxcMotGetMoveUnitPerPulse (0, &dMoveUnitPerPulse);