Skip to content

AXP 라이브러리 함수

Function Description
AxpMacroBeginNode 지정된 매크로에 노드 등록을 시작한다.
AxpMacroEndNode 지정된 매크로에 노드 등록을 종료한다.
AxpMacroWriteClear 지정된 매크로에 등록된 노드들을 모두 삭제한다.
AxpMacroAddNode 지정된 매크로에 노드를 등록한다.
AxpMacroModifyNode 지정된 매크로에 등록된 노드의 데이터를 변경한다.
AxpMacroGetNode 지정된 매크로와 노드에 대해 반환한다.
AxpMacroCheckNodeAll 지정된 매크로에 등록된 노드들을 검사한 후 에러가 발생 노드 위치와 에러 코드를 반환한다.
AxpMacroGetCheckResult 지정된 매크로의 검사 결과를 반환한다.
AxpMacroStart 지정된 매크로의 구동을 시작한다.
AxpMacroSetException 지정한 모듈의 출력 접점별로 제어 가능여부를 예외처리한다.
AxpMacroGetException 지정한 모듈의 출력 접점별로 제어 가능여부 설정값을 확인한다.
AxpMacroResetException 설정한 예외처리를 모두 초기화 한다.
AxpMacroSkip Wait 명령의 Skip여부를 설정한다.
AxpMacorPause 구동중인 매크로를 일시정지한다.
AxpMacroResume 지정된 매크로가 Pause상태일 때 재개한다.
AxpMacroGetStartInfo 지정된 매크로의 구동 조건을 반환한다.
AxpMacroStop 지정된 매크로의 구동을 정지한다.
AxpMacroReadRunStatus 지정된 매크로의 구동상태 정보를 확인한다.
AxpMacroGetNodeNum 지정된 매크로에 등록된 노드개수와 현재 구동중인 노드정보를 반환한다.
AxpMacroReadFunctionStatus 지정된 매크로와 함수에 대한 구동정보를 반환한다.

AxpMacroBeginNode

Purpose

지정된 매크로에 노드 등록을 시작한다. 매크로를 등록하기 위해서는 반드시 이 함수를 사용한 후 등록 함수로 (AxpMacroAddNode) 노드를 등록해야 된다.

주의 사항: EtherCAT Embedded(S/W) Type 전용 함수

Format

C++
DWORD AxpMacroBeginNode(long lMacroNo);
C#
Visual Basic
Function AxpMacroBeginNode(ByVal lMacroNo As Long) As Long
Delphi
function AxpMacroBeginNode(lMacroNo: LongInt) : DWord; stdcall;

Parameters

[in/out] Name [Init Value] Explanation
[in]lMacroNo (0 ~ 95) 노드 등록을 시작 할 매크로 번호
[0~95]지정한 매크로에 노드 등록을 시작한다.

Return Values

[0000] AXT_RT_SUCCESS : 매크로 노드 등록 시작설정 성공
[1061] AXT_RT_RTOS_OPEN_ERROR: EtherCAT Master 구동 에러
[1106] AXT_RT_OPEN_ERROR: AXL 라이브러리 오픈 실패
[4400] AXT_RT_INAVLID_NO: 매크로 번호 이상
[6714] AXT_RT_MACRO_IN_OPERATION: 매크로 구동 중 등록금지 에러
[6712] AXT_RT_MACRO_ALREADY_BEGIN: 매크로 노드 등록 시작함수 중복 호출

Description

96 개의 매크로 중 지정된 매크로에 노드 등록을 시작한다. 이 함수가 호출되면 기존에 등록된 모든 노드들은 자동으로 삭제된다. 노드는 AxpMacroAddNode 함수를 사용하여 노드들을 등록할 수 있으며, 등록 후에는 반드시 AxpMacroEndNode 함수를 이용해 등록을 종료해야 된다.

예제 코드

C++

// 0번 매크로에 노드 등록을 시작한다.
long lMacroNo = 0;

AxpMacroBeginNode(lMacroNo);

Visual Basic

0 매크로에 노드 등록을 시작한다.
Dim lMacroNo As Long

lMacroNo = 0
AxpMacroBeginNode lMacroNo

Delphi

{ 0번 매크로에 노드 등록을 시작한다. }
var
   lMacroNo: Long;

begin
   lMacroNo := 0;
   AxpMacroBeginNode(lMacroNo);
end;

AxpMacroEndNode

Purpose

지정된 매크로에 노드 등록을 종료한다.
주의 사항: EtherCAT Embedded(S/W) Type 전용 함수

Format

C++
DWORD AxpMacroEndNode(long lMacroNo);
C#
Visual Basic
Function AxpMacroEndNode(ByVal lMacroNo As Long) As Long
Delphi
function AxpMacroEndNode(lMacroNo: LongInt) : DWord; stdcall;

Parameters

[in/out] Name [Init Value] Explanation
[in]lMacroNo (0 ~ 95) 노드 등록을 종료할 매크로 번호
[0~95] 지정한 매크로에 노드 등록을 종료한다.

Return Values

[0000] AXT_RT_SUCCESS : 매크로 노드 등록 종료설정 성공
[1061] AXT_RT_RTOS_OPEN_ERROR: EtherCAT Master 구동 에러
[1106] AXT_RT_OPEN_ERROR: AXL 라이브러리 오픈 실패
[4400] AXT_RT_INAVLID_NO: 매크로 번호 이상
[6710] AXT_RT_MACRO_NOT_NODE_BEGIN: 매크로 등록 시작함수가 호출되지않는 상태
[6714] AXT_RT_MACRO_IN_OPERATION: 매크로 구동 중 등록금지 에러

Description

매크로 등록을 시작한 후 이 함수로 노드등록을 종료하고 유효성을 확인하는 함수로(AxpMacroCheckNodeAll) 등록된 노드들을 검사한 후 시작함수를 통해 매크로를 시작할 수 있다.

예제 코드

C++

// 0번 매크로에 노드 등록 작업을 종료한다.
long lMacroNo = 0;
AxpMacroBeginNode(lMacroNo);

AxpMacroEndNode(lMacroNo);
Visual Basic
0 매크로에 노드 등록 작업을 종료한다.
Dim lMacroNo As Long
lMacroNo = 0
AxpMacroBeginNode lMacroNo

AxpMacroEndNode lMacroNo
Delphi
{ 0번 매크로에 노드 등록 작업을 종료한다. }
var
lMacroNo: Long;
begin
   lMacroNo := 0;
   AxpMacroBeginNode (lMacroNo);
   
   AxpMacroEndNode (lMacroNo);
end;

AxpMacroWriteClear

Purpose

지정된 매크로에 등록된 노드들을 모두 삭제한다.
주의 사항: EtherCAT Embedded(S/W) Type 전용 함수

Format

C++
DWORD AxpMacroWriteClear(long lMacroNo);
Visual Basic
Function AxpMacroWriteClear(ByVal lMacroNo As Long) As Long
Delphi
function AxpMacroWriteClear(lMacroNo: LongInt) : DWord; stdcall;

Parameters

[in/out] Name [Init Value] Explanation
[in]lMacroNo(-1 ~ 95) 등록된 모든 노드들을 삭제할 매크로 번호
[-1] 모든 매크로에 등록된 모든 노드들을 삭제한다.
[0~95] 지정한 매크로에 등록된 모든 노들들을 삭제한다.

Return Values

[0000] AXT_RT_SUCCESS : 매크로 노드 삭제 성공
[1061] AXT_RT_RTOS_OPEN_ERROR: EtherCAT Master 구동 에러
[1106] AXT_RT_OPEN_ERROR: AXL 라이브러리 오픈 실패
[4400] AXT_RT_INAVLID_NO: 매크로 번호 이상
[6714] AXT_RT_MACRO_IN_OPERATION: 매크로 구동 중 삭제금지 에러

Description

매크로에 등록된 모든 노드들을 한번에 삭제하기 위해서는 매크로 번호에 -1 을 입력하면 등록된 모든 매크로의 노드들이 한번에 삭제된다.

예제 코드

C++

// 지정한 매크로에 등록된 노드들을 모두 삭제한다.
long lMacroNo = 0;

AxpMacroWriteClear(lMacroNo); // 0번 매크로에 등록된 노드들을 모두 삭제한다.
AxpMacroWriteClear(-1); // 모든 매크로에 등록된 노드들을 모두 삭제한다.
Visual Basic
 지정한 매크로에 등록된 노드들을 모두 삭제한다.
Dim lMacroNo As Long

lMacroNo = 0
AxpMacroWriteClear lMacroNo  0 매크로에 등록된 노드들을 모두 삭제한다.
AxpMacroWriteClear -1  모든 매크로에 등록된 노드들을 모두 삭제한다.
Delphi
{ 지정한 매크로에 등록된 노드들을 모두 삭제한다. }
var
    lMacroNo: Long;
begin
   lMacroNo := 0;
   AxpMacroEndNode(lMacroNo); { 0번 매크로에 등록된 노드들을 모두 삭제한다. }
   AxpMacroEndNode(-1); { 모든 매크로에 등록된 노드들을 모두 삭제한다. }
end;

AxpMacroAddNode

Purpose

지정된 매크로에 특정 동작을 수행하는 노드를 등록한다.(하나의 매크로 당 최대 64 개)
주의 사항: EtherCAT Embedded(S/W) Type 전용 함수

Format

C++
DWORD AxpMacroAddNode(long lMacroNo, DWORD uFunction, double* dpArg);
Visual Basic
Function AxpMacroAddNode(ByVal lMacroNo As Long, ByVal uFunction As Long, ByRef dpArg As Double) As Long
Delphi
function AxpMacroAddNode(lMacroNo: LongInt; uFunction: Dword; dpArg : PDouble) : DWord; stdcall;

Parameters

[in/out] Name [Init Value] Explanation
[in]lMacroNo(0~95) 노드를 등록할 매크로 번호
  [0~95] 지정한 매크로에 노드를 등록한다.
[in]uFunction(0~7) 구동함수 : { AXT_MACRO_FUNCTION }
  [0] MACRO_FUNC_CALL : 다른 매크로를 호출
  [1] MACRO_FUNC_JUMP : 다른 매크로나 노드로 점프
  [2] MACRO_FUNC_RETURN : 호출한 위치로 되돌아감
  [3] MACRO_FUNC_REPEAT : 특정 구간을 반복 구동함
  [4] MACRO_FUNC_SET_OUTPUT : 디지털/아날로그 출력값을 설정함
  [5] MACRO_FUNC_WAIT : 밀리세컨드 단위로 대기함
  [6] MACRO_FUNC_STOP : 매크로 구동을 정지함
  [7] MACRO_FUNC_PAUSE : 매크로의 구동을 일시 정지함
[in]*dpArg 21개의 double형 Type의 배열 포인트
[0] MACRO_FUNC_CALL
  - dpArg[0]: 호출 할 다른 매크로 번호
[1] MACRO_FUNC_JUMP
  - dpArg[0]: Jump Type
    [0] MACRO_JUMP_MACRO: 다른 매크로로 점프
    [1] MACRO_JUMP_NODE: 매크로 내의 다른 노드로 점프
  - dpArg[1]: 점프할 매크로 번호 또는 노드번호
[2] MACRO_FUNC_RETURN
  - 전달인자 없음
[3] MACRO_FUNC_REPEAT
  - dpArg[0]: 반복구동 할 회수
  - dpArg[1]: 현재 위치에서 반복할 노드 번호
    (현재 노드 번호보다 낮은 번호여야 됨)
[4] MACRO_FUNC_SET_OUTPUT
  - dpArg[0]: Output Type
    [0] MACRO_OUTPUT _DIGITAL: 디지털 출력제어
    [1] MACRO_OUTPUT _ANALOG: 아날로그 출력제어
    [2] MACRO_OUTPUT_DIGITAL_PDO: PDO 맵핑 데이터 제어
  - dpArg[1]: 모듈 번호(DIO) 또는 채널번호(AIO)
  - dpArg[2]: Data Type
    [0] MACRO_DATA_BIT: 디지털 출력을 비트 단위로 제어
    [1] MACRO_DATA_BYTE: 디지털 출력을 바이트 단위로 제어
    [2] MACRO_DATA_WORD: 디지털 출력을 워드 단위로 제어
    [3] MACRO_DATA_DWORD: 디지털 출력을 더블워드 단위로 제어
    [4] MACRO_DATA_REAL: Real Data Type 제어
    [5] MACRO_DATA_VOLTAGE: 아날로그 출력을 Voltage값으로 제어
    [6] MACRO_DATA_DIGIT: 아날로그 출력을 Digit값으로 제어
    [7] MACRO_DATA_BYTE_ARR: 디지털 출력을 Byte단위로 16개까지 한번에 제어
    [8] MACRO_DATA_WORD_ARR: 디지털 출력을 Word단위로 16개까지 한번에 제어
    [9] MACRO_DATA_DWORD_ARR: 디지털 출력을 DWord단위로 16개까지 한번에 제어
    [10] MACRO_DATA_VOLTAGE_ARR: 아날로그 출력을 Voltage 값으로 16채널을 한번에 제어
    [11] MACRO_DATA_DIGIT_ARR: 아날로그 출력을 Digit값으로 16채널을 한번에 제어
  - dpArg[3]: Offset 또는 Byte Size(MACRO_DATA_BYTE12 일경우)
    (아날로그 출력일 경우 사용하지 않음)
  - dpArg[4]: Data Type의 설정에 따른 출력 설정값
  - dpArg[5] ~ dArg[20]: Array Type에 따른 출력값
    ※ 지정한 Type(최대 16개) 값들을 여러 개의 출력 모듈에 상관없이 한번에 출력함
[5] MACRO_FUNC_WAIT
  - dpArg[0]: 미리세컨드 단위의 대기시간
[6] MACRO_FUNC_STOP
  - dpArg[0]:
    [0] MACRO_QUICK_STOP: 모션구동 급정지 후 매크로 정지
    [1] MACRO_SLOW_STOP: 모션 구동 감속정지 후 매크로 정지
[7] MACRO_FUNC_PAUSE
  - 전달인자 없음

Return Values

[0000] AXT_RT_SUCCESS : 매크로 노드등록 성공
[1061] AXT_RT_RTOS_OPEN_ERROR: EtherCAT Master 구동 에러
[1106] AXT_RT_OPEN_ERROR: AXL 라이브러리 오픈 실패
[4400] AXT_RT_INAVLID_NO: 매크로 번호 이상
[6710] AXT_RT_MACRO_NOT_NODE_BEGIN: 매크로 등록 시작함수가 호출되지않는 상태
[6714] AXT_RT_MACRO_IN_OPERATION: 매크로 구동 중 삭제금지 에러
[6716] AXT_RT_MACRO_NOT_SUPPORT_FUNCTION: 지원하지 않는 매크로 함수사용 에러
[6717] AXT_RT_MACRO_NODE_FULL: 매크로에 등록가능한 노드수 초과

Description

하나의 매크로에 64 개의 노드를 등록할 수 있다. 노드 등록함수의 전달인자는(dpArg) 반드시 21 개의 double 형 배열 포인트를 사용해야 된다. 각 배열 값의 의미는 지정한 Function 값에 따라 달라지므로 설정에 주의를 기울여야 한다.

Funtion Explanation
[0] MACRO_FUNC_CALL 1) Call한 매크로 번호로 제어권을 넘김
2) 현재 매크로는 Ready 상태가 된다.
3) 호출한 매크로의 동작이 끝나면 제어권이 현재 매크로로 반환되면 Call한 노드 위치로 되돌아와 이후 노드부터 순차적으로 다시 실행됨
4) Call할 매크로가 Ready 상태가 아니면 Ready 상태가 될 때 까지 현재의 노드위치에서 대기한다.
5) Call할 매크로가 현재 매크로 번호와 동일하면 무시하고 다음 노드를 실행한다.
[1] MACRO_FUNC_JUMP Jump Type : [0] MACRO_JUMP_MACRO 일때
1) Jump할 매크로 번호로 제어권을 넘김
2) Jump한 후 현재 매크로는 Ready 상태가 된다.
3) 제어권을 넘김 후 제어권이 다시 반환되지 않고 Jump한 매크로의 동작이 끝나면 같이 종료됨
4) Jump할 매크로가 Ready 상태가 아니면 Ready 상태가 될 때 까지 현재의 노드위치에서 대기한다.
5) Jump할 매크로가 현재 매크로 번호와 동일하면 무시하고 다음 노드를 실행한다.
Jump Type : [1] MACRO_JUMP_NODE 일때
1) Jump할 노드로 제어 순서를 변경하여 제어한다.
2) Jump할 노드가 현재 노드 번호와 동일하면 무시하고 다음 노드를 실행한다.
[2] MACRO_FUNC_RETURN 1) 현재 실행중인 매크로가 CALL이나 JUMP명령으로 실행중이면 원래의 매크로로 다시 Return됨
2) Return 후 현재 매크로는 Ready 상태가 된다.
3) Return 할 매크로가 Ready 상태가 아니면 Ready 상태가 될 때 까지 현재의 노드위치에서 대기한다.
[3] MACRO_FUNC_REPEAT 1) 현재의 노드 위치에서 지정한 노드 사이를 설정한 반복 횟수 만큼 반복 구동함.
2) 반복구간 설정시 REPEAT명령보다 낮은 번호의 Node번호를 설정해야 한다.
3) 반복설정 횟수가 1보다 적을 경우 반복구동을 하지않는다.
[4] MACRO_FUNC_SET_OUTPUT 1) Digital Output / Analog Output을 Output Type에 따라 제어한다.
2) XXX_ARR Type들은 모듈에 상관없이 한번에 16개까지 제어 가능하다.
3) DIGITAL_PDO Type은 DIO모듈의 PDO를 직접 제어하기 위한 함수이다.(예, MFC, RPG, RF등을 제어하기 위한 Type)
4) Output Type에 따라 전달 인자의 의미가 달라지므로 사용에 주의해야 한다.
5) SET_OUTPUT 명령의 경우 여러 노드에 걸쳐 있더라도 WAIT 명령을 만나기 전까지 동시에 제어된다.
[5] MACRO_FUNC_WAIT 1) 지정한 시간동안 대기한다. (mSec단위)
[6] MACRO_FUNC_STOP 1) 매크로 구동을 종료한다.
[7] MACRO_FUNC_PAUSE 1) 매크로 구동을 일시 정지한다.
2) 일시 정지 중에는 RUN 상태를 유지한다.
3) AxpMacroResume 함수를 이용하여 재개할 수 있다.

예제 코드

C++

// 0번 매크로에 디지털 출력 한접점을 On / Off 하는 예제
long lMacroNo = 0;
double daArg[AXP_MAX_MACRO_SET_ARG] = { 0.0 };
// 0번 매크로에 노드등록을 시작한다.
AxpMacroBeginNode(lMacroNo);
// 0번 디지털 출력모듈의 0번 Bit를 ON한다.
daArg[0] = MACRO_DIGITAL_OUTPUT; // 디지털 출력 제어
daArg[1] = 0; // 0번 모듈 제어
daArg[2] = MACRO_DATA_BIT; // Bit 단위 출력제어
daArg[3] = 0; // 0번 Bit 제어
daArg[4] = 1; // 0번 Bit ON
AxpMacroAddNode(lMacroNo, MACRO_FUNC_SET_OUTPUT, daArg);
// 1초(1000msec)동안 대기한다.
daArg[0] = 1000;
AxpMacroAddNode(lMacroNo, MACRO_FUNC_WAIT, daArg);
// 0번 디지털 출력모듈의 0번 Bit를 OFF한다.
daArg[0] = MACRO_DIGITAL_OUTPUT; // 디지털 출력 제어
daArg[1] = 0; // 0번 모듈 제어
daArg[2] = MACRO_DATA_BIT; // Bit 단위 출력제어
daArg[3] = 0; // 0번 Bit 제어
daArg[4] = 0; // 0번 Bit OFF
AxpMacroAddNode(lMacroNo, MACRO_FUNC_SET_OUTPUT, daArg);
// 1초(1000msec)동안 대기한다.
daArg[0] = 1000;
AxpMacroAddNode(lMacroNo, MACRO_FUNC_WAIT, daArg);
// 0번 매크로에 노드등록을 종료한다.
AxpMacroEndNode(lMacroNo);
Visual Basic
 0 매크로에 디지털 출력 한접점을 On / Off 하는 예제
Dim lMacroNo As Long
Dim daArg(0 To 15) As Double
 0 매크로에 노드등록을 시작한다.
AxpMacroBeginNode lMacroNo
 0 디지털 출력모듈의 0 Bit ON한다.
daArg(0) = MACRO_DIGITAL_OUTPUT  디지털 출력 제어
daArg(1) = 0  0 모듈 제어
daArg(2) = MACRO_DATA_BIT  Bit 단위 출력제어
daArg(3) = 0  0 Bit 제어
daArg(4) = 1  0 Bit ON
AxpMacroAddNode lMacroNo, MACRO_FUNC_SET_OUTPUT, daArg(0)
 (1000msec)동안 대기한다.
daArg(0) = 1000
AxpMacroAddNode lMacroNo, MACRO_FUNC_WAIT, daArg(0)
 0 디지털 출력모듈의 0 Bit OFF한다.
daArg(0) = MACRO_DIGITAL_OUTPUT  디지털 출력 제어
daArg(1) = 0  0 모듈 제어
daArg(2) = MACRO_DATA_BIT  Bit 단위 출력제어
daArg(3) = 0  0 Bit 제어
daArg(4) = 0  0 Bit OFF
AxpMacroAddNode lMacroNo, MACRO_FUNC_SET_OUTPUT, daArg(0)
 1(1000msec)동안 대기한다.
daArg(0) = 1000
AxpMacroAddNode lMacroNo, MACRO_FUNC_WAIT, daArg(0)
 0 매크로에 노드등록을 종료한다.
AxpMacroEndNode lMacroNo
Delphi
{0번 매크로에 디지털 출력 한접점을 On / Off 하는 예제 }
var
    lMacroNo : LongInt;
    daArg : array [0.. AXP_MAX_MACRO_SET_ARG] of double;

brgin
    { 0번 매크로에 노드등록을 시작한다. }
    AxpMacroBeginNode(lMacroNo);
    { 0번 디지털 출력모듈의 0번 Bit를 ON한다. }
    daArg[0] := MACRO_DIGITAL_OUTPUT; { 디지털 출력 제어 }
    daArg[1] := 0; { 0번 모듈 제어 }
    daArg[2] := MACRO_DATA_BIT; { Bit 단위 출력제어 }
    daArg[3] := 0; { 0번 Bit 제어 }
    daArg[4] := 1; { 0번 Bit ON }
    AxpMacroAddNode(lMacroNo, MACRO_FUNC_SET_OUTPUT, @daArg);
    { 1초(1000msec)동안 대기한다.
    daArg[0] := 1000;
    AxpMacroAddNode(lMacroNo, MACRO_FUNC_WAIT, @daArg);
    { 0번 디지털 출력모듈의 0번 Bit를 OFF한다. }
    daArg[0] := MACRO_DIGITAL_OUTPUT; { 디지털 출력 제어 }
    daArg[1] := 0; { 0번 모듈 제어 }
    daArg[2] := MACRO_DATA_BIT; { Bit 단위 출력제어 }
    daArg[3] := 0; { 0번 Bit 제어 }
    daArg[4] := 0; { 0번 Bit OFF }
    AxpMacroAddNode(lMacroNo, MACRO_FUNC_SET_OUTPUT, @daArg);
    { 1초(1000msec)동안 대기한다. }
    daArg[0] := 1000;
    AxpMacroAddNode(lMacroNo, MACRO_FUNC_WAIT, @daArg);
    { 0번 매크로에 노드등록을 종료한다. }
    AxpMacroEndNode(lMacroNo);
end;

AxpMacroModifyNode

Purpose

지정된 매크로가 RUN 상태가 아닐 때 특정 Node 의 데이터 설정값을 변경한다.
주의 사항: EtherCAT Embedded(S/W) Type 전용 함수

Format

C++
DWORD AxpMacroModifyNode(long lMacroNo, long lNodeNo, double* dpArg);
Visual Basic
Function AxpMacroModifyNode(ByVal lMacroNo As Long, ByVal lNodeNo As Long, ByRef dpArg As Double) As Long
Delphi
function AxpMacroModifyNode(lMacroNo: LongInt; lNodeNo: LongInt; dpArg : PDouble) : DWord; stdcall;

Parameters

[in/out] Name [Init Value] Explanation
[in]lMacroNo(0~95) 노드를 등록할 매크로 번호
  [0~95] 지정한 매크로에 노드를 등록한다.
[in]uFunction(0~7) 구동함수 : { AXT_MACRO_FUNCTION }
  [0] MACRO_FUNC_CALL : 다른 매크로를 호출
  [1] MACRO_FUNC_JUMP : 다른 매크로나 노드로 점프
  [3] MACRO_FUNC_REPEAT : 특정 구간을 반복 구동함
  [4] MACRO_FUNC_SET_OUTPUT : 디지털/아날로그 출력값을 설정함
  [5] MACRO_FUNC_WAIT : 밀리세컨드 단위로 대기함
  [6] MACRO_FUNC_STOP : 매크로 구동을 정지함
  [7] MACRO_FUNC_PAUSE : 매크로의 구동을 일시 정지함
[in]*dpArg 21개의 double형 Type의 배열 포인트
[0] MACRO_FUNC_CALL
  - dpArg[0]: 호출 할 다른 매크로 번호
[1] MACRO_FUNC_JUMP
  - dpArg[0]: Jump Type
    [0] MACRO_JUMP_MACRO: 다른 매크로로 점프
    [1] MACRO_JUMP_NODE: 매크로 내의 다른 노드로 점프
  - dpArg[1]: 점프할 매크로 번호 또는 노드번호
[3] MACRO_FUNC_REPEAT
  - dpArg[0]: 반복구동 할 회수
  - dpArg[1]: 현재 위치에서 반복할 노드 번호
    (현재 노드 번호보다 낮은 번호여야 됨)
[4] MACRO_FUNC_SET_OUTPUT
  - dpArg[0]: Output Type
    [0] MACRO_OUTPUT _DIGITAL: 디지털 출력제어
    [1] MACRO_OUTPUT _ANALOG: 아날로그 출력제어
    [2] MACRO_OUTPUT_DIGITAL_PDO: PDO 맵핑 데이터 제어
  - dpArg[1]: 모듈 번호(DIO) 또는 채널번호(AIO)
  - dpArg[2]: Data Type
    [0] MACRO_DATA_BIT: 디지털 출력을 비트 단위로 제어
    [1] MACRO_DATA_BYTE: 디지털 출력을 바이트 단위로 제어
    [2] MACRO_DATA_WORD: 디지털 출력을 워드 단위로 제어
    [3] MACRO_DATA_DWORD: 디지털 출력을 더블워드 단위로 제어
    [4] MACRO_DATA_REAL: Real Data Type 제어
    [5] MACRO_DATA_VOLTAGE: 아날로그 출력을 Voltage값으로 제어
    [6] MACRO_DATA_DIGIT: 아날로그 출력을 Digit값으로 제어
    [7] MACRO_DATA_BYTE_ARR: 디지털 출력을 Byte단위로 16개까지 한번에 제어
    [8] MACRO_DATA_WORD_ARR: 디지털 출력을 Word단위로 16개까지 한번에 제어
    [9] MACRO_DATA_DWORD_ARR: 디지털 출력을 DWord단위로 16개까지 한번에 제어
    [10] MACRO_DATA_VOLTAGE_ARR: 아날로그 출력을 Voltage 값으로 16채널을 한번에 제어
    [11] MACRO_DATA_DIGIT_ARR: 아날로그 출력을 Digit값으로 16채널을 한번에 제어
  - dpArg[3] : Offset 또는 Byte Size(MACRO_DATA_BYTE12 일경우)
    (아날로그 출력일 경우 사용하지 않음)
  - dpArg[4]: Data Type의 설정에 따른 출력 설정값
  - dpArg[5] ~ dArg[20]: Array Type에 따른 출력값
    ※ 지정한 Type(최대 16개) 값들을 여러 개의 출력 모듈에 상관없이 한번에 출력함
[5] MACRO_FUNC_WAIT
  - dpArg[0]: 미리세컨드 단위의 대기시간
[6] MACRO_FUNC_STOP
  - dpArg[0]:
    [0] MACRO_QUICK_STOP: 모션구동 급정지 후 매크로 정지
    [1] MACRO_SLOW_STOP: 모션 구동 감속정지 후 매크로 정지

Return Values

[0000] AXT_RT_SUCCESS : 매크로 노드변경 성공
[1061] AXT_RT_RTOS_OPEN_ERROR: EtherCAT Master 구동 에러
[1106] AXT_RT_OPEN_ERROR: AXL 라이브러리 오픈 실패
[4400] AXT_RT_INAVLID_NO: 매크로 번호 이상
[6701] AXT_RT_MACRO_INVALID_NODE_NO: 지정한 Node No 가 유효하지 않을 때 (0~등록된 Node 갯수 -1)
[6705] AXT_RT_MACRO_INVALID_STATUS: 매크로가 Node 변경가능한 상태가 아닐 때(RUN 상태)

Description

매크로가 대기중이거나 실행되지않을 때 등록된 함수의 설정값을 변경할 수 있다. AxpMacroModifyNode 함수는 등록된 Function 은 변경할 수 없고 Function 에 해당하는 설정값만 변경 가능하다. 주로 WAIT Function 의 대기 시간 변경이나 REPEAT 함수의 반복 횟수 변경등에 사용된다.

예제 코드

C++

// 0번 매크로의 1번 노드에 등록된 WAIT 명령의 대기시간을 1000에서 2000으로 변경하는 예제
long lMacroNo = 0;
double daArg[AXP_MAX_MACRO_SET_ARG] = { 0.0 };
// 0번 매크로에 노드등록을 시작한다.
AxpMacroBeginNode(lMacroNo);
// 0번 디지털 출력모듈의 0번 Bit를 ON한다.
daArg[0] = MACRO_DIGITAL_OUTPUT; // 디지털 출력 제어
daArg[1] = 0; // 0번 모듈 제어
daArg[2] = MACRO_DATA_BIT; // Bit 단위 출력제어
daArg[3] = 0; // 0번 Bit 제어
daArg[4] = 1; // 0번 Bit ON
AxpMacroAddNode(lMacroNo, MACRO_FUNC_SET_OUTPUT, daArg);
// 1초(1000msec)동안 대기한다.
daArg[0] = 1000;
AxpMacroAddNode(lMacroNo, MACRO_FUNC_WAIT, daArg);
// 0번 디지털 출력모듈의 0번 Bit를 OFF한다.
daArg[0] = MACRO_DIGITAL_OUTPUT; // 디지털 출력 제어
daArg[1] = 0; // 0번 모듈 제어
daArg[2] = MACRO_DATA_BIT; // Bit 단위 출력제어
daArg[3] = 0; // 0번 Bit 제어
daArg[4] = 0; // 0번 Bit OFF
AxpMacroAddNode(lMacroNo, MACRO_FUNC_SET_OUTPUT, daArg);
// 1초(1000msec)동안 대기한다.
daArg[0] = 1000;
AxpMacroAddNode(lMacroNo, MACRO_FUNC_WAIT, daArg);
// 0번 매크로에 노드등록을 종료한다.
AxpMacroEndNode(lMacroNo);

daArg[0] = 2000;
AxpMacroModifyNode(lMacroNo, 1, daArg);
Visual Basic
0 매크로의 1 노드에 등록된 WAIT 명령의 대기시간을 1000에서 2000으로 변경하는 예제
Dim lMacroNo As Long
Dim daArg(0 To 15) As Double
// 0 매크로에 노드등록을 시작한다.
AxpMacroBeginNode lMacroNo
// 0 디지털 출력모듈의 0 Bit ON한다.
daArg(0) = MACRO_DIGITAL_OUTPUT // 디지털 출력 제어
daArg(1) = 0 // 0 모듈 제어
daArg(2) = MACRO_DATA_BIT // Bit 단위 출력제어
daArg(3) = 0 // 0 Bit 제어
daArg(4) = 1 // 0 Bit ON
AxpMacroAddNode lMacroNo, MACRO_FUNC_SET_OUTPUT, daArg(0)
// 1(1000msec)동안 대기한다.
daArg(0) = 1000
AxpMacroAddNode lMacroNo, MACRO_FUNC_WAIT, daArg(0)
// 0 디지털 출력모듈의 0 Bit OFF한다.
daArg(0) = MACRO_DIGITAL_OUTPUT // 디지털 출력 제어
daArg(1) = 0 // 0 모듈 제어
daArg(2) = MACRO_DATA_BIT // Bit 단위 출력제어
daArg(3) = 0 // 0 Bit 제어
daArg(4) = 0 // 0 Bit OFF
AxpMacroAddNode lMacroNo, MACRO_FUNC_SET_OUTPUT, daArg(0)
// 1(1000msec)동안 대기한다.
daArg(0) = 1000
AxpMacroAddNode lMacroNo, MACRO_FUNC_WAIT, daArg(0)
// 0 매크로에 노드등록을 종료한다.
AxpMacroEndNode lMacroNo

daArg[0] = 2000;
AxpMacroModifyNode lMacroNo, 1, daArg(0)
Delphi
{0번 매크로의 1번 노드에 등록된 WAIT 명령의 대기시간을 1000에서 2000으로 변경하는 예제 }
var
    lMacroNo : LongInt;
    daArg : array [0.. AXP_MAX_MACRO_SET_ARG] of double;
brgin
    // 0번 매크로에 노드등록을 시작한다.
    AxpMacroBeginNode(lMacroNo);
    // 0번 디지털 출력모듈의 0번 Bit를 ON한다.
    daArg[0] := MACRO_DIGITAL_OUTPUT; // 디지털 출력 제어
    daArg[1] := 0; // 0번 모듈 제어
    daArg[2] := MACRO_DATA_BIT; // Bit 단위 출력제어
    daArg[3] := 0; // 0번 Bit 제어
    daArg[4] := 1; // 0번 Bit ON
    AxpMacroAddNode(lMacroNo, MACRO_FUNC_SET_OUTPUT, @daArg);
    // 1초(1000msec)동안 대기한다.
    daArg[0] := 1000;
    AxpMacroAddNode(lMacroNo, MACRO_FUNC_WAIT, @daArg);
    // 0번 디지털 출력모듈의 0번 Bit를 OFF한다.
    daArg[0] := MACRO_DIGITAL_OUTPUT; // 디지털 출력 제어
    daArg[1] := 0; // 0번 모듈 제어
    daArg[2] := MACRO_DATA_BIT; // Bit 단위 출력제어
    daArg[3] := 0; // 0번 Bit 제어
    daArg[4] := 0; // 0번 Bit OFF
    AxpMacroAddNode(lMacroNo, MACRO_FUNC_SET_OUTPUT, @daArg);
    // 1초(1000msec)동안 대기한다.
    daArg[0] := 1000;
    AxpMacroAddNode(lMacroNo, MACRO_FUNC_WAIT, @daArg);
    // 0번 매크로에 노드등록을 종료한다.
    AxpMacroEndNode(lMacroNo);
end;

daArg[0] := 2000;
AxpMacroModifyNode(lMacroNo, 1, @daArg);

AxpMacroGetNode

Purpose

지정된 매크로의 노드에 설정된 값을 반환한다.
주의 사항: EtherCAT Embedded(S/W) Type 전용 함수

Format

C++
DWORD AxpMacroGetNode(long lMacroNo, long lNodeNo, DWORD* upFunction, double* dpArg);
Visual Basic
Function AxpMacroGetNode(ByVal lMacroNo As Long, ByVal lNodeNo As Long, ByRef upFunction As Long, ByRef dpArg As Double) As Long
Delphi
function AxpMacroGetNode(lMacroNo: LongInt; lNodeNo: LongInt; upFunction : PDWord; dpArg : PDouble) : DWord; stdcall;

Parameters

[in/out] Name [Init Value] Explanation
[in]lMacroNo(0~95) 등록된 노드를 확인할 매크로 번호
  [0~95] 지정한 매크로의 노드들을 체크함
[in]lNodeNo(0~63) 등록된 노드 정보를 확인할 노드 번호
  [0~63] 설정값을 확인할 노드번호의 최대 값은 등록된 노드개수 – 1한 값
[out]upFunction(0~6) 지정한 노드에 설정된 Function 정보를 반환 { AXT_MACRO_FUNCTION }
  [0] MACRO_FUNC_CALL: 다른 매크로를 호출
  [1] MACRO_FUNC_JUMP: 다른 매크로나 노드로 점프
  [2] MACRO_FUNC_RETURN: 호출한 위치로 되돌아감
  [3] MACRO_FUNC_REPEAT: 특정 구간을 반복 구동함
  [4] MACRO_FUNC_SET_OUTPUT: 디지털/아날로그 출력값을 설정함
  [5] MACRO_FUNC_WAIT: 밀리세컨드 단위로 대기함
  [6] MACRO_FUNC_STOP: 매크로 구동을 정지함
  [7] MACRO_FUNC_PAUSE: 매크로의 구동을 일시 정지함
[out]dpArg 지정한 노드에 설정된 인자값들을 반환

[0] MACRO_FUNC_CALL
  - dpArg[0]: 호출 할 다른 매크로 번호
[1] MACRO_FUNC_JUMP
  - dpArg[0]: Jump Type
    [0] MACRO_JUMP_MACRO : 다른 매크로로 점프
    [1] MACRO_JUMP_NODE : 매크로 내의 다른 노드로 점프
  - dpArg[1]: 점프할 매크로 번호 또는 노드번호
[2] MACRO_FUNC_RETURN
  - 전달인자 없음
[3] MACRO_FUNC_REPEAT
  - dpArg[0]: 반복구동 할 회수
  - dpArg[1]: 현재 위치에서 반복할 노드 번호
[4] MACRO_FUNC_SET_OUTPUT
  - dpArg[0]: Output Type
    [0] MACRO_DIGITAL_OUTPUT : 디지털 출력제어
    [1] MACRO_ANALOG_OUTPUT : 아날로그 출력제어
  - dpArg[1]: 모듈 번호 또는 채널번호
  - dpArg[2]: Data Type
    [0] MACRO_DATA_BIT: 디지털 출력을 비트 단위로 제어
    [1] MACRO_DATA_BYTE: 디지털 출력을 바이트 단위로 제어
    [2] MACRO_DATA_WORD: 디지털 출력을 워드 단위로 제어
    [3] MACRO_DATA_DWORD: 디지털 출력을 더블워드 단위로 제어
    [4] MACRO_DATA_BYTE12: 디지털 출력을 12바이트까지 제어
    [5] MACRO_DATA_VOLTAGE: 아날로그 출력을 전압단위로 제어
    [6] MACRO_DATA_DIGIT: 아날로그 출력을 DIGIT값으로 제어
  - dpArg[3]: Offset 또는 Byte Size(MACRO_DATA_BYTE12 일경우)
    (아날로그 출력일 경우 사용되지 않음)
  - dpArg[4]: Data Type의 설정에 따른 출력 설정값
[5] MACRO_FUNC_WAIT
  - dpArg[0]: 미리세컨드 단위의 대기시간
[6] MACRO_FUNC_STOP
  - pArg[0]: 정지 방법을 설정
    [0] MACRO_QUICK_STOP: 모션 구동 급정지 후 매크로 정지
    [1] MACRO_SLOW_STOP: 모션 구동 감속정지 후 매크로 정지
[7] MACRO_FUNC_PAUSE
  - 전달인자 없음

Return Values

[0000] AXT_RT_SUCCESS : 매크로 노드확인 성공
[1061] AXT_RT_RTOS_OPEN_ERROR: EtherCAT Master 구동 에러
[1106] AXT_RT_OPEN_ERROR: AXL 라이브러리 오픈 실패
[4400] AXT_RT_INAVLID_NO: 매크로 번호 이상

Description

유효한 노드번호를 입력하기 위해 AxpMacroGetNodeNum 함수를 이용해 매크로에 등록된 전체 노드 개수를 0 ~ (TotalNodeNum – 1)의 값을 입력하여 등록된 모든 노드들의 설정값을 확인 할 수 있다.

예제 코드

C++

// 0번 매크로에 등록된 모든 매크로의 설정값을 확인하는 예제
long lMacroNo = 0;
long lTotalNodeNum = 0;
DWORD uFunction = 0;
double daArg[AXP_MAX_MACRO_GET_ARG] = { 0.0 };

// 0번 매크로에 등록된 노드 개수를 읽어온다.
AxpMacroGetNode(lMacroNo, NULL, &lTotalNodeNum);
for(nCount = 0; nCount < lTotalNodeNum; nCount++)
{
    AxpMacroGetNode(lMacroNo, &uFunction, daArg);
}
Visual Basic
‘지정된 시퀀스  번호의 등록된 시퀀스 구동을 모두 삭제한다.
Dim lMacroNo As Long
Dim lTotalNodeNum As Long
Dim uFunction As Long
Dim daArg(0 To 15) As Double
Dim nCount As Integer
 0 매크로에 등록된 노드 개수를 읽어온다.
AxpMacroGetNodeNum lMacroNo, 0, lTotalNodeNum
For nCount = 0 To lTotalNodeNum - 1
    AxpMacroGetNode lMacroNo, uFunction, daArg(0)
Next
Delphi
{ 0번 매크로에 등록된 모든 매크로의 설정값을 확인하는 예제 }
var
    lMacroNo : Long;
    lTotalNodeNum : Long;
    uFunction : DWORD;
    daArg : array [0.. AXP_MAX_MACRO_SET_ARG] of double;
    nCount : SmallInt;

begin
    // 0번 매크로에 등록된 노드 개수를 읽어온다.
    AxpMacroGetNodeNum(lMacroNo, 0, @lTotalNodeNum);
    for nCount := 0 to lTotalNodeNum do
    begin
        AxpMacroGetNode(lMacroNo, @uFunction, @daArg);
    end;
end;

AxpMacroCheckNodeAdll

Purpose

지정된 매크로에 등록된 노드들을 검사한 후 에러가 발생한 노드 위치와 에러코드를 반환한다.
주의 사항: EtherCAT Embedded(S/W) Type 전용 함수

Format

C++
DWORD AxpMacroCheckNodeAll(long lMacroNo, long* lpErrorNodeNo, DWORD* upErrorCode);
Visual Basic
Function AxpMacroCheckNodeAll(ByVal lMacroNo As Long, ByRef lpErrorNodeNo As Long, ByRef upErrorCode As Long) As Long
Delphi
function AxpMacroCheckNodeAll(lMacroNo: LongInt; lpErrorNodeNo: PLongInt; upErrorCode : PDWord) : DWord; stdcall;

Parameters

[in/out] Name [Init Value] Explanation
[in]lMacroNo(0~95) 등록된 노드를 확인할 매크로 번호
  [0~95] 지정한 매크로의 노드들을 체크함
[in]lNodeNo(0~63) 오류가 발생한 노드번호
[out]upErrorCode(1~12) 오류에 대한 에러코드 { AXT_MACRO_ERROR_CODE }
  [1] ERROR_INVALID_MACRO_NO: 유효하지않는 매크로 번호 사용
  [2] ERROR_INVALID_NODE_NO: 유효하지않는 노드 번호 사용
  [3] ERROR_INVALID_MODULE_NO: 유효하지않는 모듈번호 사용
  [4] ERROR_INVALID_AXIS_NO: 유효하지않는 축번호 사용
  [5] ERROR_INVALID_CHANNEL_NO: 유효하지않는 채널번호 사용
  [6] ERROR_INVALID_JUMP_TYPE: 유효하지않는 점프타입 사용
  [7] ERROR_INVALID_OUTPUT_TYPE: 유효하지않는 출력타입 사용
  [8] ERROR_INVALID_OFFSET: 유효하지않는 오프셋 사용
  [9] ERROR_INVALID_SIZE: 유효하지않는 Size 사용
  [10] ERROR_INVALID_STOP_MODE: 유효하지않는 정지모드 사용
  [11] ERROR_INVALID_START_CONDITION: 유효하지않는 시작조건 사용
  [12] ERROR_INVALID_REPEAT_COUNT: 유효하지않는 반복횟수 사용
  [13] ERROR_NOT_SUPPORT_MODULE: 매크로 기능을 지원하지 않는 모듈을 사용
  [14] ERROR_NOT_READY_MACRO: 매크로가 대기상태가 아닌경우
  [15] ERROR_EMPTY_NODE: 등록된 매크로가 없는경우

Return Values

[0000] AXT_RT_SUCCESS : 매크로 노드에 오류가 없는 경우
[1061] AXT_RT_RTOS_OPEN_ERROR: EtherCAT Master 구동 에러
[1106] AXT_RT_OPEN_ERROR: AXL 라이브러리 오픈 실패
[4400] AXT_RT_INAVLID_NO: 매크로 번호 이상
[6713] AXT_RT_MACRO_NODE_EMPTY: 등록된 노드가 없는 경우
[6720] AXT_RT_MACRO_NODE_CHECK_ERROR: 등록된 매크로 노드에 문제가 있는경우

Description

등록된 노드들에 대해 순차적으로 오류를 체크며 에러가 발생되면 체크를 중지하고 에러가 발생한 노드번호와 에러 코드를 반환한다. 매크로를 구동하기 위해서는 반드시 이 함수를 이용하여 유효성 체크를 통과 해야된다. 동일한 매크로 번호라 하더라도 노드가 변경되면 항상 새롭게 유효성 검사를 진행해야된다.

예제 코드

C++

// 0번 매크로에 등록된 노드의 유효성을 체크하는 예제
long lMacroNo = 0;
long lErrorNodeNo = 0;
DWORD uErrorCode = 0, uReturn = 0;
uReturn = AxpMacroCheckNodeAll(lMacroNo, &lErrorNodeNo, &uErrorCode);

if(dwReturn != AXT_RT_SUCCESS)
{
    TRACE(%d번 매크로의 %d번노드에 %d 에러가 발생했음\n, lMacroNo, lErrorNodeNo, uErrorCode);
}
Visual Basic
0 매크로에 등록된 노드의 유효성을 체크하는 예제
Dim lMacroNo As Long
Dim lErrorNodeNo As Long
Dim uErrorCode As Long
Dim uReturn As Long

uReturn = AxpMacroCheckNodeAll(lMacroNo, lErrorNodeNo, uErrorCode)
If uReturn = AXT_RT_SUCCESS Then
Else
    Debug.Print lMacroNo & “번 매크로의  & lErrorNodeNo & “번노드에  & uErrorCode & “에러가
발생했음”
End If
Delphi
{ 지정된 시퀀스 맵 번호의 등록된 시퀀스 구동을 모두 삭제한다. }
var
    lMacroNo : Long;
    lErrorNodeNo : Long;
    uErrorCode : DWORD;
    uReturn : DWORD;

begin
    uReturn := AxpMacroCheckNodeAll(lMacroNo, lErrorNodeNo, uErrorCode);
    if(uReturn <> AXT_RT_SUCCESS) then
    begin
        OutputDebugString(PChar(Format(‘%d 매크로의 %d번노드에 %d 에러가 발생했음’, lMacroNo, lErrorNodeNo, uErrorCode);
    end;
end;

AxpMacroGetCheckResult

Purpose

지정된 매크로에 등록된 노드들의 유효성 체크 결과를 반환한다.
주의 사항: EtherCAT Embedded(S/W) Type 전용 함수

Format

C++
DWORD AxpMacroGetCheckResult(long lMacroNo, BOOL* bpIsChecked, long* lpErrorNodeNo, DWORD *upErrorCode);
Visual Basic
Function AxpMacroGetCheckResult (ByVal lMacroNo As Long, ByRef bpIsChecked As Long, ByRef lpErrorNodeNo As Long, ByRef upErrorCode As Long) As Long
Delphi
function AxpMacroGetCheckResult (lMacroNo: LongInt; bpIsChecked: PLongInt; lpErrorNodeNo: PLongInt; upErrorCode : PDWord) : DWord; stdcall;

Parameters

[in/out] Name [Init Value] Explanation
[in]lMacroNo(0~95) 등록된 노드들의 체크 결과를 확인 할 매크로 번호
  [0~95] 지정한 매크로의 노드 체크 결과를 확인
[out]bpIsChecked(0~1) 체크 결과
  [0] 체크가 안되었거나 실패
  [1] 체크 성공
[out]lpErrorNodeNo(0~95) 체크 오류가 발생한 노드 번호
[out]upErrorCode(1~15) 오류에 대한 에러코드 { AXT_MACRO_ERROR_CODE }
  [1] ERROR_INVALID_MACRO_NO: 유효하지않는 매크로 번호 사용
  [2] ERROR_INVALID_NODE_NO: 유효하지않는 노드 번호 사용
  [3] ERROR_INVALID_MODULE_NO: 유효하지않는 모듈번호 사용
  [4] ERROR_INVALID_AXIS_NO: 유효하지않는 축번호 사용
  [5] ERROR_INVALID_CHANNEL_NO: 유효하지않는 채널번호 사용
  [6] ERROR_INVALID_JUMP_TYPE: 유효하지않는 점프타입 사용
  [7] ERROR_INVALID_OUTPUT_TYPE: 유효하지않는 출력타입 사용
  [8] ERROR_INVALID_OFFSET: 유효하지않는 오프셋 사용
  [9] ERROR_INVALID_SIZE: 유효하지않는 크기
  [10] ERROR_INVALID_STOP_MODE: 유효하지않는 정지모드 사용
  [11] ERROR_INVALID_START_CONDITION: 유효하지않는 시작조건 사용
  [12] ERROR_INVALID_REPEAT_COUNT: 유효하지않는 반복 횟수
  [13] ERROR_NOT_SUPPORT_MODULE: 매크로 기능을 지원하지 않는 모듈을 사용
  [14] ERROR_NOT_READY_MACRO: 매크로가 대기상태가 아닌 경우
  [15] ERROR_EMPTY_NODE: 등록된 노드가 없을 경우

Return Values

[0000] AXT_RT_SUCCESS : 매크로의 결과를 정산적으로 반환한 경우
[1061] AXT_RT_RTOS_OPEN_ERROR: EtherCAT Master 구동 에러
[1106] AXT_RT_OPEN_ERROR: AXL 라이브러리 오픈 실패
[4400] AXT_RT_INAVLID_NO: 매크로 번호 이상
[6713] AXT_RT_MACRO_NODE_EMPTY: 매크로에 등록된 노드가 없을 경우
[6720] AXT_RT_MACRO_NODE_CHECK_ERROR: 등록된 노드에 에러가 있을 경우

Description

매크로에 등록된 노드들에 대해 AxpMacroCheckNodeAll 함수를 통해 오류 체크한 결과를 반환한다. 체크 결과는 첫 번째 오류가 발생한 노드 번호와 에러코드를 반환한다.

예제 코드

C++

// 0번 매크로의 체크 결과를 확인하는 예제
long lMacroNo = 0;
long lErrorNodeNo = 0;
BOOL bIsChecked = 0;
DWORD uErrorCode = 0, uReturn = 0;

uReturn = AxpMacroGetCheckResult(lMacroNo, &bIsChecked, &lErrorNodeNo, &uErrorCode);
if(bIsChecked == 0)
{
    TRACE(%d번 매크로의 %d번노드에 %d 에러가 발생했음\n, lMacroNo, lErrorNodeNo, uErrorCode);
}
Visual Basic
0 매크로의 체크 결과를 확인하는 예제
Dim lMacroNo As Long
Dim bIsChecked As Long
Dim lErrorNodeNo As Long
Dim uErrorCode As Long
Dim uReturn As Long

uReturn = AxpMacroGetCheckResult (lMacroNo, bIsChecked , lErrorNodeNo, uErrorCode)
If bIsChecked = 0 Then
Else
    Debug.Print lMacroNo & “번 매크로의  & lErrorNodeNo & “번노드에  & uErrorCode & “에러가
발생했음”
End If
Delphi
{ 0번 매크로의 체크 결과를 확인하는 예제 }
var
    lMacroNo : Long;
    bIsChecked : LongBool;
    lErrorNodeNo : Long;
    uErrorCode : DWORD;
    uReturn : DWORD;

begin
    
    uReturn := AxpMacroGetCheckResult (lMacroNo, bIsChecked, lErrorNodeNo, uErrorCode);
    if(bIsChecked <> 1) then
    begin
        OutputDebugString(PChar(Format(‘%d 매크로의 %d번노드에 %d 에러가 발생했음’, lMacroNo, lErrorNodeNo, uErrorCode);
    end;
end;

AxpMacroStart

Purpose

노드 등록과 체크가 정상적으로 완료된 매크로의 구동을 시작한다. 또는 Ready 상태로 대기중인 매크로에 대해 구동을 시작할 수 있다.
주의 사항: EtherCAT Embedded(S/W) Type 전용 함수

Format

C++
DWORD AxpMacroStart(long lMacroNo, DWORD uCondition, BOOL bLockResource, long lRepeatCount);
Visual Basic
Function AxpMacroStart(ByVal lMacroNo As Long, ByVal uCondition As Long, ByVal bLockResource As Byte, ByVal lRepeatCount As Long) As Long
Delphi
function AxpMacroStart(lMacroNo: LongInt; uCondition: LongInt; bLockResource : Boolean; lRepeatCount : LongInt) : DWord; stdcall;

Parameters

[in/out] Name [Init Value] Explanation
[in]lMacroNo(0~95) 등록된 노드들 구동할 매크로 번호
  [0~95] 지정한 매크로를 구동함
[in] uCondition(0~1) 시작 조건을 지정
  [0] MACRO_START_READY : 대기상태로 매크로를 시작
  [1] MACRO_START_IMMEDIATE : 즉시 실행 상태로 매크로를 시작
[in] bLockResource(0~1) 매크로에 사용된 모듈또는 채널들에 대해 제어를 금지 여부를 설정
  [0] 제어 허용
  [1] 제어 금지
[in] lRepeatCount(-1~ ) 지정한 매크로의 전체 반복 구동 회수를 지정
  [-1] 무한 반복구동
  [0, 1] 전체 노드에 대한 실행을 1회 구동함
  [2~ ] 전체 노드에 대한 실행을 지정한 횟수 만큼 구동함

Return Values

[0000] AXT_RT_SUCCESS : 매크로 구동이 정상적으로 실행된 경우
[1061] AXT_RT_RTOS_OPEN_ERROR: EtherCAT Master 구동 에러
[1106] AXT_RT_OPEN_ERROR: AXL 라이브러리 오픈 실패
[4400] AXT_RT_INAVLID_NO: 매크로 번호 이상
[6703] AXT_RT_MACRO_MEMORY_MISMATCH: 매크로 구동관련 메모리가 EtherCAT Master 와 일치하지 않는 경우
[6714] AXT_RT_MACRO_IN_OPERATION: 지정한 매크로가 이미 구동중일 경우

Description

매크로 구동 중 다른 매크로를 호출하기 위해서는 반드시 호출 당할 매크로가 Ready 상태로 실행중이어야 된다. 매크로를 Ready 상태로 실행하기 위해 uCondition 값에 “MACRO_START_READY”를 입력하여 시작하면된다. 매크로가 Ready 상태일때에도 LockResource 를 True 로 구동했다면 일반제어함수를 이용해 제어할 수 없게된다. 매크로가 Ready 상태일때 MACRO_START_IMMEDIATE 로 AxpMacroStart 하면 즉시 구동한 후 모든 노드의 실행이 종료되면 다시 Ready 상태로 대기한다.

예제 코드

C++

// 0번 매크로에 등록된 노드의 유효성을 체크하고 구동하는 예제
long lMacroNo = 0;
long lErrorNodeNo = 0;
DWORD uErrorCode = 0, uReturn = 0;

uReturn = AxpMacroCheckNodeAll(lMacroNo, &lErrorNodeNo, &uErrorCode);
// 0번 매크로에 등록된 노드들에 문제가 없을 경우
if(uReturn == AXT_RT_SUCCESS)
{
    // 0번 매크로를 즉시 구동으로 반복구동없이 시작함. 매크로가 구동중일 때 일반 함수로 제어를 금지함)
    AxpMacroStart(lMacroNo, MACRO_START_IMMEDIATE, TRUE, 0);
}
Visual Basic
0 매크로에 등록된 노드의 유효성을 체크하고 구동하는 예제
Dim lMacroNo As Long
Dim lErrorNodeNo As Long
Dim uErrorCode As Long
Dim uReturn As Long

uReturn = AxpMacroCheckNodeAll(lMacroNo, lErrorNodeNo, uErrorCode)
If uReturn = AXT_RT_SUCCESS then
     0 매크로를 즉시 구동으로 반복구동없이 시작함. 매크로가 구동중일  일반 함수로 제어를 금지함)
    AxpMacroStart lMacroNo, MACRO_START_IMMEDIATE, 1, 0
End If
Delphi
{ 0번 매크로에 등록된 노드의 유효성을 체크하고 구동하는 예제 }
var
    lMacroNo : Long;
    lErrorNodeNo : Long;
    uErrorCode : DWORD;
    uReturn : DWORD;

begin
    uReturn = AxpMacroCheckNodeAll(lMacroNo, @lErrorNodeNo, @uErrorCode);
    if uReturn = AXT_RT_SUCCESS then
    begin
        { 0번 매크로를 즉시 구동으로 반복구동없이 시작함. 매크로가 구동중일 때 일반 함수로 제어를 금지함) }
        AxpMacroStart(lMacroNo, MACRO_START_IMMEDIATE, TRUE, 0);
    end;
end;

AxpMacroSetException

Purpose

매크로를 이용해 출력을 제어 할 때 특정 출력들에 대해 제어되지 않도록 예외처리한다.
주의 사항: EtherCAT Embedded(S/W) Type 전용 함수

Format

C++
DWORD AxpMacroSetException(long lModuleNo, DWORD uOutputType, DWORD uDataType, long lOffset, DWORD uMaskValue);
Visual Basic
Function AxpMacroSetException(ByVal lModuleNo As Long, ByVal uOutputType As Long, ByVal uDataType As Long, ByVal lOffset As Long, ByVal uMaskValue As Long) As Long
Delphi
function AxpMacroSetException(lModuleNo: LongInt; uOutputType: DWord; uDataType: DWord; lOffset: LongInt; uMaskValue: DWord) : DWord; stdcall;

Parameters

[in/out] Name [Init Value] Explanation
[in] lModuleNo(0~) 출력 Type에 따른 Digital Output 모듈번호 또는 Analog Output모듈의 채널 번호 지정
  [0] MACRO_OUTPUT_DIGITAL:
    - 0 ~ 장착된 디지털 출력 모듈의 개수 - 1
  [1] MACRO_OUTPUT_ANALOG:
    - 0 ~ 장착된 아날로그 출력 채널의 개수 - 1
[in] uOutputType(0~1) 예외처리를 할 모듈 Type을 선택 { AXT_MACRO_SET_OUTPUT_TYPE }
  [0] MACRO_OUTPUT_DIGITAL: 디지털 출력 예외처리
  [1] MACRO_OUTPUT_ANALOG: 아날로그 출력 예외처리
[in] uDataType(0~4) 예외처리를 할 출력 Type을 선택 { AXT_MACRO_SET_DATA_TYPE }
  [0] MACRO_DATA_BIT: 디지털 출력의 예외처리를 BIT단위로 설정
  [1] MACRO_DATA_BYTE: 디지털 출력의 예외처를 BYTE단위로 설정
  [2] MACRO_DATA_WORD: 디지털 출력의 예외처를 WORD단위로 설정
  [3] MACRO_DATA_DWORD: 디지털 출력의 예외처를 DWORD단위로 설정
  ※ MACRO_OUTPUT_ANALOG일때는 Data Type이 사용되지 않음
[in] lOffset 출력 Type에 따른 Offset을 지정
[0] MACRO_DATA_BIT
  - 0 ~ 해당 모듈의 최대 출력 접점 – 1
[1] MACRO_DATA_BYTE
  - 0 ~ (해당 모듈의 최대 출력 접점 / 8) – 1
[2] MACRO_DATA_WORD
  - 0 ~ (해당 모듈의 최대 출력 접점 / 16) – 1
[3] MACRO_DATA_DWORD
  - 0 ~ (해당 모듈의 최대 출력 접점 / 32) – 1
[in] uMaskValue 출력 Type에 따른 MaskValue를 지정
[0] MACRO_DATA_BIT
  - 0: 예외처리 하지않음
  - 1: 해당 접점 MACRO로 제어하지 않음
[1] MACRO_DATA_BYTE
  - 0: 예외처리 하지않음
  - 1~255: Bit값이 1인 접점을 MACRO로 제어하지 않음
  Ex) 4 (00000100) Bit 2 번에 해당하는 접점을 MACRO로 제어하지 않음
[2] MACRO_DATA_WORD
  - 0: 예외처리 하지않음
  - 1~65535: Bit값이 1인 접점을 MACRO로 제어하지 않음
[3] MACRO_DATA_DWORD
  - 0: 예외처리 하지않음
  - 1~4294967295: Bit값이 1인 접점을 MACRO로 제어하지 않음

Return Values

[0000] AXT_RT_SUCCESS : 매크로 예외 설정이 정상적으로 실행된 경우
[1054] AXT_RT_NOT_SUPPORT_VERSION: 해당 함수를 지원하지 않는 제품일 경우
[1061] AXT_RT_RTOS_OPEN_ERROR: EtherCAT Master 구동 에러
[1105] AXT_RT_INVALID_MODULE_NO: 지정한 모듈번호가 유효하지 않을 경우
[1106] AXT_RT_OPEN_ERROR: AXL 라이브러리 오픈 실패
[2102] AXT_RT_AIO_INVALID_CHANNEL_NO: 지정한 아날로그 채널번호가 유효하지 않을 경우
[3102] AXT_RT_DIO_INVALID_OFFSET_NO: 지정한 Offset 번호가 유효하지 않을 경우

Description

매크로 기능을 이용해 특정 디지털 출력 접점 또는 아날로그 채널에 대해 제어를 원하지 않을 경우 이 함수를 이용해 예외처리를 할 수 있다. 이 함수로 설정한 예외처리는 모든 매크로에 적용된다. 이 예외처리 설정은 한번 설정하면 프로그램을 종료한 후 재 실행해도 유지되므로 예외 처리를 원하지 않을 경우 반드시 AxpMacroReset Exception 함수를 이용해 설정값을 초기화 해야된다.

예제 코드

C++

// MACRO에서 제어되지 않도록 예외처리하는 예제
long lModuleNo = 0;

// 0번 모듈의 첫 번째 접점을 MACRO에서 제어되지 않도록 설정
AxpMacroSetException(lModuleNo, MACRO_OUTPUT_DIGITAL, MACRO_DATA_BIT, 0, 1);

// 0번 모듈의 8번 접점 ~ 15번 접점까지 MACRO에서 제어되지 않도록 설정
AxpMacroSetException(lModuleNo, MACRO_OUTPUT_DIGITAL, MACRO_DATA_BYTE, 1, 0xFF);
Visual Basic
MACRO에서 제어되지 않도록 예외처리하는 예제
Dim lModuleNo As Long

0 모듈의  번째 접점을 MACRO에서 제어되지 않도록 설정
AxpMacroSetException lModuleNo, MACRO_OUTPUT_DIGITAL, MACRO_DATA_BIT, 0, 1

0 모듈의 8 접점 ~ 15 접점까지 MACRO에서 제어되지 않도록 설정
AxpMacroSetException lModuleNo, MACRO_OUTPUT_DIGITAL, MACRO_DATA_BYTE, 1, 255
Delphi
{ MACRO에서 제어되지 않도록 예외처리하는 예제 }
var
    lModuleNo : LongInt;

brgin
    { 0번 모듈의 첫 번째 접점을 MACRO에서 제어되지 않도록 설정 }
    AxpMacroSetException(lModuleNo, MACRO_OUTPUT_DIGITAL, MACRO_DATA_BIT, 0, 1);

    {0번 모듈의 8번 접점 ~ 15번 접점까지 MACRO에서 제어되지 않도록 설정 }
    AxpMacroSetException(lModuleNo, MACRO_OUTPUT_DIGITAL, MACRO_DATA_BYTE, 1, 255);
end;

AxpMacroGetException

Purpose

매크로를 이용해 출력을 제어 할 때 특정 출력들에 대해 제어되지 않도록 예외처리한 설정값을 반환한다.
주의 사항: EtherCAT Embedded(S/W) Type 전용 함수

Format

C++
DWORD AxpMacroGetException(long lModuleNo, DWORD uOutputType, DWORD uDataType, long lOffset, DWORD* upMaskValue);
Visual Basic
Function AxpMacroGetException(ByVal lModuleNo As Long, ByVal uOutputType As Long, ByVal uDataType As Long, ByVal lOffset As Long, ByRef upMaskValue As Long) As Long
Delphi
function AxpMacroGetException(lModuleNo: LongInt; uOutputType: DWord; uDataType: DWord; lOffset: LongInt; upMaskValue: PDWord) : DWord; stdcall;

Parameters

[in/out] Name [Init Value] Explanation
[in] lModuleNo(0~) 출력 Type에 따른 Digital Output 모듈번호 또는 Analog Output모듈의 채널 번호 지정
  [0] MACRO_OUTPUT_DIGITAL:
    - 0 ~ 장착된 디지털 출력 모듈의 개수 - 1
  [1] MACRO_OUTPUT_ANALOG:
    - 0 ~ 장착된 아날로그 출력 채널의 개수 - 1
[in] uOutputType(0~1) 예외처리를 할 모듈 Type을 선택 { AXT_MACRO_SET_OUTPUT_TYPE }
  [0] MACRO_OUTPUT_DIGITAL: 디지털 출력 예외처리
  [1] MACRO_OUTPUT_ANALOG: 아날로그 출력 예외처리
[in] uDataType(0~4) 예외처리를 할 출력 Type을 선택 { AXT_MACRO_SET_DATA_TYPE }
  [0] MACRO_DATA_BIT: 디지털 출력의 예외처리를 BIT단위로 설정
  [1] MACRO_DATA_BYTE: 디지털 출력의 예외처를 BYTE단위로 설정
  [2] MACRO_DATA_WORD: 디지털 출력의 예외처를 WORD단위로 설정
  [3] MACRO_DATA_DWORD: 디지털 출력의 예외처를 DWORD단위로 설정
  ※ MACRO_OUTPUT_ANALOG일때는 Data Type이 사용되지 않음
[in] lOffset 출력 Type에 따른 Offset을 지정
[0] MACRO_DATA_BIT
  - 0 ~ 해당 모듈의 최대 출력 접점 – 1
[1] MACRO_DATA_BYTE
  - 0 ~ (해당 모듈의 최대 출력 접점 / 8) – 1
[2] MACRO_DATA_WORD
  - 0 ~ (해당 모듈의 최대 출력 접점 / 16) – 1
[3] MACRO_DATA_DWORD
  - 0 ~ (해당 모듈의 최대 출력 접점 / 32) – 1
[out] upMaskValue 출력 Type에 따른 MaskValue를 지정
[0] MACRO_DATA_BIT
  - 0: 예외처리 하지않음
  - 1: 해당 접점 MACRO로 제어하지 않음
[1] MACRO_DATA_BYTE
  - 0: 예외처리 하지않음
  - 1~255: Bit값이 1인 접점을 MACRO로 제어하지 않음
  Ex) 4 (00000100) Bit 2 번에 해당하는 접점을 MACRO로 제어하지 않음
[2] MACRO_DATA_WORD
  - 0: 예외처리 하지않음
  - 1~65535: Bit값이 1인 접점을 MACRO로 제어하지 않음
[3] MACRO_DATA_DWORD
  - 0: 예외처리 하지않음
  - 1~4294967295: Bit값이 1인 접점을 MACRO로 제어하지 않음

Return Values

[0000] AXT_RT_SUCCESS : 매크로 예외처리 설정값 반환이 정상적으로 실행된 경우
[1054] AXT_RT_NOT_SUPPORT_VERSION: 해당 함수를 지원하지 않는 제품일 경우
[1061] AXT_RT_RTOS_OPEN_ERROR: EtherCAT Master 구동 에러
[1105] AXT_RT_INVALID_MODULE_NO: 지정한 모듈번호가 유효하지 않을 경우
[1106] AXT_RT_OPEN_ERROR: AXL 라이브러리 오픈 실패
[2102] AXT_RT_AIO_INVALID_CHANNEL_NO: 지정한 아날로그 채널번호가 유효하지 않을 경우
[3102] AXT_RT_DIO_INVALID_OFFSET_NO: 지정한 Offset 번호가 유효하지 않을 경우

Description

매크로 기능을 이용해 특정 디지털 출력 접점 또는 아날로그 채널에 대해 제어를 원하지 않을 경우 설정한 설정값을 이 함수를 이용해 확인 할 수 있다.

예제 코드

C++

// MACRO에서 제어되지 않도록 예외처리한 설정값을 확인하는 예제
long lModuleNo = 0;
DWORD uMaskValue = 0;

// 0번 모듈의 첫 번째 접점을 MACRO에서 제어되지 않도록 설정했는지 여부를 확인
AxpMacroGetException(lModuleNo, MACRO_OUTPUT_DIGITAL, MACRO_DATA_BIT, 0, &uMaskValue);

// 0번 모듈의 8번 접점 ~ 15번 접점까지 MACRO에서 제어되지 않도록 설정했는지 여부를 확인
AxpMacroSetException(lModuleNo, MACRO_OUTPUT_DIGITAL, MACRO_DATA_BYTE, 1, &uMaskValue);
Visual Basic
MACRO에서 제어되지 않도록 예외처리한 설정값을 확인하는 예제
Dim lModuleNo As Long
Dim uMaskValue As Long

0 모듈의  번째 접점을 MACRO에서 제어되지 않도록 설정했는지 여부를 확인
AxpMacroSetException lModuleNo, MACRO_OUTPUT_DIGITAL, MACRO_DATA_BIT, 0, uMaskValue

0 모듈의 8 접점 ~ 15 접점까지 MACRO에서 제어되지 않도록 설정했는지 여부를 확인
AxpMacroSetException lModuleNo, MACRO_OUTPUT_DIGITAL, MACRO_DATA_BYTE, 1, uMaskValue
Delphi
{ MACRO에서 제어되지 않도록 예외처리한 설정값을 확인하는 예제 }
var
    lModuleNo : LongInt;
    uMaskValue : DWord;

brgin
    { 0번 모듈의 첫 번째 접점을 MACRO에서 제어되지 않도록 설정 }
    AxpMacroSetException(lModuleNo, MACRO_OUTPUT_DIGITAL, MACRO_DATA_BIT, 0, @uMaskValue);

    {0번 모듈의 8번 접점 ~ 15번 접점까지 MACRO에서 제어되지 않도록 설정 }
    AxpMacroSetException(lModuleNo, MACRO_OUTPUT_DIGITAL, MACRO_DATA_BYTE, 1, @uMaskValue);
end;

AxpMacroResetException

Purpose

매크로를 이용해 출력을 제어 할 때 특정 출력들에 대해 제어되지 않도록 예외 처리한 설정값을 초기화 한다.
주의 사항: EtherCAT Embedded(S/W) Type 전용 함수

Format

C++
DWORD AxpMacroResetException();
Visual Basic
Function AxpMacroResetException() As Long
Delphi
function AxpMacroResetException() : DWord; stdcall;

Return Values

[0000] AXT_RT_SUCCESS : 매크로 예외처리 해제가 정상적으로 실행된 경우

Description

예외 처리한 설정값은 EtherCAT Master 가 재 시작되기 전까지 유지되므로 반드시 원하지 않을 경우 이 함수로 초기화 한 후 매크로를 사용해야 된다.

예제 코드

C++

// MACRO에서 제어되지 않도록 예외처리한 설정값을 초기화하는 예제
AxpMacroResetException();
Visual Basic
MACRO에서 제어되지 않도록 예외처리한 설정값을 초기화하는 예제
AxpMacroResetException
Delphi
{ MACRO에서 제어되지 않도록 예외처리한 설정값을 초기화하는 예제 }
var

brgin
    AxpMacroResetException();
end;

AxpMacroResume

Purpose

Pause 중인 매크로의 구동을 재개한다.
주의 사항: EtherCAT Embedded(S/W) Type 전용 함수

Format

C++
DWORD AxpMacroResume(long lMacroNo, DWORD uCondition);
Visual Basic
Function AxpMacroResume(ByVal lMacroNo As Long, ByVal uCondition As Long) As Long
Delphi
function AxpMacroResume(lMacroNo: LongInt; uCondition: LongInt) : DWord; stdcall;

Parameters

[in/out] Name [Init Value] Explanation
[in] lMacroNo(0~95) 일시정지 되어있는 매크로중 재 구동할 매크로 번호
  [0~95] 지정한 매크로를 재 구동함
[in] uCondition(0~2) 시작 조건을 지정
  [0] MACRO_RESUME_WHEN_PAUSED : Pause상태일 때만
  [1] MACRO_RESUME_RESERVED: Pause 상태이거나 상태가 될 때
  [2] MACRO_RESUME_IGNORE_FUNC_WAIT : Wait중인 상태를 무시하고 다음 노드부터 재 시작함
  [3] MACRO_RESUME_FROM_FIRST_NODE : 해당 매크로의 첫번째 노드부터 재시작

Return Values

[0000] AXT_RT_SUCCESS : 매크로 구동이 정상적으로 재 실행된 경우
[1061] AXT_RT_RTOS_OPEN_ERROR: EtherCAT Master 구동 에러
[1106] AXT_RT_OPEN_ERROR: AXL 라이브러리 오픈 실패
[4400] AXT_RT_INAVLID_NO: 매크로 번호 이상
[6703] AXT_RT_MACRO_MEMORY_MISMATCH: 매크로 구동관련 메모리가 EtherCAT Master 와 일치하지 않는 경우
[6715] AXT_RT_MACRO_NOT_OPERATION: 지정한 매크로가 정지상태일 때
[6722] AXT_RT_MACRO_NOT_PAUSED: 지정한 매크로가 PAUSE 상태가 아닐 때(Condition 이 0 일 때 만 반환)

Description

매크로 구동 중 Pause 함수에 의해 일시 정지되었을 때 매크로 실행을 재개하는 함수이다. Condition 이 0 일 경우에는 현재 지정한 매크로의 상태가 반드시 Pause 상태 일 경우에만 매크로가 재개되고 그렇지 않을 경우 6722 에러를 반환한다. Condition 을 1 로 Resume 함수를 호출 할 경우에 매크로가 Pause 상태가 아니더라도 Resume 명령이 예약되어 1 회에 한해 Pause 되지않고 바로 Resume 하게 된다.

예제 코드

C++

// Pause상태인 0번 매크로를 Resume하는 예제
long lMacroNo = 0;
double daArg[AXP_MAX_MACRO_SET_ARG] = { 0.0 };
// 0번 매크로에 노드등록을 시작한다.
AxpMacroBeginNode(lMacroNo);
// 0번 디지털 출력모듈의 0번 Bit를 ON한다.
daArg[0] = MACRO_DIGITAL_OUTPUT; // 디지털 출력 제어
daArg[1] = 0; // 0번 모듈 제어
daArg[2] = MACRO_DATA_BIT; // Bit 단위 출력제어
daArg[3] = 0; // 0번 Bit 제어
daArg[4] = 1; // 0번 Bit ON
AxpMacroAddNode(lMacroNo, MACRO_FUNC_SET_OUTPUT, daArg);

// 매크로 구동을 일시 정지한다.
AxpMacroAddNode(lMacroNo, MACRO_FUNC_PAUSE, daArg);
// 1초(1000msec)동안 대기한다.
daArg[0] = 1000;
AxpMacroAddNode(lMacroNo, MACRO_FUNC_WAIT, daArg);
// 0번 디지털 출력모듈의 0번 Bit를 OFF한다.
daArg[0] = MACRO_DIGITAL_OUTPUT;        // 디지털 출력 제어
daArg[1] = 0;                           // 0번 모듈 제어
daArg[2] = MACRO_DATA_BIT;              // Bit 단위 출력제어
daArg[3] = 0;                           // 0번 Bit 제어
daArg[4] = 0;                           // 0번 Bit OFF
AxpMacroAddNode(lMacroNo, MACRO_FUNC_SET_OUTPUT, daArg);
// 1초(1000msec)동안 대기한다.
daArg[0] = 1000;
AxpMacroAddNode(lMacroNo, MACRO_FUNC_WAIT, daArg);
// 0번 매크로에 노드등록을 종료한다.
AxpMacroEndNode(lMacroNo);

AxpMacroCheckNodeAll(lMacroNo, &lErrorNodeNo, &uErrorCode);
// 0번 매크로에 등록된 노드들에 문제가 없을 경우
if(uReturn == AXT_RT_SUCCESS)
{
    // 0번 매크로를 즉시 구동으로 반복구동없이 시작함
    AxpMacroStart(lMacroNo, MACRO_START_IMMEDIATE, FALSE, 0);
}

// 0번 매크로의 동작을 재개한다.
AxpMacroResume(lMacroNo, MACRO_RESUME_RESERVED);
Visual Basic
Pause상태인 0 매크로를 Resume하는 예제
Dim lMacroNo As Long
Dim daArg(0 To 15) As Double

// 0 매크로에 노드등록을 시작한다.
AxpMacroBeginNode lMacroNo
// 0 디지털 출력모듈의 0 Bit ON한다.
daArg(0) = MACRO_DIGITAL_OUTPUT // 디지털 출력 제어
daArg(1) = 0 // 0 모듈 제어
daArg(2) = MACRO_DATA_BIT // Bit 단위 출력제어
daArg(3) = 0 // 0 Bit 제어
daArg(4) = 1 // 0 Bit ON
AxpMacroAddNode lMacroNo, MACRO_FUNC_SET_OUTPUT, daArg(0)
// 매크로 구동을 일시 정지한다.
AxpMacroAddNode lMacroNo, MACRO_FUNC_PAUSE, daArg(0)

// 1(1000msec)동안 대기한다.
daArg(0) = 1000
AxpMacroAddNode lMacroNo, MACRO_FUNC_WAIT, daArg(0)
// 0 디지털 출력모듈의 0 Bit OFF한다.
daArg(0) = MACRO_DIGITAL_OUTPUT         // 디지털 출력 제어
daArg(1) = 0                            // 0 모듈 제어
daArg(2) = MACRO_DATA_BIT               // Bit 단위 출력제어
daArg(3) = 0                            // 0 Bit 제어
daArg(4) = 0                            // 0 Bit OFF
AxpMacroAddNode lMacroNo, MACRO_FUNC_SET_OUTPUT, daArg(0)
// 1(1000msec)동안 대기한다.
daArg(0) = 1000
AxpMacroAddNode lMacroNo, MACRO_FUNC_WAIT, daArg(0)
// 0 매크로에 노드등록을 종료한다.
AxpMacroEndNode lMacroNo

uReturn = AxpMacroCheckNodeAll(lMacroNo, lErrorNodeNo, uErrorCode)
If uReturn = AXT_RT_SUCCESS then
     0 매크로를 즉시 구동으로 반복구동없이 시작함. 매크로가 구동중일  일반 함수로 제어를 금지함)
    AxpMacroStart lMacroNo, MACRO_START_IMMEDIATE, 0, 0
End If

// 0 매크로의 동작을 재개한다.
AxpMacroResume lMacroNo, MACRO_RESUME_RESERVED
Delphi
{ Pause상태인 0번 매크로를 Resume하는 예제 }
var
    lMacroNo : LongInt;
    daArg : array [0.. AXP_MAX_MACRO_SET_ARG] of double;

brgin
    { 0번 매크로에 노드등록을 시작한다. }
    AxpMacroBeginNode(lMacroNo);
    { 0번 디지털 출력모듈의 0번 Bit를 ON한다. }
    daArg[0] := MACRO_DIGITAL_OUTPUT; { 디지털 출력 제어 }
    daArg[1] := 0; { 0번 모듈 제어 }
    daArg[2] := MACRO_DATA_BIT; { Bit 단위 출력제어 }
    daArg[3] := 0; { 0번 Bit 제어 }
    daArg[4] := 1; { 0번 Bit ON }
    AxpMacroAddNode(lMacroNo, MACRO_FUNC_SET_OUTPUT, @daArg);

    { 매크로 구동을 일시 정지한다. }
    AxpMacroAddNode(lMacroNo, MACRO_FUNC_PAUSE, @daArg);
    { 1초(1000msec)동안 대기한다. }
    daArg[0] := 1000;
    AxpMacroAddNode(lMacroNo, MACRO_FUNC_WAIT, @daArg);
    { 0번 디지털 출력모듈의 0번 Bit를 OFF한다. }
    daArg[0] := MACRO_DIGITAL_OUTPUT; { 디지털 출력 제어 }
    daArg[1] := 0; { 0번 모듈 제어 }
    daArg[2] := MACRO_DATA_BIT; { Bit 단위 출력제어 }
    daArg[3] := 0; { 0번 Bit 제어 }
    daArg[4] := 0; { 0번 Bit OFF }
    AxpMacroAddNode(lMacroNo, MACRO_FUNC_SET_OUTPUT, @daArg);
    { 1초(1000msec)동안 대기한다. }
    daArg[0] := 1000;
    AxpMacroAddNode(lMacroNo, MACRO_FUNC_WAIT, @daArg);
    { 0번 매크로에 노드등록을 종료한다. }
    AxpMacroEndNode(lMacroNo);

    uReturn = AxpMacroCheckNodeAll(lMacroNo, @lErrorNodeNo, @uErrorCode);
    if uReturn = AXT_RT_SUCCESS then
    begin
        { 0번 매크로를 즉시 구동으로 반복구동없이 시작함. 매크로가 구동중일 때 일반 함수로 제어를 금지함) }
        AxpMacroStart(lMacroNo, MACRO_START_IMMEDIATE, TRUE, 0);
    end;
    
    { 0번 매크로의 동작을 재개한다. }
    AxpMacroResume(lMacroNo, MACRO_RESUME_RESERVED);
end;

AxpMacroPause

Purpose

구동중인 매크로를 일시 정지 시킨다.
주의 사항: EtherCAT Embedded(S/W) Type 전용 함수

Format

C++
DWORD AxpMacroPause(long lMacroNo, DWORD uCondition);
Visual Basic
Function AxpMacroPause(ByVal lMacroNo As Long, ByVal uCondition As Long) As Long
Delphi
function AxpMacroPause(lMacroNo: LongInt; uCondition: LongInt) : DWord; stdcall;

Parameters

[in/out] Name [Init Value] Explanation
[in] lMacroNo(0~95) 일시정지 할 매크로 번호
  [0~95] 지정한 매크로를 일시 정지함
[in] uCondition(1~3) 일시정지 조건을 지정
  [1] MACRO_PAUSE_IMMEDIATELY: 즉시 정지함
  [2] MACRO_PAUSE_AT_FUNC_WAIT: WAIT 명령을 실행하는 시점
  [3] MACRO_PAUSE_IGNORE_WAIT: 매크로의 마지막 노드에서 정지

Return Values

[0000] AXT_RT_SUCCESS : 매크로 구동이 정상적으로 재 실행된 경우
[1061] AXT_RT_RTOS_OPEN_ERROR: EtherCAT Master 구동 에러
[1106] AXT_RT_OPEN_ERROR: AXL 라이브러리 오픈 실패
[4400] AXT_RT_INAVLID_NO: 매크로 번호 이상
[6703] AXT_RT_MACRO_MEMORY_MISMATCH: 매크로 구동관련 메모리가 EtherCAT Master 와 일치하지 않는 경우
[6715] AXT_RT_MACRO_NOT_OPERATION: 지정한 매크로가 정지상태일 때
[6721] AXT_RT_MACRO_NOT_CHECKED: 지정한 매크로가 체크되지않은 상태일 때

Description

구동중인 매크로를 일시 정지하는 함수이다. 일시정지 Condition 에 따라 즉시정지 또는 WAIT 명령을 실행하는 시점에서 정지등의 조건으로 정지할 수 있다.

예제 코드

C++

// 구동중인 0번 매크로를 Pause하는 예제
long lMacroNo = 0;
double daArg[AXP_MAX_MACRO_SET_ARG] = { 0.0 };
// 0번 매크로에 노드등록을 시작한다.
AxpMacroBeginNode(lMacroNo);
// 0번 디지털 출력모듈의 0번 Bit를 ON한다.
daArg[0] = MACRO_DIGITAL_OUTPUT; // 디지털 출력 제어
daArg[1] = 0; // 0번 모듈 제어
daArg[2] = MACRO_DATA_BIT; // Bit 단위 출력제어
daArg[3] = 0; // 0번 Bit 제어
daArg[4] = 1; // 0번 Bit ON
AxpMacroAddNode(lMacroNo, MACRO_FUNC_SET_OUTPUT, daArg);

// 매크로 구동을 일시 정지한다.
AxpMacroAddNode(lMacroNo, MACRO_FUNC_PAUSE, daArg);
// 1초(1000msec)동안 대기한다.
daArg[0] = 1000;
AxpMacroAddNode(lMacroNo, MACRO_FUNC_WAIT, daArg);
// 0번 디지털 출력모듈의 0번 Bit를 OFF한다.
daArg[0] = MACRO_DIGITAL_OUTPUT;        // 디지털 출력 제어
daArg[1] = 0;                           // 0번 모듈 제어
daArg[2] = MACRO_DATA_BIT;              // Bit 단위 출력제어
daArg[3] = 0;                           // 0번 Bit 제어
daArg[4] = 0;                           // 0번 Bit OFF
AxpMacroAddNode(lMacroNo, MACRO_FUNC_SET_OUTPUT, daArg);
// 1초(1000msec)동안 대기한다.
daArg[0] = 1000;
AxpMacroAddNode(lMacroNo, MACRO_FUNC_WAIT, daArg);
// 0번 매크로에 노드등록을 종료한다.
AxpMacroEndNode(lMacroNo);

AxpMacroCheckNodeAll(lMacroNo, &lErrorNodeNo, &uErrorCode);
// 0번 매크로에 등록된 노드들에 문제가 없을 경우
if(uReturn == AXT_RT_SUCCESS)
{
    // 0번 매크로를 즉시 구동으로 반복구동없이 시작함
    AxpMacroStart(lMacroNo, MACRO_START_IMMEDIATE, 0, 0);
}

// 0번 매크로의 동작을 즉시 정지한다.
AxpMacroPause(lMacroNo, MACRO_PAUSE_IMMEDIATELY);
Visual Basic
‘구동중인 0 매크로를 Pause하는 예제
Dim lMacroNo As Long
Dim daArg(0 To 15) As Double

// 0 매크로에 노드등록을 시작한다.
AxpMacroBeginNode lMacroNo
// 0 디지털 출력모듈의 0 Bit ON한다.
daArg(0) = MACRO_DIGITAL_OUTPUT // 디지털 출력 제어
daArg(1) = 0 // 0 모듈 제어
daArg(2) = MACRO_DATA_BIT // Bit 단위 출력제어
daArg(3) = 0 // 0 Bit 제어
daArg(4) = 1 // 0 Bit ON
AxpMacroAddNode lMacroNo, MACRO_FUNC_SET_OUTPUT, daArg(0)
// 매크로 구동을 일시 정지한다.
AxpMacroAddNode lMacroNo, MACRO_FUNC_PAUSE, daArg(0)

// 1(1000msec)동안 대기한다.
daArg(0) = 1000
AxpMacroAddNode lMacroNo, MACRO_FUNC_WAIT, daArg(0)
// 0 디지털 출력모듈의 0 Bit OFF한다.
daArg(0) = MACRO_DIGITAL_OUTPUT         // 디지털 출력 제어
daArg(1) = 0                            // 0 모듈 제어
daArg(2) = MACRO_DATA_BIT               // Bit 단위 출력제어
daArg(3) = 0                            // 0 Bit 제어
daArg(4) = 0                            // 0 Bit OFF
AxpMacroAddNode lMacroNo, MACRO_FUNC_SET_OUTPUT, daArg(0)
// 1(1000msec)동안 대기한다.
daArg(0) = 1000
AxpMacroAddNode lMacroNo, MACRO_FUNC_WAIT, daArg(0)
// 0 매크로에 노드등록을 종료한다.
AxpMacroEndNode lMacroNo

uReturn = AxpMacroCheckNodeAll(lMacroNo, lErrorNodeNo, uErrorCode)
If uReturn = AXT_RT_SUCCESS then
     0 매크로를 즉시 구동으로 반복구동없이 시작함. 매크로가 구동중일  일반 함수로 제어를 금지함)
    AxpMacroStart lMacroNo, MACRO_START_IMMEDIATE, 0, 0
End If

// 0 매크로의 동작을 즉시 정지한다.
AxpMacroPause lMacroNo, MACRO_PAUSE_IMMEDIATELY
Delphi
{ 구동중인 0번 매크로를 Pause하는 예제 }
var
    lMacroNo : LongInt;
    daArg : array [0.. AXP_MAX_MACRO_SET_ARG] of double;

brgin
    { 0번 매크로에 노드등록을 시작한다. }
    AxpMacroBeginNode(lMacroNo);
    { 0번 디지털 출력모듈의 0번 Bit를 ON한다. }
    daArg[0] := MACRO_DIGITAL_OUTPUT; { 디지털 출력 제어 }
    daArg[1] := 0; { 0번 모듈 제어 }
    daArg[2] := MACRO_DATA_BIT; { Bit 단위 출력제어 }
    daArg[3] := 0; { 0번 Bit 제어 }
    daArg[4] := 1; { 0번 Bit ON }
    AxpMacroAddNode(lMacroNo, MACRO_FUNC_SET_OUTPUT, @daArg);

    { 매크로 구동을 일시 정지한다. }
    AxpMacroAddNode(lMacroNo, MACRO_FUNC_PAUSE, @daArg);
    { 1초(1000msec)동안 대기한다. }
    daArg[0] := 1000;
    AxpMacroAddNode(lMacroNo, MACRO_FUNC_WAIT, @daArg);
    { 0번 디지털 출력모듈의 0번 Bit를 OFF한다. }
    daArg[0] := MACRO_DIGITAL_OUTPUT; { 디지털 출력 제어 }
    daArg[1] := 0; { 0번 모듈 제어 }
    daArg[2] := MACRO_DATA_BIT; { Bit 단위 출력제어 }
    daArg[3] := 0; { 0번 Bit 제어 }
    daArg[4] := 0; { 0번 Bit OFF }
    AxpMacroAddNode(lMacroNo, MACRO_FUNC_SET_OUTPUT, @daArg);
    { 1초(1000msec)동안 대기한다. }
    daArg[0] := 1000;
    AxpMacroAddNode(lMacroNo, MACRO_FUNC_WAIT, @daArg);
    { 0번 매크로에 노드등록을 종료한다. }
    AxpMacroEndNode(lMacroNo);

    uReturn = AxpMacroCheckNodeAll(lMacroNo, @lErrorNodeNo, @uErrorCode);
    if uReturn = AXT_RT_SUCCESS then
    begin
        { 0번 매크로를 즉시 구동으로 반복구동없이 시작함. }
        AxpMacroStart(lMacroNo, MACRO_START_IMMEDIATE, 0, 0);
    end;
    
    { 0번 매크로의 동작을 즉시 정지한다. }
    AxpMacroResume(lMacroNo, MACRO_PAUSE_IMMEDIATELY);
end;

AxpMacroSkip

Purpose

지정된 매크로의 동작을 Skip 시킨다.
주의 사항: EtherCAT Embedded(S/W) Type 전용 함수

Format

C++
DWORD AxpMacroSkip(long lMacroNo, DWORD uCondition);
Visual Basic
Function AxpMacroSkip(ByVal lMacroNo As Long, ByVal uCondition As Long) As Long
Delphi
function AxpMacroSkip(lMacroNo: LongInt; uCondition: LongInt) : DWord; stdcall;

Parameters

[in/out] Name [Init Value] Explanation
[in] lMacroNo(0~95) Skip 할 매크로 번호
  [0~95] 지정한 매크로의 동작을 Skip함
[in] uCondition(1~2) 일시정지 조건을 지정
  [1] MACRO_SKIP_WHEN_FUNC_WAIT : WAIT중인 노드를 Skip함
  [2] MACRO_SKIP_TO_END_NODE : 이후 마지막 노드 실행까지 모든 WAIT 명령을 Skip함

Return Values

[0000] AXT_RT_SUCCESS : 매크로 구동이 정상적으로 재 실행된 경우
[1061] AXT_RT_RTOS_OPEN_ERROR: EtherCAT Master 구동 에러
[1106] AXT_RT_OPEN_ERROR: AXL 라이브러리 오픈 실패
[4400] AXT_RT_INAVLID_NO: 매크로 번호 이상
[6703] AXT_RT_MACRO_MEMORY_MISMATCH: 매크로 구동관련 메모리가 EtherCAT Master 와 일치하지 않는 경우
[6715] AXT_RT_MACRO_NOT_OPERATION: 지정한 매크로가 정지상태일 때
[6721] AXT_RT_MACRO_NOT_CHECKED: 지정한 매크로가 체크되지않은 상태일 때

Description

구동중인 매크로를 일시 정지하는 함수이다. 일시정지 Condition 에 따라 즉시정지 또는 WAIT 명령을 실행하는 시점에서 정지등의 조건으로 정지할 수 있다.

예제 코드

C++

// 구동중인 0번 매크로의 Wait 명령을 Skip하는 예제
long lMacroNo = 0;
double daArg[AXP_MAX_MACRO_SET_ARG] = { 0.0 };
// 0번 매크로에 노드등록을 시작한다.
AxpMacroBeginNode(lMacroNo);
// 0번 디지털 출력모듈의 0번 Bit를 ON한다.
daArg[0] = MACRO_DIGITAL_OUTPUT; // 디지털 출력 제어
daArg[1] = 0; // 0번 모듈 제어
daArg[2] = MACRO_DATA_BIT; // Bit 단위 출력제어
daArg[3] = 0; // 0번 Bit 제어
daArg[4] = 1; // 0번 Bit ON
AxpMacroAddNode(lMacroNo, MACRO_FUNC_SET_OUTPUT, daArg);

// 1초(1000msec)동안 대기한다.
daArg[0] = 1000;
AxpMacroAddNode(lMacroNo, MACRO_FUNC_WAIT, daArg);
// 0번 디지털 출력모듈의 0번 Bit를 OFF한다.
daArg[0] = MACRO_DIGITAL_OUTPUT;        // 디지털 출력 제어
daArg[1] = 0;                           // 0번 모듈 제어
daArg[2] = MACRO_DATA_BIT;              // Bit 단위 출력제어
daArg[3] = 0;                           // 0번 Bit 제어
daArg[4] = 0;                           // 0번 Bit OFF
AxpMacroAddNode(lMacroNo, MACRO_FUNC_SET_OUTPUT, daArg);
// 1초(1000msec)동안 대기한다.
daArg[0] = 1000;
AxpMacroAddNode(lMacroNo, MACRO_FUNC_WAIT, daArg);
// 0번 매크로에 노드등록을 종료한다.
AxpMacroEndNode(lMacroNo);

AxpMacroCheckNodeAll(lMacroNo, &lErrorNodeNo, &uErrorCode);
// 0번 매크로에 등록된 노드들에 문제가 없을 경우
if(uReturn == AXT_RT_SUCCESS)
{
    // 0번 매크로를 즉시 구동으로 반복구동없이 시작함
    AxpMacroStart(lMacroNo, MACRO_START_IMMEDIATE, 0, 0);
}

// 현재 수행중인 WAIT명령을 Skip한다.
AxpMacroSkip(lMacroNo, MACRO_SKIP_WHEN_FUNC_WAIT);
Visual Basic
‘구동중인 0 매크로의 Wait 명령을 Skip하는 예제
Dim lMacroNo As Long
Dim daArg(0 To 15) As Double

// 0 매크로에 노드등록을 시작한다.
AxpMacroBeginNode lMacroNo
// 0 디지털 출력모듈의 0 Bit ON한다.
daArg(0) = MACRO_DIGITAL_OUTPUT // 디지털 출력 제어
daArg(1) = 0 // 0 모듈 제어
daArg(2) = MACRO_DATA_BIT // Bit 단위 출력제어
daArg(3) = 0 // 0 Bit 제어
daArg(4) = 1 // 0 Bit ON
AxpMacroAddNode lMacroNo, MACRO_FUNC_SET_OUTPUT, daArg(0)

// 1(1000msec)동안 대기한다.
daArg(0) = 1000
AxpMacroAddNode lMacroNo, MACRO_FUNC_WAIT, daArg(0)
// 0 디지털 출력모듈의 0 Bit OFF한다.
daArg(0) = MACRO_DIGITAL_OUTPUT         // 디지털 출력 제어
daArg(1) = 0                            // 0 모듈 제어
daArg(2) = MACRO_DATA_BIT               // Bit 단위 출력제어
daArg(3) = 0                            // 0 Bit 제어
daArg(4) = 0                            // 0 Bit OFF
AxpMacroAddNode lMacroNo, MACRO_FUNC_SET_OUTPUT, daArg(0)
// 1(1000msec)동안 대기한다.
daArg(0) = 1000
AxpMacroAddNode lMacroNo, MACRO_FUNC_WAIT, daArg(0)
// 0 매크로에 노드등록을 종료한다.
AxpMacroEndNode lMacroNo

uReturn = AxpMacroCheckNodeAll(lMacroNo, lErrorNodeNo, uErrorCode)
If uReturn = AXT_RT_SUCCESS then
     0 매크로를 즉시 구동으로 반복구동없이 시작함. 매크로가 구동중일  일반 함수로 제어를 금지함)
    AxpMacroStart lMacroNo, MACRO_START_IMMEDIATE, 0, 0
End If

// 현재 수행중인 WAIT명령을 Skip한다.
AxpMacroSkip lMacroNo, MACRO_SKIP_WHEN_FUNC_WAIT
Delphi
{ 구동중인 0번 매크로의 Wait 명령을 Skip하는 예제 }
var
    lMacroNo : LongInt;
    daArg : array [0.. AXP_MAX_MACRO_SET_ARG] of double;

brgin
    { 0번 매크로에 노드등록을 시작한다. }
    AxpMacroBeginNode(lMacroNo);
    { 0번 디지털 출력모듈의 0번 Bit를 ON한다. }
    daArg[0] := MACRO_DIGITAL_OUTPUT; { 디지털 출력 제어 }
    daArg[1] := 0; { 0번 모듈 제어 }
    daArg[2] := MACRO_DATA_BIT; { Bit 단위 출력제어 }
    daArg[3] := 0; { 0번 Bit 제어 }
    daArg[4] := 1; { 0번 Bit ON }
    AxpMacroAddNode(lMacroNo, MACRO_FUNC_SET_OUTPUT, @daArg);

    { 1초(1000msec)동안 대기한다. }
    daArg[0] := 1000;
    AxpMacroAddNode(lMacroNo, MACRO_FUNC_WAIT, @daArg);
    { 0번 디지털 출력모듈의 0번 Bit를 OFF한다. }
    daArg[0] := MACRO_DIGITAL_OUTPUT; { 디지털 출력 제어 }
    daArg[1] := 0; { 0번 모듈 제어 }
    daArg[2] := MACRO_DATA_BIT; { Bit 단위 출력제어 }
    daArg[3] := 0; { 0번 Bit 제어 }
    daArg[4] := 0; { 0번 Bit OFF }
    AxpMacroAddNode(lMacroNo, MACRO_FUNC_SET_OUTPUT, @daArg);
    { 1초(1000msec)동안 대기한다. }
    daArg[0] := 1000;
    AxpMacroAddNode(lMacroNo, MACRO_FUNC_WAIT, @daArg);
    { 0번 매크로에 노드등록을 종료한다. }
    AxpMacroEndNode(lMacroNo);

    uReturn = AxpMacroCheckNodeAll(lMacroNo, @lErrorNodeNo, @uErrorCode);
    if uReturn = AXT_RT_SUCCESS then
    begin
        { 0번 매크로를 즉시 구동으로 반복구동없이 시작함. }
        AxpMacroStart(lMacroNo, MACRO_START_IMMEDIATE, 0, 0);
    end;
    
    { 현재 수행중인 WAIT명령을 Skip한다. }
    AxpMacroSkip(lMacroNo, MACRO_SKIP_WHEN_FUNC_WAIT);
end;

AxpMacroGetStartInfo

Purpose

지정된 매크로의 구동 조건을 반환한다.
주의 사항: EtherCAT Embedded(S/W) Type 전용 함수

Format

C++
DWORD AxpMacroGetStartInfo(long lMacroNo, DWORD* upCondition, BOOL* bpLockResource, long* lpRepeatCount);
Visual Basic
Function AxpMacroGetStartInfo(ByVal lMacroNo As Long, ByRef upCondition As Long, ByRef bpLockResource As Byte, ByRef lpRepeatCount As Long) As Long
Delphi
function AxpMacroStart(lMacroNo: LongInt; upCondition: PLongInt; bpLockResource : PBoolean; lpRepeatCount : PLongInt) : DWord; stdcall;

Parameters

[in/out] Name [Init Value] Explanation
[in] lMacroNo(0~95) 구동 조건을 확인 할 매크로 번호
  [0~95] 지정한 매크로의 구동 조건을 반환
[out] uCondition(0~1) 시작 조건을 반환
  [0] MACRO_START_READY : 대기상태로 매크로를 시작
  [1] MACRO_START_IMMEDIATE : 즉시 실행 상태로 매크로를 시작
[out] bpLockResource(0~1) 매크로에 사용된 모듈또는 채널들에 대해 제어를 금지 여부를 반환
  [0] 제어 허용
  [1] 제어 금지
[out] lpRepeatCount(-1~ ) 지정한 매크로의 전체 반복 구동 회수를 지정
  [-1] 무한 반복구동
  [0, 1] 전체 노드에 대한 실행을 1회 구동함
  [2~ ] 전체 노드에 대한 실행을 지정한 횟수 만큼 구동함

Return Values

[0000] AXT_RT_SUCCESS : 매크로 구동 조건 반환이 정상적으로 실행된 경우
[1001] AXT_RT_OPEN_ERROR: AXL 라이브러리 오픈 실패
[1061] AXT_RT_RTOS_OPEN_ERROR: EtherCAT Master 구동 에러
[1054] AXT_RT_NOT_SUPPORT_VERSION: 매크로 기능을 지원하지 않는 모듈일 경우
[1106] AXT_RT_INAVLID_NO: 매크로 번호 이상

Description

매크로의 시작 구동조건은 장비 제어 프로그램을 실행하였을 때 이미 구동중인 매크로의 시작조건 설정값을 확인할 때 사용한다.

예제 코드

C++

// 0번 매크로에 구동조건을 확인하는 예제
BOOL bLockResource = 0;
long lMacroNo = 0, lRepeatCount = 0;
DWORD uCondition = 0, uReturn = AXT_RT_SUCCESS;

// 0번 매크로를 즉시 구동으로 반복구동없이 시작함. 매크로가 구동중일 때 일반 함수로 제어를 금지함)
uReturn = AxpMacroGetStartInfo(lMacroNo, &uCondition, &bLockResource, &lRepeatCount);
if(uReturn == AXT_RT_SUCCESS)
{
    TRACE(%d번 매크로의 구동조건은 %d: Condition, %d: LockResource, %d: RepeatCount\n,
    lMacroNo, uCondition, bLockResource, lRepeatCount);
}
Visual Basic
0 매크로에 구동조건을 확인하는 예제
Dim lMacroNo As Long
Dim lRepeatCount As Long
Dim bLockResource As Boolean
Dim uCondition As Long
Dim uReturn As Long

 0 매크로를 즉시 구동으로 반복구동없이 시작함. 매크로가 구동중일  일반 함수로 제어를 금지함)
uReturn = AxpMacroGetStartInfo(lMacroNo, &uCondition, &bLockResource, &lRepeatCount);
If uReturn = AXT_RT_SUCCESS then
    Debug.Print lMacroNo & “번 매크로의 구동조건은  & uCondition & : Condition &
    bLockResource & : LockResource & lRepeatCount & : RepeatCount
End If
Delphi
{ 0번 매크로에 구동조건을 확인하는 예제 }
var
    lMacroNo : Long;
    lRepeatCount : Long;
    bLockResource : Boolean;
    uCondition : DWORD;
    uReturn : DWORD;

begin
    { 0번 매크로를 즉시 구동으로 반복구동없이 시작함. 매크로가 구동중일 때 일반 함수로 제어를 금지함) }
    uReturn := AxpMacroGetStartInfo(lMacroNo, @uCondition, @bLockResource, @lRepeatCount);
    if uReturn = AXT_RT_SUCCESS then
    begin
        OutputDebugString(PChar(Format(‘%d 매크로의 구동조건은 %d: Condition, %d:
        LockResource, %d: RepeatCount, lMacroNo, uCondition, bLockResource, lRepeatCount)));
    end;
end;

AxpMacroStop

Purpose

지정된 매크로의 구동을 정지한다.
주의 사항: EtherCAT Embedded(S/W) Type 전용 함수

Format

C++
DWORD AxpMacroStop(long lMacroNo, DWORD uStopMode);
Visual Basic
Function AxpMacroStop (ByVal lMacroNo As Long, ByRef uStopMode As Long) As Long
Delphi
function AxpMacroStop (lMacroNo: LongInt; uStopMode: LongInt) : DWord; stdcall;

Parameters

[in/out] Name [Init Value] Explanation
[in] lMacroNo(0~95) 구동을 정지 할 매크로 번호
  [-1] 구동중인 모든 매크로 정지
  [0~95] 지정한 매크로 정지
[in] uStopMode(0~1) 정지 모드를 설정
  [0] MACRO_QUICK_STOP: 정지(모션 구동시 감속 정지함)
  [1] MACRO_SLOW_STOP: 정지(모션 구동시 급 정지함)

Return Values

[0000] AXT_RT_SUCCESS : 매크로 구동 정지가 정상적으로 실행된 경우
[1106] AXT_RT_OPEN_ERROR: AXL 라이브러리 오픈 실패
[6702] AXT_RT_MACRO_INAVLID_STOP_MODE: 유효하지않는 정지 모드일 경우

Description

구동중인 매크로를 정지할 때 사용한다. 매크로 번호에 -1 을 입력하면 구동중이거나 대기상태에 있는 모든 매크로 들의 구동이 정지된다.

예제 코드

C++

// 0번 매크로를 정지하는 예제
long lMacroNo = 0;

// 0번 매크로를 정지함
AxpMacroStop(lMacroNo, MACRO_QUICK_STOP);

// 구동중인 모든 매크로를 정지함
AxpMacroStop(-1, MACRO_QUICK_STOP);
Visual Basic
‘지정된 시퀀스  번호의 등록된 시퀀스 구동을 모두 삭제한다.
Dim lMacroNo As Long

 0 매크로를 정지함
lMacroNo = 0
AxpMacroStop lMacroNo, MACRO_QUICK_STOP

 구동중인 모든 매크로를 정지함
AxpMacroStop -1, MACRO_QUICK_STOP
Delphi
{ 지정된 시퀀스 맵 번호의 등록된 시퀀스 구동을 모두 삭제한다. }
var
    lMacroNo: Long;

begin
    { 0번 매크로를 정지함}
    lMacroNo := 0;
    AxpMacroStop(lMacroNo, MACRO_QUICK_STOP);

    { 구동중인 모든 매크로를 정지함 }
    AxpMacroStop(-1, MACRO_QUICK_STOP);
end;

AxpMacroReadRunStatus

Purpose

지정된 매크로의 구동 상태를 반환한다.
주의 사항: EtherCAT Embedded(S/W) Type 전용 함수

Format

C++
DWORD AxpMacroReadRunStatus(long lMacroNo, DWORD* upStatus, long* lpRepeatCount);
Visual Basic
Function AxpMacroReadRunStatus(ByVal lMacroNo As Long, ByRef upStatus As Long, ByRef lpRepeatCount As Long) As Long
Delphi
function AxpMacroReadRunStatus(lMacroNo: LongInt; upStatus: PDWord; lpRepeatCount : PLongInt) : DWord; stdcall;

Parameters

[in/out] Name [Init Value] Explanation
[in] lMacroNo(0~95) 구동상태를 확인 할 매크로 번호
  [0~95] 지정한 매크로의 구동상태를 반환
[out] upStatus(0~3) 매크로의 구동상태를 반환
  [0] MACRO_STATUS_STOP: 매크로 구동 정지 상태
  [1] MACRO_STATUS_READY: 매크로 구동 중 대기 상태
  [2] MACRO_STATUS_RUN: 매크로 구동 상태
  [3] MACRO_STATUS_ERROR: 매크로 에러 상태
[out] lpRepeatCount 매크로의 반복구동 회수를 반환

Return Values

[0000] AXT_RT_SUCCESS : 매크로 구동확인이 성공한 경우
[1061] AXT_RT_RTOS_OPEN_ERROR: EtherCAT Master 구동 에러
[1106] AXT_RT_OPEN_ERROR: AXL 라이브러리 오픈 실패
[4400] AXT_RT_INAVLID_NO: 매크로 번호 이상

Description

구동중인 매크로의 상태와 반복구동한 회수를 반환한다. 매크로 상태중 대기상태를 의미하는 READY 상태는 매크로 구동시작 시 “MACRO_START_READY”로 구동할 경우와 다른 매크로를 CALL 한 후 대기상태일 경우 또는 READY 상태로 시작한 매크로가 구동이 완료되어 다시 대기 상태로 된 경우를 의미한다.

예제 코드

C++

// 0번 매크로의 구동 상태를 확인하는 예제
long lMacroNo = 0;
DWORD uStatus = 0;
Long lRepeatCount = 0;

// 0번 매크로의 구동 상태와 반복구동 회수를 확인
AxpMacroReadRunStatus(lMacroNo, &uStatus, &lRepeatCount);
Visual Basic
0 매크로의 구동 상태를 확인하는 예제
Dim lMacroNo As Long
Dim uStatus As Long
Dim lRepeatCount As Long

 0 매크로의 구동 상태와 반복구동 회수를 확인
AxpMacroReadRunStatus lMacroNo, uStatus, lRepeatCount
Delphi
{ 0번 매크로의 구동 상태를 확인하는 예제 }
var
    lMacroNo : Long;
    uStatus : DWORD;
    lRepeatCount : Long;

begin
    { 0번 매크로의 구동 상태와 반복구동 회수를 확인 }
    AxpMacroReadRunStatus(lMacroNo, @uStatus, @lRepeatCount);
end;

AxpMacroGetNodeNum

Purpose

지정된 매크로에 등록된 노드 개수와 현재 구동중인 노드 정보를 반환한다.
주의 사항: EtherCAT Embedded(S/W) Type 전용 함수

Format

C++
DWORD AxpMacroGetNodeNum(long lMacroNo, long* lpCurNodeNo, long* lpTotalNodeNum);
Visual Basic
Function AxpMacroGetNodeNum (ByVal lMacroNo As Long, ByRef lpCurNodeNo As Long, ByRef lpTotalNodeNum As Long) As Long
Delphi
function AxpMacroGetNodeNum (lMacroNo: LongInt; lpCurNodeNo : PLongInt; lpTotalNodeNum: PLongInt) : DWord; stdcall;

Parameters

[in/out] Name [Init Value] Explanation
[in] lMacroNo(0~95) 매크로에 등록된 개수와 현재 구동중인 노드정보를 확인 할 매크로 번호
  [0~95] 지정한 매크로의 노드 정보를 반환
[out] lpCurNodeNo(0~63) 현재 구동중인 매크로 번호를 반환
[out] lpTotalNodeNum(0~64) 지정한 매크로에 등록된 전체 노드개수를 반환

Return Values

[0000] AXT_RT_SUCCESS : 매크로 구동확인이 성공한 경우
[1061] AXT_RT_RTOS_OPEN_ERROR: EtherCAT Master 구동 에러
[1106] AXT_RT_OPEN_ERROR: AXL 라이브러리 오픈 실패
[4400] AXT_RT_INAVLID_NO: 매크로 번호 이상

Description

구동중인 매크로의 전체 노드 개수와 현재 구동중인 노드 번호를 반환한다.

예제 코드

C++

// 0번 매크로의 구동 상태를 확인하는 예제
long lMacroNo = 0;
long lTotalNodeNum = 0;
long lCurNodeNo = 0;

// 0번 매크로의 현재 구동중인 매크로 번호와 전체 노드개수를 확인한다.
AxpMacroGetNodeNum(lMacroNo, &lCurNodeNo, &lTotalNodeNum);
Visual Basic
0 매크로의 구동 상태를 확인하는 예제
Dim lMacroNo As Long
Dim lTotalNodeNum As Long
Dim lCurNodeNo As Long

0 매크로의 현재 구동중인 매크로 번호와 전체 노드개수를 확인한다.
AxpMacroGetNodeNum lMacroNo, lCurNodeNo, lTotalNodeNum
Delphi
{ 0번 매크로의 구동 상태를 확인하는 예제 }
var
    lMacroNo : Long;
    lTotalNodeNum : Long;
    lCurNodeNo : Long;

begin
    { 0번 매크로의 현재 구동중인 매크로 번호와 전체 노드개수를 확인한다. }
    AxpMacroGetNodeNum(lMacroNo, @lCurNodeNo, @lTotalNodeNum);
end;

AxpMacroReadFunctionStatus

Purpose

지정한 매크로와 함수에 대한 구동정보를 반환한다.
주의 사항: EtherCAT Embedded(S/W) Type 전용 함수

Format

C++
DWORD AxpMacroReadFunctionStatus(long lMacroNo, DWORD uFunction, double* dpReturnData);
Visual Basic
Function AxpMacroReadFunctionStatus(ByVal lMacroNo As Long, ByVal uFunction As Long, ByRef dpReturnData As Double) As Long
Delphi
function AxpMacroReadFunctionStatus(lMacroNo: LongInt; uFunction : LongInt; dpReturnData: PDouble) : DWord; stdcall;

Parameters

[in/out] Name [Init Value] Explanation
[in] lMacroNo(0~95) 구동중 지정한 함수의 구동정보를 확인할 매크로 번호
  [0~95] 지정한 매크로에 포함된 함수의 구동정보를 반환
[in]uFunction(0~7) 구동정보를 확인할 Function을 지정 { AXT_MACRO_FUNCTION }
  [0] MACRO_FUNC_CALL
  [1] MACRO_FUNC_JUMP
  [2] MACRO_FUNC_RETURN
  [3] MACRO_FUNC_REPEAT
  [4] MACRO_FUNC_SET_OUTPUT
  [5] MACRO_FUNC_WAIT
  [6] MACRO_FUNC_STOP
  [7] MACRO_FUNC_PAUSE
[out]dpReturnData[16] 지정한 함수의 구동정보를 반환
[0] MACRO_FUNC_CALL
  - dpArg[0]: 최종 호출된 CALL명령의 노드번호
  - dpArg[1]: 지정한 매크로 내에서 최종 호출된 CALL명령의 Index를 반환(CALL 명령들중에서의 Index)
[1] MACRO_FUNC_JUMP
  - dpArg[0]: 최종 호출된 JUMP명령의 노드번호
  - dpArg[1]: 지정한 매크로 내에서 최종 호출된 JUMP명령의 Index를 반환(JUMP 명령들중에서의 Index)
[2] MACRO_FUNC_RETURN
  - dpArg[0]: 최종 호출된 RETURN명령의 노드번호
  - dpArg[1]: 지정한 매크로 내에서 최종 호출된 RETURN명령의 Index를 반환(RETURN 명령들중에서의 Index)
[3] MACRO_FUNC_REPEAT
  - dpArg[0]: 최종 호출된 REPEAT명령의 노드번호
  - dpArg[1]: 지정한 매크로 내에서 최종 호출된 REPEAT명령의 Index를 반환(REPEAT 명령들중에서의 Index)
  - dpArg[2]: 최종 호출된 REPEAT명령의 반복구동 설정회수를 반환
  - dpArg[3]: 최종 호출된 REPEAT명령의 반복구동한 회수를 반환
[4] MACRO_FUNC_SET_OUTPUT
  - dpArg[0]: 최종 호출된 SET_OUTPUT명령의 노드번호
  - dpArg[1]: 지정한 매크로 내에서 최종 호출된 SET_PUTPUT명령의 Index를 반환(SET_OUTPUT 명령들중에서의 Index)
  - dpArg[2]: 최종 호출된 SET_OUTPUT명령의 출력 Type을 반환
  - dpArg[3]: DataType이 “_ARR“일 경우의 Offset을 반환하고 그외에는 출력값을 반환
  - dpArg[4]: DataType이 “_ARR”일 경우 데이터 Size 반환
  - dpArg[5~21]: DataType이 “_ARR”일 경우 데이터를 반환
[5] MACRO_FUNC_WAIT
  - dpArg[0]: 최종 호출된 WAIT명령의 노드번호
  - dpArg[1]: 지정한 매크로 내에서 최종 호출된 WAIT명령의 Index를 반환(WAIT 명령들중에서의 Index)
  - dpArg[2]: 최종 호출된 WAIT명령의 설정 시간을 반환
  - dpArg[3]: 최종 호출된 WAIT명령의 소요 시간을 반환
  - dpArg[4]: 매크로가 동작한 전체 시간을 반환(구동이 시작된 후 CALL명령으로 대기중인 시간 포함, 1Cycel 동작 후 다시 시작시 자동으로 초기화 됨[Ready -> Run])
[6] MACRO_FUNC_STOP
  - dpArg[0]: 최종 호출된 STOP명령의 노드번호
  - dpArg[1]: 지정한 매크로 내에서 최종 호출된 STOP명령의 Index를 반환(STOP 명령들중에서의 Index)
[7] MACRO_FUNC_PAUSE
  - dpArg[0]: 최종 호출된 PAISE명령의 노드번호
  - dpArg[1]: 지정한 매크로 내에서 PAUSE명령들 중의 Index를 반환
  - dpArg[2]: 지정한 매크로 내에서 PAUSE상태인지를 반환

Return Values

[0000] AXT_RT_SUCCESS : 매크로 구동확인이 성공한 경우
[1061] AXT_RT_RTOS_OPEN_ERROR: EtherCAT Master 구동 에러
[1104] AXT_RT_INVALID_VARIABLE: 반환 받을 데이터 포인트가 NULL 인 경우
[1106] AXT_RT_OPEN_ERROR: AXL 라이브러리 오픈 실패
[4400] AXT_RT_INAVLID_NO: 매크로 번호 이상
[6716] AXT_RT_MACRO_NOT_SUPPORT_FUNCTION: 지원하지 않는 매크로 함수 사용

Description

구동중인 매크로에 대해 구동정보를 확인할 함수를 지정하면 해당 함수에 대한 정보를 반환한다. 반환되는 정보는 지정한 함수에 따라 달라지므로 주의해야 한다.

예제 코드

C++

// 0번 매크로의 WAIT 함수의 구동 상태를 확인하는 예제
long lMacroNo = 0;
double daReturnData[AXP_MAX_MACRO_GET_DATA];

// 0번 매크로의 WAIT함수의 구동정보를 확인한다.
AxpMacroReadFunctionStatus(lMacroNo, MACRO_FUNC_WAIT, &daReturnData);
TRACE(동작중이거나 동작된 WAIT 함수의 노드 위치 : %lf \n, daReturnData[0]);
TRACE(동작중이거나 동작된 WAIT 함수의 Index : %lf \n, daReturnData[1]);
TRACE(동작중이거나 동작된 WAIT 함수의 설정된 시간값(ms) : %lf \n, daReturnData[2]);
TRACE(동작중이거나 동작된 WAIT 함수의 소요된 시간값(ms) : %lf \n, daReturnData[3]);
Visual Basic
0 매크로의 WAIT 함수의 구동 상태를 확인하는 예제.
Dim lMacroNo As Long
Dim daReturnData(0 To AXP_MAX_MACRO_GET_DATA  1) As Double

lMacroNo = 0
AxpMacroReadFunctionStatus lMacroNo, MACRO_FUNC_WAIT, daReturnData(0)
Debug.Print “동작중이거나 동작된 WAIT 함수의 노드 위치 :  & daReturnData(0)
Debug.Print “동작중이거나 동작된 WAIT 함수의 Index :  & daReturnData(1)
Debug.Print “동작중이거나 동작된 WAIT 함수의 설정된 시간값(ms) :  & daReturnData(2)
Debug.Print “동작중이거나 동작된 WAIT 함수의 소요된 시간값(ms) :  & daReturnData(3)
Delphi
{ 0번 매크로의 WAIT 함수의 구동 상태를 확인하는 예제. }
var
    lMacroNo : Long;
    daReturnData : array[0.. AXP_MAX_MACRO_GET_DATA] of double

begin
    AxpMacroReadFunctionStatus(lMacroNo, MACRO_FUNC_WAIT, @daReturnData);
    OutputDebugString(PChar(Format(‘동작중이거나 동작된 WAIT 함수의 노드 위치 : %f, daReturnData[0])));
    OutputDebugString(PChar(Format(‘동작중이거나 동작된 WAIT 함수의 Index : %f, daReturnData[0])));
    OutputDebugString(PChar(Format(‘동작중이거나 동작된 WAIT 함수의 설정된 시간값(ms) : %f, daReturnData[0])));
    OutputDebugString(PChar(Format(‘동작중이거나 동작된 WAIT 함수의 소요된 시간값(ms) : %f, daReturnData[0])));
end;

AxpMacroSetWatchdogTimer

Purpose

지정된 매크로의 Watchdog Timer 를 갱신한다.
주의 사항: EtherCAT Embedded(S/W) Type 전용 함수

Format

C++
DWORD AxpMacroSetWatchdogTimer(long lMacroNo, long lTimeoutMs);
Visual Basic
Function AxpMacroSetWatchdogTimer (ByVal lMacroNo As Long, ByVal lTimeoutMs As Long) As Long
Delphi
function AxpMacroSetWatchdogTimer(lMacroNo : LongInt; lTimeoutMs : LongInt) : DWord; stdcall;

Parameters

[in/out] Name [Init Value] Explanation
[in] lMacroNo(0~95) Watchdog timer 를 갱싱 할 매크로 번호
  [0~95] 지정한 매크로에 포함된 함수의 구동정보를 반환
[in]lTimeroutMs Watchdog Timeout Value (ms)

Return Values

[0000] AXT_RT_SUCCESS : 매크로 구동확인이 성공한 경우
[1061] AXT_RT_RTOS_OPEN_ERROR: EtherCAT Master 구동 에러
[1104] AXT_RT_INVALID_VARIABLE: 반환 받을 데이터 포인트가 NULL 인 경우
[1106] AXT_RT_OPEN_ERROR: AXL 라이브러리 오픈 실패
[4400] AXT_RT_INAVLID_NO: 매크로 번호 이상

Description

해당 함수를 호출함으로써 WatchdogTimer 가 동작하기 시작하며, Timeout 시간동안 해당 함수가 재 호출되지 않으면 Watchdog timeout 이 발생되어 AxpMacroStart 함수의 시작조건으로 MACRO_START_WATCHDOG_TIMEOUT 으로 해당 지정한 매크로가 동작한다.

예제 코드

C++

// 0번 매크로의 Watchdog Timer를 1000ms 갱신하는 예제
long lMacroNo = 0;
long lTimeoutMs = 1000;

// 0번 매크로의 Watchdog timer 를 1000ms 갱신한다.
AxpMacroSetWatchdogTimer(lMacroNo, lTimeoutMs);
Visual Basic
0 매크로의 Watchdog Timer 1000ms 갱신하는 예제
Dim lMacroNo As Long
Dim lTimeoutMs As Long

lMacroNo = 0
lTimeoutMs = 1000
AxpMacroSetWatchdogTimer lMacroNo, lTimeoutMs
Delphi
{ 0번 매크로의 Watchdog Timer를 1000ms 갱신하는 예제 }
var
    lMacroNo : Long;
    lTimeoutMs: Long;
    lMacroNo := 0;
    lTimeoutMs:= 1000;

begin
    AxpMacroSetWatchdogTimer(lMacroNo, lTimeoutMs);
end;

이 설명서의 내용은 예고 없이 변경 될 수 있습니다. 용례에 사용된 회사, 기관, 제품, 
인물 및 사건 등은 실제 데이터가 아닙니다. 어떠한 실제 회사, 기관, 제품, 인물 또는 
사건과도 연관시킬 의도가 없으며 그렇게 유추해서도 안됩니다. 해당 저작권 법을 준수하는 
것은 사용자의 책임입니다. 저작권에서의 권리와는 별도로, 이 설명서의 어떠한 부분도 
(주)아진엑스텍의 명시적인 서면 승인 없이는 어떠한 형식이나 수단(전기적, 기계적, 
복사기에 의한 복사, 디스크 복사 또는 다른 방법) 또는 다른 목적으로도 복제되거나, 
검색 시스템 에저장 또는 도입 되거나, 전송 될 수 없습니다. (주)아진엑스텍은 이 설명서 
본안에 관련된 특허권, 상표권, 저작권 또는 기타 지적소유권등을 보유 할 수 있습니다. 
서면 사용권 계약에 따라 (주)아진엑스텍으로부터 귀하에게 명시적으로 제공된 권리이외에, 
이 설명서의 제공은 귀하에게 이러한 특허권, 저작권 또는 기타 지적 소유권등에 대한 
어떠한 사용권도 허용하지 않습니다.