Objective. Students write and test a FANUC HandlingTool program on the live robot that uses JOINT and LINEAR motion instructions, position and numeric registers, digital I/O commands, and a conditional jump to handle a part-absent condition.
This lesson, its worked examples and its practice questions has not yet been verified by a licensed engineer or certified journey-level tradesperson or by a certification or approval body. It is a study draft and may contain errors. Do not use it as instructions for work on a job site or on live equipment. Always follow your instructor, your supervising professional, and current official references and regulations.
VoTechWorks program approval and accreditation are still in progress. Credentials are issued only by the certifying bodies named in each program, after their own exams.
A FANUC HandlingTool program is the core language you use to move a robot through a pick-and-place cycle, control tooling such as a gripper, and respond to sensor signals from the production line. Mastering motion instructions, registers, and I/O commands prepares you for the FANUC CERT technician-level performance exam and for real manufacturing cells where a programming error can damage tooling or injure workers.
---
Before entering the robot cell, review these rules every session.
---
HandlingTool uses two primary motion types.
JOINT motion moves each axis independently toward the target position. The path through space is not a straight line, but JOINT is fast and efficient. Use it for moves where the exact path between two points does not matter — for example, moving from home to an approach point above a part bin.
LINEAR motion drives the TCP (tool center point) along a straight line in Cartesian space. Use it whenever the path matters — lowering straight down onto a part, lifting it straight up, or moving horizontally to a place point to avoid fixtures. LINEAR motion requires the controller to coordinate all axes simultaneously, so it is slightly slower than JOINT for the same distance.
A typical HandlingTool instruction line looks like this:
```
1: J P[1] 100% FINE
2: J P[2] 80% CNT50
3: L P[3] 200mm/sec FINE
4: L P[4] 200mm/sec CNT10
```
---
Position registers (PR[n]) store a full Cartesian or joint-angle location. They can be taught from the pendant or entered as offsets, and they can be modified in the program with offset instructions. Use them when you need to compute pick positions mathematically (for example, a pallet pattern).
Numeric registers (R[n]) hold integer or real number values. Common uses include part counters, loop counts, and scaling values. You read and write them with assignment statements:
```
R[1]=R[1]+1
```
This line increments register 1 by 1 each time the controller executes it. Place this line after a successful pick to count completed cycles.
---
Digital outputs (DO[n]) command external devices such as grippers, clamps, and indicator lights. Digital inputs (DI[n]) read sensor states — part-present switches, conveyor signals, and safety interlocks.
To activate a gripper at the pick point:
```
DO[1]=ON
```
To release it at the place point:
```
DO[1]=OFF
```
Always confirm your I/O wiring diagram before assigning DO and DI numbers. Assigning the wrong output number can energize unintended tooling.
---
A robust program must handle sensor failures gracefully. The IF … JMP LBL instruction checks a condition and redirects program flow if that condition is true.
```
IF DI[1]=OFF, JMP LBL[10]
```
If the part-present sensor (DI[1]) is OFF when the robot reaches the pick point, execution jumps to label 10 instead of continuing the grip sequence. At label 10 you place an alarm routine — typically a PAUSE instruction and a user alarm message — so the operator can investigate before the robot cycles again.
Program flow for this lesson's pick-and-place cycle:
1. J P[1] home — FINE
2. J P[2] approach — CNT50
3. L P[3] pick — FINE
4. Check sensor: IF DI[1]=OFF, JMP LBL[10]
5. DO[1]=ON (close gripper)
6. L P[2] retract — FINE
7. J P[4] place approach — CNT50
8. L P[5] place — FINE
9. DO[1]=OFF (open gripper)
10. R[1]=R[1]+1 (increment counter)
11. J P[1] return home — FINE
12. LBL[10]: PAUSE (alarm routine)
---
During testing, press MENUS > I/O > Digital on the pendant to watch DI and DO states update in real time. This is the fastest way to verify that a jumper wire is toggling DI[1] as expected and that DO[1] changes state when the gripper instruction executes. Document each state transition in your lab log: record the instruction line number, the I/O signal, the state before and after, and whether the program branched correctly.
---
The FANUC CERT technician-level exams (FCR-T1, FCR-T2) include both a written test and a hands-on performance test covering exactly these skills: program creation, position teaching, motion-type selection, register use, and I/O programming. Accurate, repeatable motion and correct conditional logic are the benchmarks evaluators check.
Answer each question, then check it. Nothing is recorded; this is your own practice.
A free tech program — complimentary, as our commitment to get America working. Help us build VoTechWorks. Tell us what works, what doesn’t, and what you want to learn.
Does the school offer financial aid?
No. We don’t offer financial aid because we’re free. No, really: completely free.
Do you offer industry certification?
No. We are not certified yet, so we can’t offer that to students. What we do offer is knowledge and understanding of a trade.
Enroll first in the trade you’re interested in. You get your key, your program opens, and you begin studying.
Enroll free →