I/O Addressing and Tags
The Core Idea
I/O means inputs and outputs: the signals that connect a programmable logic controller (PLC) with the equipment it controls. Inputs bring information into the PLC; outputs send commands from it. Tags give names to the values the controller works with, so you can recognize what those values mean.
What you will learn
Tell an input from an output from the PLC's point of view.
Distinguish a physical connection, an address, and a tag name.
Read a simple I/O list and understand how it connects equipment with controller data.
Why it matters
A machine has physical devices, wires, and connections. The PLC works with data representing their signals. Understanding the connection between those two views helps you read a project and follow a signal without needing to write a program yet.
What is an input? What is an output?
An input tells the PLC something about the machine or process. A pushbutton can report that someone pressed it; a sensor can report that a part is present; a temperature transmitter can report a measurement.
An output carries a command from the PLC. It might turn on a lamp, command a valve, or send a speed request to a motor drive. These are examples; machines use many other kinds of I/O.
The direction is always named from the PLC's point of view:
| Signal | Direction | What it does |
| A pushbutton's signal | Input | Carries information into the PLC. |
| A lamp command | Output | Carries a command out of the PLC. |
Some signals have two states, such as detected/not detected. Others represent a changing quantity, such as temperature or requested speed. I/O includes both.
How does a physical signal become controller data?
For a wired sensor, the signal arrives at a terminal on an input module. A terminal is a physical connection point; a channel is one of the module's individual signal points. The input module makes information about that signal available to the controller.
The output path goes the other way. The controller supplies an output value, and an output module uses it to command the connected device. I/O may be built into a compact PLC, installed in separate modules, or connected through remote equipment over an industrial network.
What is an address?
An address identifies a particular data location or I/O point in the controller's addressing system. For physical I/O, the hardware configuration establishes which controller data corresponds to which module and channel.
You might describe a connection as “input module A, channel 0.” Actual address formats vary between controller families. You do not need to learn a vendor's address syntax to understand the relationship.
What is a tag?
A tag is a named value in a controller project. A tag has a name, a type of data it can hold, and a current value. For example, PART_PRESENT could hold an on/off value indicating whether a sensor detects a part.
A descriptive tag name tells you the intended meaning. The I/O configuration tells you where its signal comes from or goes to. Naming a tag PART_PRESENT does not, by itself, connect it to a sensor.
Not every tag represents physical I/O. A tag might instead hold an internal count, a calculated result, a remembered condition, or an operator's requested setting. Tags are how a project names its data; I/O is one source and destination of that data.
If you already know software: tags are variables
A tag is essentially a PLC variable: a name associated with a typed value. If you would call partPresent a Boolean variable in another language, PART_PRESENT is the same basic idea. A tag could also hold an integer count, a decimal measurement, an array, or a structure containing several related values.
The useful extra question in a PLC is who supplies the value, and what uses it? An input tag receives information from the equipment through the I/O system. An output tag holds a command sent to equipment. An internal tag holds data used within the controller, much like a variable used for calculations or application state.
These values belong to a running control system: an input can change because a person presses a real button, and an output value can affect real equipment. Tags are used across PLC languages, so the variable idea applies whether you later read Ladder diagrams or Structured Text.
How they relate: a sensor and a lamp
Imagine a photoeye that detects a part at a packing station. A lamp shows when the part has been detected.
Into the PLC: photoeye → input terminal and channel → controller input data named PART_PRESENT.
Out of the PLC: controller output data named PART_LAMP → output channel and terminal → lamp.
The program determines how the input information affects the output command. The names and connections identify the signals; they do not establish that behavior on their own.
An I/O list records the relationship between the equipment and controller data. Here is a completed example:
| Device | Physical I/O location | Direction | Tag name | Meaning of TRUE / ON |
| Photoeye | Input module A, channel 0 | Input | PART_PRESENT | The photoeye reports a part present. |
| Green lamp | Output module B, channel 0 | Output | PART_LAMP | The PLC commands the lamp on. |
The locations above are illustrative, not a vendor's address syntax. A real I/O list may also include terminal numbers, wire references, signal types, and expected normal states.
The input tag and output tag are separate values, even if a program makes them change together. An output command also does not prove that the device responded: the lamp could be disconnected or faulty.
Three things to keep distinct
Terminal/channel: where the physical signal connects and which I/O point handles it.
Address: how the controller identifies the associated data location or point.
Tag: the name used to recognize and work with a value in the project.
When you see PART_PRESENT, you should be able to ask: “What does this value mean, and where does it come from?” The tag's description, I/O configuration, and wiring documentation help you answer both questions.
To explore examples of the equipment on either end of these signals, see Field Devices: Discrete Inputs and Outputs.
Enable JavaScript to run the embedded simulator and complete the interactive exercises.