mwait (자동 모드)
이 절에서는 자동(실행) 운전 중에 mwait로 로봇이 직전에 실행한 모션 명령을 마칠 때까지 기다리는 방법을 설명합니다.
amovej나 amovel 같은 비동기 모션 명령과 함께 사용하면, 이 함수가 비동기 명령을 동기식 순차 동작으로 바꿉니다. 로봇이 현재 이동을 완전히 마칠 때까지 자동화 공정의 다음 단계가 시작되지 않습니다.
일반적인 사용법
필요할 때 비동기 모션을 동기식으로 바꿉니다.
로봇이 이동을 마친 후에 다음 동작을 시작하도록 보장합니다.
로봇 모션을 외부 장치(예: 카메라, 컨베이어)와 동기화합니다.
amovej나amovel과 함께 사용하면 백그라운드 처리를 허용하면서도 모션 실행 순서를 지킬 수 있습니다.
참고
진행 중인 이전 모션이 없으면 무시됩니다.
비동기 모션과 동기 모션이 섞인 복잡한 자동화 파이프라인에서 특히 유용합니다.
예제: 비동기 모션이 끝날 때까지 기다린 후 계속하기
// 첫 번째 목표 조인트 위치
float targetA[6] = {30, 30, 30, 30, 30, 30};
// 1) 비동기 동작 실행
drfl.amovej(targetA, 60, 120);
printf("Asynchronous motion started.\n");
// 2) 로봇이 동작을 마칠 때까지 대기
if (!drfl.mwait()) {
printf("Failed to wait for motion completion.\n");
return -1;
}
printf("Motion complete. Executing next command.\n");
// 3) 다음 동기 동작 실행
float targetB[6] = {0, 0, 0, 0, 0, 0};
drfl.movej(targetB, 40, 80);
이 예제에서는 로봇이 amovej()로 비동기 모션을 시작합니다. 외부 프로그램은 mwait()를 호출해 모션이 끝날 때까지 다음 실행을 멈춥니다. 이동이 완전히 끝나면 프로그램이 다음 모션을 안전하고 예측 가능하게 실행합니다.
팁
일부 단계는 병렬로 실행하되 다음 동작 전에 모션 완료는 반드시 보장해야 하는 순차 파이프라인에 적합합니다.
자동 모드에서 경쟁 조건이나 안전하지 않은 순서 문제를 피하는 데 도움이 됩니다.
로봇 이동과 외부 시스템 사이의 타이밍이 중요할 때 사용하세요.
check_motion과 함께 사용하면 더 세밀하게 제어할 수 있습니다.