Robotics in Manufacturing

Teach pendant programming

Using I/O Instructions in a Program

For a technician adding instructions that set outputs and read inputs directly inside a TP program to control grippers, signal a PLC, or check sensor state. Covers digital, robot, analog, and group I/O plus conditional WAIT with timeouts. Shows how to test the logic with simulated and forced I/O before running live.

Basic~20 min19 steps
  1. Step 1.

    Confirm the signals are assigned before you reference them

    A logical signal such as DO[1] does nothing until it is mapped to a physical rack, slot, and point on the MENU I/O screens. Open MENU, select 5 I/O, press F1 TYPE and pick the signal type to confirm the point exists and shows a status. An instruction that names an unassigned signal will not drive real hardware.

    Caution: Referencing a signal number that belongs to specialized UOP or SOP I/O, rather than the general-purpose point you intended, can trigger unexpected controller behavior. Verify the number against the cell I/O list first.

  2. Step 2.

    Choose the signal type that fits the device

    Use digital DI/DO for single on/off points, robot RI/RO for signals on the end-of-arm connector, analog AI/AO for continuous levels such as a voltage or temperature, and group GI/GO to read or write several bits as one decimal value. Each type has its own instruction form. Matching the type to the wiring keeps the program readable.

  3. Step 3.

    Position the cursor and open the I/O instruction menu

    Move the cursor to the line where the action belongs, then press F1 INST to list the instruction categories. Select 2 I/O to reach the digital, robot, analog, and group output and input forms. The instruction is inserted at the cursor line.

  4. Step 4.

    Set a digital output on or off

    The DO[i] = ON/OFF instruction turns a specified digital output on or off, for example DO[1] = ON to open a gripper. Use the register-indirect form DO[ R[3] ] = OFF when the point number comes from a register. Robot outputs use the same pattern as RO[i] = ON/OFF for signals on the arm.

  5. Step 5.

    Pulse an output when the device needs a momentary signal

    DO[i] = PULSE inverts the current output state for a set duration, with a width of 0.1 to 25.5 seconds, for example DO[2] = PULSE, 0.2sec. When no width is given, the pulse lasts the duration set in $DEFPULSE in 0.1-second units. This suits a device that latches on a brief edge rather than a held level.

  6. Step 6.

    Drive an output from a register value

    DO[i] = R[i] turns the output off when the register value is 0 and on when it is any other value, which lets earlier logic decide the state. RO[i] = R[i] does the same for robot outputs. This keeps a single decision point instead of repeating ON/OFF lines.

  7. Step 7.

    Read an input into a register

    R[i] = DI[i] loads the input state, on as 1 and off as 0, into a register you can test later, for example R[1] = DI[1]. R[i] = RI[i] reads a robot input the same way. Reading into a register lets you branch on the value with IF or WAIT instructions.

  8. Step 8.

    Handle several bits at once with group I/O

    Group signals bundle several digital points and move them as one value. R[i] = GI[i] converts the binary group input to a decimal value in a register, and GO[i] = value writes a decimal that appears as bits on the output group. This is efficient for passing a part-type or recipe number to or from a PLC.

  9. Step 9.

    Output or read an analog level where the device is not on/off

    AO[i] = value outputs a level as a specified analog signal, and AO[i] = R[i] outputs a register value, for example AO[1] = 0. R[i] = AI[i] stores an analog input, such as a measured voltage or temperature, into a register. Use analog only where the wiring and module actually carry a continuous signal.

  10. Step 10.

    Wait for an input before the program continues

    WAIT DI[i] = ON holds execution until the input reaches the stated state, for example WAIT RI[1] = ON before closing on a part. You can also wait on an edge, where On+ satisfies on the rising transition and Off- on the falling transition, so a level that is already present does not pass. Waiting on the confirming input is how the program knows a real device responded.

  11. Step 11.

    Add a timeout so a stuck input cannot hang the cycle

    Append TIMEOUT, LBL[i] to a conditional WAIT so control jumps to a label if the condition is not met within the time set in item 14 WAIT timeout on the system configuration screen. Route that label to recovery logic such as an alarm output or a safe stop. Without a timeout the program waits for an unlimited period and can appear frozen.

    Caution: The timeout label must lead somewhere safe. Sending it straight back into motion that assumes the part is held can crash the tool or drop the workpiece.

  12. Step 12.

    Combine conditions on a single WAIT line when needed

    A conditional WAIT can carry up to five conditions joined by and, or joined by or, for example WAIT DI[2] <> OFF and DI[3] = ON. The editor does not allow mixing and with or on the same line and will convert them all to match if you change one. Keep each WAIT to a single logical intent so the flow stays clear.

  13. Step 13.

    Sequence the I/O correctly around motion

    Place the output before or after the motion line so the physical order is right, such as commanding the gripper closed, waiting for its confirm input, then moving. Use a FINE termination on the approach point so the robot settles before the I/O acts, since a CNT point blends into the next move and can carry the tool away early. Correct sequencing prevents lifting before a part is secured.

  14. Step 14.

    Test the logic with simulated I/O before wiring is trusted

    On the MENU I/O digital screen, move to the SIM field and press F4 SIMULATE to set the flag to S, which lets the program change and read the signal internally without driving peripherals. Then set the simulated state with F4 ON or F5 OFF to feed the program the input it expects. Use the function menu UNSIM ALL I/O to release every simulated signal when you finish.

    Caution: Setting inputs to simulated is a temporary test aid only. Never leave signals simulated during production line operation, since the program will ignore the real peripheral state.

  15. Step 15.

    Verify outputs with forced output, checking what is connected

    On the I/O output screen you can move to a status field and press F4 ON or F5 OFF to force a digital output, or enter a value for a group output, to confirm the device responds. Before forcing, check which equipment is wired to that point and what the action will cause. Forced output activates the real device.

    Caution: Forced output energizes connected equipment and can cause motion of a gripper, clamp, or feeder. Keep clear and confirm the connection before pressing ON.

  16. Step 16.

    Run the program in test mode and watch the device

    Execute the program at reduced speed in test mode and confirm each output fires and each input is read at the correct point in the cycle. Watch the physical device, not only the signal screen, so a mismatch between logical state and real hardware shows up. Step through the I/O and motion together before releasing to auto.

  17. Step 17.

    What can go wrong: the instruction runs but the device does nothing

    If the line executes yet the equipment does not respond, the signal may still be flagged simulated with S on the I/O screen, or the logical point may not be assigned to a physical output. Check the SIM column, press F5 UNSIM if it is set, and confirm the rack, slot, and point assignment. A forced state left on the screen can also override what the program commands.

  18. Step 18.

    What can go wrong: the program hangs on a WAIT

    A conditional WAIT with no timeout holds forever when the input never arrives, which looks like a freeze. Add TIMEOUT, LBL[i] to give the condition a bounded window, and during testing you can use the function menu RELEASE WAIT to skip the current I/O wait, after which execution halts at the next line. Correct the missing input at its source rather than routinely skipping the wait.

    Caution: Skipping a wait that confirms a gripper or clamp lets the cycle proceed as if the part were held. Only release a wait to diagnose, then fix the input that failed to arrive.

  19. Step 19.

    What can go wrong: motion starts before the gripper confirms

    If the robot moves away while the part is still being grasped, the output was likely commanded but the program did not wait for the confirming input, or the approach point used a CNT termination that blended into the next move. Add a WAIT on the gripper-closed input and use a FINE point before the lift. This ties the next motion to real confirmation instead of elapsed time.

Common questions

How long does Using I/O Instructions in a Program take?
Using I/O Instructions in a Program is rated Basic and takes about 20 minutes across 19 steps.
What tools do I need?
You will need Teach pendant, The program open in the TP editor, I/O assignment list for the cell (which physical points map to which logical DI, DO, RI, RO, GI, GO, AI, AO).
What should I do before starting?
Digital, robot, analog, or group I/O points are already allocated from logical to physical numbers on the MENU I/O screens. The connected device (gripper, clamp, sensor, PLC handshake) is wired and its behavior is known. You can teach and edit lines in the program, and can run it in test mode.
What is the first step?
Confirm the signals are assigned before you reference them. A logical signal such as DO[1] does nothing until it is mapped to a physical rack, slot, and point on the MENU I/O screens. Open MENU, select 5 I/O, press F1 TYPE and pick the signal type to confirm the point exists and shows a status. An instruction that names an unassigned signal will not drive real hardware.

Attribution

Procedure steps on this page are checked against the site's editorial safety rules and manufacturer-manual sourcing standards.

Last reviewed: 2026-07-21.

Edited by Mike Ramsey / Reliable Media.Editorial process