6. Tags in Studio 5000: Why Logix Does Not Use N7:0 Style Addresses


0
Categories : PLC Programming

One of the biggest differences between older Allen-Bradley PLC platforms and Studio 5000 Logix Designer is the way memory is identified.

In older PLC systems, you may see addresses like:

B3:0/0
N7:0
T4:0
C5:0
I:1/0
O:2/0

In Studio 5000 Logix Designer, you normally work with tags instead.

Examples:

Motor_Start_PB
Motor_Stop_OK
Motor_Run_Cmd
Tank_Level
Conveyor_Running_FB
Door_Open_LS

Rockwell’s Studio 5000 lab manual explains that older PLCs identify data with physical memory addresses such as N7:0, but Logix controllers do not use a fixed numeric memory format. Instead, Logix controllers use tags that can be given meaningful names.


What Is a Tag?

A tag is a named memory location inside the controller.

Simple definition:

A tag is a name for data in the PLC.

That data can represent many things:

A push button
A motor command
A valve feedback
A timer
A counter
A speed reference
A temperature value
A machine state
A fault bit
An alarm bit

The lab manual describes a tag as a text-based name for an area of memory. It also explains that tag names help document ladder code and organize data around the machinery.

That is very important.

A good tag name can tell you what the logic is doing before you even read the rung comment.


Old Address Style vs New Tag Style

In older PLC platforms, you may need to know what a memory address means.

Example:

B3:0/0

That address does not explain much by itself.

You need documentation to know if it means:

Motor run command?
Fault reset?
Start push button?
Alarm bit?

In Studio 5000, a tag name can describe the signal directly.

Example:

Motor_Run_Cmd

This immediately tells you the purpose of the bit.

Comparison:

Older Address StyleStudio 5000 Tag Style
B3:0/0Motor_Run_Cmd
I:1/0DI_Start_PB
O:2/0DO_Motor_Starter
N7:0Machine_State
F8:0Tank_Level_Gallons
T4:0Motor_Start_Delay_TMR

The tag-based system makes the program easier to understand and troubleshoot.


Why Tags Are Better for Technicians

Tags are easier to troubleshoot because they describe real machine signals.

For example, during a breakdown, compare these two situations:

Old Style
B3:5/12 is OFF.

You still need to ask:

What is B3:5/12?
Where is it used?
What does it represent?
Tag Style
Motor_Overload_OK is OFF.

Now the meaning is much clearer.

You immediately know the motor overload condition is not healthy.

This helps technicians move faster from software troubleshooting to real field troubleshooting.


Tags Help Connect the PLC to the Machine

A good tag name should connect the logic to the physical machine.

Example:

DI_Start_PB
DI_Stop_OK
DI_Photoeye_Clear
DI_Guard_Door_Closed
DO_Conveyor_Motor
DO_StackLight_Green
AI_Tank_Level
AO_VFD_Speed_Reference

These tags help answer questions like:

Is the start push button being seen by the PLC?
Is the stop circuit healthy?
Is the photo eye blocked?
Is the guard door closed?
Is the PLC commanding the conveyor?
Is the analog level signal changing?
Is the VFD speed reference being sent?

This is why tag naming is not just a programming preference. It is a troubleshooting tool.


Common Tag Data Types

A tag also has a data type.

The data type defines what kind of value the tag can store.

Common Studio 5000 data types include:

Data TypeMeaningExample
BOOL0 or 1 / OFF or ONMotor_Run_Cmd
SINTSmall integerSmall numeric values
INTIntegerGeneral whole numbers
DINTDouble integerMachine states, counters, indexes
REALDecimal valueTemperature, pressure, speed
TIMERTimer structureStart_Delay_TMR
COUNTERCounter structureBox_Count_CTR
UDTUser-defined structureMTR_101
AOI-defined typeAdd-On Instruction instance dataMotor_AOI_01

For a technician, the most common ones to understand first are:

BOOL
DINT
REAL
TIMER
COUNTER
UDT

BOOL Tags

A BOOL tag is a single bit.

It can be:

0 = OFF / False
1 = ON / True

BOOL tags are used for discrete signals:

Start push button
Stop status
Motor command
Valve command
Sensor status
Fault active
Alarm active
Mode selected

Examples:

DI_Start_PB
DI_Stop_OK
Motor_Run_Cmd
Valve_Open_FB
Machine_Faulted

In ladder logic, BOOL tags are commonly used with:

XIC
XIO
OTE
OTL
OTU
ONS

DINT Tags

A DINT is a whole number.

It is commonly used for:

Machine states
Counters
Step numbers
Recipe numbers
Fault codes
Mode numbers
Index values

Examples:

Machine_State
Active_Step
Fault_Code
Recipe_Number
Box_Count

A DINT is useful when you want one tag to represent a state or number.

Example:

Machine_State = 0  → Idle
Machine_State = 10 → Starting
Machine_State = 20 → Running
Machine_State = 30 → Stopping
Machine_State = 40 → Faulted

This is very common in more professional Studio 5000 programs.


REAL Tags

A REAL tag stores a decimal value.

It is commonly used for analog signals and calculated values.

Examples:

Tank_Level_Gal
Line_Speed_FPM
Motor_Current_Amp
Temperature_DegF
Pressure_PSI
Flow_GPM

REAL tags are important when working with:

Analog inputs
Analog outputs
Scaling
PID loops
VFD speed references
Process values
Setpoints

Example:

AI_Tank_Level_Raw      = raw input value
Tank_Level_Percent = scaled engineering value
Tank_Level_Setpoint = target value

TIMER Tags

In Studio 5000, timers are tags.

A timer tag contains several members.

Example:

Motor_Start_Delay_TMR

Common timer members:

Motor_Start_Delay_TMR.PRE
Motor_Start_Delay_TMR.ACC
Motor_Start_Delay_TMR.EN
Motor_Start_Delay_TMR.TT
Motor_Start_Delay_TMR.DN

Meaning:

Timer MemberMeaning
.PREPreset time
.ACCAccumulated time
.ENTimer enabled
.TTTimer timing
.DNTimer done

Example:

Motor_Start_Delay_TMR.DN

This means the timer has finished timing.


COUNTER Tags

Counters also use structured tag members.

Example:

Box_Count_CTR

Common counter members:

Box_Count_CTR.PRE
Box_Count_CTR.ACC
Box_Count_CTR.DN

Counters are commonly used for:

Box counting
Cycle counting
Part counting
Batch counting
Reject counting
Maintenance counts

Example:

Box_Count_CTR.ACC

This is the current accumulated count.


Controller Scope vs Program Scope

This is one of the most important Studio 5000 tag concepts.

When you create a tag, you must decide where the tag lives.

There are two common scopes:

Controller Scope
Program Scope

Rockwell’s lab manual explains that controller-scoped tags are accessible by all programs, while parameters and local tags are accessible only by the code within a specific program. It also explains that local tags are isolated from other programs and that this isolation can help prevent tag name collisions and improve code reuse.


Controller-Scoped Tags

Controller-scoped tags are global.

Any program in the controller can access them.

Common uses:

Physical I/O alias tags
HMI interface tags
System-wide status
Produced and consumed tags
Shared data between programs
Controller-level fault summary

Examples:

DI_Start_PB
DO_Motor_Starter
HMI_Start_Cmd
System_Faulted
Line_Running

Use controller scope when the tag needs to be shared across the project.


Program-Scoped Tags

Program-scoped tags are local to a specific program.

Only that program can access them.

Common uses:

Internal logic bits
Intermediate calculations
Local sequence bits
Program-specific timers
Program-specific counters
Temporary values

Examples:

Start_Request
Run_Permissive
Internal_Step
Fault_Timer
OneShot_Start

Use program scope when the tag is only needed inside one program.

This helps keep the project clean and prevents unnecessary global tags.


Simple Scope Example

Imagine you have two conveyors:

Conveyor_1
Conveyor_2

Each conveyor program may use local tags like:

Start_Request
Run_Command
Fault_Timer

Because they are program-scoped, the same local names can exist in both programs without conflict.

Example:

Conveyor_1.Start_Request
Conveyor_2.Start_Request

This makes code easier to reuse.


Base Tags and Alias Tags

When creating a tag in Studio 5000, you may see different tag types or usages.

The lab manual explains several tag attributes, including Base, Alias, and Produced. It describes a base tag as one that stores values for use by logic, an alias as a tag that represents another tag, and a produced tag as data sent to another controller.

Let’s explain these simply.


Base Tag

A base tag is a normal tag that stores data.

Example:

Motor_Run_Cmd

This tag has its own memory location.

It can be used in logic, monitored, written to, and referenced by other tags or instructions.

Most internal tags are base tags.


Alias Tag

An alias tag is another name for an existing tag or I/O point.

Example:

DI_Start_PB → Local:1:I.Data.0

The alias tag does not create new memory.

It points to another tag.

This makes raw I/O easier to read.

Instead of using:

Local:1:I.Data.0

You use:

DI_Start_PB

That is much easier for troubleshooting.


Why Alias Tags Are Useful for I/O

Raw I/O tags can be hard to read.

Example:

Local:2:I.Data.5

That does not clearly tell you what field device is connected.

Alias tag:

DI_Photoeye_Clear

Now the meaning is clear.

The lab manual explains that I/O module tags are created in Controller Scope and that local modules are identified as “Local.”

That is why you often see raw I/O tags like:

Local:1:I.Data
Local:2:O.Data

A good project uses alias tags to make those raw points readable.


Produced Tags

A Produced Tag is used to send data to another controller.

Example:

Line_1_Status
Filler_Running
Tank_Level_Data

Produced/Consumed tags are common in larger systems where controllers share data over EtherNet/IP.

Simple idea:

Controller A produces data.
Controller B consumes that data.

For beginners, you do not need to master produced/consumed tags immediately, but you should recognize that they are used for controller-to-controller communication.


Recommended Tag Prefixes

A clean naming convention makes the program much easier to troubleshoot.

Here is a practical technician-friendly convention:

PrefixMeaningExample
DI_Digital InputDI_Start_PB
DO_Digital OutputDO_Motor_Starter
AI_Analog InputAI_Tank_Level_Raw
AO_Analog OutputAO_VFD_Speed_Ref
CMD_CommandCMD_Motor_Run
FB_FeedbackFB_Motor_Running
FLT_FaultFLT_Motor_Overload
ALM_AlarmALM_Low_Air_Pressure
TMR_TimerTMR_Start_Delay
CTR_CounterCTR_Box_Count
SP_SetpointSP_Tank_Level
PV_Process VariablePV_Tank_Level

You can adjust the convention based on your plant standard, but the key idea is consistency.


Good Tag Names vs Poor Tag Names

Poor Tag Names
Bit_1
Start
Motor
Output_4
Test
Aux
Sensor1

These names are too vague.

Better Tag Names
DI_Start_PB
DI_Stop_OK
DI_Motor_Overload_OK
CMD_Motor_Run
DO_Motor_Starter
FB_Motor_Running
FLT_Motor_Failed_To_Start

These names explain the signal’s purpose.

A technician should be able to understand the tag without constantly opening documentation.


Tag Naming Rule: Name What TRUE Means

This is one of the most important rules.

A BOOL tag should clearly describe what it means when it is 1.

Example:

DI_Stop_OK = 1

This means the stop circuit is healthy.

That is clearer than:

Stop_Button = 1

Because with stop buttons, people often get confused between the physical normally closed contact and the PLC logic state.

Better examples:

DI_EStop_OK
DI_Guard_Door_Closed
DI_Air_Pressure_OK
DI_Motor_OL_OK
DI_VFD_Ready

Now the ladder logic reads naturally:

E-stop OK
Guard door closed
Air pressure OK
Motor overload OK
VFD ready

That makes troubleshooting much easier.


Tag Descriptions Are Also Important

The tag name should be clear, but the tag description adds more context.

Example:

Tag NameDescription
DI_Start_PBLocal operator start push button input
DI_Stop_OKStop circuit healthy status from NC stop circuit
DO_Motor_StarterPhysical output to motor starter coil
FB_Motor_RunningMotor running feedback from auxiliary contact
FLT_Motor_Failed_To_StartLatched fault when feedback does not prove after run command

Good descriptions help maintenance and engineering understand the signal.

They also make online troubleshooting easier.


Technician Troubleshooting Example

Problem:

The conveyor does not start.

Use tags to troubleshoot step by step:

1. DI_Start_PB
Does the PLC see the start button?

2. DI_Stop_OK
Is the stop circuit healthy?

3. DI_EStop_OK
Is the E-stop circuit reset?

4. DI_Motor_OL_OK
Is the overload healthy?

5. CMD_Conveyor_Run
Is the logic requesting the conveyor to run?

6. DO_Conveyor_Starter
Is the PLC output turning on?

7. FB_Conveyor_Running
Is the motor starter or VFD feedback returning?

This workflow follows the control path:

Input → Logic → Output → Feedback

That is the heart of PLC troubleshooting.


Common Mistake: Using Raw I/O Everywhere

Avoid writing logic directly with raw I/O tags everywhere.

Example:

Local:1:I.Data.0
Local:2:O.Data.3

This works, but it is harder to read.

Better approach:

Local:1:I.Data.0 → DI_Start_PB
Local:2:O.Data.3 → DO_Motor_Starter

Then use the alias tags in the logic.

This makes the program easier to understand.


Common Mistake: No Naming Standard

Another common mistake is mixing styles:

StartButton
start_pb
PB_Start
DI_Start
Start_Input

All may mean the same thing, but the inconsistency makes the project harder to maintain.

Pick a standard and follow it.

Example:

DI_Start_PB
DI_Stop_OK
CMD_Motor_Run
DO_Motor_Starter
FB_Motor_Running

Consistency is more important than perfection.


Common Mistake: Global Tags for Everything

It is tempting to create every tag as controller-scoped.

But that can make the project messy.

Use controller scope for shared or global data.

Use program scope for local logic.

Simple rule:

If many programs need it, use controller scope.
If only one program needs it, use program scope.

This keeps the tag database cleaner.


Industrial Example: Motor Tags

A professional motor control section may use tags like:

DI_M101_Start_PB
DI_M101_Stop_OK
DI_M101_OL_OK
DI_M101_Run_FB

CMD_M101_Run
DO_M101_Starter

FLT_M101_Failed_To_Start
ALM_M101_Not_Available
TMR_M101_Start_FB

Or, in a more advanced project, these may be inside a UDT:

M101.Cmd.Run
M101.Fb.Running
M101.Flt.FailedToStart
M101.Alm.NotAvailable
M101.Tmr.StartFB

Both approaches are valid.

The UDT approach becomes cleaner when you have many similar motors.


Final Thoughts

Tags are one of the most important concepts in Studio 5000 Logix Designer.

Older PLC platforms use fixed memory addresses like:

N7:0
B3:0/0
I:1/0
O:2/0

Studio 5000 uses meaningful tag names like:

Motor_Run_Cmd
DI_Start_PB
Tank_Level
Machine_State

For a PLC programmer, tags help organize logic.

For an automation technician, tags make troubleshooting easier because they connect the software to the real machine.

Remember this simple idea:

Good tag names make good troubleshooting possible.

A well-named tag should tell you:

What the signal is
Where it comes from
What it controls
What TRUE means
How it relates to the machine

Once you understand tags, Studio 5000 becomes much easier to read, monitor, and troubleshoot.

Leave a Reply

Your email address will not be published. Required fields are marked *