I doubt high-speed skip will help you on this kind of application. Is the workpiece flat or contoured? does the suction path involve tool orientation change?
you can try this strategy:
First set $MISC_MSTR.$hpd_enb to TRUE and make a cold start.
slowly move the robot TCP towards your workpiece monitoring at the same time axis disturbance screen. Split your screen in 2 windows. Continue moving towards your workpiece until you identify which axis has the highest disturbance. Let's say its axis 5 and the disturbance just before a collision detection is 3.5.
Then you can make a routine like this:
J P[34] 100% CNT10 (clearance before piece)
SKIP CONDITION $MISC[1].$HPD_TRQ[5]<(-3)
L P[8] 10mm/sec CNT100 (approach
L P[30] 1mm/sec FINE Skip,LBL[5],PR[18:workpiece touch]=LPOS
PR[18:workpiece touch,3]=PR[18:workpiece touch,3]+5
L PR[18:workpiece touch] 5mm/sec FINE
JMPLBL[6]
LBL[5]
Pause
*Put here logic that will handle the case where the robot doesnt find a workpiece during the search routine
LBL[6]
*cleaning path*
If your nozzle normally touches the workpiece at for example Z= 30, modify P[30] z coord to 10, robot will try to slowly reach 10 and it will stop when the disturbance on the axis you defined (in the example axis 5) will reach the skip condition limit and save that position to PR[18]. Then it will increase Z coord of PR[18] by 5 mm and move to that position. From there, you can create a cleaning path with multiple ways:
You could create your path as an offset to PR[18] or by using incremental moves.
You can use PR[18] as a frame and program your cleaning path to that frame. Every cycle the robot will recalculate the User Frame and modify the cleaning path.
To define the mentioned PR as a working user frame you can follow this example:
PR[18,1:workpiece touch]=PR[18,1:workpiece touch]+R[1:offset in X from touch position]
PR[18,2:workpiece touch]=PR[18,2:workpiece touch]+R[2:offset in Y from touch position]
PR[18,3:workpiece touch]=PR[18,3:workpiece touch]+R[3:offset in Z from touch position]
PR[18,4:workpiece touch]=0
PR[18,5:workpiece touch]=0
PR[18,6:workpiece touch]=0
UFRAME[1:UFrame1]=PR[18:workpiece touch]
UFRAME_NUM=1
Display More