Teach pendant programming
Using Offset Conditions
Shows a technician how to shift a group of taught positions by a stored offset so one program can run at slightly different locations, such as pallet slots or part variations. It covers the OFFSET CONDITION instruction, the OFFSET motion option, the direct Offset,PR[] form, and the tool offset variant, along with the frame rules that decide how the shift resolves. It closes with zero-offset and full-range verification plus the common failure modes when a register is uninitialized or the wrong frame is active.
- Step 1.
Decide whether to offset in a user frame or in joint axes
The offset amount comes from a position register, and how it applies depends on how the position is expressed. When the position is in Cartesian form, the shift resolves in a user frame; when it is in joint form, the shift amount of each axis is applied directly. Pick the form that matches how you taught the positions before you build the offset.
Caution: If you taught in joint coordinates, changing the user coordinate system does not affect the position variables or registers, but both are affected by the user coordinate system when you teach in Cartesian format.
- Step 2.
Confirm the user frame the offset will resolve in
For a Cartesian offset, the OFFSET CONDITION instruction can name the user frame that decides the shift direction, using the form UFRAME[j] with j from 1 to 9. If you omit the frame number, the currently selected user frame is used. The tool frame number and the configuration value are ignored for the offset calculation.
- Step 3.
Open the position register data screen
Press DATA and select the Register, Position Register screen to view and edit position registers. This is where you confirm the offset register holds the value you expect before running. A register that still reads uninitialized behaves differently from one holding zeros.
- Step 4.
Store the offset in a position register
Load the shift into a register with a position register instruction such as PR[i] = (value), where i is 1 to 100. You can load Lpos for the Cartesian current position, Jpos for the joint current position, or compute the offset from other data. For example, PR[3] = PR[3] + Lpos builds a register from a running calculation.
- Step 5.
Set individual register elements when you know the shift per axis
A position register axis instruction writes one element at a time using PR[i,j]. In Cartesian form the elements are 1=X, 2=Y, 3=Z, 4=W, 5=P, 6=R; in joint form they are 1=J1 through 6=J6. For example, PR[1,2] = R[3] sets only the Y component, and PR[4,3] = 324.5 sets a fixed Z shift.
- Step 6.
Lock position registers before writing them from the program
The manual advises specifying LOCK PREG before using position register instructions, described under the position register look-ahead execution function. Writing registers while they are unlocked can make motion tight. Lock the registers so the offset writes settle cleanly ahead of the move.
- Step 7.
Add the OFFSET CONDITION instruction
Insert OFFSET CONDITION PR[i] (UFRAME[j]) on a line before the motion lines you want to shift. Choose it from the instruction menu under Offset/Frames. The condition stays effective until the program finishes or the next OFFSET CONDITION instruction runs.
- Step 8.
Apply the OFFSET option to the intended motion instructions
Move the cursor onto a motion instruction, press F4 [CHOICE], and pick the Offset/Frames option to add Offset to that move. The OFFSET instruction shifts the programmed destination by the amount in the offset register and moves the robot to the shifted position. A tagged line reads like L P[2] 500mm/sec FINE Offset.
- Step 9.
Understand the direct offset alternative
Instead of a separate condition line, you can tag a move with Offset,PR[i] to apply the register directly, chosen as the Offset,PR[] option in the motion modify list. The direct form uses the currently selected user frame as its reference. Use it when a single move needs its own offset without setting a standing condition.
- Step 10.
Teach or edit destination positions with the offset active
When you teach a move that carries the OFFSET option, the pendant prompts Subtract offset data from current pos?, then asks for the PR index and the user frame number of the offset. Answering Yes stores the position minus the offset so the taught line plus the offset returns to where the robot actually is. Answering No stores the current position directly.
- Step 11.
Know when teaching ignores the offset
If you edit the position with the numeric keys, the pendant cannot store the position minus the offset. The current position is also taught directly when the offset register is uninitialized or when Ignore Offset command is set to ENABLED under the general item settings. With Ignore Offset command enabled, the robot stops at the taught position even though the OFFSET instruction runs.
- Step 12.
Consider the tool offset condition variant
To shift along the tool frame instead of a user frame, use TOOL_OFFSET CONDITION PR[i] (UTOOL[j]) with the tool frame from 1 to 10, then tag moves with Tool_Offset. The tool coordinate system decides the shift, and the currently selected tool frame is used when you omit the number. This suits offsets that should follow the tool orientation rather than a fixed table frame.
- Step 13.
Test with a zero offset first
Run the program with the offset register set to zero and confirm the robot reaches the originally taught positions. This separates a frame or teaching mistake from a bad offset value. Keep the speed override low for this first pass.
- Step 14.
Step and backward test to confirm the shift behaves
Use the step test to walk through the offset moves one line at a time and watch where the tool lands. On backward execution the robot moves to the offset position, so expect the shifted target during a backward step. Confirm each move goes where you intend before running forward at speed.
- Step 15.
Test with the intended offset at low speed
Load the real offset value into the register and run the affected moves at reduced speed. Confirm the robot reaches the correctly shifted position and that approach and retract paths stay clear. Raise speed only after the shifted path looks right.
- Step 16.
Verify clearance across the full range of offsets
Check the largest and smallest offsets the program will ever apply, since production values change the register between cycles. Confirm the extreme shifts do not drive the tool into fixtures, the part, or the reach limit. A shift that clears at one value can collide at another.
Caution: Verify every extreme of the offset range in test mode at low speed before running the offset in full production, because a large offset can move the tool into an unexpected obstruction.
- Step 17.
What can go wrong: robot stops at the taught point instead of the shifted point
If the offset register is uninitialized, the taught position is used as is and no shift happens. Ignore Offset command set to ENABLED produces the same result on purpose. Check the register on the position register screen and confirm the general item setting before assuming the instruction is wrong.
- Step 18.
What can go wrong: the shift goes the wrong way or the wrong distance
For a Cartesian offset the direction and magnitude resolve in the user frame named in the condition, or the current user frame if none is named. A different active frame rotates the same register values into a different shift. Confirm the UFRAME number in the OFFSET CONDITION line and the active user frame match what you intend.
- Step 19.
What can go wrong: editing a destination moves the stored value unexpectedly
Because a move tagged with Offset stores the position minus the offset, re-teaching without watching the Subtract offset data prompt can shift the taught value. Answer the prompt deliberately and enter the correct PR index and frame number. Re-run the zero-offset test after any re-teach to confirm the base path is intact.
- Step 20.
What can go wrong: a tool offset stops the program with an alarm
A tool offset condition expects the position data in Cartesian form. When the position is expressed in the joint coordinate system, an alarm is issued and the program stops temporarily. Correct the position form or switch to a user-frame offset rather than clearing the fault and running again.
Common questions
- How long does Using Offset Conditions take?
- Using Offset Conditions is rated Intermediate and takes about 35 minutes across 20 steps.
- What tools do I need?
- You will need Teach pendant, Base TP program with taught positions, A free position register for the offset.
- What should I do before starting?
- Base program with taught positions already exists. The user frame the offset should resolve in is set up and its number is known. Offset value or position register calculated for the shift needed.
- What is the first step?
- Decide whether to offset in a user frame or in joint axes. The offset amount comes from a position register, and how it applies depends on how the position is expressed. When the position is in Cartesian form, the shift resolves in a user frame; when it is in joint form, the shift amount of each axis is applied directly. Pick the form that matches how you taught the positions before you build the offset.