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

manage_access_control

이 함수는 로봇 컨트롤러에 제어권 요청 메시지를 보내거나, 제어권 요청 메시지를 받았을 때 사용자 응답을 처리합니다.

정의
DRFLEx.h, CDRFLEx 클래스의 public 섹션

bool manage_access_control(MANAGE_ACCESS_CONTROL eAccessControl = MANAGE_ACCESS_CONTROL_REQUEST) {
    return _manage_access_control(_rbtCtrl, eAccessControl);
};

매개변수

매개변수 이름

자료형

기본값

설명

eAccessControl

MANAGE_ACCESS_CONTROL

MANAGE_ACCESS_CONTROL_REQUEST

제어권(Control Authority) 관리 명령의 유형을 지정합니다.

반환값

값

유형

설명

0

int

오류 — 제어권 메시지를 보내거나 처리하지 못했습니다.

1

int

성공 — 제어권 요청이나 응답을 처리했습니다.

참고

true를 반환해도 컨트롤러가 요청을 적용했다는 뜻은 아닙니다. TOnMonitoringAccessControlCB(GRANT 또는 DENY)로 결과를 확인하세요.

참고

제어권은 요청이 있을 때만 넘어갑니다. 다른 클라이언트(예: 티치펜던트)가 제어권을 요청하면, 제어권을 가진 클라이언트는 TOnMonitoringAccessControlCB로 MONITORING_ACCESS_CONTROL_REQUEST를 받습니다. 다른 클라이언트가 MANAGE_ACCESS_CONTROL_REQUEST를 보내면, 제어권을 가진 클라이언트가 manage_access_control(MANAGE_ACCESS_CONTROL_RESPONSE_YES)로 응답해야만 제어권이 넘어갑니다. 이때 요청한 클라이언트는 GRANT를, 제어권을 가졌던 클라이언트는 LOSS를 받습니다. 제어권을 가진 클라이언트가 MANAGE_ACCESS_CONTROL_RESPONSE_NO로 응답하거나 응답하지 않으면 요청한 클라이언트는 제어권을 얻지 못하며, 첫 요청이 대기 중인 동안에는 이후 요청이 전달되지 않습니다. 요청 없이 제어권을 내려놓는 함수는 없습니다. manage_access_control은 요청을 보내는 즉시 반환하며, 결과는 나중에 TOnMonitoringAccessControlCB로 전달됩니다. 애플리케이션이 티치펜던트에 제어권을 넘겨야 한다면 REQUEST에 RESPONSE_YES로 응답하세요. MANAGE_ACCESS_CONTROL_FORCE_REQUEST를 보낸 클라이언트는 응답 없이 제어권을 가져갑니다. 프로세스 버튼 모드가 아니면, 제어권이 넘어갈 때 컨트롤러가 로봇을 정지(SS1)하고 서보를 끕니다. 원격 제어 모드(Remote Control Mode), 초기화 중, 복구 모드나 백드라이브 모드, 설정(configure) 모드에서는 컨트롤러가 제어권 이전을 거부합니다.

컨트롤러는 제어권이 없는 클라이언트의 요청을 get_system_version, get_safety_configuration, setup_monitoring_version을 제외하고 모두 무시합니다. 제어권이 없는 클라이언트도 모니터링 데이터, 상태 콜백, 알람 콜백은 받습니다. 위치와 상태 정보는 모니터링 getter 함수(get_current_posj, get_robot_state, …)로 확인하세요.

예제

void OnMonitoringAccessControlCB(const MONITORING_ACCESS_CONTROL eAccCtrl)
{
    switch(eAccCtrl) {
        case MONITORING_ACCESS_CONTROL_DENY:
            // 제어권 이양 거부
            break;
        default:
            // 제어권 없음 메시지 표시
            break;
    }
}

drfl.set_on_monitoring_access_control(OnMonitoringAccessControlCB);

// 제어권 이양 요청
drfl.manage_access_control(MANAGE_ACCESS_CONTROL_REQUEST);

이 예제는 제어권 이벤트를 확인하는 콜백 함수를 등록하고, 로봇 컨트롤러에 제어권 요청을 보냅니다. 실행하면 로봇 제어권을 요청하고, 응답(허용 또는 거부)에 맞게 처리합니다.