drl_start (자동 모드)
이 절에서는 자동(실행) 운전 중에 drl_start로 외부 애플리케이션(예: PC, PLC 게이트웨이)에서 DRL(Doosan Robotics Language) 프로그램을 시작하는 방법을 설명합니다.
이 함수는 주로 로봇이 이미 자동 모드일 때 모션, I/O 처리, 간단한 제어 흐름을 기술한 미리 정의된 작업 로직이나 인라인 DRL 스크립트를 실행하는 데 사용합니다.
일반적인 사용법
생산 사이클이 시작될 때 DRL 작업을 시작합니다(예: PC HMI에서).
간단한 반복 모션이나 테스트를 위해 인라인 DRL 스크립트를 실행합니다.
제품 유형이나 작업 셀 상태에 따라 서로 다른 DRL 루틴을 실행합니다.
외부 시스템(MES/PLC)과 연동해 티치펜던트를 사용하지 않고 작업 시작을 제어합니다.
참고
drl_start를 호출하기 전에 로봇이 자동(실행) 모드이고 준비 상태(예:STATE_STANDBY또는 이에 준하는 상태)여야 합니다.DRL 문자열은 컨트롤러에서 작성한 프로그램과 같은 문법을 따라야 합니다.
DRL 프로그램 텍스트는 1,042,433바이트를 넘으면 안 됩니다.
예제: 자동 모드에서 간단한 DRL 루프 시작하기
// 1) 연결 및 초기화(여기서는 생략 – 공통 설정 코드에서 처리)
// 예: drfl.open_connection("192.168.137.100");
// drfl.set_robot_system(ROBOT_SYSTEM_REAL);
// 2) 간단한 DRL 프로그램을 문자열로 정의
// - 왕복 조인트 동작을 세 번 반복합니다.
std::string drlProgram =
"loop = 0\r\n"
"while loop < 3:\r\n"
" movej(posj(10,10,10,10,10,10), vel=60, acc=60)\r\n"
" movej(posj(0,0,0,0,0,0), vel=60, acc=60)\r\n"
" loop = loop + 1\r\n";
// 3) 로봇이 자동 모드이고 준비 상태인지 확인
if (drfl.get_robot_mode() == ROBOT_MODE_AUTONOMOUS &&
drfl.get_robot_state() == STATE_STANDBY) {
// 대상 로봇 시스템 선택:
// - ROBOT_SYSTEM_REAL : 실제 로봇(현장)
// - ROBOT_SYSTEM_VIRTUAL : 가상 시스템(시뮬레이션/테스트)
ROBOT_SYSTEM targetSystem = ROBOT_SYSTEM_REAL;
if (!drfl.drl_start(targetSystem, drlProgram)) {
printf("Failed to start DRL program.\n");
return -1;
}
printf("DRL program started in Auto Mode.\n");
} else {
printf("Robot is not in Auto/Standby state. Cannot start DRL.\n");
}
이 예제에서는 로봇이 자동 모드로 전환되어 대기 상태가 되면, 외부 애플리케이션이 drl_start로 대상 로봇 시스템에서 간단한 DRL 루프를 시작합니다.
팁