V+ Process Manager Documentation Example .PROGRAM cu.robot() ; ABSTRACT: Custom robot program for the Process Manager ; Process Strategy.
AUTO REAL tsk.idx, is.reset, , is.running, sts AUTO REAL part.idx, target.idx tsk.idx = TASK() ; Initialize the robot CALL pm.rob.init(tsk.idx) CALL pm.rob.idlemd(tsk.idx, TRUE, 0, "") ; Get the part and target indexes CALL pm.prt.get.idx(tsk.idx, "/Process/Part - Spacing 2", part.idx) CALL pm.trg.get.idx(tsk.idx, "/Process/Target 2 - Static", target.idx) ; Control loop DO ; Perform a pick CALL pm.rob.pick(tsk.idx, part.idx, -1, , is.reset, sts) ; Perform a place CALL pm.rob.place(tsk.idx, target.idx, part.idx, -1, , is.reset, sts) ; Indicate we are entering idle mode CALL pm.rob.idlemd(tsk.idx, TRUE, 0, "") ; Move to the current destination to ensure ; we are no longer tracking a belt.
CALL pm.mv.dest(tsk.idx) ; Wait for a period of time WAIT.EVENT , 3 ; Check to see if any errors occured while we were delaying CALL pm.chk.tskerr(tsk.idx, pm.tsk.retry, , sts) IF (sts pm.tsk.success) THEN CALL pm.mv.attach(tsk.idx, pm.tsk.robnum[tsk.idx]) END ; Indicate we are leaving idle mode CALL pm.rob.idlemd(tsk.idx, FALSE, 0, "") ; Check to see if the process manager is still running CALL pm.chk.stat(is.running) UNTIL is.running == FALSE CALL pm.rob.clear(tsk.idx, sts) RETURN .END ACE Reference Guide, 18317-000 Rev A Page 767