이전 버전(1.33.4)의 문서를 보고 있습니다. 이 버전은 계속 지원됩니다.
최신 버전 정보는 1.33.5에서 확인하세요.
최신 버전 정보는 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 |
로봇 컨트롤러가 보고한 현재 안전 상태를 나타냅니다. |
반환값
없음
예제
#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 열거형은 가능한 안전 상태를 정의합니다.
권장 용도:
- 실시간 안전 상태 표시
- 정지나 위험 이벤트 발생 시 기록하거나 작업자에게 알림
- 로봇 복구나 안전 종료 시퀀스 시작