Flexible Part Handling System

FANUC-style automation logic for vision pickup, CNC loading, indexed dropoff, and fail-safe timeout handling.

What this shows
  • Vision-guided pickup with offset handling
  • Sensor-confirmed gripper and chuck handshakes
  • Timeout routing and safe end-state logic
Program flow

Pickup → load → dropoff → loop, with dedicated timeout branches routing to a safe end state.

LBL[10] Vision pickup
Vision offset + approach + grip confirmation
101LBL[10:INBOUND]
102 UTOOL_NUM=1
103 UFRAME_NUM=2
104 MESSAGE[START VISION PICKUP]
105 $WAITTMOUT=R[41:VISION TIME]
106 RUN VISION: FLEX_AI_2025
107 WAIT (F[21:VISION FOUND]=ON) TIMEOUT,LBL[55]
108 PR[2:VISION OFFSET]=[X:23.0, Y:-5.2, Z:0.0, W:0, P:0, R:0]
109 PR[3:APPROACH]=PR[2:VISION OFFSET]
110 PR[3,3]=100
111 P[10:PICK]=500mm/sec CNT100 Offset,PR[3]
112 DO[10:GRIPPER CLOSE CMD]=PULSE,0.2sec
113 WAIT (DI[10:GRIPPER CLOSED]=ON) TIMEOUT,LBL[998]
114 JMP LBL[20]
LBL[20] CNC load
Wait-for-ready → open chuck → insert → release → close chuck
201LBL[20:LOAD CNC]
202 UTOOL_NUM=2
203 UFRAME_NUM=3
204 MESSAGE[LOADING CNC INTERFACE]
205 R[80]=0
206LBL[21:RETRY LOAD]
207 P[20:CNC APPROACH]=750mm/sec CNT50
208 WAIT (DI[110:CHUCK READY]=ON) TIMEOUT,LBL[901]
209 DO[105:OPEN CHUCK]=PULSE,0.2sec
210 WAIT (DI[108:CHUCK OPEN CONFIRM]=ON) TIMEOUT,LBL[901]
211 P[21:CNC INSERT]=250mm/sec FINE
212 DO[11:GRIPPER OPEN CMD]=PULSE,0.2sec
213 WAIT (DI[11:GRIPPER OPEN]=ON) TIMEOUT,LBL[997]
214 DO[106:CLOSE CHUCK]=PULSE,0.2sec
215 WAIT (DI[109:CHUCK CLOSED CONFIRM]=ON) TIMEOUT,LBL[901]
216 JMP LBL[60]
LBL[60] Indexed dropoff
Register math drives repeatable drop spacing
310LBL[60:DROP]
311 UTOOL_NUM=2
312 UFRAME_NUM=4
313 R[6]=R[5]*(-150)
314 PR[4:OFFSET]=PR[3:NULL]
315 PR[4,2]=R[6]
316 PR[4,3]=100
317 P[50:DROPOFF]=500mm/sec CNT25 Offset,PR[4]
318 DO[11:GRIPPER OPEN CMD]=PULSE,0.2sec
319 WAIT (DI[11:GRIPPER OPEN]=ON) TIMEOUT,LBL[997]
320 R[5]=R[5]+1
321 IF (R[5]>=R[28:MAX DROPS]), R[5]=0
322 JMP LBL[10]
LBL[997–999] Timeouts + safe end
Failed confirmation routes to alarm and safe home
340LBL[997]
341 MESSAGE[ERROR: GRIPPER OPEN TIMEOUT]
342 UALM[7]
343 JMP LBL[999]
345LBL[998]
346 MESSAGE[ERROR: GRIPPER CLOSE TIMEOUT]
347 UALM[8]
348 JMP LBL[999]
360LBL[999:END]
361 PR[1:HOME]=P[1:SAFE HOME]
362 PR[1:HOME]=100% FINE
363 DO[100:STATUS_END]=ON
Additional labels and supporting logic are available in the downloadable .LS example.
Anonymized FANUC automation demo • 2026