set_auto_safety_move_stop (수동 모드)

이 절에서는 수동(교시) 작업에서 set_auto_safety_move_stop을 사용하는 방법을 설명합니다. 이 함수는 안전 신호나 위험 조건이 감지되었을 때 컨트롤러가 자동으로 안전 정지하는 동작을 활성화하거나 비활성화합니다.

수동 모드에서는 주로 진단이나 캘리브레이션을 위해 안전 정지 동작을 테스트하거나 일시적으로 무시할 때 사용합니다.

일반적인 사용법

  • 안전 센서(예: 도어, 스캐너)나 충돌 이벤트가 작동하면 자동으로 정지하도록 활성화합니다.

  • 유지보수나 통제된 테스트 중에는 자동 정지를 일시적으로 비활성화합니다(엄격한 감독 아래에서만).

  • 안전 입력 신호를 검증하거나 보호 정지(Protective Stop) 이후의 복구 로직을 평가할 때 사용합니다.

  • set_safe_stop_reset_type과 함께 사용해 복구 정책을 사용자에 맞게 설정합니다.

참고

  • 비활성화하면 안전 입력이 들어와도 컨트롤러가 자동으로 정지하지 않습니다. 안전하고 감독이 이루어지는 조건에서만 사용하세요.

  • 진단 작업을 마친 뒤에는 자동 정지를 다시 활성화하는 것을 권장합니다.

예제: 수동 교시 중 자동 안전 정지 활성화하기

// 사전 조건:
// - 연결 완료(open_connection)
// - 수동(교시) 모드 활성

printf("[Safety] Enabling automatic safety stop...\n");
if (drfl.set_auto_safety_move_stop(true))
    printf("[Safety] Auto safety stop enabled successfully.\n");
else
    printf("[Safety] Failed to enable safety stop.\n");

// 동작을 시뮬레이션하고 응답 테스트
float qTarget[6] = {0, -30, 90, 0, 90, 0};
drfl.movej(qTarget, 20, 20);
this_thread::sleep_for(chrono::seconds(2));

printf("[Safety] Temporarily disabling safety stop for controlled test...\n");
drfl.set_auto_safety_move_stop(false);
this_thread::sleep_for(chrono::seconds(2));

printf("[Safety] Re-enabling safety stop after test.\n");
drfl.set_auto_safety_move_stop(true);

팁

  • 캘리브레이션이나 테스트 절차를 마친 뒤에는 반드시 자동 안전 정지를 다시 활성화해야 합니다.

  • 이 기능은 반드시 감독 아래 저속 조건에서만 비활성화해야 합니다.

  • get_last_alarm과 함께 사용해 안전 정지 이벤트와 원인을 확인하세요.

  • 교시 및 설정 단계에서 안전 I/O와 시스템 통합을 검증할 때 유용합니다.