이전 버전(1.33.4)의 문서를 보고 있습니다. 이 버전은 계속 지원됩니다.
최신 버전 정보는 1.33.5에서 확인하세요.

TOnMonitoringSafetyStateCB

이 콜백은 컨트롤러가 로봇의 안전 상태를 보고할 때마다 호출되며, 상태를 SAFETY_STATE 값으로 받습니다. 변화를 감지하려면 이전 값과 비교하세요.

콜백 함수 규칙을 참고하세요.

정의 위치: DRFLEx.h

// typedef 정의(DRFLEx.h)
typedef void (*TOnMonitoringSafetyStateCB)(const SAFETY_STATE);

// 등록 API(내부 + 래퍼)
DRFL_API void _set_on_monitoring_safety_state(LPROBOTCONTROL pCtrl, TOnMonitoringSafetyStateCB pCallbackFunc);

// 사용자 호출용 API
void set_on_monitoring_safety_state(TOnMonitoringSafetyStateCB pCallbackFunc)
{
    _set_on_monitoring_safety_state(_rbtCtrl, pCallbackFunc);
};

매개변수

매개변수 이름

자료형

기본값

설명

eSafetyState

SAFETY_STATE

로봇 컨트롤러가 보고한 현재 안전 상태를 나타냅니다.

반환값
없음

예제

#include "DRFLEx.h"
#include <iostream>
#include <thread>
#include <chrono>
using namespace DRAFramework;
using namespace std;

// 로봇의 안전 상태가 바뀌면 호출되는 콜백 함수
void OnMonitoringSafetyStateCB(SAFETY_STATE eState)
{
    cout << "[SAFETY STATE UPDATED]" << endl;
    switch (eState)
    {
        case SAFETY_STATE_SW_RUN:
            cout << "Safety State: standalone workspace RUN." << endl;
            break;
        case SAFETY_STATE_CW_RUN:
            cout << "Safety State: collaborative workspace RUN." << endl;
            break;
        case SAFETY_STATE_VD_STO:
            cout << "Safety State: violation detected, STO." << endl;
            break;
        case SAFETY_STATE_RV_MOVE:
            cout << "Safety State: recovery MOVE." << endl;
            break;
        default:
            cout << "Safety State: UNKNOWN (" << (int)eState << ")" << endl;
            break;
    }
}

int main()
{
    CDRFLEx drfl;

    // 로봇 컨트롤러에 연결
    if (!drfl.open_connection("192.168.137.100")) {
        cout << "Failed to connect to controller." << endl;
        return -1;
    }

    // 안전 상태 모니터링 콜백 함수 등록
    drfl.set_on_monitoring_safety_state(OnMonitoringSafetyStateCB);

    // 계속 모니터링
    while (true)
        std::this_thread::sleep_for(std::chrono::seconds(1));

    drfl.close_connection();
    return 0;
}

참고

  • 다음과 같은 이유로 안전 상태가 바뀔 때마다 콜백이 호출됩니다.
    - 비상 정지(E-Stop)
    - 보호 정지(Protective Stop)
    - 안전 도어/펜스 신호
    - 안전 모드 전환(예: 수동 ↔ 자동)

  • SAFETY_STATE 열거형은 가능한 안전 상태를 정의합니다.

  • 권장 용도:
    - 실시간 안전 상태 표시
    - 정지나 위험 이벤트 발생 시 기록하거나 작업자에게 알림
    - 로봇 복구나 안전 종료 시퀀스 시작