MFG-MECH15-06 · Lesson 6 · 18 clock hours · practice
HandlingTool Programming: Motion Instructions, Registers, and I/O
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.
⚠ Pending professional review
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.
HandlingTool Programming: Motion Instructions, Registers, and I/O
Why This Lesson Matters
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.
---
Safety Before You Touch the Pendant
Before entering the robot cell, review these rules every session.
- Lockout/tagout (LOTO): When teaching positions or performing maintenance, follow OSHA 29 CFR 1910.147. Verify the cell is in a safe energy state before reaching inside the work envelope. Never bypass interlocks.
- Machine guarding: OSHA 1910.212 and ANSI/RIA R15.06 (ISO 10218) require that safeguards — light curtains, safety gates, and area scanners — remain active during automatic operation. Do not defeat them.
- Teach mode: When jogging or teaching positions, the pendant deadman switch must be held in the center position. Releasing it or pressing it fully stops motion immediately.
- Speed limits: Jog speed must stay at or below 250 mm/s (roughly 10 in/s) when personnel are inside the cell, per ANSI/RIA R15.06 guidelines.
- PPE: Safety glasses are required at all times in the lab. No loose sleeves or jewelry near moving axes.
---
Motion Instructions: JOINT and LINEAR
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
```
- J = JOINT, L = LINEAR
- P[n] = the stored position register
- The speed value uses percent of max for JOINT and mm/sec (or in/sec) for LINEAR
- FINE means the robot decelerates fully and stops exactly at the taught point before continuing — required at pick and place
- CNT (Continuous) means the robot blends through the point without stopping; CNT100 is the smoothest blend, CNT0 is nearly like FINE. Use CNT for via points where precision is not needed
---
Position Registers and Numeric Registers
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 I/O Commands
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.
---
Conditional Jump: Handling Part-Absent Faults
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)
---
Reading the I/O Status Screen
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.
---
Connecting to FANUC CERT
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.
Key terms10
JOINT motion (J)A FANUC motion type that moves each robot axis independently toward a target position; the TCP path is not a straight line, but motion is fast and efficient. Used for moves where the exact path does not matter.
LINEAR motion (L)A FANUC motion type that drives the TCP in a straight Cartesian line to the target position. Required when the path must be controlled, such as approaching or departing a pick point.
FINE terminationA motion termination type in HandlingTool that causes the robot to decelerate fully and stop exactly at the taught point before executing the next instruction. Required at pick and place positions for positional accuracy.
CNT (Continuous) terminationA motion termination type that blends the robot smoothly through a via point without a full stop. The value (0–100) controls how closely the robot follows the taught point; CNT100 produces the smoothest blend.
Numeric register (R[n])A FANUC controller variable that stores an integer or real number. Commonly used as a part counter, loop counter, or arithmetic value that the program can read and modify during execution.
Digital output (DO[n])A controller signal line that commands an external device such as a gripper, clamp, or indicator light by switching a physical output ON or OFF.
Digital input (DI[n])A controller signal line that reads the state of an external sensor or switch — for example, a part-present sensor — so the program can make decisions based on real-world conditions.
IF … JMP LBLA HandlingTool conditional branch instruction that evaluates a logical condition (such as DI[1]=OFF) and redirects program execution to a named label if the condition is true, allowing fault handling or alternate logic paths.
TCP (Tool Center Point)The defined reference point at the end of the robot's tooling — typically the center of a gripper jaw or the tip of a weld gun — that the controller uses to calculate and control the robot's position in space.
Position register (PR[n])A FANUC controller variable that stores a complete robot position as Cartesian coordinates or joint angles. Unlike taught positions (P[n]), position registers can be modified mathematically during program execution, enabling offset-based pallet patterns.
In class: Motion-instruction coding drill on the teach pendant: students create a new program, teach five positions (home, approach, pick, retract, place), enter JOINT motion to home and approach, LINEAR motion to pick and place at appropriate speed and termination type (CNT vs. FINE), and run the program observing motion quality. · Register and I/O programming: students add R[1] as a part-counter that increments each cycle, a DO[1] grip signal that activates at the pick point, and a DI[1] part-present sensor check with an IF DI[1]=OFF, JMP LBL[10] statement routing to an alarm routine if the sensor is not triggered. · Program testing with simulated faults: instructor uses a jumper wire to toggle the DI[1] sensor input, and students observe whether the conditional jump executes correctly, trace program flow on the pendant screen, and document I/O state transitions in their lab log.
Materials: FANUC robot cell, teach pendant, jumper wires for I/O simulation, FANUC HandlingTool programming manual, I/O wiring diagram for the cell, lab log, program-checklist rubric
Check: Instructor evaluates program using a rubric: all five positions reachable without joint-limit alarms, motion types correctly assigned, register increments correctly, DI conditional jump executes correctly during fault simulation, program completes a full cycle without errors. Pass = rubric score ≥ 80%.
Practice check8
Answer each question, then check it. Nothing is recorded; this is your own practice.
Record this lesson on my transcript. Sign in with your key and enrollment email to record lessons (enroll free if you have no key). This page stays open to read and practise.