최신 버전 정보는 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_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);
이 예제는 제어권 이벤트를 확인하는 콜백 함수를 등록하고, 로봇 컨트롤러에 제어권 요청을 보냅니다. 실행하면 로봇 제어권을 요청하고, 응답(허용 또는 거부)에 맞게 처리합니다.