From Industrial Robotics & Automation - Fanuc Teach Pendant Programming

This page details the use of the input and output instructions within a program.

How to add an instruction that changes a digital output.

FANUC robots have the capacity to communicate with the real world. This means communicating with other robots, sensors, human interface devices, plc's, electromechanical devices...

How to add an instruction that changes a robot output (The gripper tool)

The robot's I/O operate much like register instructions. A value is placed within an outputs variable and that appears as a voltage on the corresponding output pin. Inputs read the voltage placed to them by an external device and respond by providing a numerical value in an instruction that uses it.


FANUC robots use an addressing syntax that sorts peripheral devices into what is known as racks.

Each peripheral device contains its own series of inputs and outputs that are referenced by numbers. The selection of device is set by which rack it is. Unlike a PLC system where racks would just be stacks of controllers, the FANUC system references them by their interface.

On our robot, we use rack number 48 for our I/O that connect to internal Honda connectors for 20 digital inputs and 20 digital outputs.

For a more complete listing of rack designations on FANUC controllers, see Racks.

Physical I/O Options

Robot I/O

Robot I/O is reserved for devices directly related to the robot operations. This includes devices like the gripper, pneumatics, end of arm sensors. Robot I/O is functionally identical to Digital I/O.

Digital I/O

Honda Connector Pinouts

This is the pinout diagram for the internal I/O connections. They are 24 volts and should be considered to be signal, only able to power relays and signal inputs on other devices.

On our robots, we interface with these through optical isolators to ensure no damage can come to the robot.

Digital I/O can only exist in two states - ON or OFF. This means it will either have 24V or 0V on an associated pin.

  • Outputs come from the robot to communicate with and control peripherals.
    • Our Digital Outputs begin at 101 and run to 120.
      • Digital Output 101 is connected to the laser built into the robot gripper.

  • Inputs come from sensors and other devices to feed data and direction into programs.
    • Our Digital Inputs begin at 101 and run to 120.

Digital Output 101 is connected to the laser built into the robot gripper.

Analog I/O

Analog values do not exist on our robot, but can be made available through PLC integration or other controller. They can be numeric values with a range that is determined by the analog converter's resolution. Sampling speed, rate, accuracy, and precision are determined by the specific device used to input analog value.

An Analog input with a 12 bit resolution will pull data in as one of 4096 discrete values, from 0 to 4095.

For example, with the minimum voltage being 0 volts and the maximum being 24, a 12 volt signal will give the value of (12/24)*4096 = 2048. 12 is halfway between 0 and 24, and is mapped to be halfway between 0 and 4095.

Analog inputs read a voltage, but this voltage is often set by external sensors. For example, a distance sensor may output 1 volt for every 1 inch an object is away from it. Therefore an object 12 inches away would read as 12 volts, and the analog input would give the value of 2048.

For the purpose of programming, you might convert this number to something useful:

R[4:Inches] = AI[10:Sensor] / 170.6

Since it would read a maximum of 24 inches, and that value is 4095, you can divide 4095 by 24 to get 170.6. Every inch is a multiple of 170.6.

User I/O

Group I/O

How Binary Numbers Are Calculated

Group I/O is a derived value spanning the binary values of multiple digital I/O. To utilize group inputs, designate which digital inputs are part of the parallel binary string in the I/O menu, then call it as GI[#] in your program wherever valid.