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

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 루프를 시작합니다.

팁

  • drl_stop, drl_pause와 함께 사용해 외부 UI에 시작/정지 버튼을 구현할 수 있습니다.

  • 개발 중에는 ROBOT_SYSTEM_VIRTUAL을 사용해 실제 로봇을 움직이지 않고 DRL 로직을 검증하세요.

  • DRL 문자열은 작고 목적에 집중되도록 유지하세요. 로직이 크다면 DRL 파일을 컨트롤러에 저장하고, 사용할 수 있는 경우 상위 수준의 프로그램 관리 API를 사용하는 것을 고려하세요.

  • 작업을 시작할 때 DRL 스크립트나 그 버전 ID를 기록해 두면 생산 환경에서 디버깅하기 쉽습니다.