최신 버전 정보는 1.33.5에서 확인하세요.
drl_start
이 함수는 DRL로 작성한 프로그램(태스크)을 로봇 컨트롤러에서 실행합니다.
자동 모드에서만 사용할 수 있습니다. 다른 모드에서는 false를 반환하고 “this command can only be used in auto mode. please change to auto mode as robot mode”를 출력합니다. 모드는 get_robot_mode가 반환하는 값으로 확인합니다.
정의
DRFLEx.h, CDRFLEx 클래스의 public 섹션
bool drl_start(ROBOT_SYSTEM eRobotSystem, string strDrlProgram) {
return _drl_start(_rbtCtrl, eRobotSystem, strDrlProgram.c_str());
};
매개변수
매개변수 이름 |
자료형 |
기본값 |
설명 |
|---|---|---|---|
eRobotSystem |
열거형 정의를 참고하세요 |
||
strDrlProgram |
string |
실행할 프로그램 문자열입니다. DRL 프로그램 텍스트는 1,042,433바이트를 넘으면 안 됩니다. |
반환값
값 |
유형 |
설명 |
|---|---|---|
0 |
int |
오류 |
1 |
int |
성공 |
참고
로봇이 STATE_EMERGENCY_STOP, STATE_SAFE_OFF, STATE_SAFE_OFF2, STATE_SAFE_STOP, STATE_SAFE_STOP2 상태이면 메시지 없이 false를 반환합니다.
요청이 거부되면 false를 반환합니다. true가 반환되어도 컨트롤러가 요청을 적용했다고 확신할 수 없습니다. get_robot_mode와 get_program_state는 이 CDRFLEx 인스턴스가 보낸 요청을 보고하므로 이 함수들로도 확인할 수 없습니다. 거부는 TOnLogAlarmCB로 보고됩니다.
예제
string strDrlProgram = "\r\n\
loop = 0\r\n\
while loop < 3:\r\n\
movej([10.00, 10.00, 10.00, 10.00, 10.00, 10.00], vel=60, acc=60)\r\n\
movel(posx(559, 434.5, 651.5, 0, 180, 0), vel=60, acc=60)\r\n\
loop += 1\r\n";
if (drfl.get_robot_state() == STATE_STANDBY) {
if (drfl.get_robot_mode() == ROBOT_MODE_AUTONOMOUS) {
// 자동 모드
ROBOT_SYSTEM eTargetSystem = ROBOT_SYSTEM_VIRTUAL;
drfl.drl_start(eTargetSystem, strDrlProgram);
}
}
참고
로봇 운전 상태는 STATE_STANDBY여야 하며, 로봇이 자동 모드일 때 정상적으로 동작합니다.
DRL 프로그램은 부록의 프로그래밍 매뉴얼 문서에 따라 작성하세요.
이 함수로 DRL 언어로 작성한 모션 작업을 컨트롤러에서 직접 실행할 수 있습니다. 주로 문자열 형태로 정의한 DRL 명령으로 자율 작업이나 일괄 작업을 실행할 때 사용합니다. 이 함수를 호출하기 전에 컨트롤러가 대기 상태이고 자동 모드인지 확인하세요.