Skip to content

가상 축 매핑

가상 축 매핑이란 라이브러리에서 구동 명령을 내릴 때 실제 해당 축 번호가 아닌 임의의 축 번호를 사용하여 명령을 내릴 수 있도록 하기 위한 함수이다.

0번 축을 2번 축이라 가상 축 매핑하여 명령을 내리면 2번 축에 명령을 내렸을 때 0번축이 동작하는 것을 말한다.

가상 축 함수군은 AXM 함수 중 함수 입력값에 축 번호를 입력 인자로 사용하는 모든 함수에 영향을 끼친다.

만약, 시스템이 0번부터 10번까지 축이 있었는데, 특별한 이유로 3, 4번 축이 제거되었다고 하면, 축 번호가 0번부터 8번까지 당겨져서 작동하게 된다.
이 경우에는 가상 축 매핑을 사용하여 3~8번 축을 5~10번 축으로 축 번호를 변경하면 프로그램 소스를 수정하지 않고, 축 번호가 당겨지는 상황을 해결할 수 있다.

이러한 가상 축 매핑을 사용하고자 한다면 다음과 같이 실제 축 번호를 변경하고자하는 임의의 가상 축 번호로 매핑하는 AxmVirtualSetAxisNoMap 함수를 사용하거나, 여러 축 번호를 한 번에 임의의 가상 축 번호로 매핑하는 AxmVirtualSetMultiAxisNoMap 함수를 사용한다.

이때 유의할 것은 가상 축으로 매핑되면 이전의 실제 축 번호는 존재하지 않는 것이 되므로 이전 축 번호로 내린 명령은 정상 작동하지 않으며, 설정 후부터는 새로 설정한 축 번호로 사용하여야 한다.

//0 축을 2 번 축으로 매핑한다.
long lRealAxisNo = 0;
long lVirtualAxisNo = 2;
AxmVirtualSetAxisNoMap(lRealAxisNo, lVirtualAxisNo);

//0 축과 1 축을 2 번과 3 번으로 매핑한다.
long lSize = 2;
long lpRealAxesNo[2] = {0,1};
long lpVirtualAxesNo[2] = {2,3};
AxmVirtualSetMultiAxisNoMap(lSize, lpRealAxesNo, lpVirtualAxesNo);
이렇게 매핑된 축 번호를 다시 원래대로 되돌리기 위해서는 AxmVirtualResetAxisMap 함수를 사용한다.

//가상 축 매핑을 해제한다.
AxmVirtualResetAxisMap();
// Ex20_AXM_AxisNoMapping.cpp : Defines the entry point for the console application.
// 가상 축 매핑을 한다.

#include "stdafx.h"
#include "AXL.h"
#include <conio.h>
#include "stdio.h"

#define AXIS_0 0
#define AXIS_2 2

void main(void)
{
    //라이브러리를 초기화한다.
    //7 은 IRQ 를 뜻한다. PCI 에서 자동으로 IRQ 가 설정된다.
    DWORD Code = AxlOpen(7);
    if (Code == AXT_RT_SUCCESS)
    {
        printf("라이브러리가 초기화되었습니다.\n");

        //모션 모듈이 있는지 검사
        DWORD uStatus;
        Code = AxmInfoIsMotionModule(&uStatus);
        if(Code == AXT_RT_SUCCESS)
        {
            if(uStatus == STATUS_EXIST)
            {
                printf("모션 모듈이 존재합니다.\n");

                //0 축의 +End limit 과 -End limit 의 Active level 을 HIGH 로 설정한다.
                AxmSignalSetLimit(AXIS_0, 0, HIGH, HIGH);
                //0 축의 Inpositon 신호의 입력 레벨을 HIGH 로 설정한다.
                AxmSignalSetInpos(AXIS_0, HIGH);
                //0 축의 알람 신호의 입력 레벨을 LOW 로 설정한다.
                AxmSignalSetServoAlarm(AXIS_0, LOW);
                //0 축의 비상 정지 신호(ESTOP)의 Active 입력 레벨을 HIGH 로 설정한다.
                AxmSignalSetStop(AXIS_0, 0, HIGH);

                //0 축 지령 값을 mm 단위가 되도록 한다.
                AxmMotSetMoveUnitPerPulse(AXIS_0, 10, 10000);
                //0 축 의 초기 속도를 1 로 설정한다. Default : 1
                AxmMotSetMinVel(AXIS_0, 1);
                //0 축의 펄스 출력 방식을 TwoCwCcwHigh 로 한다.
                AxmMotSetPulseOutMethod(AXIS_0, TwoCwCcwHigh);
                //지정 축 의 Encoder 입력 방식을 4 체배로 설정한다.
                AxmMotSetEncInputMethod(AXIS_0, ObverseSqr4Mode);

                //상대 위치 S 자 속도 프로파일을 사용
                DWORD uAbsRelMode = 1;
                DWORD uProfileMode = 3;
                AxmMotSetAbsRelMode(AXIS_0, uAbsRelMode); // 상대 위치 구동으로 설정
                AxmMotSetProfileMode(AXIS_0, uProfileMode); // S자 속도

                //Servo On
                AxmSignalServoOn(AXIS_0, ENABLE);
                //0축을 2번 축으로 매핑한다.
                long lRealAxisNo = AXIS_0;
                long lVirtualAxisNo = AXIS_2;
                AxmVirtualSetAxisNoMap(lRealAxisNo, lVirtualAxisNo);

                // help Message
                printf("[INFORMATION]*********************************** \n");
                printf("0번 축을 2 번으로 설정.\n 아무 키나 누르면 2번 축 구동 시작.\n");
                printf("************************************************ \n");
                //아무 키나 누를 때까지 대기
                getch();

                //0축을 100만큼 구동시킨다.
                AxmMoveStartPos(AXIS_2, 100, 100, 200, 200);
                //구동 중인지 확인한다.
                DWORD uStatus;
                AxmStatusReadInMotion(AXIS_2, &uStatus);
                while(uStatus) {
                    AxmStatusReadInMotion(AXIS_2, &uStatus);
                }

                //가상 축 매핑을 해제한다.
                AxmVirtualResetAxisMap();

                //Servo Off
                AxmSignalServoOn(AXIS_0, DISALBE);
            }
            else
                printf("AxmInfoIsMotionModule() : ERROR (NOT STATUS_EXIST) code 0x%x\n", Code);
        }
        else
            printf (" AxmInfoIsMotionModule() : ERROR (Retur n FALSE) code 0x%x\n",Code);
    }
    else
        printf ("AxlOpen() : ERROR code 0x%x\n",Code);

    // 라이브러리를 종료한다.
    if (AxlClose())
        printf("라이브러리가 종료되었습니다.\n");
    else
        printf("라이브러리가 정상적으로 종료되지 않았습니다.\n");
}

가상 축 함수(Virtual)

함수 리스트

Function Description
AxmVirtualSetAxisNoMap 제어 축 번호를 가상 축 번호로 재설정한다.
AxmVirtualGetAxisNoMap 설정한 가상 축 번호를 반환한다.
AxmVirtualSetMultiAxisNoMap 가상 축 번호를 여러 축에 대하여 설정한다.
AxmVirtualGetMultiAxisNoMap 여러 축에 대하여 설정된 가상 축 번호를 반환한다.
AxmVirtualResetAxisMap 가상 축 번호 설정을 해지하여 초기화한다.
AxmVirtualSetMultiReDefineAxisNo 축 번호를 재정의하는 함수이다.
AxmVirtualGetMultiReDefineAxisNo 재정의된 축 번호를 확인하는 함수이다.

AxmVirtualSetAxisNoMap

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 AxmVirtualSetAxisNoMap (long lRealAxisNo, long lVirtualAxisNo);
C#
uint AxmVirtualSetAxisNoMap(int lRealAxisNo, int lVirtualAxisNo); 
Visual Basic
Function AxmVirtualSetAxisNoMap(ByVal lRealAxisNo As Long, ByVal lVirtualAxisNo As Long) As Long
Delphi
function AxmVirtualSetAxisNoMap(lRealAxisNo : LongInt; lVirtualAxisNo : LongInt) : DWord; stdcall; 

Parameters

[in/out] Name [Init Value] Explanation
[in]lRealAxisNo 시스템에 장착된 실제 축 번호 (0 ~ (시스템에 장착된 축 수 - 1))
[in]lVirtualAxisNo 매핑할 가상 축 번호 (0 ~ (최대 축 수 -1))

Return Values

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

Description

초기 상태에서 AXM 모든 함수의 축 설정은 0 ~ (실제 시스템에 장착된 축 수 - 1) 범위에서 유효하지만 이 함수를 사용하면, 실제 장착된 축 번호 대신 임의의 축 번호로 바꿀 수 있다.
제어 시스템의 H/W 변경사항 발생 시 기존 프로그램에 할당된 축 번호를 그대로 유지하고, 실제 제어 축의 물리적인 위치를 변경하여 사용하기 위해 만들어진 함수이다.

주의 사항 : 여러 개의 실제 축 번호에 대하여 같은 번호로 가상 축을 중복해서 매핑하지 말아야 한다.

중복 매핑된 경우 실제 축 번호가 낮은 축만 가상 축 번호로 제어 할 수 있으며, 나머지 같은 가상 축 번호로 매핑된 축은 제어가 불가능하다.

Example

C++

// 실제 축 0축을 가상 축 5축으로 설정.
AxmVirtualSetAxisNoMap(0, 5);

// 설정 가상 축 확인.
long    lVirtualAxisNo;
AxmVirtualGetAxisNoMap(0, &lVirtualAxisNo);

See Also

AxmVirtualGetAxisNoMap, AxmVirtualSetMultiAxisNoMap, AxmVirtualGetMultiAxisNoMap,
AxmVirtualResetAxisMap, AxmVirtualSetMultiReDefineAxisNo, AxmVirtualGetMultiReDefineAxisNo

AxmVirtualGetAxisNoMap

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 AxmVirtualGetAxisNoMap (long lRealAxisNo, long *lpVirtualAxisNo);
C#
uint AxmVirtualSetAxisNoMap(int lRealAxisNo, ref int lpVirtualAxisNo); 
Visual Basic
Function AxmVirtualSetAxisNoMap(ByVal lRealAxisNo As Long, ByRef lpVirtualAxisNo As Long) As Long
Delphi
function AxmVirtualSetAxisNoMap(lRealAxisNo : LongInt; lVirtualAxisNo : PLongInt) : DWord; stdcall; 

Parameters

[in/out] Name [Init Value] Explanation
[in]lRealAxisNo 시스템에 장착된 실제 축 번호 (0 ~ (시스템에 장착된 축 수 - 1))
[out]lpVirtualAxisNo 매핑된 가상 축 번호 (0 ~ (최대 축 수 -1))

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

AxmVirtualSetAxisNoMap 함수로 설정된 실제 축 번호에 대한 가상 축 번호를 확인하는 함수이다.
매핑이 되어있지 않은 경우에는 -1 을 반환하고, 매핑이 되어있는 경우에는 해당 축이 반환된다.

Example

C++

// 실제 축 0축을 가상 축 5축으로 설정.
AxmVirtualSetAxisNoMap(0, 5);

// 설정 가상 축 확인.
long    lVirtualAxisNo;
AxmVirtualGetAxisNoMap(0, &lVirtualAxisNo);

See Also

AxmVirtualSetAxisNoMap, AxmVirtualSetMultiAxisNoMap, AxmVirtualGetMultiAxisNoMap,
AxmVirtualResetAxisMap, AxmVirtualSetMultiReDefineAxisNo, AxmVirtualGetMultiReDefineAxisNo

AxmVirtualSetMultiAxisNoMap

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 AxmVirtualSetMultiAxisNoMap (long lSize, long *lpRealAxesNo, long *lpVirtualAxesNo);
C#
uint AxmVirtualSetMultiAxisNoMap(int lSize, int[] lpRealAxesNo, int[] lpVirtualAxesNo); 
Visual Basic
Function AxmVirtualSetMultiAxisNoMap(ByVal lSize As Long, ByRef lpRealAxesNo As Long, ByRef lpVirtualAxesNo As Long) As Long
Delphi
function AxmVirtualSetMultiAxisNoMap(lSize: LongInt; lpRealAxesNo : PLongInt; lpVirtualAxesNo : PLongInt) : DWord; stdcall; 

Parameters

[in/out] Name [Init Value] Explanation
[in]lSize 설정할 축 수(1 ~ (최대 축 수 - 1))
[in]lpRealAxesNo 시스템에 장착된 실제 축 번호 배열
[in]lpVirtualAxesNo 매핑할 가상 축 번호 배열

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

실제 축 번호와 가상 축 번호를 다축에 대하여 배열로 매핑하는 함수이다.

초기 상태에서 AXM 모든 함수의 축 번호 설정은 0 ~ (실제 시스템에 장착된 축 수 - 1) 범위에서 유효하지만, 이 함수를 사용하여 실제 장착된 축 번호 대신 임의의 축 번호로 바꿀 수 있다.

제어 시스템의 H/W 변경사항 발생 시 기존 프로그램에 할당된 축 번호를 그대로 유지하고, 실제 제어 축의 물리적인 위치를 변경하여 사용하기 위해 만들어진 함수이다.

주의 사항 : 여러 개의 실제 축 번호에 대하여 같은 번호로 가상 축을 중복해서 매핑하지 말아야 한다.
중복 매핑된 경우 실제 축 번호가 낮은 축만 가상 축 번호로 제어 할 수 있으며, 같은 가상 축 번호로 매핑된 나머지 축은 제어가 불가능하다.

Example

C++

// 가상 축 설정.
long lSize, laRealAxes[4], laVirtualAxes[4];

lSize = 4;

laRealAxes[0] = 0;
laRealAxes[1] = 1;
laRealAxes[2] = 2;
laRealAxes[3] = 3;

laVirtualAxes[0] = 4;
laVirtualAxes[1] = 5;
laVirtualAxes[2] = 6;
laVirtualAxes[3] = 7;

// 0축을 4축으로, 1축을 5축으로, 2축을 6축으로, 3축을 7축으로 설정한다.
AxmVirtualSetMultiAxisNoMap(lSize, laRealAxes, laVirtualAxes);

// 가상 축 설정 확인.
long    laReadVirtualAxisNo[4];
AxmVirtualGetAxisNoMap(lSize, laRealAxes, &laReadVirtualAxisNo);

See Also

AxmVirtualSetAxisNoMap, AxmVirtualGetAxisNoMap, AxmVirtualGetMultiAxisNoMap,
AxmVirtualResetAxisMap, AxmVirtualSetMultiReDefineAxisNo, AxmVirtualGetMultiReDefineAxisNo

AxmVirtualGetMultiAxisNoMap

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 AxmVirtualGetMultiAxisNoMap (long lSize, long *lpRealAxesNo, long *lpVirtualAxesNo);
C#
uint AxmVirtualGetMultiAxisNoMap(int lSize, int[] lpRealAxesNo, int[] lpVirtualAxesNo); 
Visual Basic
Function AxmVirtualGetMultiAxisNoMap(ByVal lSize As Long, ByRef lpRealAxesNo As Long, ByRef lpVirtualAxesNo As Long) As Long
Delphi
function AxmVirtualGetMultiAxisNoMap(lSize: LongInt; lpRealAxesNo : PLongInt; lpVirtualAxesNo : PLongInt) : DWord; stdcall; 

Parameters

[in/out] Name [Init Value] Explanation
[in]lSize 설정한 축 수(1 ~ (최대 축 수 - 1))
[out]lpRealAxesNo 시스템에 장착된 실제 축 번호
[in]lpVirtualAxesNo 매핑한 가상 축 번호

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

AxmVirtualGetMultiAxisNoMap 를 사용하여 실제 매핑된 다수의 가상 축 번호를 확인한다.

Example

C++

// 가상 축 설정.
long lSize, laRealAxes[4], laVirtualAxes[4];

lSize = 4;

laRealAxes[0] = 0;
laRealAxes[1] = 1;
laRealAxes[2] = 2;
laRealAxes[3] = 3;

laVirtualAxes[0] = 4;
laVirtualAxes[1] = 5;
laVirtualAxes[2] = 6;
laVirtualAxes[3] = 7;

// 0축을 4축으로, 1축을 5축으로, 2축을 6축으로, 3축을 7축으로 설정한다.
AxmVirtualSetMultiAxisNoMap(lSize, laRealAxes, laVirtualAxes);

// 가상 축 설정 확인.
long    laReadVirtualAxisNo[4];
AxmVirtualGetAxisNoMap(lSize, laRealAxes, &laReadVirtualAxisNo);

See Also

AxmVirtualSetAxisNoMap, AxmVirtualGetAxisNoMap, AxmVirtualSetMultiAxisNoMap,
AxmVirtualResetAxisMap, AxmVirtualSetMultiReDefineAxisNo, AxmVirtualGetMultiReDefineAxisNo

AxmVirtualResetAxisMap

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 AxmVirtualResetAxisMap ();
C#
uint AxmVirtualResetAxisMap(); 
Visual Basic
Function AxmVirtualResetAxisMap() As Long
Delphi
function AxmVirtualResetAxisMap() : DWord; stdcall; 

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

현재 설정되어 있는 가상 축 매핑 내용을 초기화하여 함수 내에서 사용하는 축 번호들을 실제 시스템에 장착된 축 번호와 같게 한다.

Example

C++

// 가상 축 설정 해지.
AxmVirtualResetAxisMap();

See Also

AxmVirtualSetAxisNoMap, AxmVirtualGetAxisNoMap, AxmVirtualSetMultiAxisNoMap,
AxmVirtualGetMultiAxisNoMap, AxmVirtualSetMultiReDefineAxisNo, AxmVirtualGetMultiReDefineAxisNo

AxmVirtualSetMultiReDefineAxisNo

Purpose

가상 축 번호를 재정의한다.

A Serviceable Product

BPHR / BPFR BEHR / BEFR PCI-Nx04 PCIe-Nx04
 
PCI-Rxx04 PCIe-Rxx04-RTEX PCI-Rxx04-MLII PCI-Rxx00-MLIII
A4N A5N/A6N PM A4N A5N/A6N PM SGDV SGDV SGD7 PM
 
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

Format

C++
DWORD AxmVirtualSetMultiReDefineAxisNo (long lSize, long *lpReDefineAxesNo);
C#
uint AxmVirtualSetMultiReDefineAxisNo(int lSize, int[] lpReDefineAxesNo); 
Visual Basic
Function AxmVirtualSetMultiReDefineAxisNo(ByVal lSize As Long, ByRef lpReDefineAxesNo As Long) As Long
Delphi
function AxmVirtualSetMultiReDefineAxisNo(lSize: LongInt; lpReDefineAxesNo: PLongInt) : DWord; stdcall; 

Parameters

[in/out] Name [Init Value] Explanation
[in]lSize 설정할 축 수(1 ~ (최대 축 수 - 1))
[in]lpReDefineAxesNo 재정의할 축 번호 배열

Return Values

[0000] AXT_RT_SUCCESS : 함수 실행 성공
[1160] AXT_RT_1ST_BELOW_MIN_VALUE : 축 수(lSize) 입력값이 0 이하임
[1161] AXT_RT_1ST_ABOVE_MAX_VALUE : 축 수(lSize) 입력값이 전체 축 수를 초과하였음
[1162] AXT_RT_2ST_BELOW_MIN_VALUE : 재정의할 축 번호 입력값이 NULL이거나 음수임
[4053] AXT_RT_MOTION_NOT_INITIAL_AXIS_NO: 해당 축 모션 초기화 실패
[4101] AXT_RT_MOTION_INVALID_AXIS_NO: 해당 축이 존재하지 않음
[4261] AXT_RT_HW_ACCESS_ERROR : 시스템 메모리 할당 시 에러 발생
* See error code Table for more information on status error codes

Description

축 번호를 사용자가 실제로 구동되기 원하는 축 번호로 재정의하는 함수이다.
제어 시스템의 H/W 변경사항 발생 시, 기존 프로그램 소스코드의 축 번호를 그대로 유지하고 실제 제어 축의 물리적인 위치를 변경하여 사용하기 위해 만들어진 함수이다.

주의 사항 : 여러 개의 실제 축 번호에 대하여 같은 번호로 가상 축을 중복해서 매핑하지 말아야 한다.
중복 매핑된 경우 실제 축 번호가 낮은 축만 가상 축 번호로 제어 할 수 있으며, 같은 가상 축 번호로 매핑된 나머지 축은 제어가 불가능하다.

Example

C++

// 재정의할 축 번호
long lpReDefineAxesNo[4] = {2, 3, 0, 1};

// 0번 축을 2번 축으로, 1번 축을 3번 축으로, 2번 축을 0번 축으로, 3번 축을 1번 축으로 설정한다. 
// 이 후, 0번 축에 구동 명령을 내리면 2번 축이 구동된다.
AxmVirtualSetMultiReDefineAxisNo(4, lpReDefineAxesNo);

// 재정의된 축 번호 확인
long lpReadReDefineAxesNo[4];
AxmVirtualGetMultiReDefineAxisNo(4, lpReadReDefineAxesNo);

See Also

AxmVirtualSetAxisNoMap, AxmVirtualGetAxisNoMap, AxmVirtualSetMultiAxisNoMap,
AxmVirtualGetMultiAxisNoMap, AxmVirtualResetAxisMap, AxmVirtualGetMultiReDefineAxisNo

AxmVirtualGetMultiReDefineAxisNo

Purpose

가상 축 번호를 확인한다.

A Serviceable Product

BPHR / BPFR BEHR / BEFR PCI-Nx04 PCIe-Nx04
 
PCI-Rxx04 PCIe-Rxx04-RTEX PCI-Rxx04-MLII PCI-Rxx00-MLIII
A4N A5N/A6N PM A4N A5N/A6N PM SGDV SGDV SGD7 PM
 
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

Format

C++
DWORD AxmVirtualGetMultiReDefineAxisNo (long lSize, long *lpReDefineAxesNo);
C#
uint AxmVirtualGetMultiReDefineAxisNo(int lSize, int[] lpReDefineAxesNo); 
Visual Basic
Function AxmVirtualGetMultiReDefineAxisNo(ByVal lSize As Long, ByRef lpReDefineAxesNo As Long) As Long
Delphi
function AxmVirtualGetMultiReDefineAxisNo(lSize: LongInt; lpReDefineAxesNo: PLongInt) : DWord; stdcall; 

Parameters

[in/out] Name [Init Value] Explanation
[in]lSize 설정할 축 수(1 ~ (최대 축 수 - 1))
[out]lpReDefineAxesNo 재정의된 축 번호를 가져올 배열

Return Values

[0000] AXT_RT_SUCCESS : 함수 실행 성공
[1160] AXT_RT_1ST_BELOW_MIN_VALUE : 축 수(lSize) 입력값이 0 이하임
[1161] AXT_RT_1ST_ABOVE_MAX_VALUE : 축 수(lSize) 입력값이 전체 축 수를 초과하였음
[1162] AXT_RT_1ST_BELOW_MIN_VALUE : 재정의 축 번호 배열 값이 NULL임
[4101] AXT_RT_MOTION_INVALID_AXIS_NO: 해당 축이 존재하지 않음
[4261] AXT_RT_HW_ACCESS_ERROR : 시스템 메모리 할당 시 에러 발생
* See error code Table for more information on status error codes

Description

AxmVirtualSetMultiReDefineAxisNo 를 이용하여 재정의된 축 번호를 확인하는 함수이다.

Example

C++

// 재정의된 축 번호 확인
long lpReadReDefineAxesNo[4];
AxmVirtualGetMultiReDefineAxisNo(4, lpReadReDefineAxesNo);

See Also

AxmVirtualSetAxisNoMap, AxmVirtualGetAxisNoMap, AxmVirtualSetMultiAxisNoMap,
AxmVirtualGetMultiAxisNoMap, AxmVirtualResetAxisMap, AxmVirtualSetMultiReDefineAxisNo