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

connect_rt_control

이 함수는 실시간 외부 제어(RT) 통신을 위해 외부 PC와 로봇 컨트롤러 사이에 UDP/IP 연결을 설정합니다.
이 채널은 기존 TCP/IP API와 별개이며 제어권(Control Authority)이 적용되지 않습니다.
통합 컨트롤러(v3)의 경우 v3.3 이하 버전은 192.168.137.50으로 연결할 수 있습니다.

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

bool connect_rt_control(string strIpAddr = "192.168.137.100",
                        unsigned int usPort = 12347) {
    return _connect_rt_control(_rbtCtrlUDP, strIpAddr.c_str(), usPort);
};

매개변수

매개변수 이름

자료형

기본값

설명

strIpAddr

string

"192.168.137.100"

UDP 연결에 사용할 대상 컨트롤러 IP 주소입니다. 컨트롤러 주소는 점으로 구분한 IPv4 문자열(예: "192.168.137.100")로 전달하세요.

usPort

unsigned int

12347

RT 통신용 포트 번호(기본 UDP 포트)입니다.

반환값

값

설명

1

컨트롤러가 연결 요청에 응답했습니다. UDP 소켓을 열지 못한 경우에도 1을 반환하므로, 반환값 1이 연결을 보장하지는 않습니다. start_rt_control 뒤에 read_data_rt가 반환하는 time_stamp가 증가하는지 확인하세요.

0

이 프로세스에서 이미 connect_rt_control로 RT 채널을 한 번 연 적이 있습니다. 이 CDRFLEx 객체든 다른 CDRFLEx 객체든 마찬가지이며, 그 뒤에 disconnect_rt_control을 호출한 경우도 포함합니다. 이때 라이브러리는 Already connected를 출력합니다. 연결 요청을 보내지 못한 경우에도 0을 반환합니다.

주의

  • RT 채널은 프로세스당 한 번만 연결할 수 있습니다. UDP 소켓을 여는 첫 호출 이후에는 disconnect_rt_control 뒤라도 모든 호출이 0을 반환합니다. RT 채널을 다시 연결하려면 애플리케이션을 재시작하세요.

  • UDP 소켓은 열렸지만 컨트롤러가 응답하지 않으면(예: IP 주소나 포트가 잘못되었거나 다른 RT 클라이언트가 이미 컨트롤러에 연결된 경우) 호출이 반환되지 않습니다. 이 함수를 호출하기 전에 컨트롤러에 연결할 수 있는지, 다른 RT 클라이언트가 연결되어 있지 않은지 확인하세요.

일반적인 사용법

  • RT 제어 입출력 스키마와 주기를 설정하기 전에 연결하세요.

  • 모든 실시간 조인트 또는 작업 공간 제어 루프의 첫 단계로 사용합니다.

참고

  • 실시간 외부 제어는 TCP/IP가 아니라 UDP/IP 통신을 사용합니다.

  • 이 채널은 TCP/IP API 연결과 독립적으로 동작합니다. 제어권이나 안전 설정을 위한 명령이 없으므로, 이런 작업에는 TCP/IP API를 사용하세요.

  • v3.3 이하의 통합 컨트롤러(v3.x)에서는 RT 서버가 192.168.137.50을 포함한 모든 컨트롤러 주소에서 연결을 받습니다. v3.4부터는 API 주소(기본값 192.168.137.100)에서만 연결을 받습니다.

  • 기본 구성은 컨트롤러와 외부 PC 사이의 1:1 UDP 통신을 지원합니다.

  • 컨트롤러가 RT 세션을 종료하면 set_on_rt_log_alarm 콜백으로 알람을 보고하고 RT 데이터 전송을 멈춥니다.

  • RT에는 연결 해제 알림이 없습니다. RT 링크가 끊겼는지 감지하려면 read_data_rt나 RT 콜백의 time_stamp가 계속 증가하는지 확인하세요.

예제

// RT 제어를 위해 UDP로 로봇 컨트롤러에 연결
if (drfl.connect_rt_control("192.168.137.100", 12347)) {
    printf("RT connection established successfully.\n");

    // 이제 입출력 스키마를 설정하고 RT 스트리밍을 시작할 수 있습니다
    drfl.start_rt_control();
}
else {
    printf("RT connection failed.\n");
}

이 예제는 실시간 모션 제어나 고주파 데이터 교환을 준비하기 위해 컨트롤러와 UDP 연결을 설정합니다. 연결되면 start_rt_control을 호출해 RT 스트리밍을 시작할 수 있습니다.

팁

  • 이 함수를 호출하기 전에 로봇 전원이 켜져 있고 지정한 IP로 연결할 수 있는지 확인하세요.

  • 작업을 마친 뒤에는 disconnect_rt_control로 RT 채널을 정상적으로 닫으세요.

  • 실시간 애플리케이션에서는 이 단계 다음에 set_rt_control_input과 set_rt_control_output으로 입출력 버전과 주기를 설정해야 합니다.