Axl Ref Kor V20170630
Axl Ref Kor V20170630
AJINEXTEK’s sales team is always available to assist you in making your decision the final
choice of boards or systems is solely and wholly theresponsibility of the buyer. AJINEXTEK’s
entire liability in respect of the board or systems is as set out in AJINEXTEK’s standard terms
and conditions of sale
Content
CONTENT ..................................................................................................................................3
AXL 개요 ...................................................................................................................................5
라이브러리 경로 설정 .......................................................................................................................................................... 9
DLL 파일 복사하기............................................................................................................................................................... 17
기본 원리 .................................................................................................................................................................................. 18
축 번호, 접점 번호, 채널 번호의 할당 예(PCI slot 장착 순서) ..................................................................... 19
헤더 파일 ...................................................................................................................................................... 20
함수 용어 ...................................................................................................................................................... 20
매뉴얼의 함수 이름 ............................................................................................................................................................. 20
본 매뉴얼의 인자 이름 ...................................................................................................................................................... 20
AxlOpen ..................................................................................................................................................................................... 23
AJINEXTEK CO.,LTD. 3
Library User Manual Rev.3.0
AxlOpenNoReset ................................................................................................................................................................... 25
AxlClose ..................................................................................................................................................................................... 27
AxlIsOpened ............................................................................................................................................................................ 28
AxlInterruptEnable ................................................................................................................................................................ 29
AxlInterruptDisable ............................................................................................................................................................... 30
AxlGetBoardCount ................................................................................................................................................................ 32
AxlGetLibVersion.................................................................................................................................................................... 33
AxlGetModuleNodeStatus ................................................................................................................................................. 34
AxlGetBoardStatus ................................................................................................................................................................ 36
AxlGetLockMode ................................................................................................................................................................... 37
AxlSetLogLevel ....................................................................................................................................................................... 39
AxlGetLogLevel ....................................................................................................................................................................... 41
AxlScanStart ............................................................................................................................................................................. 43
4 AJINEXTEK CO.,LTD.
Library User Manual Rev.3.0
AXL 개요
AJINEXTEK의 제어보드는 기본형 베이스 보드에 디지털 I/O모듈, 아날로그 I/O모듈, 통신모듈 등을 어떻게
조합하는가에 따라 다양한 기능을 포함하는 형태로 구성할 수 있다.
또한 모듈형태가 아닌 특화된 기능의 일체형 단일 보드들의 조합으로도 저렴하고 강력한 기능을 구현하는
형태를 구성할 수 있다. 라이브러리의 사용 통일성을 위해 일체형 단일 보드도 모듈 형태처럼 베이스 보드에
모듈이 장착되어 동작되는 형식을 가진, 보드에 붙박이 된 Module이라고 이해하면 되겠다. 단일형 보드에는
네트워크 리소스를 제어하는 마스터 보드 제품군도 포함되며, 네트워크로 연결된 제어요소는 Slave Node로
기술한다.
이러한 아진엑스텍의 보드와 모듈을 제어하는 프로그램 라이브러리 API (Application Programming Interface)
를 통틀어 AXL(Ajinextek Library)이라고 한다.
제품명 특징 비고
BPFR(Full size) 모듈 장착형 베이스 보드(PCI bus) 최대 4개의 모듈 장착
BPHR(Half size) 모듈 장착형 베이스 보드(PCI bus) 최대 2개의 모듈 장착
BIFR(Full size) 모듈 장착형 베이스 보드(ISA bus) 최대 4개의 모듈 장착
BIHR(Half size) 모듈 장착형 베이스 보드(ISA bus) 최대 2개의 모듈 장착
모듈 장착형 베이스 보드, 최대 2개 모듈 장착,
BPHD(Half size)
DB32P가 기본 포함됨(PCI bus) 디지털 입력(16) / 출력(16) 기본 포함
PCI-DI64x 일체형 디지털 입력 보드(PCI bus) 디지털 입력 64
PCI-DB64x 일체형 디지털 입력 보드(PCI bus) 디지털 입력 32 / 디지털 출력 32
PCI-DO64x 일체형 디지털 입력 보드(PCI bus) 디지털 출력 64
PCI-AIO1602HR 일체형 아날로그 입출력 보드(PCI bus) 아날로그 출력(2CH), 입력(16CH)
PCI-N804(Half size) 일체형 모션 제어 보드(PCI bus) 8 축 제어, Open loop
PCI-N404(Half size) 일체형 모션 제어 보드(PCI bus) 4 축 제어, Open loop
PCI-N204(Half size) 일체형 모션 제어 보드(PCI bus) 2 축 제어, Open loop
RTEX 마스터 보드
PCI-R1604 네트워크 마스터 보드(PCI bus) 최대 32개 Slave Node 장착
기본 16축, 확장시 32축 제어
RTEX 마스터 보드
PCIe-Rxx04-RTEX 네트워크 마스터 보드(PCIe bus)
최대 32개 Slave Node 장착
Mechatrolink-II 마스터 보드
PCI-R1604-MLII 네트워크 마스터 보드(PCI bus) 최대 30개 Slave Node 장착
기본 16축, 확장시 30축 제어
Mechatrolink-II 마스터 보드
PCI-R0804-MLII 네트워크 마스터 보드(PCI bus) 최대 24개 Slave Node 장착
기본 8축, 확장시 24축 제어
SSCNET III/H 마스터 보드
PCI-R1604-SIIIH 네트워크 마스터 보드(PCI bus) 최대 32개 Slave Node 장착
기본 16축, 확장시 32축 제어
PCIe-Rxx04-SIIIH 네트워크 마스터 보드(PCIe bus) SSCNET III/H 마스터 보드
AJINEXTEK CO.,LTD 5
Library User Manual Rev.3.0
제품명 특징 비고
SMC-2V03 모션 모듈 2축 제어, 펄스 출력형, (단종)
SMC-2V04 모션 모듈 2축 제어, 펄스 출력형
SIO-DI32 디지털 입력 모듈 디지털 입력 32 접점
SIO-DB32 디지털 입출력 모듈 디지털 입력(16) / 출력(16) 접점
SIO-DO32 디지털 출력 모듈 디지털 출력 32 접점
SIO-AI4RB 아날로그 입력 모듈 아날로그 입력 4CH
SIO-AO4RB 아날로그 출력 모듈 아날로그 출력 4CH
SIO-AO4F 아날로그 출력 모듈 아날로그 출력 4CH
SIO-AI8F 아날로그 입력 모듈 아날로그 입력 8CH
SIO-AI8AO4F 아날로그 입/출력 모듈 아날로그 입력8CH / 출력4CH
SIO-CN2CH 트리거 출력 모듈 카운터 입력, 트리거 출력 2CH
AXL을 사용할 수 있는 네트워크 Slave node 제품군은 다음과 같다.
제품명 특징 비고(제조사)
RTEX-PM RTEX 모션 Slave Node 1축, 펄스 출력형(Ajinextek)
RTEX-DI32 RTEX 디지털 입력 Slave Node 디지털 입력 32 접점(Ajinextek)
RTEX-DO32 RTEX 디지털 출력 Slave Node 디지털 출력 32 접점(Ajinextek)
RTEX-CNT2 RTEX 트리거 출력 Salve Node 카운터 입력, 트리거 출력 2ch
RTEX-AI8 RTEX 아날로그 입력 Slave Node 아날로그 입력, 8CH(Ajinextek)
RTEX-AI16 RTEX 아날로그 입력 Slave Node 아날로그 입력, 16CH(Ajinextek)
RTEX-AO4 RTEX 아날로그 출력 Slave Node 아날로그 출력, 4CH(Ajinextek)
RTEX-AO8 RTEX 아날로그 출력 Slave Node 아날로그 출력, 8CH(Ajinextek)
RTEX-A4N RTEX 모션 Slave Node 1축, 서보 드라이브(Panasonic)
RTEX-A5N RTEX 모션 Slave Node 1축, 서보 드라이브(Panasonic)
N3RTEX-PM2Q RTEX 모션 Slave Node 2축, 펄스 출력형(Ajinextek)
N3RTEX-PM4Q RTEX 모션 Slave Node 4축, 펄스 출력형(Ajinextek)
N3RTEX -DI32 RTEX 디지털 입력 Slave Node 디지털 입력 32 접점(Ajinextek)
N3RTEX -DO32 RTEX 디지털 출력 Slave Node 디지털 출력 32 접점(Ajinextek)
N3RTEX -DB32 RTEX 디지털 입/출력 Slave Node 디지털 입출력 16/16 접점(Ajinextek)
6 AJINEXTEK CO.,LTD.
Library User Manual Rev.3.0
AXL 라이브러리는 기능별로 분류되는데, 초기화 등의 기초함수와 관련된 AXL, Motion에 관련된 AXM,
Digital I/O에 관련된 AXD, Analog I/O에 관련된 AXA에 대한 라이브러리로 나누어져 있다. 라이브러리를 헤더
파일을 기준으로 분류하면 다음과 같다.
AJINEXTEK CO.,LTD 7
Library User Manual Rev.3.0
OS 세부 내역
Windows 98 사용자 환경에 따라 지원 가능
Windows 2000 SP4 이상
Windows XP(32-bit) SP3 이상
Windows XP(32-bit)
+ RTX kernnel Windows XP(SP3 이상), RTX(7.0 이상)
Windows XP(64-bit) 지원
Windows 7(32-bit) Professional 이상
Windows 7(64-bit) Professional 이상
개발 언어 세부 내역
Visual C++ Visual studio 6.0, 2003, 2005, 2008, 2010
Visual Basic Visual studio 6.0, 2003, 2005, 2008, 2010
C# Visual studio 2005, 2008, 2010
C++Builder 6.0 이상
Delphi 7.0 이상
8 AJINEXTEK CO.,LTD.
Library User Manual Rev.3.0
라이브러리 초기화
라이브러리 경로 설정
각 개발 프로그램 언어별로 라이브러리 경로를 설정할 수 있으며, 한번 설정된 경로 정보는 새로운 프로젝
트를 시작할 때마다 따로 자동으로 적용된다.
Header 파일 지정은 Show directories for: 콤보에 Include files를 선택한 다음 Directories: 에 마지막 빈 라인
을 클릭하면 오른쪽에 버튼이 나타나는데 이 버튼을 클릭하면 Choose Directory 다이얼로그가 나타난다.
이때 \EzSoftware\AXL(Library)\C 폴더를 지정한다.
AJINEXTEK CO.,LTD 9
Library User Manual Rev.3.0
Library 파일 지정은 Show directories for: 콤보에 Library files 선택한 다음 Directories: 에 마지막 빈 라인을
클릭하면 오른쪽에 버튼이 나타나는데 이 버튼을 클릭하면 Choose Directory 다이얼로그가 나타난다. 이
때 \EzSoftware \AXL(Library)\Library 폴더를 지정한다.
10 AJINEXTEK CO.,LTD.
Library User Manual Rev.3.0
Header 파일 지정은 Directories 안의 Include path: 항목 오른쪽에 버튼을 클릭하면 Directories 다이얼로
그가 표시된다.
여기서 Greyed items denote invalid path. 항목 오른쪽에 버튼을 클릭하면 폴더 찾아보기 다이얼로그가
나타난다.
AJINEXTEK CO.,LTD 11
Library User Manual Rev.3.0
Library 파일 지정은 Directories 안의 Library path: 항목 오른쪽에 버튼을 클릭하면 Directories 다이얼로
그가 나타난다.
여기서 Greyed items denote invalid path. 항목 오른쪽에 버튼을 클릭하면 폴더 찾아보기 다이얼로그가
나타난다.
12 AJINEXTEK CO.,LTD.
Library User Manual Rev.3.0
Header 파일과 Library 파일 지정을 완료했으면 왼쪽 하단에 있는 Default를 체크한 다음 OK 버튼을 클릭한
다.
Header 파일 지정은 Directories 안의 Search path: 항목 오른쪽에 버튼을 클릭하면 Directories 다이얼로
그가 나타난다.
AJINEXTEK CO.,LTD 13
Library User Manual Rev.3.0
여기서 Greyed items denote invalid path. 항목 오른쪽에 버튼을 클릭하면 폴더 찾아보기 다이얼로그가
나타난다.
14 AJINEXTEK CO.,LTD.
Library User Manual Rev.3.0
오른 쪽에 있는 프로젝트 창에서 마우스 오른쪽 버튼을 클릭하여 추가(A) -> 모듈(M)을 선택한다.
AJINEXTEK CO.,LTD 15
Library User Manual Rev.3.0
16 AJINEXTEK CO.,LTD.
Library User Manual Rev.3.0
DLL 파일 복사하기
해당 언어 라이브러리 링크 작업을 완료하였다면 프로젝트 컴파일 시 자동으로 생성되는 실행파일이 있는
폴더에 AXL.dll, EzBasicAXL.dll 총 2개의 파일이 있어야 된다.
AJINEXTEK CO.,LTD 17
Library User Manual Rev.3.0
축 번호, 접점 번호, 채널 번호 할당 방법
기본 원리
1. 같은 시스템에 여러 가지 제품이 장착된 경우 보드 제품이 낮은 번호로 넘버링 된다.
모션에 관계된 제어요소를 예를 들면, PCI-N804/404 제품에 연결된 모터부터 넘버링되며, 이어서 PCI-R1604
또는 PCI-R1604-MLII와 연결된 모터가 넘버링된다.
4. 같은 베이스보드에서는 J1, J2, J3, J4의 순서 또는 Network address 가 낮은 순서대로 넘버링 된다.
카드 타입 집중형 제어 보드의 넘버링 순서는 외부와 연결되는 커넥터 번호가 낮은 순서부터 넘버링되며,
분산 제어형 제어 보드는 연결된 Slave node에 설정된(H/W 스위치로 설정됨) 네트워크 주소 값이 작은 것부
터 넘버링 된다.
주의 사항) Network Master 보드 제품의 경우 Slave node를 연결하여야만 프로그램 사용이 가능하다. 또한
Slave node의 추가 및 제거로 인해 제어 리소스의 번호가 바뀔 수 있으므로 주의해야 한다.
18 AJINEXTEK CO.,LTD.
Library User Manual Rev.3.0
AJINEXTEK CO.,LTD 19
Library User Manual Rev.3.0
헤더 파일
C++
AXL.h
C#
AXL.cs
Visual Basic
AXL.bas
Delphi
AXL.pas
함수 용어
매뉴얼의 함수 이름
본 매뉴얼에서 사용된 함수 이름들은 접두어(Prefix)에 의해 동작을 구분할 수 있도록 되어있다.
※ 라이브러리 함수 Prefix
Axl : 베이스 보드 및 라이브러리 전용 함수임을 나타낸다. Axl로 시작되는 함수들은 모두 AXL.h 에 정의
되어 있다.
본 매뉴얼의 인자 이름
본 매뉴얼에서 사용된 함수들의 공통적인 인자들은 다음과 같은 의미를 가진다.
20 AJINEXTEK CO.,LTD.
Library User Manual Rev.3.0
라이브러리 초기화
Function Description
AxlOpen 라이브러리를 초기화한다.
AxlClose 라이브러리 사용을 종료한다.
AxlIsOpened 라이브러리가 초기화되어있는지 확인한다.
라이브러리 및 베이스 보드 정보
Function Description
AxlGetBoardCount 등록된 베이스 보드의 개수를 확인한다.
AxlGetLibVersion 라이브러리 버전을 확인한다.
네트워크 마스터 보드와 연결된 Slave node 의 연결 상태를
AxlGetModuleNodeStatus
확인한다.
AxlGetBoardStatus 해당 보드가 제어 가능한 상태인지 반환한다.
AxlGetLockMode Network 제품의 Configuration Lock 상태를 반환한다.
AxlSetLogLevel EzSpy 에 출력할 메시지 레벨을 설정한다.
AxlGetLogLevel EzSpy 에 출력할 메시지 레벨을 반환한다.
Mechatrolink III 전용 함수
Function Description
AxlScanStart 해당 보드의 연결된 모듈에 대한 검색을 시작한다.
AJINEXTEK CO.,LTD 21
Library User Manual Rev.3.0
라이브러리 초기화
Function Description
AxlOpen 라이브러리를 사용 가능하도록 준비한다.
AxlOpenNoReset 초기화 과정없이 라이브러리를 사용 가능하도록 준비한다.
AxlClose 라이브러리 사용을 종료한다.
AxlIsOpened 라이브러리가 초기화되어있는지 확인한다.
AxlInterruptEnable 인터럽트 기능을 사용 가능하도록 설정한다.
AxlInterruptDisable 인터럽트 기능 사용을 중지한다.
22 AJINEXTEK CO.,LTD.
Library User Manual Rev.3.0
AxlOpen
Purpose
라이브러리를 사용 가능하도록 준비한다.
Format
C++
DWORD AxlOpen(long lIrqNo);
C#
uint AxlOpen(int lIrqNo);
Visual Basic
Function AxlOpen(ByVal lIrqNo As Long) As Long
Delphi
function AxlOpen(lIrqNo : LongInt) : DWord; stdcall;
Parameters
[in/out] Name [Init Value] Explanation
ISA Type 보드 사용 시 IRQ 번호(0 ~ 64), PCI 보드 사용 시 의미
[in]lIrqNo
없음.
Return Values
[0000] AXT_RT_SUCCESS : 함수 실행 성공
[1001] AXT_RT_OPEN_ERROR : AXL 라이브러리 초기화 실패
[1002] AXT_RT_OPEN_ALREADY : AXL 라이브러리 사용 중임
* See error code Table for more information on status error codes
Description
라이브러리를 초기화하고 사용자가 ISA Type 보드에서 인터럽트를 사용할 경우, 인터럽트를 처리할 IRQ
번호를 등록함으로써 인터럽트를 사용 가능하게 해준다. 이때 PnP 기능이 지원되는 PCI 버스와
cPCI 버스인 경우, IRQ 번호는 자동 할당되므로 사용자가 설정한 IRQ 번호는 무시된다.
라이브러리의 초기화 과정 중 모션 제어 파라미터 및 H/W 에 설정되는 파라미터 들이 초기 상태로
변경되며 사용자는 이 함수를 실행한 후, 각종 파라미터들을 올바르게 다시 설정하여야 한다.
IRQ 번호는 ISA 버스의 경우에는 베이스 보드에 있는 Irq 설정 Dip S/W 의 설정 값을 넣어주면 되고,
PCI 버스나 cPCI 버스의 경우에는 PnP 기능이 지원되어 IrqNo 가 자동 할당되므로 아무 값이나 넣어주면
된다. 제품 출고 시 초기 값으로 IrqNo 7 로 설정되어 있다.
AXL 을 사용하기 위해서는 AxlOpen 또는 AxlOpenNoReset 함수를 반드시 호출한 후 사용해야 한다.
그리고 사용이 끝난 후에는 AxlClose 함수를 호출하여 할당 받은 메모리를 해제해주어야 한다. 그렇지
않을 경우에 메모리 누수가 생겨 시스템에 문제가 발생할 수도 있다.
Example
C++
#include “AXL.h” // 통합 라이브러리 추가
#include “AXHS.h”
AJINEXTEK CO.,LTD 23
Library User Manual Rev.3.0
See Also
AxlOpenNoReset, AxlClose, AxlIsOpened
24 AJINEXTEK CO.,LTD.
Library User Manual Rev.3.0
AxlOpenNoReset
Purpose
라이브러리 내부 파라미터 및 H/W 설정 파라미터의 초기화 과정 없이 라이브러리를 사용 가능하도록
준비한다.
Format
C++
DWORD AxlOpenNoReset(long lIrqNo);
C#
uint AxlOpenNoReset(int lIrqNo);
Visual Basic
Function AxlOpenNoReset(ByVal lIrqNo As Long) As Long
Delphi
function AxlOpenNoReset(lIrqNo : LongInt) : DWord; stdcall;
Parameters
[in/out] Name [Init Value] Explanation
ISA Type 보드 사용시 IRQ 번호(0 ~ 64), PCI 보드 사용시 의미
[in]lIrqNo
없음.
Return Values
[0000] AXT_RT_SUCCESS : 함수 실행 성공
[1001] AXT_RT_OPEN_ERROR : AXL 라이브러리 초기화 실패
[1002] AXT_RT_OPEN_ALREADY : AXL 라이브러리 사용 중임
* See error code Table for more information on status error codes
Description
라이브러리를 초기화하지 않고 사용 가능하도록 제어 리소스를 연다. 즉, 현재 설정된 라이브러리 내부
파라미터들이 유지되고 H/W 에 설정된 파라미터들 또한 유지된다. 사용자가 인터럽트를 사용할 경우
인터럽트를 처리할 IRQ 번호를 등록함으로써 인터럽트를 사용 가능하게 해준다. 이때 PnP 기능이
지원되는 PCI 버스와 cPCI 버스인 경우, IRQ 번호는 자동 할당되므로 사용자가 설정한 IRQ 번호는
무시된다.
IRQ 번호는 ISA 버스의 경우에는 베이스 보드에 있는 Irq 설정 Dip S/W 의 설정 값을 넣어주면 되고,
PCI 버스나 cPCI 버스의 경우에는 PnP 기능이 지원되어 IrqNo 가 자동 할당되므로 아무 값이나 넣어주면
된다. 제품 출고 시 초기 값으로 IrqNo 7 로 설정되어 있다.
AXL 을 사용하기 위해서는 AxlOpen / AxlOpenNoReset 함수를 반드시 호출한 후 사용해야 한다. 또한
사용이 끝난 후에는 AxlClose 함수를 호출하여 할당받은 메모리를 해제해주어야 한다. 그렇지 않을
경우에 메모리 누수가 생겨 시스템에 문제가 발생할 수도 있다.
AJINEXTEK CO.,LTD 25
Library User Manual Rev.3.0
Examples
C++
#include “AXL.h” // 통합 라이브러리 추가
#include “AXHS.h”
// 라이브러리를 초기화한다.
// 7은 IRQ를 뜻한다. PCI에서 자동으로 IRQ가 설정된다.
if (AxlOpenNoReset(7) == AXT_RT_SUCCESS)
AfxMessageBox(“라이브러리가 초기화되었습니다.”);
else
AfxMessageBox(“라이브러리가 초기화되지 못했습니다.”);
See Also
AxlOpen, AxlClose, AxlIsOpened
26 AJINEXTEK CO.,LTD.
Library User Manual Rev.3.0
AxlClose
Purpose
라이브러리 사용을 종료한다.
Format
C++
BOOL AxlClose();
C#
int AxlClose();
Visual Basic
Function AxlClose() As Byte
Delphi
function AxlClose(): Boolean; stdcall;
Description
라이브러리 사용을 종료한다. 할당 받은 메모리를 해제하는 함수로, 라이브러리 사용이 종료되면 반드시
호출 해줘야 한다. 라이브러리를 다시 사용하기 위해서는 AxlOpen, AxlOpenNoReset 함수를 사용하여야
한다.
Return Values
[0] AXL 라이브러리 종료를 실패했을 경우
[1] AXL 라이브러리 종료를 성공했을 경우
Example
C++
// 프로그램의 종료 부분에서 사용함
AxlClose();
See Also
AxlOpen, AxlOnpenNoReset, AxlIsOpened
AJINEXTEK CO.,LTD 27
Library User Manual Rev.3.0
AxlIsOpened
Purpose
라이브러리가 초기화 되어있는지 확인한다.
Format
C++
BOOL AxlIsOpened();
C#
int AxlIsOpened();
Visual Basic
Function AxlIsOpened() As Byte
Delphi
function AxlIsOpened() : Boolean; stdcall;
Description
라이브러리가 초기화 되어있어 사용 가능한지 확인한다. 만약 라이브러리가 초기화 되지 않은 상태에서
함수들을 사용하게 되면 여러 가지 문제를 야기하므로 반드시 이 함수를 이용해서 라이브러리가 초기화
되었는지 확인한 후 함수들을 사용해야 한다.
Return Values
[0] AXL 라이브러리가 초기화 되어 있지 않음
[1] AXL 라이브러리가 초기화 되어 있음
Example
C++
// 라이브러리가 초기화되어 있는지 확인한다.
if(AxlIsOpened())
AfxMessageBox(“라이브러리가 초기화되어 있습니다.”);
else
AfxMessageBox(“라이브러리가 초기화되지 않았습니다.”);
See Also
AxlOpen, AxlOpenNoReset, AxlClose
28 AJINEXTEK CO.,LTD.
Library User Manual Rev.3.0
AxlInterruptEnable
Purpose
AXL 의 인터럽트 기능을 사용할 수 있도록 설정한다.
Format
C++
DWORD AxlInterruptEnable();
C#
uint AxlInterruptEnable();
Visual Basic
Function AxlInterruptEnable() As Long
Delphi
function AxlInterruptEnable() : DWord; stdcall;
Return Values
[0000] AXT_RT_SUCCESS : 함수 실행 성공
* See error code Table for more information on status error codes
Description
AXL 의 인터럽트 기능을 사용하기 위해선 반드시 이 함수를 먼저 실행해야 한다. 즉 인터럽트 기능에
대한 Global mask 기능으로 이 함수를 실행하지 않으면 H/W 내부적으로 인터럽트가 발생하더라도 제어
프로그램으로 인터럽트를 전달하지 않는다.
Examples
C++
// 인터럽트 메시지를 받아오기 위하여 윈도우 메시지 사용
BEGIN_MESSAGE_MAP(CCAMCIPDlg, CDialog)
//}}AFX_MSG_MAP
// 선언함
ON_MESSAGE(WM_CAMCIP_INTERRUPT, OnTriggerInterrupt)
END_MESSAGE_MAP()
AxlInterruptEnable();
// 인터럽트 발생 시 ‘OnTriggerInterrupt()’ 호출 됨
AxmInterruptSetAxis(0, m_hWnd, NULL, NULL);
See Also
AxlInterruptDisable
AJINEXTEK CO.,LTD 29
Library User Manual Rev.3.0
AxlInterruptDisable
Purpose
AXL 의 인터럽트 기능을 사용 중지한다.
Format
C++
DWORD AxlInterruptDisable();
C#
uint AxlInterruptDisable();
Visual Basic
Function AxlInterruptDisable() As Long
Delphi
function AxlInterruptDisable() : DWord; stdcall;
Return Values
[0000] AXT_RT_SUCCESS : 함수 실행 성공
* See error code Table for more information on status error codes
Description
AxlInterruptEnable 함수를 이용하여 인터럽트 사용을 중지하기 위해 이 함수를 사용한다.
Examples
C++
// 인터럽트를 사용한 후 반드시 disable 로 설정한다.
AxlInterruptDisable();
See Also
AxlInterruptEnable
30 AJINEXTEK CO.,LTD.
Library User Manual Rev.3.0
라이브러리 및 베이스 보드 정보
Function Description
AxlGetBoardCount AXL 사용을 위해 등록된 보드의 개수를 확인한다.
AxlGetLibVersion 라이브러리 버전을 확인한다.
네트워크 마스터 보드와 연결된 슬레이브 노드의 연결 상태를
AxlGetModuleNodeStatus
확인한다.
AxlGetBoardStatus 해당 보드가 제어 가능한 상태인지 반환한다.
AxlGetLockMode Network 제품의 Configuration Lock 상태를 반환한다.
AxlSetLogLevel EzSpy 에 출력할 메시지 레벨을 설정한다.
AxlGetLogLevel EzSpy 에 출력할 메시지 레벨을 반환한다.
AJINEXTEK CO.,LTD 31
Library User Manual Rev.3.0
AxlGetBoardCount
Purpose
시스템에 등록된 AXL 사용 가능한 보드의 개수를 확인한다.
Format
C++
DWORD AxlGetBoardCount(long *lpBoardCounts);
C#
uint AxlGetBoardCount(ref int lpBoardCounts);
Visual Basic
Function AxlGetBoardCount(ByRef lpBoardCounts As Long) As Long
Delphi
function AxlGetBoardCount(lpBoardCounts : PLongInt) : DWord; stdcall;
Parameters
[in/out] Name [Init Value] Explanation
[out]lpBoardCounts 베이스 보드 개수
Return Values
[0000] AXT_RT_SUCCESS : 함수 실행 성공
[1053] AXT_RT_NOT_OPEN : AXL 라이브러리가 초기화되지 않음
* See error code Table for more information on status error codes
Description
등록된 베이스 보드의 개수를 확인한다.
Examples
C++
// 등록된 AXL 사용 가능 보드의 개수를 확인한다.
long lBoardCounts;
CString strData;
AxlGetBoardCount(&lBoardCounts);
strData.Format(“전체 보드 개수는 %d개 입니다.”, lBoardCounts);
AfxMessageBox(strData);
See Also
AxlGetLibVersion, AxlGetModuleNodeStatus, AxlGetBoardStatus, AxlGetLockMode
32 AJINEXTEK CO.,LTD.
Library User Manual Rev.3.0
AxlGetLibVersion
Purpose
라이브러리 버전을 확인한다.
Format
C++
DWORD AxlGetLibVersion(char *szVersion);
C#
uint AxlGetLibVersion(ref byte szVersion);
Visual Basic
Function AxlGetLibVersion(ByRef szVersion As Byte) As Long
Delphi
function AxlGetLibVersion(szVersion : PChar) : DWord; stdcall;
Parameters
[in/out] Name [Init Value] Explanation
[out]szVersion 라이브러리 버전
Return Values
[0000] AXT_RT_SUCCESS : 함수 실행 성공
[1053] AXT_RT_ERROR_VERSION_READ : AXL 라이브러리의 버전을 읽을 수 없을 때
* See error code Table for more information on status error codes
Description
라이브러리 버전을 확인한다. 라이브러리가 주기적으로 업데이트되므로 버전 정보를 확인하여 업데이트
여부를 결정할 수 있다.
Examples
C++
// 라이브러리 버전을 확인한다.
char szVersion[50];
CString strData;
AxlGetLibVersion(szVersion);
strData.Format(“현재 라이브러리 버전은 %s 입니다.”, szVersion);
AfxMessageBox(strData);
See Also
AxlGetBoardCount, AxlGetModuleNodeStatus, AxlGetBoardStatus, AxlGetLockMode
AJINEXTEK CO.,LTD 33
Library User Manual Rev.3.0
AxlGetModuleNodeStatus
Purpose
네트워크 마스터 보드와 연결된 슬레이브 노드의 현재 연결 상태를 확인한다.
Format
C++
DWORD AxlGetModuleNodeStatus(long lBoardNo, long lModulePos);
C#
uint AxlGetModuleNodeStatus(int lBoardNo, int lModulePos);
Visual Basic
Function AxlGetModuleNodeStatus(ByVal lBoardNo As Long, ByVal
lModulePos As Long) As Long
Delphi
function AxlGetModuleNodeStatus(lBoardNo : LongInt; lModdulePos :
LongInt) : DWord; stdcall;
Parameters
[in/out] Name [Init Value] Explanation
시스템에 장착된 AXL 지원 보드 중 네트워크 마스터 보드에
[in]lBoardNo
해당하는 보드 번호
마스터 보드와 연결된 슬레이브 노드의 상대적인 위치에 대한
번호
[in]lModulePos 예) PCI-R1604 : Node address 가 작은 것부터(0 ~ 31)
예) PCI-R1604-MLII : NET#1 에 장착된 것을 Node address 가 작은
것부터(0 ~ 29)
Return Values
[0000] AXT_RT_SUCCESS : 함수 실행 성공
[1054] AXT_RT_NOT_SUPPORT_VERSION : 이 함수가 지원하지 않는 제품일 때
[1101] AXT_RT_INVALID_BOARD_NO : 베이스 보드의 위치 값이 유효하지 않을 때
[1102] AXT_RT_INVALID_MODULE_POS : 모듈 위치 값이 유효하지 않을 때
* See error code Table for more information on status error codes
Description
네트워크 마스터 보드와 연결된 슬레이브 노드의 연결 상태를 확인한다. 함수의 Return 값이
AXT_RT_SUCCESS(0000)이면 정상적으로 연결된 것을 의미한다. 이외 리턴 코드에 의하여 여러 가지
상황으로 해석될 수 있다.
Examples
C++
// 네트워크 마스터 보드와 연결된 슬레이브 노드의 연결 상태를 확인한다.
DWORD uReturn;
uReturn = AxlGetModuleNodeStatus (0, 0);
34 AJINEXTEK CO.,LTD.
Library User Manual Rev.3.0
if(uReturn)
strData.Format(“0번째 보드의 0번째 노드에 연결 문제 발생 에러코드: %d.”, uReturn);
else
strData.Format(“0번째 보드의 0번째 노드 정상적으로 연결됨”);
AfxMessageBox(strData);
See Also
AxlGetBoardCount, AxlGetLibVersion, AxlGetBoardStatus, AxlGetLockMode
AJINEXTEK CO.,LTD 35
Library User Manual Rev.3.0
AxlGetBoardStatus
Purpose
해당 보드가 제어 가능한 상태인지 반환한다.
Format
C++
DWORD AxlGetBoardStatus(long lBoardNo);
C#
uint AxlGetBoardStatus(int lBoardNo);
Visual Basic
Function AxlGetBoardStatus(ByVal lBoardNo As Long) As Long
Delphi
function AxlGetBoardStatus(lBoardNo : LongInt) : DWord; stdcall;
Parameters
[in/out] Name [Init Value] Explanation
시스템에 장착된 AXL 지원 보드 중 네트워크 마스터 보드에
[in]lBoardNo
해당하는 보드 번호
Return Values
[0000] AXT_RT_SUCCESS : 함수 실행 성공
[1053] AXT_RT_NOT_OPEN : 라이브러리 초기화 실패
[1101] AXT_RT_INVALID_BOARD_NO : 베이스 보드의 위치 값이 유효하지 않을 때
* See error code Table for more information on status error codes
Description
해당 보드가 제어 가능한 상태인지 반환하는 함수이다. 제어 가능하다면 라이브러리 초기화 성공을
Return 한다.
Examples
C++
// 0번 보드가 제어 가능한 상태인지 반환한다.
DWORD uReturn;
uReturn = AxlGetBoardStatus(0);
if(uReturn)
strData.Format(“0번째 보드 문제 발생 에러코드: %d.”, uReturn);
else
strData.Format(“0번째 보드가 정상적으로 초기화 됨.”);
AfxMessageBox(strData);
See Also
AxlGetBoardCount, AxlGetLibVersion, AxlGetModuleNodeStatus, AxlGetLockMode
36 AJINEXTEK CO.,LTD.
Library User Manual Rev.3.0
AxlGetLockMode
Purpose
Network 제품의 Configuration Lock 상태를 반환한다.
Format
C++
DWORD AxlGetLockMode(long lBoardNo, WORD* wpLockMode);
C#
uint AxlGetLockMode(int lBoardNo, ref uint wpLockMode);
Visual Basic
Function AxlGetLockMode(ByVal lBoardNo As Long, ByRef wpLockMode As
Long) As Long
Delphi
function AxlGetLockMode(lBoardNo : LongInt; wpLockMode : PWord) :
DWord; stdcall;
Parameters
[in/out] Name [Init Value] Explanation
시스템에 장착된 AXL 지원 보드 중 네트워크 마스터 보드에
[in]lBoardNo
해당하는 보드 번호
Configuration Lock 상태
[out]wpLockMode -[00h] DISABLE
-[01h] ENABLE
Return Values
[0000] AXT_RT_SUCCESS : 함수 실행 성공
[1053] AXT_RT_NOT_OPEN : 라이브러리 초기화 실패
[1101] AXT_RT_INVALID_BOARD_NO : 베이스 보드의 위치 값이 유효하지 않을 때
* See error code Table for more information on status error codes
Description
네트워크 제품의 Configuration Lock 상태를 반환하는 함수이다. Configuration Lock/UnLock 은 Ezconfig
Agent 에서 설정할 수 있으며, 사용자 함수로는 설정이 불가능하다.
Examples
C++
// 장착된 보드의 Configuration Lock 상태를 확인한다.
DWORD uReturn, uLockStatus;
uReturn = AxlGetLockMode (0, &uLockStatus);
if(uReturn)
{
if(uLockStatus == ENABLE)
AfxMessageBox(“0번 보드가 Lock 상태입니다.”)
AJINEXTEK CO.,LTD 37
Library User Manual Rev.3.0
else
AfxMessageBox(“0번 보드가 UnLock 상태입니다.”);
}
See Also
AxlGetBoardCount, AxlGetLibVersion, AxlGetModuleNodeStatus, AxlGetBoardStatus,
38 AJINEXTEK CO.,LTD.
Library User Manual Rev.3.0
AxlSetLogLevel
Purpose
EzSpy 에 출력할 메시지 레벨을 설정한다.
Format
C++
DWORD AxlSetLogLevel(DWORD uLevel);
C#
uint AxlSetLogLevel(uint uLevel);
Visual Basic
Function AxlSetLogLevel(ByVal uLevel As Long) As Long
Delphi
function AxlSetLogLevel(uLevel: DWord) : DWord; stdcall;
Parameters
[in/out] Name [Init Value] Explanation
Log 설정 레벨
-[00h] LEVEL_NONE 모든 메시지를 출력하지 않는다.
-[01h] LEVEL_ERROR 에러가 발생한 메시지만 출력한다.
[in]uLevel
-[02h] LEVEL_RUNSTOP 모션의 Run/Stop 관련 메시지를
출력한다.
-[03h] LEVEL_FUNCTION 모든 메시지를 출력한다.
Return Values
[0000] AXT_RT_SUCCESS : 함수 실행 성공
[1160] AXT_RT_1ST_BELOW_MIN_VALUE : 첫 번째 인자 값이 최소값보다 작음
[1161] AXT_RT_1ST_ABOVE_MAX_VALUE : 첫 번째 인자 값이 최소값보다 작음
* See error code Table for more information on status error codes
Description
EzSpy 의 Log Level 을 설정하는 함수이다.
Examples
C++
// EzSpy LogLevel을 모든 메시지 출력 레벨로 설정한다.
DWORD uReturn;
uReturn = AxlSetLogLevel (3);
if(uReturn)
{
AfxMessageBox(“EzSpy Log Level을 모든 메시지 출력으로 설정합니다.”)
}
AJINEXTEK CO.,LTD 39
Library User Manual Rev.3.0
See Also
AxlGetLogLevel
40 AJINEXTEK CO.,LTD.
Library User Manual Rev.3.0
AxlGetLogLevel
Purpose
EzSpy 에 출력할 메시지 레벨을 반환한다.
Format
C++
DWORD AxlGetLogLevel(DWORD *upLevel);
C#
uint AxlGetLogLevel(ref uint upLevel);
Visual Basic
Function AxlGetLogLevel(ByRef upLevel As Long) As Long
Delphi
function AxlGetLogLevel(upLevel : PDWORD) : DWord; stdcall;
Parameters
[in/out] Name [Init Value] Explanation
[out]upLevel EzSpy 에 출력할 메시지 레벨
Return Values
[0000] AXT_RT_SUCCESS : 함수 실행 성공
* See error code Table for more information on status error codes
Description
EzSpy 에서 출력할 메시지 레벨을 반환하는 함수이다.
Examples
C++
// EzSpy 출력 메시지 레벨을 반환한다.
DWORD uReturn;
DWORD uLevel;
uReturn = AxlGetLogLevel (0, & uLevel);
if(uReturn)
strData.Format(“EzSpy 메시지 출력 Level : %d.”, uLevel);
AfxMessageBox(strData);
See Also
AxlSetLogLevel
AJINEXTEK CO.,LTD 41
Library User Manual Rev.3.0
Mechatrolink III 전용 함수
Function Description
AxlScanStart 해당 보드의 연결된 모듈에 대한 검색을 시작한다.
42 AJINEXTEK CO.,LTD.
Library User Manual Rev.3.0
AxlScanStart
Purpose
MLIII 마스터 보드에 연결된 모듈에 대한 검색을 시작한다.
Format
C++
DWORD AxlScanStart(long lBoardNo, long lNet);
C#
uint AxlScanStart(int lBoardNo, int lNet);
Visual Basic
Function AxlScanStart(ByVal lBoardNo As Long, ByVal lNet As Long) As
Long
Delphi
function AxlScanStart(lBoardNo: LongInt; lNet: LongInt) : DWord;
stdcall;
Parameters
[in/out] Name [Init Value] Explanation
시스템에 장착된 AXL 지원 보드 중 MLIII 마스터 보드에 해당하는
[in]lBoardNo
보드 번호
[in]lNet 마스터 보드와 연결되는 네트워크 연결 번호
Return Values
[0000] AXT_RT_SUCCESS : 함수 실행 성공
[1054] AXT_RT_NOT_SUPPORT_VERSION : 이 함수가 지원하지 않는 제품일 때
[4500] AXT_RT_M3_COMMUNICATION_FAILED : 마스터 보드의 명령 버퍼가 가득 찼을 경우
* See error code Table for more information on status error codes
Description
등록된 베이스 보드의 개수를 확인한다.
Examples
C++
// 등록된 AXL 사용 가능 보드의 개수를 확인한다.
long lBoardCounts;
CString strData;
AxlGetBoardCount(&lBoardCounts);
strData.Format(“전체 보드 개수는 %d개 입니다.”, lBoardCounts);
AfxMessageBox(strData);
AJINEXTEK CO.,LTD 43
Library User Manual Rev.3.0
44 AJINEXTEK CO.,LTD.
Library User Manual Rev.3.0
AJINEXTEK CO.,LTD 45
Library User Manual Rev.3.0
46 AJINEXTEK CO.,LTD.
Library User Manual Rev.3.0
AJINEXTEK CO.,LTD 47
Library User Manual Rev.3.0
48 AJINEXTEK CO.,LTD.
Library User Manual Rev.3.0
AJINEXTEK CO.,LTD 49
Library User Manual Rev.3.0
같음
[4510] AXT_RT_MOTION_INVALID_JERK MLIII 통신 기준, 지정된 축의 저크 입력이 잘못됨
[4511] AXT_RT_MOTION_INVALID_INPUT_VALUE MLIII 통신 기준, 지정된 축의 입력 값이 잘못됨
[4512] AXT_RT_MOTION_NOT_SUPPORT_PROFILE MLIII 통신 기준, 제공되지 않는 속도 프로파일임
[4513] AXT_RT_MOTION_INPOS_UNUSED MLIII 통신 기준, 인포지션 사용하지 않음
[4514] AXT_RT_MOTION_AXIS_IN_SLAVE_STATE MLIII 통신 기준, 지정된 축이 슬레이브 상태가 아님
MLIII 통신 기준, 지정된 축들이 같은 보드 내에 있지
[4515] AXT_RT_MOTION_AXES_ARE_NOT_SAME_BOARD
않음
[4516] AXT_RT_MOTION_ERROR_IN_ALARM MLIII 통신 기준, 지정된 축이 알람 상태임
[4517] AXT_RT_MOTION_ERROR_IN_EMGN MLIII 통신 기준, 지정된 축이 비상 정지 상태임
[4518] AXT_RT_MOTION_CAN_NOT_CHANGE_COORD_NO MLIII 통신 기준, 코디네이터 넘버 변환 불가임
[4519] AXT_RT_MOTION_INVALID_INTERNAL_RADIOUS MLIII 통신 기준, 원호 보간의 X, Y 축 반지름 불일치
[4521] AXT_RT_MOTION_CONTI_QUEUE_FULL MLIII 통신 기준, 보간의 큐가 가득 참
MLIII 통신 기준, 원호 보간의 시작점과 종료점이
[4522] AXT_RT_MOTION_SAME_START_AND_END_POSITION
같음
MLIII 통신 기준, 원호 보간의 각도가 360 도를
[4523] AXT_RT_MOTION_INVALID_ANGLE
초과함
[4524] AXT_RT_MOTION_CONTI_QUEUE_EMPTY MLIII 통신 기준, 보간의 큐가 비어있음
[4525] AXT_RT_MOTION_ERROR_GEAR_ENABLE MLIII 통신 기준, 지정된 축이 이미 링크 설정 상태임
[4526] AXT_RT_MOTION_ERROR_GEAR_AXIS MLIII 통신 기준, 지정된 축이 링크 축이 아님
MLIII 통신 기준, 지정된 축이 겐트리 설정 상태가
[4527] AXT_RT_MOTION_ERROR_NO_GANTRY_ENABLE
아님
[4528] AXT_RT_MOTION_ERROR_NO_GEAR_ENABLE MLIII 통신 기준, 지정된 축이 링크 설정 상태가 아님
[4529] AXT_RT_MOTION_ERROR_GANTRY_ENABLE_FULL MLIII 통신 기준, 겐트리 설정 가득 참
[4530] AXT_RT_MOTION_ERROR_GEAR_ENABLE_FULL MLIII 통신 기준, 링크 설정 가득 참
MLIII 통신 기준, 지정된 축이 겐트리 슬레이브 설정
[4531] AXT_RT_MOTION_ERROR_NO_GANTRY_SLAVE
상태가 아님
MLIII 통신 기준, 지정된 축이 링크 슬레이브 설정
[4532] AXT_RT_MOTION_ERROR_NO_GEAR_SLAVE
상태가 아님
[4533] AXT_RT_MOTION_ERROR_MASTER_SLAVE_SAME MLIII 통신 기준, 마스터 축과 슬레이브 축이 동일함
MLIII 통신 기준, 지정된 축의 홈 신호는 지원되지
[4534] AXT_RT_MOTION_NOT_SUPPORT_HOMESIGNAL
않음
[4535] AXT_RT_MOTION_ERROR_NOT_SYNC_CONNECT MLIII 통신 기준, 지정된 축이 싱크 연결 상태가 아님
MLIII 통신 기준, 지정된 축에 대한 구동 위치 값이
[4536] AXT_RT_MOTION_OVERFLOW_POSITION
오버플로우임
MLIII 통신 기준, 보간 작업을 위한 지정된 좌표계 축
[4537] AXT_RT_MOTION_ERROR_INVALID_CONTIMAPAXIS
맵핑이 없음
MLIII 통신 기준, 보간 작업을 위한 지정된 좌표계 축
[4538] AXT_RT_MOTION_ERROR_INVALID_CONTIMAPSIZE
맵핑 축 사이즈가 잘못됨
[4539] AXT_RT_MOTION_ERROR_IN_SERVO_OFF MLIII 통신 기준, 지정된 축이 서보 OFF 되어 있음
50 AJINEXTEK CO.,LTD.
Library User Manual Rev.3.0
AJINEXTEK CO.,LTD 51
Library User Manual Rev.3.0
52 AJINEXTEK CO.,LTD.