Skip to content

보드 및 모듈 확인

본 단원에서는 라이브러리를 초기화하는데 있어 필요한 보드 및 모듈의 Load 또는 초기화와 관련된 함수들 소개한다.

보드 및 모듈 확인 함수

1. 함수 리스트

Function Description
AxmInfoGetAxis 해당 축의 보드 번호, 모듈 위치, 모듈 아이디를 반환한다.
AxmInfoGetAxisEx 지정한 축의 해당 모듈 Sub ID, 모듈의 모델명, 모듈에 대한 설명을 확인한다.
AxmInfoIsMotionModule 모션 모듈이 존재하는지를 반환한다.
AxmInfoIsInvalidAxisNo 해당 축이 유효한지를 반환한다.
AxmInfoGetAxisCount 시스템에 장착된 유효한 모션 축 수를 반환한다.
AxmInfoGetFirstAxisNo 해당 보드/모듈의 첫 번째 축 번호를 반환한다.
AxmInfoGetAxisStatus 해당 축의 제어 가능 여부를 확인한다.

2. 함수 소개

AxmInfoGetAxis

Purpose

지정 축의 보드 번호, 모듈 위치, 모듈 아이디를 확인할 수 있다.

A Serviceable Product

BPHR / BPFR BEHR / BEFR PCI-Nx04 PCIe-Nx04
O O O O
PCI-Rxx04 PCIe-Rxx04-RTEX PCI-Rxx04-MLII PCI-Rxx00-MLIII
A4N A5N/A6N PM A4N A5N/A6N PM SGDV SGDV SGD7 PM
O O O O O O O O O O
PCI-Rxx04-SIIIH PCIe-Rxx04-SIIIH PCIe-Rxx05-MLIII PCIe-RxxIF-ECAT
MR-J4-B PM MR-J4-B PM SGDV SGD7 PM Servo PM
O O O O O O O O O

Format

C++
DWORD AxmInfoGetAxis(long lAxisNo, long *lpBoardNo, long *lpModulePos, DWORD *upModuleID); 
C#
uint AxmInfoGetAxis(int lAxisNo, ref int lpBoardNo, ref int lpModulePos, ref uint upModuleID); 
Visual Basic
Function AxmInfoGetAxis(ByVal lAxisNo As Long, ByRef lpBoardNo As Long, ByRef lpModulePos As Long, ByRef upModuleID As Long) As Long
Delphi
function AxmInfoGetAxis(lAxisNo : LongInt; lpBoardNo : PLongInt; lpModulePos : PLongInt; upModuleID : PDWord) : DWord; stdcall; 

Parameters

[in/out] Name [Init Value] Explanation
[in]AxisNo 채널(축) 번호(0 ~ (최대 축 수 - 1))
[out]lpBoardNo 설정 축이 포함되어 있는 베이스 보드 위치값
[out]lpModulePos 설정 축이 포함되어 있는 모듈 위치값
[out]upModuleID 설정 축이 포함되어 있는 모듈 ID값 : 참고 AXHS.h

Return Values

[0000] AXT_RT_SUCCESS : 함수 실행 성공
[4053] AXT_RT_MOTION_NOT_INITIAL_AXIS_NO: 해당 축 모션 초기화 실패
[4101] AXT_RT_MOTION_INVALID_AXIS_NO: 해당 축이 존재하지 않음
* See error code Table for more information on status error codes

Description

  • 필요한 데이터만 가지고 오고 싶을 경우 필요하지 않은 변수에 NULL을 넣어 사용 할 수 있다.
  • 보드 및 모듈 아이디 값은 제품 모델명과 동일하여 실제 보드 정보와 모듈 정보를 확인할 때 사용한다.

예제 코드

// 0축의보드 넘버, 모듈 위치, 모듈 아이디를 반환.
long lBoardNo, lModulePos;
DWORD uModuleID;
AxmInfoGetAxis(0, &lBoardNo, &lModulePos, &uModuleID);

AxmInfoGetAxisEx

Purpose

지정한 축의 해당 모듈 Sub ID, 모듈의 모델명, 모듈에 대한 설명을 확인한다.

A Serviceable Product

BPHR / BPFR BEHR / BEFR PCI-Nx04 PCIe-Nx04
X X X X
PCI-Rxx04 PCIe-Rxx04-RTEX PCI-Rxx04-MLII PCI-Rxx00-MLIII
A4N A5N/A6N PM A4N A5N/A6N PM SGDV SGDV SGD7 PM
X X X X X X X X X X
PCI-Rxx04-SIIIH PCIe-Rxx04-SIIIH PCIe-Rxx05-MLIII PCIe-RxxIF-ECAT
MR-J4-B PM MR-J4-B PM SGDV SGD7 PM Servo PM
X X X X X X X O O

Format

C++
DWORD AxmInfoGetAxisEx(long lAxisNo, DWORD *upModuleSubID, char* szModuleName, char* szModuleDescription); 
C#
uint AxmInfoGetAxisEx(int lAxisNo, ref uint upModuleSubID, ref string szModuleName, ref string szModuleDescription);
Visual Basic
Function AxmInfoGetAxisEx(ByVal lAxisNo As Integer, ByRef upModuleSubID As Integer, ByRef szModuleName As String, ByRef szModuleDescription As String) As Long
Delphi
function AxmInfoGetAxisEx(lAxisNo : LongInt; upModuleSubID : PDWord; szModuleName : PChar; szModuleDescription : PChar) : DWord; stdcall; 

Parameters

[in/out] Name [Init Value] Explanation
[in]AxisNo 채널(축) 번호(0 ~ (최대 축 수 - 1))
[out]upModuleSubID EtherCAT 모듈을 구분하기 위한 SubID
[out]szModuleName 모듈의 모델명(50 Bytes)
[out]szModuleDescription 모듈에 대한 설명(80 Bytes)

Return Values

[0000] AXT_RT_SUCCESS : 함수 실행 성공
* See error code Table for more information on status error codes

Description

  • 지정한 축이 EtherCAT Network Type의 모듈일 때, 해당 모듈의 SubID, 모듈의 모델명, 모듈에 대한 설명을 확인한다.

예제 코드

// 1번 축의 모듈 정보를 확인. 
long lAxis = 1;
DWORD upModuleSubID;
char szModuleName[128], szModuleDescription[128];
AxmInfoGetAxisEx(lAxis, &upModuleSubID, &szModuleName, &szModuleDescription );

AxmInfoIsMotionModule

Purpose

모션 제어 모듈 또는 모션 네트워크 슬레이브가 장착되어 있는지를 반환한다.

A Serviceable Product

BPHR / BPFR BEHR / BEFR PCI-Nx04 PCIe-Nx04
O O O O
PCI-Rxx04 PCIe-Rxx04-RTEX PCI-Rxx04-MLII PCI-Rxx00-MLIII
A4N A5N/A6N PM A4N A5N/A6N PM SGDV SGDV SGD7 PM
O O O O O O O O O O
PCI-Rxx04-SIIIH PCIe-Rxx04-SIIIH PCIe-Rxx05-MLIII PCIe-RxxIF-ECAT
MR-J4-B PM MR-J4-B PM SGDV SGD7 PM Servo PM
O O O O O O O O O

Format

C++
DWORD AxmInfoIsMotionModule(DWORD *upStatus);
C#
uint AxmInfoIsMotionModule(ref uint upStatus);
Visual Basic
Function AxmInfoIsMotionModule(ByRef upStatus As Long) As Long
Delphi
function AxmInfoIsMotionModule(upStatus : PDWord) : DWord; stdcall; 

Parameters

[in/out] Name [Init Value] Explanation
[out]upStatus 모션 제어 요소 장착 여부 : FALSE & TRUE
- [00h]모션 제어 기능 제품이 장착 되지 않음
- [01h]모션 제어 기능 제품이 장착됨

Return Values

[0000] AXT_RT_SUCCESS : 함수 실행 성공
[1053] AXT_RT_NOT_OPEN: AXL 라이브러리 초기화 실패
* See error code Table for more information on status error codes

Description

  • 모션 제어 기능 제품의 장착 여부는 *upStatus값으로 반환한다.

예제 코드

// 모션 모듈 장착 여부 확인.
DWORD uStatus;
AxmInfoIsMotionModule(&uStatus);

AxmInfoIsInvalidAxisNo

Purpose

해당 축이 사용 가능한 축인지 확인한다.

A Serviceable Product

BPHR / BPFR BEHR / BEFR PCI-Nx04 PCIe-Nx04
O O O O
PCI-Rxx04 PCIe-Rxx04-RTEX PCI-Rxx04-MLII PCI-Rxx00-MLIII
A4N A5N/A6N PM A4N A5N/A6N PM SGDV SGDV SGD7 PM
O O O O O O O O O O
PCI-Rxx04-SIIIH PCIe-Rxx04-SIIIH PCIe-Rxx05-MLIII PCIe-RxxIF-ECAT
MR-J4-B PM MR-J4-B PM SGDV SGD7 PM Servo PM
O O O O O O O O O

Format

C++
DWORD AxmInfoIsInvalidAxisNo(long lAxisNo);
C#
uint AxmInfoIsInvalidAxisNo(int lAxisNo);
Visual Basic
Function AxmInfoIsInvalidAxisNo(ByVal lAxisNo As Long) As Long
Delphi
function AxmInfoIsInvalidAxisNo(lAxisNo : LongInt) : DWord; stdcall;

Parameters

[in/out] Name [Init Value] Explanation
[in]lAxisNo 사용 가능한지 테스트할 축 번호

Return Values

[0000] AXT_RT_SUCCESS : 함수 실행 성공
[4101] AXT_RT_MOTION_INVALID_AXIS_NO : 해당 축이 존재하지 않음
* See error code Table for more information on status error codes

Description

  • 해당 축이 사용할 수 있는 축인지를 확인한다. 사용할 수 없다면 에러코드를 반환한다.

예제 코드

// 9축이 사용 가능한 축인지 에러코드를 반환한다.
DWORD uReturn;
uReturn = AxmInfoIsInvalidAxisNo(9);

AxmInfoGetAxisCount

Purpose

총 축의 개수를 반환한다.

A Serviceable Product

BPHR / BPFR BEHR / BEFR PCI-Nx04 PCIe-Nx04
O O O O
PCI-Rxx04 PCIe-Rxx04-RTEX PCI-Rxx04-MLII PCI-Rxx00-MLIII
A4N A5N/A6N PM A4N A5N/A6N PM SGDV SGDV SGD7 PM
O O O O O O O O O O
PCI-Rxx04-SIIIH PCIe-Rxx04-SIIIH PCIe-Rxx05-MLIII PCIe-RxxIF-ECAT
MR-J4-B PM MR-J4-B PM SGDV SGD7 PM Servo PM
O O O O O O O O O

Format

C++
DWORD AxmInfoGetAxisCount(long \*lpAxisCount);
C#
uint AxmInfoGetAxisCount(ref int lpAxisCount);
Visual Basic
Function AxmInfoGetAxisCount(ByRef lpAxisCount As Long) As Long
Delphi
function AxmInfoGetAxisCount(lpAxisCount: PLongInt) : DWord; stdcall;

Parameters

[in/out] Name [Init Value] Explanation
[out]lpAxisCount 시스템에 장착된 총 축의 개수

Return Values

[0000] AXT_RT_SUCCESS : 함수 실행 성공
[1053] AXT_RT_NOT_OPEN : AXL 라이브러리 초기화 실패
[4051] AXT_RT_MOTION_NOT_MODULE : 시스템에 장착된 모션 모듈이 없음
* See error code Table for more information on status error codes

Description

  • 시스템에 장착되어 AXM으로 제어 가능한 축의 개수를 반환한다.

예제 코드

// 장착된 모션 보드의 총 축 수 확인.
long lpAxisCount;
AxmInfoGetAxisCount(&lpAxisCount);

AxmInfoGetFirstAxisNo

Purpose

지정한 보드의 특정 위치 모듈에서 가장 작은 숫자의 축 번호를 반환한다.

A Serviceable Product

BPHR / BPFR BEHR / BEFR PCI-Nx04 PCIe-Nx04
O O O O
PCI-Rxx04 PCIe-Rxx04-RTEX PCI-Rxx04-MLII PCI-Rxx00-MLIII
A4N A5N/A6N PM A4N A5N/A6N PM SGDV SGDV SGD7 PM
O O O O O O O O O O
PCI-Rxx04-SIIIH PCIe-Rxx04-SIIIH PCIe-Rxx05-MLIII PCIe-RxxIF-ECAT
MR-J4-B PM MR-J4-B PM SGDV SGD7 PM Servo PM
O O O O O O O O O

Format

C++
DWORD AxmInfoGetFirstAxisNo(long lBoardNo, long lModulePos, long \*lpAxisNo);
C#
uint AxmInfoGetFirstAxisNo(int lBoardNo, int lModulePos, ref int lpAxisNo);
Visual Basic
Function AxmInfoGetFirstAxisNo(ByVal lBoardNo As Long, ByVal lModulePos As Long, ByRef lpAxisNo As Long) As Long
Delphi
function AxmInfoGetFirstAxisNo(lBoardNo: LongInt; lModulePos: LongInt; lpAxisNo: PLongInt) : DWord; stdcall;

Parameters

[in/out] Name [Init Value] Explanation
[in]lBoardNo 보드 번호
[in]lModulePos 보드 내에 위치한 모듈 위치. PCI-N804/404는 4축 단위로 모듈이 나누어져 있으며, 네트워크 타입 보드는 하나의 슬레이브가 하나의 모듈로 인식된다.
[out]lpAxisCount 해당 보드/모듈의 축 번호 값

Return Values

[0000] AXT_RT_SUCCESS : 함수 실행 성공
[1053] AXT_RT_NOT_OPEN : AXL 라이브러리 초기화 실패
[1101] AXT_RT_INVALID_BOARD_NO : 유효하지 않은 보드 번호
[1102] AXT_RT_INVALID_MODULE_POS : 유효하지 않은 모듈 위치
[4051] AXT_RT_MOTION_NOT_MODULE : 시스템에 장착된 모션 모듈이 없음
* See error code Table for more information on status error codes

Description

  • PCI-N804/404의 경우, 보드 자체가 모듈 타입이 아니기 때문에 보드에서 가장 먼저 시작되는 축 번호를 반환한다.
  • 베이스 보드 번호는 슬롯 순서대로 0부터 번호가 할당된다.
  • 모듈 번호는 BPFR 베이스 보드인 경우 0~3까지 모듈 번호가 할당되고, BPHR 베이스 보드인 경우 0~1까지 모듈 번호가 할당된다.
  • 모션 모듈의 축 수가 두 개이므로 *lpAxisNo 값은 그 중 빠른 축 번호 값이 된다.

참고사항 : AXL 의 리소스 번호 할당 규칙

  • 같은 시스템에 여러가지 제품이 장착된 경우 제품명의 축 수가 낮은 순으로 넘버링된다. 모션에 관계된 제어 요소를 예를 들면, PCI-N804/404 제품에 연결된 모터부터 넘버링되며, 이어서 PCI-R1604 또는 PCI-R1604-MLII와 연결된 모터가 넘버링된다.
  • 같은 종류의 모듈끼리 개별적으로 넘버링된다. 모션에 관계된 제어 요소는 축 번호로 넘버링되며, 디지털 입출력 제품은 모듈 번호 및 접점 번호로, 아날로그 입출력 제품은 모듈 번호 및 채널 번호로 넘버링된다.
  • 여러 개의 보드가 장착되어 있을 경우 CPU에 가까운 쪽 베이스 보드에서부터 넘버링된다. 일반적인 PC또는 IPC 시스템에서 CPU에 가까운 쪽부터 PCI슬롯의 순서가 정해져 있는데, 시스템의 설정에 따라서 CPU모듈에서 먼 쪽부터 번호가 시작되거나 임의로 각 슬롯의 번호를 설정해줄 수 있는 시스템도 있다.
  • 같은 베이스 보드에서는 J1,J2,J3,J4의 순서 또는 Network address 가 낮은 순서대로 넘버링 된다. 카드 타입 집중형 제어 보드의 넘버링 순서는 외부와 연결되는 커넥터 번호가 낮은 보드부터 넘버링되며, 분산 제어형 제어 보드는 연결된 슬레이브 노드에 설정된(H/W 스위치로 설정됨) 네트워크 주소 값이 작은 것부터 넘버링 된다.
  • EzConfig 의 정보 확인 창에서 자세한 내용을 확인한다. EzSoftware 를 설치하면 제어 리소스를 확인하고 축 번호, 접점 번호, 채널 번호를 확인할 수 있는 EzConfig 프로그램을 사용할 수 있다.

주의 사항

● 네트워크 제품은 슬레이브 노드를 장착하여야만 프로그램이 가능하다. 또한 슬레이브 노드의 추가 및 제거로 인해 제어 리소스의 번호가 바뀔 수 있으므로 주의하여야 한다.

예제 코드

// 특정 0모듈의 가장 빠른 축 번호 확인.
long lAxisNo;
AxmInfoGetFirstAxisNo(0, 0, &lAxisNo);

AxmInfoGetAxisStatus

Purpose

해당 축의 제어 가능 여부를 반환한다.

A Serviceable Product

BPHR / BPFR BEHR / BEFR PCI-Nx04 PCIe-Nx04
O O O O
PCI-Rxx04 PCIe-Rxx04-RTEX PCI-Rxx04-MLII PCI-Rxx00-MLIII
A4N A5N/A6N PM A4N A5N/A6N PM SGDV SGDV SGD7 PM
O O O O O O O O O O
PCI-Rxx04-SIIIH PCIe-Rxx04-SIIIH PCIe-Rxx05-MLIII PCIe-RxxIF-ECAT
MR-J4-B PM MR-J4-B PM SGDV SGD7 PM Servo PM
O O O O O O O O O

Format

C++
DWORD AxmInfoGetAxisStatus(long lAxisNo);
C#
uint AxmInfoGetAxisStatus(int lAxisNo);
Visual Basic
Function AxmInfoGetAxisStatus(ByVal lAxisNo As Long) As Long
Delphi
function AxmInfoGetAxisStatus(lAxisNo: LongInt) : DWord; stdcall;

Parameters

[in/out] Name [Init Value] Explanation
[in]lAxisNo 제어가 가능한지 테스트 할 축 번호

Return Values

[0000] AXT_RT_SUCCESS : 함수 실행 성공
[4101] AXT_RT_MOTION_INVALID_AXIS_NO : 해당 축이 존재하지 않음
* See error code Table for more information on status error codes

Description

  • 해당 축이 제어할 수 있는 축인지 반환 값을 통해 확인한다.

예제 코드

// 0축이 제어 가능한 축인지 에러코드를 확인한다.
DWORD uReturn;
uReturn = AxmInfoGetAxisStatus(0);