가상 축 매핑
가상 축 매핑이란 라이브러리에서 구동 명령을 내릴 때 실제 해당 축 번호가 아닌 임의의 축 번호를 사용하여 명령을 내릴 수 있도록 하기 위한 함수이다.
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();
// 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