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와 시스템 통합을 검증할 때 유용합니다.