Skip to content

고급 함수

Function Description
AxdiIsPulseOn 지정한 입력 접점 모듈의 Offset 위치에서 신호가 Off에서 On으로 바뀌었는지 확인한다.
AxdiIsPulseOff 지정한 입력 접점 모듈의 Offset 위치에서 신호가 On에서 Off으로 바뀌었는지 확인한다.
AxdiIsOn 지정한 입력 접점 모듈의 Offset 위치에서 신호가 count 만큼 호출 될 동안 On 상태로 유지하는지 확인한다.
AxdiIsOff 지정한 입력 접점 모듈의 Offset 위치에서 신호가 count 만큼 호출 될 동안 Off 상태로 유지하는지 확인한다.
AxdoOutPulseOn 지정한 출력 접점 모듈의 Offset 위치에서 설정한 mSec동안 On을 유지하다가 Off 시킨다.
AxdoOutPulseOff 지정한 출력 접점 모듈의 Offset 위치에서 설정한 mSec동안 Off를 유지하다가 On 시킨다.
AxdoToggleStart 지정한 출력 접점 모듈의 Offset 위치에서 설정한 횟수, 설정한 간격으로 토글한 후 원래의 출력상태를 유지한다.
AxdoToggleStop 지정한 출력 접점 모듈의 Offset 위치에서 토글 중인 출력을 설정한 신호 상태로 정지 시킨다.
AxdoSetNetworkErrorAct 지정한 출력 모듈의 Network이 끊어졌을 경우 출력 상태를 출력 Byte 단위로 설정한다.
AxdoSetNetworkErrorUserValue 지정한 출력 모듈의 Network이 끊어졌을 경우, 출력 상태를 출력 Byte 단위로 직접 설정한다.

AxdiIsPulseOn

Purpose

지정한 입력 접점 모듈의 Offset 위치에서 신호가 Off 에서 On 으로 바뀌었는지 확인한다.

Format

C++
DWORD AxdiIsPulseOn(long lModuleNo, long lOffset, DWORD *upValue);
C#
uint AxdiIsPulseOn(int lModuleNo, int lOffset, ref int upValue);

Parameters

[in/out] Name [Init Value] Explanation
[in]lModuleNo 모듈 번호
[in]lOffset 입력 접점에 대한 Offset 위치
[out]upValue On 상태 여부 (Boolean)

Return Values

[0000] AXT_RT_SUCCESS : 함수 실행 성공
[3051] AXT_RT_DIO_NOT_MODULE : DIO 모듈 없음
[3101] AXT_RT_DIO_INVALID_MODULE_NO : 유효하지 않은 DIO 모듈 번호
[3102] AXT_RT_DIO_INVALID_OFFSET_NO : 유효하지 않은 DIO OFFSET 번호

Description

사용자가 지정한 입력 접점 모듈의 Offset 위치에서 신호가 Off 에서 On 으로 바뀌었는지 확인한다.
지정한 모듈이 어떤 모듈인지 확인하여 아래의 Table 에서 Offset 사용 범위를 참조하여 읽는다.

Offset 범위와 Return 값

Module Offset Value
SIO-DI32 0~31 0(False), 1(True)
SIO-DB32x 0~15 0(False), 1(True)

예제 코드

// 0번째 모듈의 Offset 0번지에서 신호가 Off에서 On으로 바뀌었는지 확인한다.
DWORD uValue;
AxdiIsPulseOn(0, 0, &uValue);

AxdiIsPulseOff

Purpose

지정한 입력 접점 모듈의 Offset 위치에서 신호가 On 에서 Off 로 바뀌었는지 확인한다.

Format

C++
DWORD AxdiIsPulseOff(long lModuleNo, long lOffset, DWORD *upValue);
C#
uint AxdiIsPulseOff(int lModuleNo, int lOffset, ref int upValue);

Parameters

[in/out] Name [Init Value] Explanation
[in]lModuleNo 모듈 번호
[in]lOffset 입력 접점에 대한 Offset 위치
[out]upValue Off 상태 여부 (Boolean)

Return Values

[0000] AXT_RT_SUCCESS : 함수 실행 성공
[3051] AXT_RT_DIO_NOT_MODULE : DIO 모듈 없음
[3101] AXT_RT_DIO_INVALID_MODULE_NO : 유효하지 않은 DIO 모듈 번호
[3102] AXT_RT_DIO_INVALID_OFFSET_NO : 유효하지 않은 DIO OFFSET 번호

Description

사용자가 지정한 입력 접점 모듈의 Offset 위치에서 신호가 On 에서 Off 로 바뀌었는지 확인한다.
지정한 모듈이 어떤 모듈인지 확인하여 아래의 Table 에서 Offset 사용 범위를 참조하여 읽는다.

Offset 범위와 Return 값

Module Offset Value
SIO-DI32 0~31 0(False), 1(True)
SIO-DB32x 0~15 0(False), 1(True)

예제 코드

// 0번째 모듈의 Offset 0번지에서 신호가 On에서 Off로 바뀌었는지 확인한다.
DWORD uValue;
AxdiIsPulseOff(0, 0, &uValue);

AxdiIsOn

Purpose

지정한 입력 접점 모듈의 Offset 위치에서 신호가 count 만큼 호출될 동안 On 상태로 유지하는지 확인한다.

Format

C++
DWORD AxdiIsOn(long lModuleNo, long lOffset, long lCount, DWORD *upValue, long lStart);
C#
uint AxdiIsOn(int lModuleNo, int lOffset, int lCount, ref int upValue, int lStart);

Parameters

[in/out] Name [Init Value] Explanation
[in]lModuleNo 모듈 번호
[in]lOffset 입력 접점에 대한 Offset 위치
[in]lCount 호출 횟수
[in]lStart 신호 유지 확인 시작
(최초 호출 : 1, 반복 호출 : 0)
[out]upValue On 상태 유지 여부 (Boolean)

Return Values

[0000] AXT_RT_SUCCESS : 함수 실행 성공
[3051] AXT_RT_DIO_NOT_MODULE : DIO 모듈 없음
[3101] AXT_RT_DIO_INVALID_MODULE_NO : 유효하지 않은 DIO 모듈 번호
[3102] AXT_RT_DIO_INVALID_OFFSET_NO : 유효하지 않은 DIO OFFSET 번호

Description

사용자가 지정한 입력 접점 모듈의 Offset 위치에서 신호가 count 만큼 호출될 동안 On 상태로 유지하는지 확인한다. 최초 호출에서 lStart 를 1 로 하고 이후 count-1 호출 동안은 0 으로 셋팅해야 한다.
upValue 반환 값은 count - 1 동안의 호출에 대해서는 무조건 FALSE 를 반환하며, count 번째 호출부터 신호가 이전 count 동안 On 상태가 유지 되었다면 TRUE 를 반환하고, 아니면 FALSE 를 반환 한다.

즉, count 번째 호출부터의 반환 값이 신호 유지 여부에 대한 판단을 할 수 있는 반환 값이 된다. 예를 들어, lCount 를 10 으로 셋팅하고 On 신호가 계속 유지된다면, 10 회 호출 이후 새롭게 count 를 0 으로 초기화 하거나 lStart 를 1 로 셋팅하여 새롭게 시작하지 않는 이상 On 신호가 계속 유지되어 있으므로 TRUE 를 반환하게 된다.

호출 횟수 count 를 0 으로 설정하면 신호가 On 상태인지 확인하는 용도로 쓰일 수 있으며, 또한 이전에 셋팅된 호출 횟수를 초기화하는 용도로 사용 될 수 있다. 지정한 모듈이 어떤 모듈인지 확인하여 아래의 Table 에서 Offset 사용 범위를 참조하여 읽는다.

Offset 범위와 Return 값

Module Offset Value
SIO-DI32 0~31 0(False), 1(True)
SIO-DB32x 0~15 0(False), 1(True)

예제 코드

// 0번째 모듈의 Offset 0번지에서 신호가 10(Count)회 만큼 호출될 동안 On 상태로 유지하는지 확인한다.
// 예제 1

short i;
DWORD uValue;

// 최초 호출, 10회 신호 유지 상태 점검 시작 lStart:1
AxdiIsOn(0, 0, 10, &uValue, 1);

// 위 최초 호출 포함하여 10번 호출 동안 On 상태 유지하는지 체크
for (i = 0; i < 9; i++)
{ 
    // 실제 프로그램에서는 Timer 나 Thread를 통한 일정 주기를 가진 호출 루틴이 사용
    // 이후 count 만큼의 반복 호출
    AxdiIsOn(0, 0, 10, &uValue, 0);
}

if (uValue != 0)
    AfxMessageBox(ON 상태로 유지 되었습니다.);

// 예제 2(위 코드와 동일하나 아래 코드가 더욱 명확함)
short i;
DWORD uValue;

// lCount 가 0이므로 이전 Count 초기화됨.
AxdiIsOn(0, 0, 0, &uValue, 1); 

// 현재 신호 상태가 On
if(uValue !=0) 
{
    // 10번 호출동안 On 상태 유지하는지 체크
    for (i = 0; i < 10; i++) 
    { 
        // 실제 프로그램에서는 Timer 나 Thread를 통한 일정 주기를 가진 호출 루틴이 사용
        AxdiIsOn(0, 0, 10, &uValue, 0); // 새로운 count 적용하여 반복 호출
    }

    if (uValue != 0)
        AfxMessageBox(ON 상태로 유지 되었습니다.);
}

AxdiIsOff

Purpose

지정한 입력 접점 모듈의 Offset 위치에서 신호가 count 만큼 호출될 동안 Off 상태로 유지하는지 확인한다.

Format

C++
DWORD AxdiIsOff(long lModuleNo, long lOffset, long lCount, DWORD *upValue, long lStart);
C#
uint AxdiIsOff(int lModuleNo, int lOffset, int lCount, ref int upValue, int lStart);

Parameters

[in/out] Name [Init Value] Explanation
[in]lModuleNo 모듈 번호
[in]lOffset 입력 접점에 대한 Offset 위치
[in]lCount 호출 횟수
[in]lStart 신호 유지 확인 시작
(최초 호출 : 1, 반복 호출 : 0)
[out]upValue Off 상태 유지 여부 (Boolean)

Return Values

[0000] AXT_RT_SUCCESS : 함수 실행 성공
[3051] AXT_RT_DIO_NOT_MODULE : DIO 모듈 없음
[3101] AXT_RT_DIO_INVALID_MODULE_NO : 유효하지 않은 DIO 모듈 번호
[3102] AXT_RT_DIO_INVALID_OFFSET_NO : 유효하지 않은 DIO OFFSET 번호

Description

사용자가 지정한 입력 접점 모듈의 Offset 위치에서 신호가 count 만큼 호출될 동안 Off 상태로 유지하는지 확인한다. 최초 호출에서 lStart 를 1 로 하고 이후 count - 1 호출 동안은 ‘0’으로 셋팅해야 한다.
upValue 반환 값은 count - 1 동안의 호출에 대해서는 무조건 FALSE 를 반환하며, count 번째 호출부터 신호가 이전 count 동안 Off 상태가 유지가 되었다면 TRUE 를 반환하고, 아니면 FALSE 를 계속 반환한다.

즉, count 번째 호출부터의 반환 값이 신호 유지 여부에 대한 판단을 할 수 있는 반환값이 된다. 예를 들어, lCount 를 ‘10’으로 셋팅하고 Off 신호가 계속 유지된다면, ‘10’회 호출 이후 새롭게 count 를 ‘0’으로 초기화 하거나 lStart 를 ‘1’로 셋팅하여 새롭게 시작하지 않는 이상 Off 신호가 계속 유지되어 있으므로 TRUE 를 반환하게 된다.

호출 횟수 count 를 ‘0’으로 설정하면 신호가 Off 상태인지 확인하는 용도로 쓰일 수 있으며 또한 이전에 셋팅된 호출 횟수를 초기화하는 용도로도 사용 될 수 있다. 지정한 모듈이 어떤 모듈인지 확인하여 아래의 Table 에서 Offset 사용 범위를 참조하여 읽는다.

Offset 범위와 Return 값

Module Offset Value
SIO-DI32 0~31 0(False), 1(True)
SIO-DB32x 0~15 0(False), 1(True)

예제 코드

// 0번째 모듈의 Offset 0번지에서 신호가 10(Count)회 만큼 호출될 동안 Off 상태로 유지하는지 확인한다.
// 예제 1

short i;
DWORD uValue;

AxdiIsOff(0,0,0,10,&uValue,1); // 최초 호출,10회 신호유지상태 점검 시작 lStart:1

for (i = 0; i < 9; i++) // 위 최초 호출 포함하여 10번 호출 동안 Off 상태 유지하는지 체크
{ // 실제 프로그램에서는 Timer 나 Thread를 통한 일정 주기를 가진 호출 루틴이 사용
AxdiIsOff(0, 0, 10, &uValue, 0);// 이후 count 만큼의 반복 호출

}

if (uValue == 1)
    AfxMessageBox(OFF 상태로 유지 되었습니다.);

// 예제 2(위 코드와 동일하나 아래 코드가 더욱 명확함)
short i;
DWORD uValue;

AxdiIsOff(0, 0, 0, &uValue, 1); // lCount 가 0이므로 이전 Count 초기화됨.

if(uValue == 1) // 현재 신호 상태가 Off
{
    for (i = 0; i < 10; i++) // 10번 호출동안 Off 상태 유지하는지 체크
    { 
        // 실제 프로그램에서는 Timer 나 Thread를 통한 일정 주기를 가진 호출 루틴이 사용
        AxdiIsOff(0, 0, 10, &uValue, 0); // 새로운 count 적용하여 반복 호출
    }
    if (uValue == 1)
        AfxMessageBox(OFF 상태로 유지 되었습니다.);
}

AxdoOutPulseOn

Purpose

지정한 출력 접점 모듈의 Offset 위치에서 설정한 mSec 동안 On 을 유지하다가 Off 시킨다.

Format

C++
DWORD AxdoOutPulseOn(long lModuleNo, long lOffset, long lmSec);
C#
uint AxdoOutPulseOn(int lModuleNo, int lOffset, int lmSec);

Parameters

[in/out] Name [Init Value] Explanation
[in]lModuleNo 모듈 번호
[in]lOffset 입력 접점에 대한 Offset 위치
[in]lmSec 유지 시간 (1 ~ 30000 밀리초)

Return Values

[0000] AXT_RT_SUCCESS : 함수 실행 성공
[3051] AXT_RT_DIO_NOT_MODULE : DIO 모듈 없음
[3101] AXT_RT_DIO_INVALID_MODULE_NO : 유효하지 않은 DIO 모듈 번호
[3102] AXT_RT_DIO_INVALID_OFFSET_NO : 유효하지 않은 DIO OFFSET 번호

Description

사용자가 지정한 출력 접점 모듈의 Offset 위치에서 설정한 mSec 동안 On 을 유지하다가 Off 시킨다.
지정한 모듈이 어떤 모듈인지 확인하여 아래의 Table 에서 Offset 사용 범위를 참조하여 읽는다.

Offset 범위와 Return 값

Module Offset Value
SIO-DI32 0~31 0(False), 1(True)
SIO-DB32x 0~15 0(False), 1(True)

예제 코드

// 0번째 모듈의 Offset 0번지에서 10초 동안 On을 유지하다가 Off 시킨다.
AxdoOutPulseOn(0, 0, 10000);

AxdoOutPulseOff

Purpose

지정한 출력 접점 모듈의 Offset 위치에서 설정한 mSec 동안 Off 를 유지하다가 On 시킨다.

Format

C++
DWORD AxdoOutPulseOff(long lModuleNo, long lOffset, long lmSec);
C#
uint AxdoOutPulseOff(int lModuleNo, int lOffset, int lmSec);

Parameters

[in/out] Name [Init Value] Explanation
[in]lModuleNo 모듈 번호
[in]lOffset 입력 접점에 대한 Offset 위치
[in]lmSec 유지 시간 (1 ~ 30000 밀리초)

Return Values

[0000] AXT_RT_SUCCESS : 함수 실행 성공
[3051] AXT_RT_DIO_NOT_MODULE : DIO 모듈 없음
[3101] AXT_RT_DIO_INVALID_MODULE_NO : 유효하지 않은 DIO 모듈 번호
[3102] AXT_RT_DIO_INVALID_OFFSET_NO : 유효하지 않은 DIO OFFSET 번호

Description

사용자가 지정한 출력 접점 모듈의 Offset 위치에서 설정한 mSec 동안 Off 를 유지하다가 On 시킨다.
지정한 모듈이 어떤 모듈인지 확인하여 아래의 Table 에서 Offset 사용 범위를 참조하여 읽는다.

Offset 범위와 Return 값

Module Offset Value
SIO-DI32 0~31 0(False), 1(True)
SIO-DB32x 0~15 0(False), 1(True)

예제 코드

// 0번째 모듈의 Offset 0번지에서 10초 동안 Off를 유지하다가 On 시킨다.
AxdoOutPulseOff(0, 0, 10000);

AxdoToggleStart

Purpose

지정한 출력 접점 모듈의 Offset 위치에서 최초 시작 신호 상태, 설정한 횟수, 설정한 On/Off 시간 간격으로 토글한 후, 원래의 출력 상태를 유지한다. 설정 횟수를 -1 로 지정하면 무한 반복을 한다.

Format

C++
DWORD AxdoToggleStart(long lModuleNo, long lOffset, long lInitState, long lmSecOn, long lmSecOff, long lCount);
C#
uint AxdoToggleStart(int lModuleNo, int lOffset, int lInitState, int lmSecOn, int lmSecOff, int lCount);

Parameters

[in/out] Name [Init Value] Explanation
[in]lModuleNo 모듈 번호
[in]lOffset 입력 접점에 대한 Offset 위치
[in]lInitState 최초 시작 신호 상태 설정(Off : 0, On: 1)
[in]lmSecOn 토글 간격 중 On Time 시간 간격
(1 ~ 30000 밀리초)
[in]lmSecOff 토글 간격 중 Off Time 시간 간격
(1 ~ 30000 밀리초)
[in]lCount 토글 횟수 , -1의 경우 무한 토글

Return Values

[0000] AXT_RT_SUCCESS : 함수 실행 성공
[3051] AXT_RT_DIO_NOT_MODULE : DIO 모듈 없음
[3101] AXT_RT_DIO_INVALID_MODULE_NO : 유효하지 않은 DIO 모듈 번호
[3102] AXT_RT_DIO_INVALID_OFFSET_NO : 유효하지 않은 DIO OFFSET 번호

Description

사용자가 지정한 출력 접점 모듈의 Offset 위치에서 초기 신호 상태, 설정한 횟수, 설정한 간격으로 토글한 후 원래의 출력상태를 유지한다.
지정한 모듈이 어떤 모듈인지 확인하여 아래의 Table 에서 Offset 사용 범위를 참조하여 읽는다.

Offset 범위와 Return 값

Module Offset Value
SIO-DI32 0~31 0(False), 1(True)
SIO-DB32x 0~15 0(False), 1(True)

예제 코드

// 0번째 모듈의 Offset 0번지에서 초기 Off 상태로 시작 10회 동안 0.5/1초 간격으로 토글한다.
AxdoToggleStart(0, 0, 0, 500, 1000, 10);

AxdoToggleStop

Purpose

지정한 출력 접점 모듈의 Offset 위치에서 토글 중인 출력을 설정한 신호 상태로 정지시킨다.

Format

C++
DWORD AxdoToggleStop(long lModuleNo, long lOffset, DWORD uOnOff);
C#
uint AxdoToggleStop(int lModuleNo, int lOffset, uint uOnOff);

Parameters

[in/out] Name [Init Value] Explanation
[in]lModuleNo 모듈 번호
[in]lOffset 입력 접점에 대한 Offset 위치
[in]uOnOff 출력 접점 값 (0 ~ 1)

Return Values

[0000] AXT_RT_SUCCESS : 함수 실행 성공
[3051] AXT_RT_DIO_NOT_MODULE : DIO 모듈 없음
[3101] AXT_RT_DIO_INVALID_MODULE_NO : 유효하지 않은 DIO 모듈 번호
[3102] AXT_RT_DIO_INVALID_OFFSET_NO : 유효하지 않은 DIO OFFSET 번호

Description

사용자가 지정한 출력 접점 모듈의 Offset 위치에서 토글 중인 출력을 설정한 신호 상태로 정지시킨다.
지정한 모듈이 어떤 모듈인지 확인하여 아래의 Table 에서 Offset 사용 범위를 참조하여 읽는다.

Offset 범위와 Return 값

Module Offset Value
SIO-DI32 0~31 0(False), 1(True)
SIO-DB32x 0~15 0(False), 1(True)

예제 코드

// 0번째 모듈의 Offset 0번지에서 토글을 정지하고 신호 상태를 OFF 시킨다.
AxdoToggleStop(0, 0, OFF);

AxdoSetNetworkErrorAct

Purpose

지정한 출력 모듈의 Network 이 끊어졌을 경우, 출력 상태를 출력 Byte 단위로 설정한다.

Format

C++
DWORD AxdoSetNetworkErrorAct(long lModuleNo, DWORD uSize, DWORD *uaSetValue);
C#
uint AxdoSetNetworkErrorAct(int lModuleNo, uint uSize, ref uint uaSetValue);

Parameters

[in/out] Name [Init Value] Explanation
[in]lModuleNo 모듈 번호
[in]uSize 설정할 Byte 수
[in]uaSetValue 설정할 변수 값 (Default는 Network 끊어지기 전 상태 유지)
-[00h] Network 끊어지기 전 상태 유지
-[01h] On
-[02h] Off
-[03h] User Value
(AxdoSetNetworkErrorUserValue() 함수로 변경가능)

Return Values

[0000] AXT_RT_SUCCESS : 함수 실행 성공
[1171] AXT_RT_2ND_ABOVE_MAX_VALUE : 두번째 인자값이 최대값보다 큼
[1181] AXT_RT_3RD_ABOVE_MAX_VALUE : 세번째 인자값이 최대값보다 큼
[3051] AXT_RT_DIO_NOT_MODULE : DIO 모듈 없음

Description

사용자가 지정한 출력 모듈의 Network 가 끊어 졌을 경우 출력 상태를 출력 Byte 단위로 설정하는 함수이다. Size 의 경우 Byte 단위로 값을 정해야 하는데, 예를 들면, RTEX-DB32 의 경우 Size 는 2 이며 RTEX-DO32 의 경우 4 가 입력 되게 된다.

예제 코드

// Network이 끊어지면 0번 Node의 RTEX-DB32의 모든 출력 접점을 Off 시킨다.
DWORD uaSetValue[2] = {0x02, 0x02};
AxdoSetNetworkErrorAct(0, 2, uaSetValue);

AxdoSetNetworkErrorUserValue

Purpose

지정한 출력 모듈의 Network 이 끊어졌을 경우, 출력 상태를 출력 Byte 단위로 직접 설정한다.

Format

C++
DWORD AxdoSetNetworkErrorUserValue(long lModuleNo, DWORD uOffset, DWORD uValue);
C#
uint AxdoSetNetworkErrorUserValue(int lModuleNo, uint uOffset, uint uValue);

Parameters

[in/out] Name [Init Value] Explanation
[in]lModuleNo 모듈 번호
[in]uOffset 출력 접점에 대한 Offset 위치 (Byte 단위로 증가)
[in]uValue 출력 접점 값 (00 ~ FF)

Return Values

[0000] AXT_RT_SUCCESS : 함수 실행 성공
[1171] AXT_RT_2ND_ABOVE_MAX_VALUE : 두번째 인자값이 최대값보다 큼
[1181] AXT_RT_3RD_ABOVE_MAX_VALUE : 세번째 인자값이 최대값보다 큼
[3051] AXT_RT_DIO_NOT_MODULE : DIO 모듈 없음

Description

해당 함수를 사용하기 위해서는 AxdoSetNetworkErrorAct() 함수의 UaSetValue 값이 [03h]으로 설정하여야 한다. 사용자가 지정한 출력 모듈의 Network 가 끊어 졌을 경우 출력 상태를 출력 Byte 단위로 직접 설정하는 함수이다.

예제 코드

// Network이 끊어지면 0번 Node의 RTEX-DB32의 0번째 Byte offset에 해당하는 출력 접점을 모두 On 시킨다.
DWORD uaSetValue[2] = {0x03, 0x03};

AxdoSetNetworkErrorAct(0, 2, uaSetValue);
AxdoSetNetworkErrorUserValue(0, 0, 0xFF);