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 |
|
UDP 연결에 사용할 대상 컨트롤러 IP 주소입니다. 컨트롤러 주소는 점으로 구분한 IPv4 문자열(예: |
usPort |
unsigned int |
|
RT 통신용 포트 번호(기본 UDP 포트)입니다. |
반환값
값 |
설명 |
|---|---|
1 |
컨트롤러가 연결 핸드셰이크를 완료했습니다. |
0 |
RT 채널이 연결되지 않았습니다. 원인은 다음과 같습니다. UDP 소켓을 열 수 없음, 컨트롤러가 약 5초 안에 응답하지 않음, 핸드셰이크 중에 연결이 끊김, set_rt_thread_priority 설정을 적용할 수 없음, 라이브러리가 실시간 처리를 시작할 수 없음, 실시간 제어(Real-time Control)가 이미 연결되어 있음(라이브러리가 |
주의
이 함수를 set_on_rt_monitoring_data로 등록한 콜백 같은 실시간 콜백 안에서 호출하지 마세요. 그 안에서는 0을 반환합니다.
컨트롤러가 응답하지 않으면(예: IP 주소나 포트가 잘못되었거나 다른 RT 클라이언트가 이미 컨트롤러에 연결된 경우) 함수는 약 5초 뒤에 0을 반환합니다.
일반적인 사용법
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가 계속 증가하는지 확인하세요.
disconnect_rt_control을 호출한 뒤에는 같은 프로세스에서 RT 채널을 다시 연결할 수 있습니다.
set_on_rt_log_alarm을 이 함수보다 먼저 등록하면 연결에 실패한 이유를 확인할 수 있습니다.
실시간 연결이 끊어지면 5초 이상 기다린 후 이 함수를 다시 호출하세요. 시뮬레이터에서는 시뮬레이터를 다시 시작하세요.
예제
// 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으로 입출력 버전과 주기를 설정해야 합니다.