Read this document and the documents listed in the additional resources section about installation, configuration, and
operation of this equipment before you install, configure, operate, or maintain this product. Users are required to familiarize
themselves with installation and wiring instructions in addition to requirements of all applicable codes, laws, and standards.
Activities including installation, adjustments, putting into service, use, assembly, disassembly, and maintenance are required to
be carried out by suitably trained personnel in accordance with applicable code of practice.
If this equipment is used in a manner not specified by the manufacturer, the protection provided by the equipment may be
impaired.
In no event will Rockwell Automation, Inc. be responsible or liable for indirect or consequential damages resulting from the use
or application of this equipment.
The examples and diagrams in this manual are included solely for illustrative purposes. Because of the many variables and
requirements associated with any particular installation, Rockwell Automation, Inc. cannot assume responsibility or liability for
actual use based on the examples and diagrams.
No patent liability is assumed by Rockwell Automation, Inc. with respect to use of information, circuits, equipment, or software
described in this manual.
Reproduction of the contents of this manual, in whole or in part, without written permission of Rockwell Automation, Inc., is
prohibited.
Throughout this manual, when necessary, we use notes to make you aware of safety considerations.
WA RN I NG : Identifies information about practices or circumstances that can cause an explosion in a hazardous environment,
which may lead to personal injury or death, property damage, or economic loss.
ATTENTION: Identifies information about practices or circumstances that can lead to personal injury or death, property
damage, or economic loss. Attentions help you identify a hazard, avoid a hazard, and recognize the consequence.
IMPORTANTIdentifies information that is critical for successful application and understanding of the product.
Labels may also be on or inside the equipment to provide specific precautions.
SHOCK HAZARD: Labels may be on or inside the equipment, for example, a drive or motor, to alert people that dangerous
voltage may be present.
BURN HAZARD: Labels may be on or inside the equipment, for example, a drive or motor, to alert people that surfaces may
reach dangerous temperatures.
ARC FLASH HAZARD: Labels may be on or inside the equipment, for example, a motor control center, to alert people to potential
Arc Flash. Arc Flash will cause severe injury or death. Wear proper Personal Protective Equipment (PPE). Follow ALL Regulatory
requirements for safe work practices and for Personal Protective Equipment (PPE).
2Rockwell Automation Publication 1756-RM094K-EN-P - October 2020
• Logix 5000 Common Procedures Programming Manual, publication 1756-PM001
• ControlLogix 5580 Controllers User Manual, publication 1756-UM543
• ControlLogix System User Manual, publication 1756-UM001
• Motion Configuration and Startup User Manual, publication MOTION-UM001
• Motion Coordinate System User Manual, publication MOTION-UM002
• CompactLogix 5370 Controllers User Manual, publication 1769-UM021
• CompactLogix 5380 and Compact GuardLogix 5380 Controllers User Manual,
publication 5069-UM001
• 1768 CompactLogix System User Manual,publication 1768-UM001
• 1769 CompactLogix System User Manual, publication 1769-UM011
• 1769 Packaged CompactLogix Controllers Quick Start and User Manual,
publication IASIMP-QS010
These documents contain additional information about the controllers.
Networks
Provides guidance on how to conduct vulnerability assessments,
implement Rockwell Automation products in a secure system, harden
the control system, manage user access, and dispose of equipment.
Logix 5000™ Controllers
Control Logix Controllers
Compac tLogix Controllers
You can view or download publications at
http://www.rockwellautomation.com/literature/
.
10Rockwell Automation Publication 1756-RM094K-EN-P - October 2020
5580 Controller and 5380 Controllers
This chapter highlights these controllers, and where applicable, the controllers
are known as:
Controller FamilyIncludes these controllers
5580 controllersControlLogix® 5580 and GuardLogix® 5580 controllers
5380 controllersCompactLogix™ 5380 and Compact GuardLogix 5380 controllers
ControlLogix 5580 and GuardLogix 5580 Controllers
CharacteristicControlLogix 5580 Controllers and GuardLogix 5580 Controllers
Controller tasks:
• Continuous
•Periodic
•Event
Event tasksConsumed tag, EVENT instruction triggers, Module Input Data changes, and motion events
User memory1756-L81E, 1756-L81EK, 1756-L81E-NSE, 1756-L81EXT, 1756-L81EP3 MB
Controller redundancyFully supported with Studio 5000 Logix Designer Application version 33 later for ControlLogix 5580 controllers. Uses the same
firmware revision as standard ControlLogix 5580 controllers, but requires that redundanc y is enabled on the Redundancy tab
of the Controller Properties dialog.
Integrated motionEtherNet/IP
100
250
CompactLogix 5380 and Compact GuardLogix 5380 Controllers
CharacteristicCompactLogix 5380 Controllers and Compact GuardLogix 5380 Controllers
Controller tasks:
• Continuous
•Periodic
•Event
Event tasksConsumed tag, EVENT instruction triggers, Module Input Data changes, and motion events
Controller redundancyLogix Hot Backup - CompactLogix 5380 Controllers only
Integrated motionEtherNet/IP
16
24
40
60
90
120
Process Controllers
Controller Memory
ControlLogix 5580 and CompactLogix 5380 process controllers are
extensions of the Logix 5000™ controller family that focus on plant-wide
process control.
The process controllers come configured with a default process tasking model
and dedicated PlantPAx® process instructions that are optimized for process
applications and that improve design and deployment efforts. The process
controllers support release 5.0 of the Rockwell Automation Library of Process
Objects.
For more information on the process library, see the Rockwell Automation
Library of Process Objects Reference Manual, publication PROCES-RM200
For more information on process controller application guidelines, see the
PlantPAx DCS Configuration and Implementation User Manual,
publication PROCES-UM100
.
The Logix CPU runs control and motion, communications, and packet
processing each on a separate core.
• The Logix Engine executes the user program, the control task, and the
motion task.
• The Communications core manages all Class 3 and unconnected
communications via the Ethernet, USB, and backplane communication
ports. Communications do not interrupt the user task. The System
Overhead Time Slice Percentage setting is no longer available and not
necessary.
• The Packet Processing Engine moves all Ethernet Class 1 packets to and
from the wire, and moves all packets to and from the backplane.
.
Rockwell Automation Publication 1756-RM094K-EN-P - October 202013
Chapter 15580 Controller and 5380 Controllers
Logic and Data Memory
Program source code
Tag dat a
Logix CPU
Logix Engine
Commun ications Co re
Packet Processing Engine
1756 ControlLogix 5580 controllers and CompactLogix 5380 controllers- Memory is in one, contiguous section.
Logic and Data Memory
Program source code
Tag data
Logix CPU
Logix E ngine
Communications Core
Packet Processing Engine
1756 GuardLogix 5580 controllers and Compact GuardLogix 5380 controllers- Memory is in one, contiguous section.
Funct ional Saf ety
Diagnostic Core
The controller allocates memory as needed to help prevent many runtime
errors that are related to free memory. Runtime memory no longer consumes
application memory space.
The GuardLogix CPU performs the same functions as the ControlLogix 5580
and CompactLogix 5380 controllers, with these differences:
• The Logix Engine executes the user program, the control task, the
motion task, and the safety task.
• The Functional Safety Diagnostic Core runs the safety task with
inverted data, and compares the results to the safety task that runs on the
Logix Engine.
Data Types
The controllers support IEC 61131-3 atomic data types. The controllers also
support compound data types, such as arrays, predefined structures (such as
counters and timers), and user-defined structures).
The Logix CPU reads and manipulates 32-bit data values. The minimum
memory allocation for data in a tag is 4 bytes. When you create a standalone tag
that stores data that is less than 4 bytes, the controller allocates 4 bytes, but the
data only fills the part that it needs.
For more information See Data Structures on page 75
Data Type Bits
64…323116 158 710
BOOL
SINT
INTNot allocatedAllocated but not used-32,768…32,767
DINT
REAL
LINT-922337203685477580…+9223372036854775807
Not allocatedAllocated but not used0 or 1
Not allocatedAllocated but not used-128…+127
Not allocated-2,147,483,648…2,147,483,647
Not allocated-3.40282347E38…-1.17549435E
0
1.17549435E
-38
(negative values)
-38
…3.40282347E38 (positive values)
.
14Rockwell Automation Publication 1756-RM094K-EN-P - October 2020
5580 Controller and 5380 ControllersChapter 1
Extended Data Types
The 5380 and 5580 controllers support these extended data types:
Data TypeBits
64…3231161587…10
USINTNot allocatedAllocated but not usedUnsigned 0…255
UINTNot allocated Allocated but not usedUnsigned 0…65,535
The compute, compare, and math instructions support these extended data
types for 64-bit operations.
Programming Techniques
Programming TechniqueConsideration
SubroutinesFor Logix Designer application Version 28 and later on 5580 and 5380 controllers:
Add-On InstructionsFor 5580 controllers 5380 controllers, you can nest Add-On Instructions up to 25 levels.
PhaseManager™ equipment phasesThe PhaseManager option is support on 5580 and 5380 controllers as of firmware revision 32.
• JSR calls are limited to 40 input parameters and 40 output parameters.
• There is a maximum of 25 JSR nesting levels.
For more information See Modular Programming Techniques on page 45.
Data Alignment Rules
The 5580, 5380, and all 64-bit controllers have these data alignment rules on
UDTs:
• 8-byte (64-bit) data types (LINT, ULINT, and LREAL) are placed on
8-byte address boundaries in RAM. The Studio 5000 Logix Designer
application manages this requirement automatically.
• UDTs that have no 8-byte elements retain the existing 4-byte memory
allocation rules.
• UDTs that contain LINTs are considered to be 8-byte data types and
their size is a multiple of 8 bytes.
• 8-byte data types (LINTs or embedded UDTs) within a data structure
are aligned on an 8-byte boundary.
Rockwell Automation Publication 1756-RM094K-EN-P - October 202015
Chapter 15580 Controller and 5380 Controllers
Produced and Consumed
Data
Connections
The controller supports:
•Total number of produced tags 255
• Maximum number of multicast produce tags out of the Ethernet port
32
• Maximum number of consumed tags 255
For more information See Produced and Consumed Data on page 71
The controller supports:
• Dedicated Class 1 (I/O, Produce and Consume, implicit, and so on)
connection pool to support controller node count
• Dedicated Class 3 (HMI, message instructions, explicit, and so on)
connection pool to support up to 512 connections
– This pool is split; 256 incoming and 256 outgoing connections
• 256 cached buffers
• 320 unconnected buffers for establishing connections
– This value is fixed and cannot be increased with a CIP™ Generic
message instruction.
.
16Rockwell Automation Publication 1756-RM094K-EN-P - October 2020
5480 Controller
CompactLogix 5480 Controller
CharacteristicCompactLogix™ 5480 Controller
Controller tasks:
• Continuous
•Periodic
•Event
Event tasksConsumed tag, EVENT instruction triggers, Module Input Data changes, and motion events
User memoryWindows 10 (commercial operating system on
Built-in portsLogix control engine use:
•32 tasks
• 1000 programs/task
• All event triggers
controller)
Logix control engine
5069-L430ERMW3 MB
5069-L450ERMW5 MB
5069-L4100ERMW10 MB
5069-L4200ERMW20 MB
• 3 - Ethernet, 10 Mpbs/100 Mbps/1 Gbps
• 1 - USB client
IMPORTANT: Consider the following
• When the controller operates in Dual-IP mode, each Ethernet port requires a unique IP address.
• When the controller operates in Linear/DLR mode, the controller uses only one IP address.
•RAM: 6 GB
•SSD: 64 GB
Chapter 2
Windows 10 use:
• 1 - Ethernet, 10 Mbps/100 Mbps/1 Gbps
• 2 - USB 3.0 ports
•1 - DisplayPort
Communication options•Dual-port EtherNet/IP™
Network nodesStudio 5000 Logix Designer® application, version 32.00.00 or later
Controller redundancyNone
Integrated motionTot al axi s c oun t512 (Any combination of physical, virtual, or consumed axes)
•USB Client
5069-L430ERMW
5069-L450ERMW120
5069-L4100ERMW180
5069-L4200ERMW
5069-L46ERMW
Virtual axis, max512
Position-loop axis, max150
Axes/ms, max100
60
250
250
Rockwell Automation Publication 1756-RM094K-EN-P - October 202017
Chapter 25480 Controller
Logic and Data Memory
Program source code
Tag dat a
Logix CPU
Logix Engine
Commun ications Co re
Packet Processing Engine
1756 CompactLogix 5480 controllers- Memory is in one, contiguous section.
Controller Memory
The Logix CPU runs control and motion, communications, and packet
processing each on a separate core.
• The Logix Engine executes the user program, the control task, and the
motion task.
• The Communications core manages all Class 3 and unconnected
communications via the Ethernet, USB, and backplane communication
ports. Communications do not interrupt the user task, and you do not
need to adjust the System Overhead Time Slice Percentage.
• The Packet Processing Engine moves all Ethernet Class 1 packets to and
from the wire, and moves all packets to and from the backplane.
The controller allocates memory as needed to help prevent many runtime errors
that are related to free memory. Runtime memory no longer consumes
application memory space.
Data Types
The controllers support IEC 61131-3 atomic data types. The controllers also
support compound data types, such as arrays, predefined structures (such as
counters and timers, and user-defined structures.)
The Logix CPU reads and manipulates 32-bit data values. The minimum
memory allocation for data in a tag is 4 bytes. When you create a standalone tag
that stores data that is less than 4 bytes, the controller allocates 4 bytes, but the
data only fills the part that it needs.
For more information See Data Structures on page 75
Data Type Bits
64…323116 158 710
BOOL
SINTNot allocatedAllocated but not used-128…+127
INT
DINT
REALNot allocated-3.40282347E38…-1.17549435E
LINT-9223372036854775808…+9223372036854775807
Not allocatedAllocated but not used0 or 1
Not allocatedAllocated but not used-32,768…32,767
Not allocated-2,147,483,648…2,147,483,647
-38
(negative values)
0
1.17549435E
-38
…3.40282347E38 (positive values)
.
18Rockwell Automation Publication 1756-RM094K-EN-P - October 2020
5480 ControllerChapter 2
Extended Data Types
The 5480 controller supports these extended data types:
Data TypeBits
64…3231161587…10
USINTNot allocatedAllocated but not usedUnsigned 0…255
UINTNot allocated Allocated but not usedUnsigned 0…65,535
The compute, compare, and math instructions support these extended data types
for 64-bit operations.
Programming Techniques
Programming TechniqueConsideration
SubroutinesFor Logix Designer application Version 32.00.00 and later:
Add-On InstructionsYou can nest Add-On Instructions up to 25 levels.
PhaseManager™ equipment phasesThe PhaseManager option is supported on 5480 controller s as of firmware revision 32.
• JSR calls are limited to 40 input parameters and 40 output parameters.
• There is a maximum of 25 JSR nesting levels.
For more information See Modular Programming Techniques on page 45.
Data Alignment Rules
The 5480 controllers have these data alignment rules on UDTs:
• 8-byte (64-bit) data types (LINT, ULINT, and LREAL) are placed on 8byte address boundaries in RAM. The Studio 5000 Logix Designer
application manages this requirement automatically.
• UDTs that have no 8-byte elements retain the existing 4-byte memory
allocation rules.
• UDTs that contain LINTs are considered to be 8-byte data types and their
size is a multiple of 8 bytes.
• 8-byte data types (LINTs or embedded UDTs) within a data structure are
aligned on an 8-byte boundary.
Rockwell Automation Publication 1756-RM094K-EN-P - October 202019
Chapter 25480 Controller
Produced and Consumed
Data
Connections
The controller supports:
•Total number of produced tags 255
• Maximum number of multicast produce tags out of the Ethernet port 32
• Maximum number of consumed tags 255
For more information See Produced and Consumed Data on page 71
The controller supports:
• Dedicated Class 1 (I/O, Produce and Consume, implicit, and so on)
connection pool to support controller node count
• Dedicated Class 3 (HMI, message instructions, explicit, and so on)
connection pool to support up to 512 connections
– This pool is split; 256 incoming and 256 outgoing connections
• 256 cached buffers
• 320 unconnected buffers for establishing connections
– This value is fixed and cannot be increased with a CIP™ Generic
message instruction.
.
20Rockwell Automation Publication 1756-RM094K-EN-P - October 2020
5570 Controllers and 5370 Controllers
This chapter highlights these controllers, and where applicable, the controllers
are known as:
Controller FamilyIncludes these controllers
5570 controllersControlLogix® 5570 and GuardLogix® 5570 controllers
5370 controllersCompactLogix™ 5370 and Compact GuardLogix 5370 controllers
CompactLogix 5370 and
Compact GuardLogix 5370
Controllers
The Logix CPU executes application code and messages. The backplane CPU
transfers I/O memory and other module data on the backplane. This CPU
operates independently from the Logix CPU, so it sends and receives I/O
information asynchronous to program execution.
TIPCPU usage is based on the number of devices in the I/O tree. About 6% of the CPU is used
for every 100 devices in the I/O tree.
The Logix CPU executes application code and messages.
Rockwell Automation Publication 1756-RM094K-EN-P - October 202023
Chapter 35570 Controllers and 5370 Controllers
Controller Connections
The controller uses a connection to establish a communication link between
two devices.
IMPORTANTThe topics in this section apply only to ControlLogix 5570 and earlier
controllers, and CompactLogix 5370 and earlier controllers operation
Connections can be made to the following:
• Controller to local I/O modules or local communication modules
• Controller to remote I/O or remote communication modules
• Controller to remote I/O (rack-optimized) modules
• Produced and consumed tags
• Messages
• Access to programming software
• Linx-based software access for HMI or other software applications
The controllers have different communication limits.
Communication Attribute1756-L7x ControlLogix1756-L6x ControlLogix 1769 CompactLogixCompactLogix 53701768 CompactLogix
Connections500250100256250
Cached messages32 for messages and block transfers combined
Unconnected receive buffers3
Unconnected transmit buffersDefault 20 (can be increased to 40)Default 10 (can be increased to 40)
The limit of connections can ultimately reside in the communication module
you use for the connection. If a message path routes through a communication
module, the connection that is related to the message also counts toward the
connection limit of that communication module.
CompactLogix 5370Built-in Ethernet portsSee the CompactLogix 5370 Controllers User Manual, publication 1769-UM021, for information on how to
(1) There are 1000 explicit connections and 528 implicit connections.
100 CIP™ connections
(any combination of scheduled and message connections)
128 CIP connections
(any combination of scheduled and message connections)
256 CIP connections
128 TCP/IP connections
• 1000 I/O
(1)
•528
512 TCP/IP connections
128 CIP connections
64 TCP/IP connections
count EtherNet/IP nodes on the I/O Configuration section of the programming software.
24Rockwell Automation Publication 1756-RM094K-EN-P - October 2020
5570 Controllers and 5370 ControllersChapter 3
Determine Total Connection Requirements
The total connections for a controller include both local and remote
connections. Counting local connections is not an issue for CompactLogix
controllers. They support the maximum number of modules that are permitted
in their systems.
When designing your CompactLogix 5370 controllers, you must consider
these resources:
• EtherNet/IP network nodes
• Controller connections
For more information, see the CompactLogix 5370 Controllers User Manual,
publication 1769-UM021
The ControlLogix controllers support more communication modules than the
other controllers, so you must tally local connections to make sure that you stay
within the connection limit.
.
Use this table to tally local connections.
Connection TypeDevice QuantityxConnections per Module=Total Connections
Local I/O module (always a direct connection)x1=
SERCOS Motion modulex3=
ControlNet communication modulex0=
EtherNet/IP communication modulex0=
DeviceNet communication modulex2=
DH+/Remote I/O communication modulex1=
DH-485 communication modulex1=
Programming software access to controllerx1=
Tot a l
IMPORTANTA redundant system uses eight connections in the controller.
Rockwell Automation Publication 1756-RM094K-EN-P - October 202025
Chapter 35570 Controllers and 5370 Controllers
The communication modules that you select determine how many remote
connections are available. Use this table to tally remote connections.
Connection TypeDevice QuantityxConnections per Module=Total Connections
Remote ControlNet communication module
Configured as a direct (none) connection
Configured as a rack-optimized connection
Remote EtherNet/IP communication module
Configured as a direct (none) connection
Configured as a rack-optimized connection
Remote device over a DeviceNet network
(accounted for in rack-optimized connection for local DeviceNet module)
Safety device on a DeviceNet or EtherNet/IP networkx2=
Other remote communication adapterx1=
Distributed I/O module (individually configured for a direct connection)x1=
Produced tag and first consumer
Each additional consumer
Consumed tagx1=
Connected message (CIP Data Table read/write and DH+™)x1=
Block transfer messagex1=
Linx-based software access for HMI or other software applicationsx4=
FactoryTalk® Linx software for HMI or other software applicationsx5=
Tot a l
x
0 or
1
x
0 or
1
x0=
x2
1
=
=
=
System Overhead Percentage
The system overhead timeslice specifies the percentage of continuous task
execution time that is devoted to communication and background redundancy
functions.
• Message communication is any communication that you do not
configure through the I/O configuration folder of the project, such as
MSG instructions.
• Message communication occurs only when a periodic or event task is not
running. If you use multiple tasks, make sure that their scan times and
execution intervals leave enough time for message communication.
• System overhead interrupts only the continuous task.
• The controller performs message communication for up to 1 ms at a
time and then resumes the continuous task.
• Adjust the update rates of the tasks as needed to get the best trade-off
between executing your logic and servicing message communication.
System overhead functions include the following:
• Communicating with HMI devices and programming software
• Sending and responding to messages
• Alarm management processing
• Redundancy qualification
26Rockwell Automation Publication 1756-RM094K-EN-P - October 2020
5570 Controllers and 5370 ControllersChapter 3
Continuous Task Restarts
Periodic Task Rest arts
Continuous Task
10% CPU Overhead
Continuous Task
25% CPU Overhead
Peri odic Tas k
CPU Overhead
The controller performs system overhead functions for up to 1 ms at a time. If
the controller completes the overhead functions in less than 1 ms, it resumes
the continuous task. The following chart compares a continuous and periodic
task.
ExampleDescription
Continuous task
10% CPU overhead
Continuous task
25% CPU overhead
Periodic taskPlacing the same code in a periodic tas k yields even more time for communication processing. The bottom example assumes that the
In the top example, the system overhead timeslice is set to 10%. Given 40 ms of code to execute, the continuous task completes the
execution in 44 ms. During a 60 ms period, the controller is able to spend 5 ms on communication processing.
By increasing the system overhead timeslice to 25%, the controller completes the continuous task scan in 57 ms. The controller spends
15 ms of a 60 ms time span on communication processing.
code is in a 60 ms periodic task. The code executes to completion and then goes dormant until the 60 ms, time-based trigger occurs.
While the task is dormant, all CPU bandwidth can focus on communication. Because the code takes only 40 ms to execute, the controller
can spend 20 ms on communication processing. Depending on the amount of communication to process during this 20 ms window, it can
be delayed as it waits for other modules in the system to process the data that was communicated.
The CPU timeslices between the continuous task and system overhead. Each
task switch between user task and system overhead takes additional CPU time
to load and restore task information. You can calculate the continuous task
interval as:
ContinuousTime=(100/SystemOverheadTimeSlice%) - 1
The programming software forces at least 1 ms of execution time for the
continuous task, regardless of the system overhead timeslice. This more
efficiently uses system resources because letting shorter execution times of the
continuous task exist means switching tasks more frequently.
System Overhead Timeslice % Communication Execution (ms)Continuous Task Execution (ms)
1019
2014
3312
5011
6621
8041
9091
Rockwell Automation Publication 1756-RM094K-EN-P - October 202027
Chapter 35570 Controllers and 5370 Controllers
Program Scan
Time
Tag s Pe r
Second
System Timeslice %
Tags per Second
Program Scan Time in Milliseconds
Manage the System Overhead Timeslice Percentage
As the system overhead timeslice percentage increases, time that is allocated to
executing the continuous task decreases. If there is no communication for the
controller to manage, the controller uses the communication time to execute
the continuous task.
IMPORTANTSystem Overhead Time Slice does not apply to ControlLogix 5580 or
CompactLogix 5380 controllers.
ConsiderationDescription
Continuous task always has at least 1 ms execution timeThe programming software forces the continuous task to have at least 1 ms of executio n time, regardless of the
Impact on communication and scan timeIncreasing the system overhead timeslice percentage decreases execution time for the continuous task while it
setting for the system overhead timeslice. This results in more efficient controller use because excessive swapping
between tasks uses valuable CPU resources.
increases communication performance.
Increasing the system overhead timeslice percentage also increases the amount of time it takes to execute a
continuous task - increasing overall scan time.
Unused portion of system overhead timesliceYou can configure any unused portion of the system overhead timeslice to:
System overheadSystem overhead is the time that the controller spends on message communication and background tasks.
28Rockwell Automation Publication 1756-RM094K-EN-P - October 2020
• Run the continuous task, which results in faster execution of application code and increases the variability of the
program scan.
• Process communication, which results in more predictable and deterministic scan time for the continuous task.
(This is for development and testing of an application to simulate communication.)
• Message communication is any communication that you do not configure through the I/O configuration folder of
the project, such as MSG instructions.
• Message communication occurs only when a periodic or event task is not running. If you use multiple tasks, make
sure that their scan times and execution intervals leave enough time for message communication.
• System overhead interrupts only the continuous task.
• The system overhead timeslice specifies the percentage of time (excluding the time for periodic or event tasks)
that the controller devotes to message communication.
• System overhead timeslice does not apply to ControlLogix 5580 and CompactLogix 5380 controllers.
• The controller performs message communication for up to 1 ms at a time and then resumes the continuous task.
• Adjust the update rates of the tasks as needed to get the best trade-off between executing your logic and servicing
message communication.
5570 Controllers and 5370 ControllersChapter 3
Individual applications can differ, but the overall impact on communication
and scan time remains the same. The data is based on a ControlLogix5555
controller running a continuous task with 5000 tags (no arrays or user-defined
structures).
I/O Processing
Data Types
The 5370 controllers use a dedicated periodic task to process I/O data. This
I/O task:
• Operates at priority 6.
• Higher-priority tasks take precedence over the I/O task and can affect
processing.
• Executes at the fastest RPI you have scheduled for the system.
• Executes for as long as it takes to scan the configured I/O modules.
The controllers support IEC 61131-3 atomic data types. The controllers also
support compound data types, such as arrays, predefined structures (such as
counters and timers), and user-defined structures.
The Logix CPU reads and manipulates 32-bit data values. The minimum
memory allocation for data in a tag is 4 bytes. When you create a standalone tag
that stores data that is less than 4 bytes, the controller allocates 4 bytes, but the
data only fills the part that it needs.
For more information See Data Structures on page 75
Data Type Bits
64…323116158710
BOOL
SINTNot allocatedAllocated but not used-128…+127
INT
DINTNot allocated-2,147,483,648…2,147,483,647
REAL
LINTValid Date/Time range is from 1/1/1970 12:00:00 AM coordinated universal time (UTC) to 1/1/3000 12:00:00 AM UTC
Not allocatedAllocated but not used0 or 1
Not allocatedAllocated but not used-32,768…32,767
Not allocated-3.40282347E38…-1.17549435E
0
1.17549435E
-38
…3.40282347E38 (positive values)
-38
(negative values)
.
Rockwell Automation Publication 1756-RM094K-EN-P - October 202029
Chapter 35570 Controllers and 5370 Controllers
Programming Techniques
Programming TechniqueConsideration
SubroutinesFor Studio 5000 Logix Designer® Version 28 and later on 5570 and 5370 controllers:
Add-On InstructionsFor 5570 controllers or earlier, and 5370 controllers or earlier, there is no limit on nesting Add-On Instructions. However,
• JSR calls are limited to 40 input parameters and 40 output parameters.
• There is no limit on nesting JSR instructions. However, it is possible that too many nesting levels can cause the
controller to run out of memory and fault.
it is possible that too many nesting levels can cause the controller to run out of memory and fault.
For more information See Modular Programming Techniques on page 45.
Produced and Consumed
Data
Messages
The controller supports:
•Total number of produced tags 127
• Maximum number of multicast produce tags out of the CompactLogix
Ethernet port 32
• Maximum number of consumed tags 250 (or controller maximum)
For more information See Produced and Consumed Data on page 71
The controller supports:
• As many outgoing, unconnected buffers as fit in controller memory.
Each buffer uses approximately 1.2 KB of I/O memory.
You can use a CIP Generic message instruction to increase the number
of unconnected buffers. See the Logix 5000™ Controllers Messages
Programming Manual, publication 1756-PM012
• Three incoming unconnected buffers
• 32 cached buffers, as of firmware revision 12 and later.
.
30Rockwell Automation Publication 1756-RM094K-EN-P - October 2020
Chapter 4
Logic Execution
The controller operating system is a pre-emptive multitasking system that is
IEC 61131-3 compliant.
Tasks to configure controller executionA task provides scheduling and priority information for a set of one or more programs. You can configure tasks as either
Programs to group data and logicA task contains programs, each with its own routines and program-scoped tags. Once a task is triggered (activated), the programs
Routines to encapsulate executable code that
is written in one programming language
Decide When to Use Tasks,
continuous, periodic, or event.
that are assigned to the task execute in the order in which they are listed in the Controller Organizer.
Programs are useful for projects that multiple programmers develop. During development, the code in one program that uses
program-scoped tags can be duplicated in a second program to minimize the possibility of tag names colliding.
Tasks can contain programs and equipment phases.
Routines contain the executable code. Each program has a main routine that is the first routine to execute within a program. Use
logic, such as the Jump to Subroutine (JSR) instruction, to call other routines. You can also specify an optional program fault
routine.
Use these considerations to determine when to use a task, program, or routine.
Programs, and Routines
ComparisonTaskProgram and Equipment PhaseRoutine
Quantity availableVaries by controller (4, 6, 8, or 32)32 program and equipment phases
FunctionDetermines how and when code is executedOrganizes groups of routines that share a
Use• Most code is expected to reside in a
continuous task
• Use a periodic task for slower processes or
when time-based operation is critical
• Use an event task for operations that
require synchronization to a specific event
Considerations• A high number of tasks can be difficult to
debug
• Can disable output processing on some
tasks to improve performance
• Tasks can be inhibited to help prevent
execution
• Do not configure multiple tasks at the same
priority
(combined) per task
100 for ControlLogix® controllers with V23 and
earlier
1000 programs/task for ControlLogix
controllers with V24 and later
common data area and function.
• Put major equipment pieces or plant cells
into isolated programs
• Use programs to isolate different
programmers or create reusable code
• Configurable execution order within a task
• Isolate individual batch phases or discrete
machine operations
• Data spanning multiple programs must be
controller-scoped or a program parameter.
• Listed in the Controller Organizer in the
order of execution
Unlimited number of routines per program
Contains executable code (relay ladder, function block
diagram, sequential function chart, or structured text)
• Isolate machine or cell functions in a routine
• Use the appropriate language for the process
• Modularize code into subroutines that can be called
multiple times
• Subroutines with multiple calls can be difficult to
debug
• Data can be referenced from program-scoped and
controller-scoped areas
• Calling many routines impacts scan time
• Listed in the Controller Organizer as Main, Fault,
and then alphabetically
Rockwell Automation Publication 1756-RM094K-EN-P - October 202031
Chapter 4Logic Execu tion
Specify Task Priorities
Each task in the controller has a priority level. A higher priority task (such as 1)
interrupts any lower priority task (such as 15). The continuous task has the
lowest priority; periodic or event tasks always interrupt continuous tasks.
The controller has these types of tasks.
PriorityUser TaskDescription
Highest—CPU overhead - general CPU operations
—Motion planner - executed at coarse update rate
—Safety task - safety logic
—Redundancy task - communication in redundant systems
—Trend data collection - high-speed collection of trend data values
Priority 1 Event/PeriodicUser defined
Priority 2 Event/PeriodicUser defined
Priority 3 Event/PeriodicUser defined
Priority 4 Event/PeriodicUser defined
Priority 5 Event/PeriodicUser defined
Priority 6 Event/PeriodicUser defined
1769 CompactLogix™ controllers process I/O as a periodic task based on the chassis RPI setting
Priority 7 Event/PeriodicUser defined
Priority 8 Event/PeriodicUser defined
Priority 9 Event/PeriodicUser defined
Priority 10 Event/PeriodicUser defined
LowestPriorit y 11 Event/PeriodicUser defined
Priority 12 Event/PeriodicUser defined
CompactLogix communication and scheduled connection maintenance
Priority 13 Event/PeriodicUser defined
Priority 14 Event/PeriodicUser defined
Priority 15 Event/PeriodicUser defined
ContinuousLowest priority task. Interrupted by all other tasks including system overhead timeslice (if
applicable.)
If a periodic or event task is executing when another is triggered, and both tasks
are at the same priority level, the tasks execute in 1 ms increments until one of
the tasks completes execution.
32Rockwell Automation Publication 1756-RM094K-EN-P - October 2020
Logic ExecutionChapter 4
Manage User Tasks
If you want logic to executeUse this taskDescription
All of the timeContinuous taskThe continuous task runs in the background. Any CPU time that is not allocated to other operation s
• At a constant period (such as every 100 ms)
• Multiple times within the scan of your other logic
Immediately when an event occursEvent taskAn event task performs a function only when a specific event (trigger) occurs. Whenever the
You can configure these user tasks.
or tasks is used to execute the continuous task.
• The continuous task runs all of the time. When the continuous task completes a full scan, it
restarts immediately.
• A project does not require a continuous task. If used, there can be only one continuous task.
Periodic taskA periodic task performs a function at a specific time interval. Whenever the time for the periodic
task expires, the periodic task:
• Interrupts any lower priority tasks.
• Executes one time.
• Returns control to where the previous task left off.
trigger for the event task occurs, the event task:
• Interrupts any lower priority tasks.
• Executes one time.
• Returns control to where the previous task left off.
The user tasks that you create appear in the Tasks folder of the controller. The
predefined system tasks do not appear in the Tasks folder and they do not
count toward the task limit of the controller.
Pre-defined Tasks in ControlLogix and CompactLogix Process
Controllers
PlantPAx system release 5.0 adds process controllers to the Logix 5000 family
of controllers. The process controllers offer additional capabilities that are
targeted for DCS applications.
The Task folder contains a project structure that consists of four pre-defined
periodic tasks:
• Fast (100 ms) – For control fast loops, such as liquid flow or pressure
with related transmitters and pump drives
• Normal (250 ms) – For discrete control, such as motors, pumps, and
valves
• Slow (500 ms) – For level, temperature, analysis loops, phases, and batch
sequencing
• System (1000 ms) – For slow change temperature control and general
controller operations, such as messaging or status
Rockwell Automation Publication 1756-RM094K-EN-P - October 202033
Chapter 4Logic Execu tion
Considerations that Affect Task Execution
ConsiderationDescription
Motion plannerThe motion planner interrupts all other tasks, regardless of their priority.
Output processingAt the end of a task, the controller performs output processing for the output modules in your system. This processing depends on the
Too many tasksIf you have too many tasks, then the following can occur:
Table 1 - Example Task Execution
TaskPriorityPeriodExecution TimeDuration
Motion planner—8 ms (course update rate)1 ms1 ms
Event task 11—1 ms12 ms
Periodic task 1212 ms2 ms2
Continuous task——20 ms48 ms
• The number of axes and coarse update period for the motion group affect how long and how often the motion planner executes.
• If the motion planner is executing when a task is triggered, the task waits until the motion planner is done.
• If the coarse update period occurs while a task is executing, the task pauses to let the motion planner execute.
number of output connections that are configured in the I/O tree.
• Continuous task can take too long to complete.
• Other tasks can experience overlaps. If a task is interrupted too frequently or too long, it must be triggered again to complete its
execution .
• Controller communication can be slower.
• If your application is designed for data collection, try to avoid multiple tasks.
This example depicts the execution of a project with these tasks.
4ms
Motion
Planner
Event
Tas k 1
Perio dic
Tas k 1
Continuous
Tas k
Legend:Ta sk e xec ute s.Task is interrupted (suspended).
5 101520253035404550
1234
Description
1Initially, the controller executes the motion planner and the I/O task (if one exists).
2The period for periodic task 1 expires (12 ms), so the task interrupts the continuous task.
3The triggers occur for event task 1.
Event task 1 waits until the motion planner is done.
Lower priority tasks experience longer delays.
4The continuous task automatically restarts.
34Rockwell Automation Publication 1756-RM094K-EN-P - October 2020
Logic ExecutionChapter 4
Configure a Continuous Task
Configure a Periodic Task
Configure an Event Task
When you create a project in the programming software, the Main Task is
configured as a continuous task.
• A controller supports one continuous task, but a continuous task is not
required.
• You can configure the task to update output modules at the end of the
continuous task.
• You can change the continuous task to either a periodic or event task.
A periodic task executes automatically based on a preconfigured interval. You
can configure whether the task updates output modules at the end of the
periodic task. After the task executes, it does not execute again until the
configured time interval has elapsed.
An event task executes automatically based on a trigger event occurring, or if a
trigger event does not occur in a specific time interval. You configure whether
the task updates output modules at the end of the task. After the task executes,
it does not execute again until the event occurs again. Each event task requires
a specific trigger.
TriggerDescription
Module Input Data State ChangeA remote input module (digital or analog) triggers an event task that is based on the change of state (COS) configuration for the module.
Consumed TagOnly one consumed tag can trigger a specific event task. Use an Immediate Output (IOT) instruction in the producing controller to signal the
Axis Registration 1or 2A registration input triggers the event task.
Axis WatchA watch position triggers the event task.
Motion Group ExecutionThe coarse update period for the motion group triggers the execution of both the motion planner and the event task. Because the motion
EVENT InstructionMultiple EVENT instructions can trigger the same task.
Enable COS for only one point on the module. If you enable COS for multiple points, a task overlap of the event task can occur.
• The ControlLogix sequence of events modules (1756-IB16ISOE, 1756-IH16ISOE) use the Enable Coordinated System Time (CST) Capture
feature instead of COS.
• The embedded input points on the 1769-L16ER-BB1B, 1769-L18ER-BB1B, 1769-L18ERM-BB1B, 1769-L18ERM-BB1B, and
1769-L19ER-BB1BKmodules can be configured to trigger an event task when a COS occurs.
production of new data.
planner interrupts all other tasks, it executes first.
For more information on event tasks, see:
• Logix 5000™ Controllers Common Procedures Programming Manual,
publication 1756-PM001
• Using Event Tasks with Logix 5000 Controllers,
publication LOGIX-WP003
Rockwell Automation Publication 1756-RM094K-EN-P - October 202035
Chapter 4Logic Execu tion
Guidelines to Configure an Event Task
GuidelineDescription
Place the I/O module being used to trigger an event
in the same chassis as the controller.
Limit events on digital inputs to one input bit on a
module.
Set the priority of the event task as the highest
priority on the controller.
Limit the number of event tasks.Increasing the number of event tasks reduces the available CPU bandwidth and increases the chances of task overlap.
Placing the I/O module in a remote chassis adds more network communication and processing to the response time.
All inputs on a module trigger one event, so if you use multiple bits you increase the chance of a task overlap. Configure the
module to detec t change of state on the trigger input and turn off the other bits.
If the priority of the event task is lower than a periodic task, the event task has to wait for the periodic task to complete
execution.
Additional Considerations for Periodic and Event Tasks
ConsiderationDescription
Amount of code in the event taskEach logic element (for example, rung, instruction, or structured text construct) adds to scan time.
Task priorityIf the event task is not the highest priority task, a higher priority task can delay or interrupt the execution of the event task.
CPS and UID instructionsIf one of these instructions is active, the event task cannot interrupt the currently executing task. (The task with the CPS or UID.)
Motion plannerThe motion planner takes precedence over event or periodic tasks
TrendsTrend data collection takes precedence over event or periodic tasks.
Output processingYou can disable output processing at the end of a task to reduce the amount of task processing time. The Controller Organizer displays
whether outputs processing is disabled.
Access the Module Object
The MODULE object provides status information about a module. To select a
particular module object, set the Object Name operand of the GSV/SSV
instruction to the module name. The specified module must be present in the
I/O Configuration section of the controller organizer and must have a
device name.
With the Studio 5000 Logix Designer® application, version 24.00.00 and later,
you can access the MODULE object directly from an Add-On Instruction.
Previously, you could access the MODULE object data, but not from within
an Add-On Instruction.
You must create a Module Reference parameter when you define the Add-On
Instruction to access the MODULE object data. A Module Reference
parameter is an InOut parameter of the MODULE data type that points to the
MODULE Object of a hardware module. You can use module reference
parameters in both Add-On Instruction logic and program logic.
For more information on the Module Reference parameter, see the Logix 5000
Controllers Add-On Instructions Programming Manual,
publication 1756-PM010
36Rockwell Automation Publication 1756-RM094K-EN-P - October 2020
, and the Logix Designer application online help.
Logic ExecutionChapter 4
The Path attribute is available with Logix Designer application, version
24.00.00 and later. This attribute provides a communication path to the
module.
For more information on the attributes available in the MODULE object, see
the Logix 5000 Controllers General Instructions Reference Manual,
publication 1756-RM003
.
Develop Application Code in
Routines
Section of Code RepresentsLanguage to Use
Continuous or parallel execution of multiple operations (not sequenced)Ladder Diagram(LD)
Boolean or bit-based operations
Complex logical operations
Message and communication processing
Machine interlocking
Operations that service or maintenance personnel can interpret to troubleshoot the machine or process.
Servo motion control
Continuous process and drive controlFunction block diagram (FBD)
Loop control
Calculations in circuit flow
High-level management of multiple operationsSequential function chart (SFC)
Repetitive sequences of operations
Batch process
Motion control sequencing (via sequential function chart with embedded structure text)
State machine operations
Complex mathematical operationsStructured text (ST)
Specialized array or table loop processing
ASCII string handling or protocol processing
Each routine contains logic in one programming language. Choose a
programming language that is based on the application.
Rockwell Automation Publication 1756-RM094K-EN-P - October 202037
Chapter 4Logic Execu tion
Benefits
• Uses more memory
• Fastest execution time because all tag references
are defined before runtime
• Easiest to maintain because rung animation
matches tag values
• Requires more time to create and modify
Comparison of Programming Languages
ComparisonRelay Ladder LogicFunction Block DiagramSequential Function ChartStructured Text
Instruction categories• Boolean
• General and trig math
• Timers and counters
• Array management
•Diagnostic
• Serial port and messaging
•ASCII manipulation
•Motion control
Editor style• Graphical rungs
• Unlimited rungs
Monitoring• Rung animation
• Data value animation
•Force status
Comments• Tag
•Rung
• General and trig math
•Timers and counters
•Bitwise logical
• Advanced process
• Advanced drive
• Graphical, free-form drawing
•Unlimited sheets
• Output and input pin data value
animation
•Tag
•Text box
• Step/action with embedded
structured text
• Transition with structure text
comparisons
• Simultaneous and selection
branches
• Stop element
• Graphical, free-form drawing
• Unlimited grid space
• Active steps animation
• Auto display scroll
• Branch/transition force status
•Tag
•Text box
• Embedded structured text
comments that are stored in CPU
• General and trig math
•Timers and counters
•Bitwise logical
• Array management
•Diagnostic
•ASCII manipulation
• Specialty CPU control
•Motion control
• Advanced process
• Advanced drive
•Textual
• Unlimited lines
•Tag watch pane
•Context coloring
•Multi-line
• End if line
• Comments that are stored in CPU
Programming Methods
The capabilities of the controllers make different programming methods
possible. There are trade-offs to consider when selecting a programming
method.
Inline Duplication
Write multiple copies of the code with different tag references.
38Rockwell Automation Publication 1756-RM094K-EN-P - October 2020
Logic ExecutionChapter 4
The JSR instruction
passes the index.
Each indexed reference adds
to scan time.
Benefits
• One copy of code is faster to develop
• Slowest execution time because all tag references
are calculated at runtime
• Can be difficult to maintain because the data
monitor is not synchronized to execution
The JSR instruction
passes all control
instance data.
A user-defined structure
consolidates co ntrol data.
Direct reference to a loca l
copy of data.
Benefits
• One copy operation can occur faster than multiple
index offsets
• Minimizes the need to calculate array offsets at
runtime
• The amount of code increases, but so do the
benefits
• Can be difficult to maintain because the data
monitor is not synchronized to execution
Indexed Routine
Write one copy of code and use indexed references to data stored in arrays.
Buffered Routine
Copy the values of an array into tags to directly reference these buffer tags.
Rockwell Automation Publication 1756-RM094K-EN-P - October 202039
Chapter 4Logic Execu tion
Controller Prescan of Logic
On transition to Run mode, the controller prescans logic to initialize
instructions. The controller resets all state-based instructions, such as outputs
(OTE) and timers (TON). Some instructions also perform operations during
prescan. For example, the ONSR instruction turns off the storage bit.
For information on prescan, see the following resources:
• Logix 5000 Controllers General Instructions Reference Manual,
publication 1756-RM003
.
• Logix 5000 Controllers Process Control and Drives Instructions
Reference Manual, publication 1756-RM006
.
During prescan, input values are not current and outputs are not written.
Prescan AffectsDescription
Relay ladder logicThe controller resets non-retentive I/O and internal values.
Function block diagram logicAlong with resetting non-retentive I/O and internal values, the controller also
Structured text logicThe controller resets bit tags and forces numeric tags to zero .
Sequential function chart logicEmbedded structured text follows the same rules as listed previously.
clears the EnableIn parameter for every function block diagram.
Use the bracketed assignment operator ([:=]) to force a value to be reset during
prescan.
If you want a tag that is left in its last state, use the non-bracketed assignment
operator (:=).
Prescan differs from first scan in that the controller does not execute logic
during prescan. The controller executes logic during first scan. The controller
sets S:FS for one scan:
• During the first scan that follows prescan.
• During the first scan of a program when it has been uninhibited.
• Each time a step is first scanned (when step.FS is set). You can view the
S:FS bit being set only from the logic that is contained in actions that
execute during the first scan of their parent step (N, L, P, and P1).
Add-On Instruction Prescan Logic
An Add-On Instruction prescan logic executes after the main logic executes in
Prescan mode. Use the prescan logic to initialize tag values before execution.
For example, set a PID instruction to Manual mode with a 0% output before its
first execution.
When an Add-On Instruction executes in Prescan mode, any required
parameters have their data passed.
• Values are passed to Input parameters from their arguments in the
instruction call.
• Values are passed out of Output parameters to their arguments defined
in the instruction call.
40Rockwell Automation Publication 1756-RM094K-EN-P - October 2020
Logic ExecutionChapter 4
Controller Postscan of
SFC Logic
SFCs support an automatic reset option that performs a postscan of the actions
that are associated with a step once a transition indicates that the step is
completed. Also, every Jump to Subroutine (JSR) instruction causes the
controller to postscan the called routine. During this postscan:
• Output energize (OTE) instructions are turned off and non-retentive
timers are reset.
• In structured text code, use the bracketed assignment operator ([:=]) to
have tags reset.
• In structured text code, use the non-bracketed assignment operator (:=)
to have tags that are left in their last state.
• Selected array faults, that is, 4/20 and 4/83, can be suppressed. When
the fault is suppressed, the controller uses an internal fault handler to
clear it. Clearing the fault causes the postscan process to skip the
instruction containing the fault and continue with the next instruction.
This occurs only when SFC instructions are configured for automatic
reset.
Add-On Instruction Postscan Logic
When an Add-On Instruction is called by logic in an SFC Action and the
Automatic Reset option is set, the Add-On Instruction executes in Postscan
mode. An Add-On Instruction postscan routine executes after the main logic
executes in Postscan mode. Use the postscan logic to reset internal states and
status values or to disable instruction outputs when the SFC action completes.
Rockwell Automation Publication 1756-RM094K-EN-P - October 202041
Chapter 4Logic Execu tion
Timer Execution
Timers in the controllers store off a portion of the real-time clock each time
they are scanned. The next time through, they compare this stored value
against the current clock and then adjust the ACC value by the difference.
The controller uses native 32-bit data, so there is more space to store the time.
The timer stores 22 bits at 1 ms/bit, which equates to 69.905 minutes
(2**22 / 1000 ms per second / 60 seconds per minute) of padding before a
timer overlaps.
If program execution skips timers, it appears as if the timers pause. Actually, the
timers are overrunning themselves. Depending on when the timer logic next
executes, the lost time varies ranges from 0…69.905 minutes.
Program execution can skip executing timers due to the following:
• Subroutine not being called
•Jumping over code
•SFC action
• Inactive SFC step
• Event or periodic task not executing
• Equipment phase state routines
SFC Step Timer Execution
An SFC step timer stores the clock time each time the step executes. On
subsequent scans of the step, the controller compares the current clock time
with the last scan and updates the step timer’s ACC by the difference.
When you pause an SFC and then release the SFC, the step timer jumps
forward by the duration of the pause. If you want a step timer to remain at its
position during a pause:
• Latch a recovery bit when the chart pause is released.
• Add an action to the step to store the step timer’s.ACC value and restore
that value when the pause recovery bit is set.
42Rockwell Automation Publication 1756-RM094K-EN-P - October 2020
Logic ExecutionChapter 4
Edit an SFC Online
When you edit an SFC online, the software initially makes the changes in the
offline project. When you accept the changes, they are downloaded to the
controller. If you transition the controller to test or untest edits, the controller
resets the SFC and starts execution at the initial step. If you edit an SFC online,
do the following:
• Plan when you test or untest edits to coincide with the SFC executing
the initial step.
• Place structured text logic in subroutines to minimize the impact of
online edits.
• Use an SFR instruction to shift SFC execution to the desired step
programmatically.
In some cases, this can result in the SFC being out of sync with the equipment.
Program logic in the initial step to check the last state and use an SFR
instruction to change to the appropriate step, if needed. One method is to set
an index number in an action of each step. Then when the restart occurs, use
the SFR instruction to jump to appropriate step based on the index value.
As of firmware revision 18, the following online edits to an SFC no longer reset
the SFC to the initial step:
• Modified structured text in actions and transitions
• Physically moved steps, actions, and transitions on SFC sheets without
changing the wiring
• Added, deleted, or modified text and description boxes
• Modified indicator tags
Rockwell Automation Publication 1756-RM094K-EN-P - October 202043
Chapter 4Logic Execu tion
Notes:
44Rockwell Automation Publication 1756-RM094K-EN-P - October 2020
Chapter 5
Modular Programming Techniques
Modular programming guidelines support the delivery of standardized
programming structures, conventions, configurations, and strategies. The goal
of modular programming is to provide consistency.
• Faster and easier development of application software
• Faster and easier testing of application software
• More reliable application software
• Improved maintenance and operation of application software
• Improved interoperability with other equipment and systems
This chapter applies to these controllers, and where applicable, the controllers
are known as:
Controller FamilyIncludes these controllers
5580 controllersControlLogix® 5580 and GuardLogix® 5580 controllers
5380 controllersCompactLogix™ 5380 and Compact GuardLogix 5380 controllers
5570 controllersControlLogix 5570 and GuardLogix 5570 controllers
5370 controllersCompactLogix 5370 and Compact GuardLogix 5370 controllers
5480 ControllersCompactLogix 5480 Controllers
Rockwell Automation Publication 1756-RM094K-EN-P - October 202045
Chapter 5Modular Programming Techniques
Guidelines for Code Reuse
GuidelineDescription
Use user-defined data types (UDTs) to group data.Within a UDT:
Use Add-On Instructions to create standardized modules
of code for reuse across a project.
Use program parameters to share data between
programs.
Use partial import/export programs, routines, Add-On
Instructions, and code segments to create libraries of
reusable code.
Use subroutines to reuse code within a program.Subroutines:
• You can mix data types.
• The tag names that you assign self-document the structure.
Use an Add-On Instruction to:
• Encapsulate specific or focused operations, such as a Motor or Valve action. A Conveyor or Tank action is better
managed as a routine.
• Create extensions to the base controller instructions. For example, create an Add-On Instruc tion to execute an
SLC™ 500 or PLC controller instruction not available in the Logix 5000™ controllers.
• Encapsulate an instruction from one language for use in another language. For example, create a function block
PIDE instruction for use in relay ladder.
Program parameters:
• Are publicly accessible outside of the program.
• Support external HMI external access on an individual basis for each parameter.
Direct access lets the user reference program parameters in logic without configuring parameters in the local
program. For example, if Program A has an output parameter that is called Tank_Level, Program B can reference the
Tank_Level parameter in logic without creating a corresponding parameter to connect to Program A.
Partial import and export of routines and programs:
• Provides more control over the scope of what is extracted from the project.
• Provides reusable code for la rger machine, cell, or unit control.
• Promotes collaboration between multiple engineers, code standardization, and reuse.
The export .L5X file includes all per tinent information, including program configuration, code, user-defined data
types, tags, and descriptions, in an XML-formatted, ASCII text file. Use partial import/export to:
• Distribute code separately from the project .ACD file.
• Edit and create programs and routines by using other editing tools.
• Can be created and used in standard and safety applications.
• Pass User-Defined Structures (UDT).
• Pass all input and output Parameters by value.
• Subroutines require the most overhead to pass parameters when called.
• Can only be called from within the program they reside.
46Rockwell Automation Publication 1756-RM094K-EN-P - October 2020
Modular Programming TechniquesChapter 5
Area/Unit + TypeController Name:
Mixing:ControlLogix
Project in controller Mixing_CLX,
Major Revision 1, Minor Revision 02
Application Name:
Mixing_CLX_C2_092.ACD
Interprocessor communication tagIPC_
Input tagI_
Output tagO_
Remote I/O tagRIO_
Control module class tagDevice ID_
Equipment module class tagEM_
Equipment phase class tagEP_
Naming Conventions
The following conventions are guidelines to help make an engineering library
more reusable by other developers. These guidelines also help the resulting
applications have a more consistent look and feel.
• Names that are meaningful (and readable) to people who use the
application as a later date are most effective.
• Names use controller memory and have limited length, so keep them
short by using abbreviations and acronyms. Use mixed case rather than
underscore characters to indicate words.
• When you use acronyms, use those that are common or provided by
industry standards.
Names for controller logic components must follow these guidelines.
• The name must start with a letter, either upper or lower case
• The name can contain as many as 40 characters; any mix of upper case
letter, lower case letters, numbers, and underscore characters
• Case is not significant. The controller interprets Mix_Tank the same
and mix_tank. However, the software displays the case as entered
• Underscores are significant. The controller interprets AB_CD as unique
from A_BCD
• You cannot have two or more underscore characters in a row
• The name cannot end with an underscore.
Component NameRecommendations
ControllerAre a, unit, or units the controlle r controls, underscore, t ype of control ler
Controller projectController name, the letter C, 1-digit major revision number, underscore, 2-digit minor revision number
TagPrefix with the abbreviation of the type of tag
Example:
Example:
Increment the minor revision number for any documented engineering change according to the code in the controller
(for example, the code for minor process or equipment changes).
Increment the major revision number for any documented engineering change according to the code in the controller
that implements a design change (for example, code that enhances or reduces controller functionality).
Examples:
Rockwell Automation Publication 1756-RM094K-EN-P - October 202047
Chapter 5Modular Programming Techniques
Analog inputAI
Analog outputAO
Discrete inputDI
Discrete outputDO
Analog input/output combinationAIO
Discrete input/output combinationDIO
Analog/discrete input/output combinationADIO
Serial dataSIO
Motion dataMIO
DeviceNet® dataDNET
EtherNet/IP™ dataENET
ControlNe t®CNET
Mixer123 Controller, Local chassis, Slot 4, Analog
Output
Module Name: M123_CLX_L00_S04_AO
Mixer123 Controller, Local chassis, Slot 12,
Discrete Output
Module Name: M123_CLX_L00_S12_DO
Mixer123 Controller, Remote chassis #1, Slot 1,
Analog Input
Module Name: M123_CLX_R01_S01_AI
Mixer123 Controller, Remote chassis #1, Slot 2,
Analog Output
Mixer123 Controller, Local chassis, Slot 5,
Remote I/O
Module Name: M123_CLX _R02_S06_RIO
Component NameRecommendations
I/O or communication moduleController name, underscore, abbreviation of rack location (L=local, R=remote), underscore, the letter S, 2-digit slot
number, underscore, abbreviation of function
Example Functions:
48Rockwell Automation Publication 1756-RM094K-EN-P - October 2020
Examples:
Modular Programming TechniquesChapter 5
Parameter Name Prefixes
Programming structures, such as Add-On Instructions and programs support
parameters for passing values. The convention for prefixes is to abbreviate the
function of the parameter to three letters and an underscore, followed by
additional text to clarify the specific function.
Parameter FunctionPrefixDescription
CommandCmd_Designates a command input, either from the operator via the HMI or from the program.
Examples:
• Cmd_Reset: Clear faults and reset the process
• Cmd_JogServo: Jog a servo axis
• Cmd_FillTank: Fill a tank with a liquid
ConfigurationCfg_Designates a configuration value for the structure. Enter from the HMI or as part of a recipe.
Examples:
• Cfg_JogDirection: Selects the direction a servo jogs: 0=Positive, 1=Negative
• Cfg_BulkFill: Selects the fill rate to use: 0=Slow Rate, 1=Fast Rate
• Cfg_UserUnits: Selects the measure of volume to use: 0=mm, 1=m, 2=gal
StatusSts_Status of the process within the structure.
Examples:
• Sts_Alarm: An alarm condition (such as a HI/LOW alarm) exists within the process
• Sts_ER: An error with an instruction execution within the process has been detected
• Sts_IndexComplete: The servo index move within the process has completed
• Sts_FillInProcess: The tank filling process is underway
ErrorErr_If the Sts_ER bit is on, the Err_ parameter indicates the actual error. This can be either a bit level or value level indication.
AlarmAlm_If the Sts_Alm bit is on, the Alm_ parameter indicates which alarm is occurring. This can be either a bit-level or value -
InputInp_ Real-time data used to drive the process. Designates a connection either to a real input point, a control device, or to dat a
OutputOut_Real-time data driven from the process. Designates a connection to a real output point, a control device, or to data sent
ReferenceRef_ Complex data structures that combine input and output data.These structures pass data into a structure, where some
• Bit level error recording supports multiple errors simultaneously, but can require a large number of indicators to
support all error states.
• Value-based error annunciation supports a large quantity of errors within one indicator. However, this approach
requires that errors are annunciated one at a time.
Examples:
• Err_Value: A nonzero value indicates an error condition
• Err_PCamCalcFault: Indicates that an error has occurred in an MCCP
level indication.
• Bit-level alarming supports multiple alarms simultaneously, but can require a large number of indicators to support
all alarm states.
• Value-based alarm annunciation supports a large quantity of alarms within one indicator. However, this approach
requires alarms to be annunciated one at a time.
Examples:
• Alm_Value: A nonzero value indicates an alarm condition
• Alm_TankHI: Indicates that a HI level condition has been detected within a tank
received from other processes.
Examples:
• Inp_ServoPosition: Variable providing the input value for a position of a servo
• Inp_ServoRegistrationPosition: Input of the registration position of the servo
• Inp_InterlockOK: Input indicating external interlocks are met
• Inp_TankLevel: Variable providing the analog input for a tank’ level
• Inp_TankLevelFillRate
to other processes.
Examples:
• Out_GlueGun1: Output signal to turn of Glue Gun 1
• Out_ServoCorrectionDistance: Output of a ser vo registration correction distance
• Out_OverflowValve: Output signal to open the Overflow Valve
• Out_TankLevelError: Output of a difference between target and actual fill level of a tank
process is performed. The results are then loaded back into the structure to be passed out of Add-On Instruction for use
elsewhere.
Example:
Ref_PositionCamRecovery: Provides the data set for calculating a Position Cam with all offsets factored in, and the
resulting Position Cam Profile to run in an MAPC instruction
Rockwell Automation Publication 1756-RM094K-EN-P - October 202049
Chapter 5Modular Programming Techniques
Parameter FunctionPrefixDescription
Parameter Par_ Variables that are received from an external source that can be internal or external to the program.
Examples:
• Par_MachineSpeed: Provides a machine's running speed
• Par_TargetFillLevel: Provides a tank's target fill level
Set pointSet_ Variables received from an operator or HMI and are not part of an external source.
Examples:
• Set_MachineMaxSpeed: Provides the setting for a machine's maximum permissible speed
• Set_TankHILevel: Provides the setting for a tank's HI alarm limit
ValueVal_Designates a value that might not be the primary output of the structure.
ReportRpt_Designates a value that is typically used for reporting.
InformationInf_Non-functional data such as a revision level or name for displaying a faceplate.
ReadyRdy_Command-ready bits that are typically Booleans calculated inside the control routines to reflect whether the routine let
Program Command
(optional)
Operator Command
(optional)
PCmd_Command input for commands typically issued by the application program.
OCmd_Command input for commands typically issued by the operator via the HMI.
states change commands. Used with HMI faceplates to enable or disable command buttons.
Examples:
• PCmd_ProgReq - Request for Program Mode made by the application (as opposed to Cmd_ProgProgReq)
• PCmd_AutoReq - Request for Auto Mode made by the application (as opposed to Cmd_ProgAutoReq)
Examples:
• OCmd_ProgReq - Request for Program Mode made by the operator (as opposed to Cmd_OperProgReq)
• OCmd_AutoReq - Request for Auto Mode made by the operator (as opposed to Cmd_OperAutoReq)
Guidelines for Subroutines
GuidelineDescription
Input and Return parameters depend on the
subroutine logic.
Pass complete timers in and out of subroutines.If a subroutine needs a timer, pass the complete timer tag to the subroutine as an input and return the complete timer
Create a user-defined tag to pass large numbers Input
and Output parameters
Data types must matchFor each parameter in an SBR or RET instruction, use the same data type (including any array dimensions) as the
Follow these parameter guidelines for subroutines.
If the subroutine needs to know the previous state of any Return parameters (the values are used elsewhere in the
project), these values should also be Input parameters:
• If the subroutine contains latch/unlatch logic (holding circuits), intended outputs of the subroutine should be passed
into and returned from the subroutine.
• If the subroutine does not contain latch/unlatch logic, intended outputs of the subroutine only need to be returned
from the subroutine.
tag as an output. Store the timer in a buffer tag outside of the subroutine.
Create and pass a UDT if you have several Input and Output parameters to save on execution time. The more parameters
that you pass, the fewer nested JSRs you can perform.
corresponding parameter in the JSR instruction. Using different data types can produce unexpected results.
50Rockwell Automation Publication 1756-RM094K-EN-P - October 2020
Modular Programming TechniquesChapter 5
Guidelines for User-defined
Data Types
A UDT lets you organize or group data logically, so that all of the data
associated with a device (such as a pressure transmitter or variable-frequency
drive) can be grouped.
• You can mix data types, such as real or floating point values, counters,
timers, arrays, Booleans, and other UDTs, within one UDT.
• You can copy a UDT from one project to another, and even from one
Logix controller type to another.
• A UDT is self-documenting based on the tag names you assign, and
provides a logical representation of parts or subsystems.
Naming Conventions for User-Defined Data Types
ElementDescription
Prefix_UDT_
UDT nameFunc tion or purpose of the UDT
Examples:
Inventory tracking tagUDT_InventoryTracking
Clean-in-place systemUDT_CIP
Two-state valve control module in control moduleUDT_CMV2S
Water addition in equipment moduleUDT_EM
UDT Member Order
The order in which elements are listed in the UDT can have a significant
impact on memory use if several BOOL, INT, or SINT elements are defined.
Memory is allocated in 4-byte (32-bit) increments, and every DINT, REAL,
STRING, or sub-UDT element always start at the beginning of a 4-byte
boundary.
Rockwell Automation Publication 1756-RM094K-EN-P - October 202051
Chapter 5Modular Programming Techniques
For example, if the first element defined is a BOOL, it uses the first 4 bytes
allocated to the UDT. Other BOOLs can be assigned immediately following
without consuming any more memory, until the first 4 bytes are consumed.
However, if the next element is a DINT, the DINT element allocates another 4
bytes even though the BOOL occupies only a single bit in the first 4 bytes. So
for this example, the 31 bits of memory between the BOOL and the start of
the DINT are allocated but are not accessible.
• UDT memory is allocated in 4-byte increments.
• Elements that occupy 4 bytes or more always start at a 4-byte boundary.
These include DINT, REAL, STRING, any UDT, or any other
complex data structure.
• Elements of smaller data types (BOOL, SINT, or INT) start on the next
byte boundary that matches its size, so that all the data types in the UDT
are fully contained in their respective 4-byte increments. For example,
INT elements start on 2-byte boundaries, SINT elements follow at the
next byte, and BOOL elements in succession occupy consecutive bits
within a byte.
In the following example, the UDT on the left, UDT_Tank, has members
arranged by function without regard for memory usage. This makes sense in
the context of implementation, because members toward the top are ordinarily
used in the software code.
However, the disjointed listing of data types in UDT_Tank consumes 25%
more memory than the example UDT on the right, UDT_TankPacked. In
UDT_TankPacked, the BOOL members are grouped according to their
functionality, with the input BOOLs grouped at the top and the output
BOOLs grouped at the bottom. As a result, the data type size is reduced from
80 bytes to 64 bytes.
52Rockwell Automation Publication 1756-RM094K-EN-P - October 2020
Modular Programming TechniquesChapter 5
For 64 bit data types such as LINT, ULINT, and LREAL, it is necessary for
proper operation that these be aligned on 8 byte boundaries.
The following two examples show how this alignment is accomplished within
UDTs.
Data TypeByte Offset or Size
BOOL0
PAD7
LINT8
Data TypeByte Offset or Size
DINT0
PAD4
LREAL8
Guidelines for Add-On
Instructions
An Add-On Instruction encapsulates commonly used functions or device
controls. It is not intended for use as a high-level hierarchical design tool. Once
an Add-On Instruction is defined in a project, it behaves similarly to the builtin instructions that are already available in the programming software. The
Add-On Instruction appears on the instruction toolbar and in the instruction
browser.
GuidelineDescription
Create Add-On Instructions in relay ladder, function
block diagram, or structured text languages.
An Add-On Instruction supports parameters:
•Input (copied in)
• Output (copied out)
• InOut (passed by reference)
Create and modify offline only.Online operation supports monitoring.
Supports all Add-On Instructions and most built-in instructions. Excludes JSR/SBR/RET, JXR, FOR/BRK (relay ladder), SFR,
SFP, SAR, IOT, and EVENT instructions.
GSV/SSV instructions in an Add-On Instruction cannot reference the Module, Message, Axis, Motion Group, or Coordinate
System class names.
Add-On Instructions support function block, relay ladder, and structured text programming languages. Each of the
Add-On Instruction logic areas can be any language. For example, the main logic can be function block and the prescan
logic can be relay ladder.
You can create safety Add-On Instructions in a safety task.
• For Version 24 and earlier, you are limited to 512 total parameters: Input parameter + Output parameter + local tags
(no limit on the number of InOut parameters)
• For Version 28 and later, you are limited to 40 InOut parameters, but no limit on the number of Input or Output
parameters)
• 2 MB maximum data instance (parameters and locals)
• Alarm, axis, axis group, coordinate system, message, motion group, and produced/consumed tags must exist at the
program or controller scope and passed as an InOut parameter
• Can inc lude references to cont roller-scoped tags, program-scoped tags, and immediate values.
• Input and Output parameters are limited to atomic (BOOL, SINT, INT, DINT, REAL) data types. Use the InOut parameter
for LINT, user-defined, and structure data types.
• DINT data types provide optimal execution.
• Default values of parameters and local tags are used to initialize the data structure when a tag is created of the
instruction’s data type. When an existing parameter or local tag's default value is modified, the existing tag instances
for that instruction are not updated. When a parameter or local tag is added to the instruction definition, the tag's
default value is used in the existing tags.
Modifications to Add-On Instructions are made offline. Make changes once to the Add-On Instruction definition to affect
all instances.
Rockwell Automation Publication 1756-RM094K-EN-P - October 202053
Chapter 5Modular Programming Techniques
GuidelineDescription
An Add-On Instruction executes like a routine.A task with a higher execution priority can interrupt an Add-On Instruction. Use a UID/UIE instruction pair to make sure
The code within an Add-On Instruction can access
data that is specified only via parameters or defined as
local.
Use optional Scan mode logic to set up, initialize, or
reset the Add-On Instruction code.
Apply code signatures to Add-On Instructions for
revision control.
an Add-On Instruction’s execution is not interrupted by a higher priority task.
If you have many parameters or specialized options, consider multiple Add-On Instructions
Calling many Add-On Instructions impacts scan time
Copy the local data to a parameter if you want to programmatically access it outside of an Add-On Instruction.
An Add-On Instruction can have logic along with the main logic for the instruction.
• Prescan logic executes on controller startup.
• Postscan logic executes on SFC Automatic reset.
• EnableInFalse logic executes when rung condition is false.
Add-On Instructions can be sealed with a code signature. Use the code signature for revision control and to identify any
changes. For safety controllers, the signature can be used to get TÜV certification for a safety Add-On Instruction. For
more information, see the Logix 5000 Controllers Add-On Instructions Programming Manual, publication 1756-PM010.
54Rockwell Automation Publication 1756-RM094K-EN-P - October 2020
Add-On Instruction Design Concepts
PCam profile displayPCamProfileDisplay
PCam profile displayPCamProfileDisplay_AOI
To be sure that specific data is passed into or out of the Add-On Instruction,
use a required parameter. A required parameter must be passed as an argument
in order for a call to the instruction for verification. To pass a required
parameter in ladder diagrams and in structured text, specify an argument tag
for the parameter.
• In a function block diagram, required Input parameters and Output
parameters must be wired.
• In a ladder diagram, InOut parameters must have an argument tag.
• If a required parameter lacks an associated argument, the routine that
contains the call to the Add-On Instruction does not verify.
Naming Conventions for Add-On Instructions
Component NameRecommendations
Add-On InstructionStart with the application name.
Add a variant name, is applicable.
Capitalize the first letter in all words in the name.
Example:
Modular Programming TechniquesChapter 5
Suffix with underscore AOI, if space permits.
Example:
Comparison of Subroutines and Add-On Instructions
ComparisonSubroutineAdd-On Instructions
Accessibility Within program (multiple copies)Anywhere in controller (single copy)
ParametersPass by valuePass by value or reference via InOut
Numeric parametersNo conversion, you must manageAutomatic data type conversion for Input and Output parameters
InOut parameters must match declared type exactly
Parameters data types
Parameter che cking
Data encapsulationAll data at program or controller scope (accessible to anything)Local data is isolated (only accessible within instruction)
Monitor/debug
Supported programming languages
Callable fromFBD, LD, SFC, STFBD, LD, SFC, ST
ProtectionLocked and View OnlyLocked and View Only
LogicAny program, equipment phase, routine, Add-On Instruction, or user-
defined data type in the project can be imported/expor ted via .L5X file.
Controller accessibilityImpor t on-line with a running controller:
• Add programs, routines, and Add-On Instructions
• Existing programs and routines can be replaced
• Create tags and UDTs
• Name collisions are detected automatically and you are prompted to
rename or bind to existing components
• The data values in the controller are maintained and new tags have their
values initialized from the import file
Logic checkingYou resolve conflicts on import.The software verifies the components that you add to Add-On
DataEditing member definitions of an Add-On Instruction maintains the values
that are assigned to the parameters when:
• Inserting, adding, or deleting members
• Rearranging (moving) members
• Renaming members
• Changing the data types of members
Values for members that are both renamed and moved in the same
operation are not to be maintained.
Create once (single copy) and use anywhere in the same
controller project.
Existing Add-On Instructions can only be edited offline.
New Add-On Instructions can be created online or offline.
Instruction as you create it.
Local data is isolated (only accessible within the instruction).
56Rockwell Automation Publication 1756-RM094K-EN-P - October 2020
Modular Programming TechniquesChapter 5
Guidelines for Program
Parameters
Program parameters define a data interface for programs to facilitate data
sharing. Data sharing between programs can be achieved either through
pre-defined connections between parameters or directly through a special
notation. Unlike local tags, all program parameters are publicly accessible
outside of the program. Additionally, HMI external access can be specified on
individual basis for each parameter.
Standard (non-Safety) parameters can be created, edited, and deleted while
online with the controller. The following exceptions apply:
• Parameters cannot be deleted while online if they are connected/bound
to other parameters, or if the control logic references them.
• InOut parameters cannot be deleted while online
• InOut bindings can only be changed online through a Partial Import
Online (PIO) operation
A safety parameter cannot be connected with or bound to a standard
parameter or controller-scoped tag. A safety connection cannot be created,
modified, or deleted in a safety-locked project. Input, Output, and Public
parameters support the External Access attribute. InOut parameters do not.
Program Parameter Description
Input• Input parameters (including members) can only support ONE connection. Only one source can be delivering the value to the input parameter.
Output• Output parameters (including members) can support multiple connections. For example, lets assume you have a BOOL input parameter in
InOut• InOut parameters can only support ONE connection. You cannot configure connections to any member of an InOut parameter.
Public• Public parameters can support MULTIPLE connections. You can configure connections to the base Public parameter or any member of a Public
• Input Parameter values are refreshed before each scan of a program. The values do not change during the logic execution so you do not need to
write code to buffer inputs.
• A program can write to its own input parameters.
• Data values for Output parameters that are connected to controller scope tags or Public parameters are copied after the scan o f a program. In a
project with multiple tasks, the data copy for a parameter that is of type BOOL, SINT, INT, DINT, LINT, or REAL will not be interrupted. A task
switch can interrupt the data copy from an Output parameter to a controller scope tag or Public parameter, or any other predefined or userdefined data type.
Program A and Program B named Input1a and Input1b. You can connect an output parameter in Program C to Input1a AND Input1b. As stated
earlier, this is often referred to as fanning.
• Output Parameter values are refreshed AFTER each scan of a program. Updated output parameter values are NOT available to the parameters
connected to that output parameter until the program execution is complete.
• Output parameters that are connected to Public parameters or controller scope tags are copied (pushed) at the end of the program execution.
• An Output parameter can ONLY be connected to an InOut parameter if both the Output and InOut parameters are configured as Constants.
• InOut parameters are passed by REFERENCE, which means they simply point to the base tag. In other words, when an InOut parameter is used
in logic, the current value of the parameter that is connected to the InOut Parameter is used.
• An InOut parameter can ONLY be connected to an Output parameter if both the Output and InOut parameters are configured as Constants. See
the tool tip for Output Parameters for a more detailed explanation.
• InOut parameters CANNOT be changed online, unless using the Partial Import Online (PIO).
parameter. This includes User-Defined Structures.
• Public parameters are updated when the source is updated. In other words, when a Public parameter value updates, it is immediately available
to any higher priority tasks that are connected to that parameter.
• Public parameters can be aliased to Controller Scope Tags. If this functionality is desired, remember that the alias update is asynchronous to
program execution. The public parameter contains the real-time value of the controller scope tag.
Rockwell Automation Publication 1756-RM094K-EN-P - October 202057
Chapter 5Modular Programming Techniques
Comparison of Program Parameters and Add-On Instructions
ComparisonProgram ParametersAdd-On Instructions
Accessibility Within program (multiple copies)Anywhere in controller (single copy)
ParametersInput / Output (pass by value), InOut (pass by reference), Public (pass
Numeric parameters• Automatic data type conversion for Input and Output parameters
Parameters data types
Parameter che cking
Data encapsulationAll data at program or controller scope (accessible to anything).
Execution performance• Programs can talk directly and exchange data between them.
Memory useCompact. One Public parameters can be connected or bound to
Edit
by value)
• InOut parameters must match declared type exactly
Atomic, strings, arrays, structures• Atomic data types as In or Out parameters
None, user must manageVerification checks
Programs can talk directly and exchange data between them. Local
tags remain private to the Program. Cannot access Local Tags, only
the parameters.
Online editable.Logic that is animated with data from one calling instance
FBD, LD, SFC, STFBD, LD, ST
• InOut passed by reference
multiple Input, Output or InOut parameters to form a shared memory
space.
Online editable, and supports sub- element connections. Copy / Paste
Programs without disturbing parameter configuration.
Input / Output (pass by value), InOut (pass by reference)
• Automatic data type conversion for Input and Output parameters
• InOut parameters must match declared type exactly
• LINT, user-defined, and structure data types as InOut parameters
Local data is isolated (only accessible within instruction)
line, extended help
• Call is more efficient
• InOut passed by reference
• Call requires more memory
• All refe rences need additional memo ry
Code modifications are limited to offline in the project file and require
a new download
Data values associated can be modified online and offline
Compare Controller
Organizer and Logical
The Controller Organizer presents program logic how the controller executes
the logic. The Logical Organizer is configurable to present program logic how
the user views the system.
Organizer
58Rockwell Automation Publication 1756-RM094K-EN-P - October 2020
Chapter 6
Structure Logic According to Standards
The ANSI/ISA-88.01-1995 (R2006) standard is the most recognized and
broadly adopted standard for modular equipment control. Complementing
ISA-88.01 is the ISA-TR88.00.02 technical report, which is also known as
PackML. The ISA-TR88.00.02 technical report comes from the Organization
for Machine Automation and Control (OMAC). The OMAC provides
examples of how to apply ISA-88.01 in discrete manufacturing segments.
ISA refers to the International Society of Automation, an ANSI recognized
Standards Development Organization (SDO).
• ISA-88 refers to a specific set of ISA standards, of which ISA88.01 is
asubset.
• SP88 refers to the ISA working member group responsible for the creation
and publication of the ISA-88 standards.
ISA-88 provides these models to define and understand the automation control
requirements for manufacturing plants.
ModelDescription
PhysicalThe physical model (also known as the equipment model) describes a hierarchical organization of equipment and the
ProceduralThe procedural model describes a multi-tiered, hierarchical model that defines the process capability and automation
basic control capabilities that are associated with that organization. The physical model is a representation of the
equipment in the plant that makes the product.
control in relation to the Physical Model to perform a task. The procedural model is a representation of how to use the
equipment (described in the physical model) to make the product.
Rockwell Automation Publication 1756-RM094K-EN-P - October 202059
Chapter 6Structure Logic According to Standards
Enterprise
Site
Area
Process Cell
Unit
Equipme nt
Module
Control
Module
Control
Module
Control
Module
Control
Module
Control
Module
Control
Module
Control
Module
Control
Module
Equipme nt
Module
Equipme nt
Module
Physical Model
The physical model (also known as the equipment model) describes a
hierarchical organization of equipment and the basic control capabilities that are
associated with that organization. The physical model is a representation of the
equipment in the plant that is used to make the product.
The physical model defines the automation components within a given
environment, and determines modular areas and component interactions.
The physical model shows that an enterprise can contain multiple sites, and a site
can contain multiple areas, down to the equipment modules and control modules
Physical Model ComponentDescription
EnterpriseThe company that owns the facilities.
SiteThe location of one facility.
Process cellA collection of one or more units that are linked together to perform a task or multiple tasks of the process for one or more
60Rockwell Automation Publication 1756-RM094K-EN-P - October 2020
that carry out the manufacturing process
products in a defined sequence. A process cell contains the units, equipment modules, and control modules that are
needed to make one or more batches.
Structure Logic According to StandardsChapter 6
Physical Model ComponentDescription
Unit (or machine)A collection of related equipment modules and control modules that execute one or more processing activities. The unit
Equipment moduleA functional group of control modules, equipment modules, or both that execute a finite number of activities. The
Control moduleControl module: A regulating device, state-oriented device, or combination thereof (typically, a collection of sensors,
corresponds to the logical grouping of mechanical and electrical assemblies that historically has been called a machine.
The term unit can apply to either a single -function machine or a multi-functional machine.
primary purpose of control in an equipment module is to coordinate the functions of other equipment modules and
lower-level control modules. A process cell, unit, operator, or another equipment module can command an equipment
module.
An equipment module can be part of A unit, or a standalone equipment group can include an equipment module in a
process cell. If engineered as a standalone equipment grouping, an equipment module can be an exclusive-use resource
or a shared-use resource. The equipment module combines all necessary physical processing and control equipment that
is required to perform the manufacturing process. The finite tasks that an equipment module is designed to carry out
defines the scope of the equipment module.
The terms control module and equipment module apply to the physical equipment as well as to the equipment entity.
The following are examples of equipment modules.
• A valve matrix used for material transfer between units (shared resource of process cell)
• A level control for a tank (equipment module within a specific unit)
• A vertical form-fill-seal machine’s ‘sealing jaws control’ (equipment module within a discrete unit)
actuators, and other control modules) that is operated as a single device. Control that is normally found at this level
directly manipulates actuators and other control modules. A control module can direct commands to other control
modules, or to actuators that have been configured as part of the control module. Control of the process is affected
through the equipment-specific manipulation of control modules and actuators. The control module is the lowest level
grouping of equipment in the physical model that can carry out basic control.
The following are examples of control modules.
• An individual sensor or actuator
• A state-oriented device that consists of an on/off automatic block valve with position feedback switches and that is
operated via the set point of the device
• A header that contains several on/off automatic block valves that coordinates the valves to direct flow to one or
several destinations based on the set point directed to the header CM
• A servo-controlled electronic gear or cam function (that is, a discrete unit), including its interlock and permissives.
The following are typical control modules in a programming library:.
• Analog output
• Analog input with scaling and alarms
• Reversing motor
• Variable speed drive
• Solenoid-operated 2-state valve
• Motor-operated 2-state valve
• PID with standard modes and deviation alarms
Rockwell Automation Publication 1756-RM094K-EN-P - October 202061
Chapter 6Structure Logic According to Standards
Equipment Modules
Control Modules
Process Cell
Physical Model
Unit
Site: My SiteSite Name: M
Area: Manufacturing Building (102)Area Name: M102
Separate a Process Unit into Equipment Modules and Control
Modules
To create a modular control program, start with one of these approaches.
• Identify the control modules in the process. Then group the control
modules into equipment modules to be supervised and coordinated by
procedural controls.
• Determine the units (typically vessels containing a single batch at a time).
Then determine the equipment modules (such as ingredient addition
equipment, agitating equipment, thermal jacket temperature control
equipment, and transfer out equipment) by reviewing the related
equipment, piping, and instrumentation on a process and instrumentation
diagram (P&ID). Then determine the control modules that are related to
the equipment states that must be controlled (such as motors, valves, or
other process control loops).
One way to organize application logic in the Controller Organizer is to create a
separate folder for each unit.
Component NameRecommendations
SiteShor t, preferably single character abbreviation, all upper case, of the formal name of the site
AreaBuilding number prefixed by a site name, but with no separating underscore
62Rockwell Automation Publication 1756-RM094K-EN-P - October 2020
Physical Model Naming Conventions
Example:
Example:
Component NameRecommendations
Cell: MixingCell Name: A102_MIX_123
Unit Class: Mix TankUnit Name: (Machine)
Unit Class: PackerUnit Name: UN_Pckr
Unit Instance: Mix Tank 1234Unit Name: A102_MT1234
EM Instance: Mix Tank 1234 Vessel AgitatorEM Name: MT1234_EM_Agitate
EM Instance: Packager 1234 Bag FormingEM Name: PKR1234_EM_BagForming
CM Class: PID Control LoopCM Name: CM_PID
CM Class: CylinderCM Name: CM_Cylndr
CM Instance: Temperature Controller 01CM Name: TC_01
CM Instance: Cylinder 01CM Name: CY01
CellTwo- to three-character abbreviation of the formal name of the cell
Prefix with an area name and a single underscore (optional)
Example:
UnitIn a unit class, prefix the unit name with UN and an underscore
Example:
In a unit instance, use the unit identification from the piping and instrumentation diagram (P&ID)
All uppercase letters; use underscored instead of dashes
Prefix the unit name with the area name, separated from the unit name by a single underscore
Example:
In a unit program instance, add the unit identifier between the area name and the unit name
Example:
Structure Logic According to StandardsChapter 6
In a unit tag instance, prefix the tag with the unit name
Example:
Equipment moduleArea name, underscore, letters EM, underscore, function abbreviation
All uppercase letters
Example:
Control ModuleIn a control module class, prefix the name with CM and an underscore
Example:
In a control module instance, use all uppercase letters
Area name, underscore, unit name, underscore, instrument name, loop sequence number
Example:
Rockwell Automation Publication 1756-RM094K-EN-P - October 202063
Chapter 6Structure Logic According to Standards
Phase
Operation
Unit
Procedure
Process
Cell
Equipme nt
Module
Control
Module
Procedural Model
The procedural model describes a multi-tiered, hierarchical model that defines
the process capability and automation control in relation to the physical model to
perform a task. The procedural model is a representation of how to use the
equipment (described in the physical model) to make the product.
The procedural control that is laid out in the procedural model directs the
equipment components, via the component interfaces, to perform the specific
tasks out of the available capabilities, needed to produce a given product.
Procedural Model ComponentDescription
ProcedureThe general strategy for production within a process cell. A procedure is composed of unit procedures.
Unit procedureA production sequence. Unit procedures are composed of operations.
OperationThe single sequence necessary for the initiation, organization, and control of phases. Operations are composed of phases.
PhaseThe lowest level of a procedure that can accomplish an action.
The intent of a phase is to cause or define a process-oriented action, while the set of steps in the phase is equipmentspecific.
• A phase can be subdivided into smaller parts.
• A phase can issue one or more commands or cause one or more actions.
• The execution of a phase can result in additional commands.
Combine the procedural model with the physical model to reflect the hierarchy
of control and equipment, as well as the vertical separation between process
controls and procedural controls.
Not all manufacturing processes require the procedural control to reside in the
physical equipment.
In a distributed or flexible process, procedural control can reside outside the
equipment, in what is called the control recipe. Examples of this type of
manufacturing are large batch systems, material handling systems, or automotive
assembly systems. Use of the control recipe lets manufacturers with different
automation requirements separate procedural control and process control.
64Rockwell Automation Publication 1756-RM094K-EN-P - October 2020
Structure Logic According to StandardsChapter 6
Phase
Operation
Unit
Procedure
Procedure
Equipme nt
Module
Equipme nt
Module
Control
Module
Procedural Control
Procedural Control
in Equipment
Process Control
Equipment Control
Equipment Modules
Control Modules
Process Cell
Physical Model
Unit
Procedural Model
Phases
The procedural control is where distributed and flexible control occurs, and
where the need arises for a separation from process control.
Identify Operations and Phases
One way to organize application logic in the Controller Organizer is to add the
procedural model as a separate folder of phases.
Rockwell Automation Publication 1756-RM094K-EN-P - October 202065
Chapter 6Structure Logic According to Standards
Procedural Control Modes
A control mode determines how equipment entities and procedural elements
respond to commands and how they operate. The mode determines how the
procedure progresses and who can affect that progression. For example, in a
control module that contains basic control functions, such as an automatic block
valve, the mode determines what drives the valve position and who can
manipulate the position.
The ISA-88 standard defines the following modes.
Control ModeBehaviorCommand
Automatic
(procedural)
Automatic
(basic control)
Semi-Automatic
(procedural)
Manual
(procedural)
Manual
(basic control)
Transitions within a procedure are conducted without
interruption as appropriate conditions are met.
Equipment entities are manipulated by their control
algorithm.
Transitions within a procedure are conducted on manual
commands as appropriate conditions are fulfilled.
Procedural elements within a procedure are executed in
the order that is specified by an operator.
Equipment entities are not manipulated by their control
algorithm.
Operators can pause the progression, but can not force
transitions.
Equipment entities cannot be m anipulated directly by the
operator.
Operators can pause the progression or redirect the
execution to an appropriate point.Transitions cannot be
forced.
Operators can pause the progression or force transitions.
Equipment entities can be manipulated directly by the
operator.
Procedural Control States
The ISA-88 standard defines the following states.
Control StateDescription
IdleThe procedural element is waiting for a Start command to cause a transition to the Running
state.
RunningThe procedural element is operating normally.
CompleteThe procedural element has run to completion and is now waiting for a reset command that
prompts a transition to Idle.
PausingThe procedural element or equipment entity received a Pause command. This causes the
procedural element to stop at the next defined safe or stable stop location in its normal
Running logic.
Once the procedural element has stopped, the procedural element automatically transitions
from Pausi ng to Paus ed.
PausedOnce the procedural element is paused at a defined stop location, it transitions from a
Pausi ng to Paused. The Paus ed state is us ually used for short-term pauses. A Resume
command starts a transition to the Running state, and the procedural element resumes
normal operation immediately following the defined stop location.
HoldingThe procedural element received a Hold command and is executing its Holding logic to put
the procedural element or equipment entity into a known state. If no sequencing is required,
then the procedural element or equipment entity transitions immediately to the Held state.
HeldThe procedural element completed its Holding logic and proceeded to the Held state. This
state is usually used for a long-term stop. The procedural element or equipment entity waits
for a further command to proceed.
RestartingThe procedural element receives a Restart command while in the Held state and executes its
restart logic to return to the Running state.
If no sequencing is required, then the procedural element or equipment entity transitions
immediately to the Running state.
StoppingThe procedural element received a Stop command and is executing its Stopping logic that
facilitates a controlled normal stop.
If no sequencing is required, then the procedural element or equipment entity transitions
immediately to the Stopped state.
66Rockwell Automation Publication 1756-RM094K-EN-P - October 2020
Structure Logic According to StandardsChapter 6
Control StateDescription
StoppedThe procedural element or equipment entity completed its Stopping logic and waits for a
AbortingThe procedural element received an Abort command and is executing its Abort logic that is
AbortedThe procedural element completed its Aborting logic and waits for a Reset command to
Reset command to transition to an Idle state.
the logic that facilitates a quicker, but not necessarily controlled, abnormal stop.
If no sequencing is required, then the procedural element transitions immediately to the
Aborted state.
transition to the Idle state.
Procedural Control
The ISA-88 standard defines the following commands.
Commands
CommandDescriptionValid States
StartOrders the procedural element to begin executing the normal Running logic.Idle
StopOrders the procedural element to execute the Stopping logic.Running
Paus ing
Paus ed
Holding
Held
Restarting
HoldOrders the procedural element to execute the Holding logic.Running
Paus ing
Paus ed
Restarting
RestartOrders the procedural element to execute the Restarting logic to safely return to the Running state.Held
AbortOrders the procedural element to execute the Aborting logic.Running
Paus ing
Paus ed
Holding
Held
Restarting
Stopping
Stopped
ResetOrders t he procedural element to transition to an Idle state.Complete
Aborted
Stopped
PauseOrders the procedural element to pause at the next programmed pause transition within its
sequencing logic and await a Resume command before proceeding.
ResumeOrders a procedural element that is in th e Paused state, due to either a Pause command or a Single Step
mode, to resume normal operation.
Running
Paus ed
Rockwell Automation Publication 1756-RM094K-EN-P - October 202067
EP Instance: Mix Tank 1234 Vessel AgitatorEP Name: MT1234_EP_Agitate
EP Instance: Packager 1234 Bag FormingEP Name: PKR1234_EP_BagForming
Procedural Model Naming Conventions
Component NameRecommendations
ProcedureUse all upper case letters
Prefix with type of procedure (such as RP for recipe procedure), underscore, abbreviation of procedure
Example:
For a procedure executed in a Logix controller, prefix with area name, underscore, cell name, underscore
Example:
Unit procedureUse all upper case letters
Prefix with UP, underscore, abbreviation of unit procedure
Example:
For a unit procedure executed in a Logix controller, prefix with area name, underscore, unit name, underscore
Example:
OperationUse all upper case letters
Prefix with OP, underscore, abbreviation of operation
Example:
For an operation executed in a Logix controller, prefix with area name, underscore, unit name, underscore
Example:
PhaseUse all uppercase letters
Unit identifier, underscore, function abbreviation, EP, underscore, abbreviation of phase
Example:
68Rockwell Automation Publication 1756-RM094K-EN-P - October 2020
Structure Logic According to StandardsChapter 6
State Model
A state model helps program the equipment in a structured way, which results in
the same behavior in all equipment throughout the plant.
CommandStartStopHoldRestartAbortResetPauseResume
Initial StateNo Command
State
IdleRunningStoppingAborting
RunningCompleteStoppingHoldingAbortingPausing
CompleteIdle
PausingPausedStoppingHoldingAbor ting
PausedStoppingHoldingAbortingRunning
HoldingHeldStoppingRestartingAborting
HeldStoppingHoldingAborting
RestartingRunningStoppingHoldingAborting
StoppingStoppedAborting
StoppedAbortingIdle
AbortingAborted
AbortedIdle
ResettingIdleStoppingAborting
State Transition Matrix
Rockwell Automation Publication 1756-RM094K-EN-P - October 202069
Chapter 6Structure Logic According to Standards
Notes:
70Rockwell Automation Publication 1756-RM094K-EN-P - October 2020
Chapter 7
Produced and Consumed Data
The controllers support the ability to produce (broadcast) and consume
(receive) system-shared tags.
For two controllers to share produced or consumed tags, both controllers must
be in the same backplane or attached to the same control network. You cannot
bridge produced and consumed tags over two networks.
IMPORTANTIMPORTANTThe actual number of produced and consumed tags that you can configure
over ControlNet® or EtherNet/IP™ in a project depends on the connection
limits of the communication module through which you produce or consume
the tags.
For more information on produced and consumed tags, see the Logix 5000
Controllers Produced and Consumed Tags Programming Manual, publication
1756-PM011
.
Rockwell Automation Publication 1756-RM094K-EN-P - October 202071
Chapter 7Produced and Consumed Data
Guidelines for Produced and Consumed Tags
GuidelineDescription
You cannot bridge produced and consumed tags over
different networks.
Create the tag at controller scope.You can only produce and consume (share) controller-scoped tags.
Limit the size of the tag
to 500 bytes.
Combine data that goes to the same controller.If you are producing several tags for the same controller:
The following atomic data types can be directly produced
or consumed:
DINT
UDINT
LINT
ULINT
REAL
LREAL
Data structures can be produced or consumedData structures include user-defined data types (UDT), strings, add-on-defined, predefined, and module-defined
AXIS_CIP_DRIVEUse AXIS_CIP_DRIVE to produce and consume axis data.
The data type in the producer and the consumer must
match.
Produce tags that are based on user-defined structures to
non-Logix devices.
Use a programmatic handshake to help ensure data is
exchanged.
Use a CPS instruction to buffer produced and consumed
data.
Use unicast EtherNet/IP communication to reduce
broadcast network traffic.
Monitoring produced and consumed data.Group produced and consumed tags as members in user-defined structures whose first member is a
Firmware revisionsWhen adding the Producer controller to the I/O configuration list of the Consumer controller, the firmware revision
For two controllers to share produced or consumed tags, both controllers must be attached to the same network. You
can produce and consume tags over ControlNet or EtherNet/IP networks.
If you produce or consume a tag over a network, the tag must be ≤ 480 bytes. Network transfers require 20 bytes of
data overhead.
• Group the data into one or more user-defined structures. This uses fewer connections than producing each
tag separately.
• Group the data according to similar update intervals. To conserve network bandwidth, use a greater RPI for
less critical data.
The listed atomic data types can be produced or consumed individually or in arrays. Other atomic data types
(BOOL,SINT,USINT,INT,UINT) cannot be done individually or in arrays and are required to be part of a data structure to
be produced or consumed.
data structures. Data structures meeting the size requirements can be produced or consumed.
The data type for a produced or consumed tag must be the same in both the producer and the consumer.
The controller produces tags in 32-bit words. For devices that communicate in other word boundaries, such as 16-bit
words, the resulting data in the target device can be misaligned. To help avoid misalignment, structure the produced
data in a user-defined structure.
Produced tags continually transmit based on the RPI, so i t can be difficult to know when new data arri ves. You can set
a bit or increment a counter that is embedded in the produced tag to identify to the consumer that new data is
present. You can also provide a return handshake via a reverse produced/consumed tag, so that the original producer
knows that the consumer received and processed the tag.
Use the CPS instruction to copy the data to the outgoing tag on the producer side. Then use another CPS instruction to
copy the data into a buffer tag on t he consumer side.
The CPS instructions provide data integrity for data structures greater than 32 bits.
Important: The controller inhibits all interrupts while it executes a CPS instruction.
To reduce bandwidth use and preserve network integrity, some facilities block multicast Ethernet packets. You can
configure a produced and consumed tag to use multicast or unicast connections. Unicast connections help with the
following:
• Reduce network bandwidth
• Simplify Ethernet switch configuration
CONNECTION_STATUS type. This technique helps monitor connection status between controllers without increasing
execution time, such as using a GSV instruction to detect status.
does not have to match. However, the rack size and slot number must be correct.
72Rockwell Automation Publication 1756-RM094K-EN-P - October 2020
Guidelines for Produced and Consumed Axis
GuidelineDescription
You can configure a produced and consumed axis
between controllers in a chassis or over an EtherNet/IP
network.
Use a produced and consumed axis to synchronize motion
functions across multiple controllers.
Controllers that support motion support the AXIS_CIP_DRIVE data type for produced and consumed tags.
Synchronize functions such as:
•PCAM
•GEAR
• MDSC moves
• Scheduled outputs
• Registration events
• Position-based interlocks (handshake)
Produced and Consumed DataChapter 7
Guidelines to Specify an RPI
Rate for Produced and
When configuring produced and consumed tags, you specify a requested
packet interval (RPI) rate. The RPI value is the rate at which the controller
attempts to communicate with the module.
Consumed Tags
GuidelineDescription
Make sure that the RPI is equal to or greater than the NUT. You use RSNetWorx™ for ControlNet software to select the network update time (NUT) and the software schedules
RPI of multicast tags• For Studio 5000 Logix Designer® application version 24 and earlier: The smallest (fastest) consumer RPI
the network connections.
RSNetWorx software cannot schedule a ControlNet network if a module and/or produced/consumed tag on the
network has an RPI that is faster than the network update time.
determines the RPI for the produced tag. If multiple consumers request the same tag, the smallest (fastest)
request determines the rate at which the tag is produced for all consumers.
• For Studio 5000 Logix Designer application version 28 and later: the first consumer of a produce tag determines
the RPI at which data is produced. All subsequent consumers must request the same RPI value as the first
consumer. Otherwise, the subsequent consumers fail to connect.
Guidelines to Manage Connections for Produced and Consumed Tags
GuidelineDescription
Minimize the use of produced and consumed tags.To reduce network traffic, minimize the size of produced and consumed tags. Also, minimize the use of produced and
Use arrays or user-defined structures.When sending multiple tags to the same controller, use an array or user-defined structure to consolidate the data. The
Configure the number of consumers accurately.Make sure the number of consumers that are configured for a produced tag is the actual number of controllers that
Multiple produced/consumed connections are linked.If there are multiple produced and consumed connections between two controllers and one connection fails, all
consumed tags to high-speed, deterministic data, such as interlocks.
byte limit of 500 bytes per produced and consumed tag still applies.
consumes the tag. If you set the number higher than the actual number of controllers, you unnecessarily use up
connections.
The default is two consumers per produced tag.
produced and consumed connections fail.
Consider combining all produced and consumed data into one structure or array so that you only need one connection
between the controllers.
Rockwell Automation Publication 1756-RM094K-EN-P - October 202073
Chapter 7Produced and Consumed Data
Configure an Event Task
Based on a Consumed Tag
An event task executes automatically based on a preconfigured event occurring.
One such event can be the arrival of a consumed tag.
• Only one consumed tag can trigger a specific event task.
• Use an IOT instruction in the producing controller to signal the
production of new data.
• When a consumed tag triggers an event task, the event task waits for all
data to arrive before the event task executes.
Compare Messages and Produced/Consumed Tags
MethodBenefitsConsiderations
Read/Write Message• Programmatically initiated
• Communication and network resources that are only used when
needed
• Support automatic fragmentation and reassembly of large data
packets, up to as many as 32,767 elements
• Some connections can be cached to improve retransmission time
• Generic CIP™ message useful for third-party devices
Produced/Consumed Tag• Configured once and sent automatically based on requested
packet interval (RPI)
• Multiple consumers can simultaneously receive the same data
from a produced tag
• Can trigger an event task when consumed data arrives
• ControlNet resources are reserved up front
• Does not affect the scan of the controller
• Delay can occur if resources are not available when needed
• MSG instruction and processing can impact controller scan
(system overhead timeslice)
• Data arrives asynchronous to program scan (use a programmatic
handshake or a UID/UIE instruction pair to reduce impact, no
event task support)
• Can add additional messages online in Run mode.
• Support limited to Logix 5000™ and PLC-5® controllers, and the
1784-KTCS I/O Linx and select third-party devices
• Limited to 500 bytes over the backplane and 480 bytes over a
network
• Must be scheduled when using ControlNet
• Data arrives asynchronous to program scan (use a programmatic
handshake or CPS instruction and event tasks to synchronize)
• Connection status must be obtained separately
• You can configure status information for a produced/consumed
tag
• On an EtherNet/IP network, you can configure produced/
consumed tags to use multicast or unicast connections.
• Cannot create additional produced/consumed tags online in Run
mode.
74Rockwell Automation Publication 1756-RM094K-EN-P - October 2020
Chapter 8
Data Structures
The controllers support IEC 61131-3 atomic data types, and compound data
types, such as arrays, predefined structures (such as counters and timers), and
user-defined structures.
Guidelines for Data Types
GuidelineDescription
Use DINT data types whenever possibleThe controllers per form DINT (32 bit) and REAL (32 bit) math operations. DINT data types use less memory and execute
Group BOOL values into arraysWhen you use BOOL values, group them into DINT arrays to best use controller memory and to make the bits accessible
MemorySINTINTDINTREAL
Memory that is reserved for a standalone tag4 bytes4 bytes4 bytes4 bytes
Memory that is reserved for data in a user-defined structure1 byte
Memory that is used to access a tag in an ADD instruction236 bytes260 bytes28 bytes44 bytes
Follow these guidelines depending on the data type for your application.
faster than other data types. Use the following data type:
• DINT for most numeric values and array indexes.
• REAL for manipulating floating point, analog values.
• SINT (8 bit) and INT (16 bit) primarily in user-defined structures or when communicating with an external device that
does not support DINT values.
via FBC or DDT instructions.
(8-bit aligned)
2 bytes
(16-bit aligned)
4 bytes
(32-bit aligned)
4 bytes
(32-bit aligned)
A tag uses additional memory in the controller to store the tag name and
symbol, and allocate memory for data.
To manipulate SINT or INT data, the controller converts the values to DINT
values, performs the programmed manipulation, and then returns the result to
a SINT or INT value. This requires additional memory and execution time
when compared to using DINT values for the same operation.
Rockwell Automation Publication 1756-RM094K-EN-P - October 202075
Chapter 8Data Structures
BOOL[96] = 12 bytes
BOOL arrays use 32-bit
increments of memory
SINT[10] = 12 bytes of memory (2 bytes unused)
INT[5] = 12 bytes of memory (2 bytes unused)
DINT[3] = 12 bytes and REAL[3] = 12 bytes
SINT arrays are padded to use
any left over bytes
INT arrays are padded to use
any left over bytes
DINT and REAL arrays use
4-byte increments of memory
Arrays
An array allocates a contiguous block of memory to store a specific data type as
a table of values.
• Tags support arrays in one, two, or three dimensions.
• User-defined structures can contain a single-dimension array as a
member of the structure.
This arrayStores Data likeFor Example
One dimensionTag name
one_d_array
Total number of elements = 7
Valid subscript range DINT[a] where a=0…6
Two dimensionTag name
two_d_array
Total number of elements = 4 5 = 20
Valid subscript range DINT[a,b] where a=0…3; b=0…4
Three dimensionTag name
three_d_array
Total number of elements = 2 3 4 = 24
Valid subscript range DINT[a,b,c] where a=0…1; b=0…2, c=0…3
Typ e
DINT[7]
Typ e
DINT[4,5]
Typ e
DINT[2,3,4]
Dimension 0
7
Dimension 0
4
Dimension 0
2
Dimension 1
—
Dimension 1
5
Dimension 1
3
Dimension 2
—
Dimension 2
—
Dimension 2
4
The data type you select for an array determines how the contiguous block of
memory gets used.
76Rockwell Automation Publication 1756-RM094K-EN-P - October 2020
Data StructuresChapter 8
Guidelines for Arrays
GuidelineDescription
You can create arrays of most data types, except for
ALARM_xxx, AXIS_xxx, COORDINATE_SYSTEM,
ENERGY_xxx, HMIBC, MESSAGE, and MOTION_GROUP
data types.
Type of ArrayBenefitConsiderations
Single (1) dimension• Better support by native file instructions
Double (2) dimension
and
Triple (3) dimension
Nest arrays.The file instructions offer limited support for arrays. To work with array data, create a user-defined structure with one
Select the data type of the array based on the data
and the instructions that manipulate that data.
Limit arrays to 2 MB of data.The maximum array size is 2 MB. The software displays a warning if you try to create an array that is too large. The
Edit arrays online and offline.You can create arrays when online or offline. However, you can modify only the size or data type of an existing array when
A subscript identifies an individual element within the array. A subscript starts at 0 and extends to the number of
elements minus 1 (zero based).
• Single-dimension arrays take less memory and execute faster than two-dimension or three-dimension arrays.
• Direct references to array elements execute faster than indexed references.
• An array can be as large as 2 MB.
• If you create an array of structures, the memory for each element is allocated based on the structure definition.
• Fully supported in user-defined structures and arrays
• Smallest impact (execution time and memory) for
indexed references
• Can create arrays when programming online
• Can provide a more accurate data representation for a
physical system
• Can emulate PLC file/word indirection with a twodimension array
• Can create arrays when programming online
array as a member of the structure. Then create an array tag by using the user-defined structure as its data type.
While SINT and INT arrays can compact more values into a given memor y area, they require additional memory and
execution time for each instruction that references the array.
software also displays a warning if an array is 1.5…2 MB, even though these sizes are valid.
offline.
• Multi ple arrays cannot be indirectly referenced like in
PLC or SLC™ processors (such as, N[N7:0]:5)
• BOOL arrays are not directly supported by file
instructions
• Can be changed only when programming offline
• Larger impact (execution time and memory) for
indexed references
• File manipulation requires extra code and file
instructions
• Can only be changed when programming offline
Indirect Addresses of Arrays
If you want an instruction to access different elements in an array, use a tag in
the subscript of the array (an indirect address). By changing the value of the
tag, you change the element of the array that your logic references.
When index equals 1, array[index] points here.
array[0]4500
array[1]6000
array[2]3000
array[3]2500
When index equals 2, array[index] points here.
When you directly reference an element in an array (such as MyArray[20]),
uses less memory and executes faster than an indirect reference
(MyArray[MyIndex]). You can also indirectly address bits in a tag
(MyDint.[Index]).
If you use indirect addresses, use DINT tags because other data types require
conversion and execute slower. For each indexed access to data, the controller
recalculates the array index. If you access a specific array element multiple
times, copy the data out of the array into a fixed tag and use that tag in
subsequent logic.
Rockwell Automation Publication 1756-RM094K-EN-P - October 202077
Chapter 8Data Structures
OperatorDescriptionOptimal
+AddDINT, REAL
-Subtract/negateDINT, REAL
*MultiplyDINT, REAL
/Divide DINT, REAL
**Exponent (x to y)DINT, REAL
ABSAbsolute valueDINT, REAL
ACSArc cosineREAL
ANDBit wise ANDDINT
ASNArc sineREAL
ATNAr c t ang en tR EAL
COSCos ineREAL
DEGRadians to degreesDINT, REAL
FRDBCD to integerDINT
LNNatural logREAL
LOGL og ba se 10RE AL
MODModulo divideDINT, REAL
NOTBitwise complementDINT
ORBitwise ORDINT
RADDegrees to radiansDINT, REAL
SINSineREAL
SQRSquare rootDINT, REAL
TANTa nge ntR EA L
TODInteger to BCDDINT
TRNTruncateDINT, REAL
XORBitwise exclusive ORDINT
OperatorDescriptionOptimal
You can also use an expression to specify the index value. For example:
MyArray[10 + MyIndex].
• An expression uses operators to calculate a value.
• The controller computes the result of the expression and uses it as the
index.
• These are valid operators.
Guidelines for Array Indexes
GuidelineDescription
Use the SIZE instruction to determine the number of
elements in an array.
Use immediate values to reference array elements.Immediate value references to array elements are quicker to process and execute faster than indexed references.
Use DINT tags for array indexes.DINT tags execute the fastest. SINT, INT, and REAL tags require conversion code that can add additional scan time to an
Avoid using array elements as indexes.The controller does not directly support the use of an array element as the index to look up a value in another array. To
78Rockwell Automation Publication 1756-RM094K-EN-P - October 2020
By determining the number of elements in an array at runtime, you can write reusable code that adjusts itself to meet
each instance where it is used.
The SIZE instruction returns the number of elements. Arrays are zero-based, so subtract 1 from the result to determine
the last element position.
operation.
work around this, you can create an alias to the element and then use this as the index. Or copy the element to a base tag
and use that base tag as the index.
Data StructuresChapter 8
Guidelines for User-defined Data Types (UDT)
GuidelineDescription
Group members of the same data type within a structure. You can create members of most data types, except for AXIS, COORDINATE_SYSTEM, MOTION_GROUP, and MESSAGE
Arrays within a UDT can only be 1-dimension.If you include an array as a member, limit the array to one dimension. Multidimension arrays are not permitted in a
I/O data that is used in a UDT must be copied into the
members.
Limit user-defined data types to 500 members.The controllers limit user-defined struc tures to 500 members. If you need more, consider nesting structures within the
Limit user-defined data types to 2 MB of data.The maximum UDT size is 2 MB. The software displays a warning if you try to create an UDT that is too large. The
Limit the size of user-defined structures if they are to be
produced and consumed tags.
Use the appropriate instruction to load data into a
structure.
Use structure descriptions to automatically create tag
descriptions.
Online and offline editing.You can create user-defined structures when online or offline. However, you can modify only an existing structure
data types.
Place members that use the same data type in sequence.
The controller aligns every data type along an 8-bit boundary for SINTs, a 16-bit boundary for INTS, or a 32-bit
boundary for DINTs and REALs. BOOLs also align on 8-bit boundaries, but if they are placed next to each other in a
user-defined structure, they are mapped so that they share the same byte.
user-defined structure.
If you include members that represent I/O devices, you must use logic to copy the data into the members of the
structure from the corresponding I/O tags.
Make sure that the data type of the struc ture member matches the I/O data type to avoid data type conversion.
main structure.
software also displays a warning if the UDT is 1.5…2 MB, even though these sizes are valid.
Produced and consumed tags are limited to 500 bytes over the backplane and 480 bytes if over a network.
Linx-based software can optimize user-defined structures that are less than 480 bytes. UDT larger than the noted
produced and consumed tag limits must use a MESSAGE instruction (MSG) if they are to be communicated.
Load input values into the user-defined structure at the beginning of the program and copy output values from the
user-defined structure at the end of the program.
• Single bit - Examine On (XIC) and Output Energize (OTE) instructions
• Contiguous bits - Bit Field Distribute (BTD) instruction
• Single value - MOV instruction
• Multiple contiguous values -COP/CPS instruction
Enable the Use Pass-through Description workstation option (Tools > Options > Display) to display the descriptions
you add to the members of structures for each tag that uses that structure data type.
when offline.
Rockwell Automation Publication 1756-RM094K-EN-P - October 202079
Chapter 8Data Structures
MyBit:BOOL
BitTable:BOOL[32]
FaultTable:DINT[3]
BitStructure
Bit1:BOOL
Bit2:BOOL
Select a Data Type for
Bit Tags
Bits in a controller can exist as: BOOL tags, bits in a BOOL array, bits in
elements of a SIN T, USI N T, I N T, U INT, DI N T, UD IN T, LIN T, UL I NT
array, members of a user-defined structure, or as bits in a SINT, USINT, INT,
UINT, DINT, UDINT, LINT, ULINT member of a user-defined structure.
Tag TypeDescription
BOOL tagEach tag accesses a specific bit. Each tag uses 4 bytes.
BenefitsConsiderations
• Each bit has a specific tag• Requires extra bandwidth to communication
BOOL arrayA BOOL array combines multiple bits into adjacent words (32-bit words).
BenefitsConsiderations
• Consolidates multiple bits into one word
• Better use of memory
• Can address all bits in an array by using indirect
addressing
DINT arrayA DINT combines multiple bits into adjacent words.
BenefitsConsiderations
• Consolidates multiple bits into one word
• File instructions, copy instructions, and DDT/FBC
instructions support DINT arrays
• Lets you access the bits by element (word) and
bit number
• Uses more memory
• Cannot use FBC/DDT bit file instructions
• BOOL data type only supported by bit instructions
• Cannot use file instructions, copy instructions, or DDT/
FBC instructio ns
• Requires extra planning to indirectly address bits
• Difficult to address bits in the array by using indirect
addressing
User-defined structureA user-defined structure combines multiple bits into adjacent, individually named words.
BenefitsConsiderations
• Object based
• Consolidates multiple bits into one word
• Third-party MMI/EOI products do not directly support
structures.
• Cannot use FBC/DDT bit file instructions
80Rockwell Automation Publication 1756-RM094K-EN-P - October 2020
Data StructuresChapter 8
Serial Bit Addresses
The BOOL B data table in the PLC-5® and SLC™ 500 processors supports two
address modes that can address the same bit.
Address ModeDescription
Serial bit
In PLC-5 or SLC software, this addressing mode is
represented as /Bit
Word bit
In PLC-5 or SLC software, this addressing mode is
represented as Word/Bit
Serial bit addressing references all bits as a contiguous list (array) of bits. For example, if you want to reference the third
bit in the second word of a B file, specify B3/18. This method is similar to a BOOL array in a Logix 5000™ controller
where you specify FaultBit[18].
Word bit addressing identifies a bit within a specific word. For example, B3:1/2 is the s ame as B3/18 from the serial bit
example. This method is similar to accessing the bits of a SINT, INT, DINT array in a Logix 5000 controller where you
specify FaultTable[1].2.
The Logix 5000 controller supports both of these addressing modes, but you
cannot use both to reference bits in the same array due to conformance with
the IEC 61131-3 standard. Choose the method that best meets your
application needs. You can copy data between arrays by using both methods.
You can also use an expression to indirectly reference a bit in a DINT array by
using a serialized bit number. For example:
Ta g
MyBits : DINT[10]
BitRef : DINT
EndTag
MOV(34, BitRef )
XIC(MyBits[BitRef / 32].[BitRef AND 31])
where:
This expressionCalculates the
[BitRef / 32]Element in the DINT array
If the tag MyBits is an INT or SINT, the divisor is 16 or 8, respectively.
[BitRef AND 31]Bit within the element
If the tag MyBits is an INT or SINT, the mask value is 15 or 7, respectively.
The Diagnostic Detect (DDT) and File Bit Compare (FBC) instructions
provide a bit number as a result of their operation. These instructions are
limited to DINT arrays so you can use them to locate the bit number that is
returned from the example above.
Rockwell Automation Publication 1756-RM094K-EN-P - October 202081
Chapter 8Data Structures
Guidelines for String
Data Types
GuidelineDescription
You can create a string data type that is longer or
shorter than the default string data type.
Only some instructions support string data types.These comparison instructions suppor t string tags: EQU, NEQ, GRT, GEG, LES, LEQ, C MP.
Use the SIZE instruction to determine the number of
characters in a string.
Use the DTOS, RTOS, and CONCAT instructions to embed
tag values within a string.
Set the LEN fie ld to indicate the number characters that
are present.
String data types are structures that hold ASCII characters. The first member
of the structure defines the length of the string; the second member is an array
that holds the actual ASCII characters.
The default string data type can contain as many as 82 characters. You can create custom-length string data types that
range from 1 to 65535 characters.
These serial port instructions support string tags: ARD, ARL, AWA, AWT.
These string-handling instructions support string tags: STOD, DTOS, STOR, RTOS, CONCAT, MID, FIND, DELETE, INSERT,
UPPER, LOWER, SIZE.
These file instructions support string arrays: FAL, FFL, FFU, LFL, LFU, COP, CPS, FSC.
By determining the number of characters in a string at runtime, you can write reusable code that adjusts itself to meet
each instance where it is used.
The SLC 500 processor supports the ability to embed a data-table reference address within a string (inline indirection).
The SLC 500 AWA and AWT instructions can then look up the data value and place an ASCII representation into the
outgoing string. The Logix 5000 controller does not directly support this ability. Use the DTOS or RTOS instructions to
convert a value to a string and the CONCAT instruction to merge characters with another string.
The LEN field in the string structure indicates how many characters are in the string. The programming software and the
controller instructions that manipulate strings use the LEN value to determine how many positions in the string DATA
array contain valid characters. Both the programming software and the instructions stop processing the DATA array once
they reach the LEN value.
PLC-5/SLC 500 Access of
Strings
The ASCII A data table in the PLC-5 and SLC 500 processors uses a string
format that is similar to the Logix string data type. The main difference is that
the LEN field (length) in a PLC-5/SLC 500 processor is a 16-bit, INT value.
The LEN field in a Logix 5000 controller is a 32-bit, DINT field. This
difference can impact converted logic and data communication. The Logix
5000 controller converts the LEN field to the appropriate value and size when
a PLC-5/SLC 500 message format is used to read or write a string.
82Rockwell Automation Publication 1756-RM094K-EN-P - October 2020
Data StructuresChapter 8
Configure Tags
A tag is a text-based name for an area of controller memory where data is
stored. Tags are the basic mechanism to allocate memory, reference data from
logic, and monitor data.
If you want the tag toThen choose this type
Store a value for use by logic within the projectBase
Use another name for an existing tag’s data
(can help simplify long, pre-determined tag names, such as for I/O dat a or user-defin ed
structures)
Send (broadcast) data to another controllerProduced
Receive data from another controllerConsumed
Alias
For more information on I/O tags, see Communicate with I/O on page 89
Create user-defined structuresUser-defined struc tures (data types) let you organize your data to match your machine or process.
Use arrays like files to create a group of
similar tags.
Take advantage of program-scoped tags.If you want multiple tags with the same name, define each tag at the program scope (program tags) for a different program. This
• Atomic tags are listed directly in the Tag Editor and Data Monitor and can easily be found by browsing the alphabetical list.
• Atomic tags can be created online, but the data type can be only modified offline.
Using only atomic tags can impact HMI communication performance as more information must be passed and acted on.
• One tag contains all data that is related to a specif ic aspect of your system. This keeps related data together and easy to locate,
• Each piece of data (member) gets a descriptive name.
• You can use the structure to create multiple tags with the same data layout.
• User-defined structure can only be modified offline.
Linx-based software optimizes user-defined structures more than standalone tags.
An array creates multiple instances of a data type under a common tag name.
• Arrays let you organize a block of tags that use the same data type and perform a similar function.
• You organize the data in one, two, or three dimensions to match what the data represents.
• Arrays can be only modified offline.
• Linx-based software optimizes array data types more than standalone tags.
Minimize the use of BOOL arrays. Many array instructions do not operate on BOOL arrays, making it more difficult to initialize and
clear an array of BOOL data.
lets you reuse both logic and tag names in multiple programs.
Avoid using the same name for both a controller tag and a program tag. Within a program, you cannot reference a controller tag if
a tag of the same name exists as a program tag for that program.
Use the following guidelines for base tags.
regardless of its data type.
.
Rockwell Automation Publication 1756-RM094K-EN-P - October 202083
Chapter 8Data Structures
GuidelineDescription
Use mixed case and the underscore
characters.
Consider alphabetical order.The programming software displays tags of the same scope in alphabetical order. To make it easier to monitor related tags, use
Use leading zeroes (0) when numbers are
part of tag names
Although tags are not case-sensitive (upper case A is the same as lower case a), mixed case is easier to read. For example, Tank_1
can be easier to read than tank1.
similar starting characters for tags that you want to keep together. For example, consider using Tank_North and Tank_South
rather than North_Tank and South_Tank.
The programming software uses a simple sort to alphabetize tag names in the Ta g Editor and Data Monitor. This means if you have
Tag1, Tag2, Tag11, and Tag12, the software displays them in order as Tag1, Tag11, Tag12, and then Tag2. If you want to keep them
in numerical order, name them Tag01, Tag02, Tag11, and Tag12.
Create Alias Tags
An alias tag lets you create one tag that represents another tag.
• Both tags share the same value as defined by the base tag.
• When the value of a base tag changes, all references (aliases) to the base
tag reflect the change.
GuidelineDescription
Upload behavior for al ias tags.For 5370 and 5570 controllers, there are situations when uploading a project file that instruction operands that use alias references
Alias tags do not affect controller execution. During download, the program is compiled into machine executable code and physical memory addresses. While the existence of
Access alias tags from Linx-based software.Because an alias tag appears as a standalone tag to Linx-based software, an alias tag that ref erences a comp ound array or structure
can change. To avoid these situations with ladder instruction operands, do not use:
• Nested aliases (also known as an alias chain)
• Multiple aliases to the same tag
On an upload, the software uses a technique referred to as “best fit” to reconstruct instruction operands and operands that use an
alias can change.
This does not apply to 5380, 5480 and 5580 controllers and on an upload, the aliases for these controllers are faithfully reproduced.
an alias requires controller memory to store the name, the program performs the same operation for a reference with an alias or its
associated base tag.
can require additional communication time. When you reference tags from Linx-based software or other HMI, it can be fastest to
reference base tags dire ctly.
84Rockwell Automation Publication 1756-RM094K-EN-P - October 2020
Data StructuresChapter 8
Control ler
scope
Program
scope
Phase
scope
Guidelines for Data Scope
Data scope defines where you can access tags. Controller-scoped tags and
parameters are accessible by all programs. Local tags are accessible only by the
code within a specific program. Equipment Phases, like Programs, have
parameters and local tags.
If you want toThen assign this scope
Produce or consume dataController scope (controller tags)
Use a tag in multiple programs in the same projectController scope (controller tags)
Use a tag in a message (MSG) instruction
Use motion tags
Reuse the same tag name multiple times for different parts or processes
within a controller
Have multiple programmers work on logic and you want to merge logic into
one project
Param eters
Param eters
Local Tags
Isolate portions of a machine or different stations into separate programs or
equipment phases and use program-scoped or phase-scoped tags. This lets you
do the following:
• Provide isolation between programs and equipment phases
• Help prevent tag name collisions
• Improve the ability to reuse code
See publication 1756-PM021, Logix 5000 Controllers Program Parameters
Programming Manual, for more information on Parameters.
Guidelines for Tag Names
GuidelineDescription
Create descriptive names but keep them short.Tag names can be from 140 charac ters long.
Create a naming convention.Develop a tag-naming convention on electrical drawings or machine design. For example, Conv1_Full_PE101 combines the
Use correct characters in tag names.Tag names follow the IEC 61131-3 standard. You can use:
Pad names to improve sort order.The programming software displays tags in alphabetical order. If you use numbers in your tag names, pad the number with
Use the following guidelines when you name tags.
• Each character of the tag name uses 1 byte of controller memor y, rounded to a 4-byte boundar y.
• For example, a tag name with 1…4 characters uses 4 bytes. A tag name with 5 characters uses 8 bytes.
• Tag names are stored in the controller.
• Use structures to reduce the number and size of tags needed.
Program upload preserves tag names.
sensor function with the photoeye number.
• Letters A through Z.
•Numbers 0…9.
• Underscore character (_).
Tags must start with a letter to avoid confusion with logical expressions. The remaining characters can be any of the supported
characters.
leading zeros so the names sort in the proper order.
For example, tag names: TS1, TS2, TS3, TS10, TS15, TS20, TS30 display as: TS1, TS10, TS15, TS2, TS20,TS3, and TS30.
Pad the numbers with zero so they display as: TS01, TS02, TS03, TS10, TS15, TS20, TS30.
Rockwell Automation Publication 1756-RM094K-EN-P - October 202085
Chapter 8Data Structures
Type of TagDescription Display in the programming software
AtomicFor a BOOL, SINT, USINT, INT, UINT, DINT, UDINT, LINT, ULINT, REAL or LREAL tag, the description that is
associated with the tag is the only description available for display.
AliasFirst the alias tag description, then the base tag description.
User-defined
structure and
Add-On
Instruction
All members use the description for tag, unless you define a specific description for a member.
For example, MyTimer.DN uses the description for MyTimer if there is no description for MyTimer.DN.
Atomic array• All references into an array use the description for the array, unless you define a description for an
element of the array.
• For example, MyTable[10] uses the description for MyTable if there is no description for MyTable[10].
• All indexed references into an array use the description for the array.
• For example, MyTable[Index] uses the description for MyTable.
Structure arrayAll references to a member of a structure in an array default to the array definition, unless you define a
description for the structure member of the array.
For example, Table[0].Field1 uses the description for Table if there is no description for the specific field.
Guidelines for Extended Tag
Use the following guidelines for extended tag properties.
Properties
GuidelineDescription
Use extended tag properties to define additional
information, such as limits, engineering units, or
state identifiers, for various components within
your controller project.
Some extended tag properties support passthrough for data structures and arrays.
You can read extended properties via logic, but you
cannot write to extended properties values in logic.
If an array tag uses indirect addressing to access
limit extended properties in logic, the following
conditions apply.
You can define extended tag properties for these components:
•Tag
• Parameter
• User-defined data type
• Add-On Instruction
Pass-through behavior is available for descriptions, state identifiers, and engineering units and is configurable in data
structures and arrays.
Pass-through behavior is not available for limits.
• Extended properties must be used as an input operand.
• Alias tags with extended properties cannot be accessed in logic.
• Limits can be configured for input and output parameters in Add-On Instructions. However, limit extended properties
must not be defined on an InOut parameter of an Add-On Instruction.
• Limits cannot be accessed inside Add-On Instruction logic.
• If you read an extended property value in logic, it consumes memor y equival ent to an equ ivalent prog ram-scoped tag of
that data type. If you do not use them in logic, extended tag properties use no user memory, only extended memory.
• If the array tag has limit extended properties that are configured, the extended properties are applied to any array
element that does not explicitly have that particular extended property configured. For example, if the array tag
MyArray has Max configured to 100, then any element of the array that does not have Max configured inherits the value
of 100 when used in logic. However, it is not visible to you that the value inherited from MyArray is configured in the tag
properties.
• At least one array element must have specific limit extended property configured for indirectly referenced array logic to
verify. For example, if MyArray[x].@Max is being used in logic, at least one array element of MyArray[] must have Max
extended property configured if Max is not configured by MyArray.
• Under the following circumstances a data type default value is used:
– Array is accessed programmatically with an indirect reference.
– Array tag does not have the extended property configured.
– A member of an array does not have the extended property configured.
Tag Descriptions
The programming software searches a tag’s origin to locate the first available
description. This reduces the number of descriptions you need to enter. This
also verifies that tag references display associated descriptions.
GuidelineDescription
Tag descriptions display in the programming
software according to the tag’s origin.
86Rockwell Automation Publication 1756-RM094K-EN-P - October 2020
For more information, see the Create Tag Descriptions Automatically with
User-Defined Data Types White Paper, publication LOGIX-WP004
.
Data StructuresChapter 8
Protect Data Access Control
New tag attributes define access to tag data at runtime.
at Tag Level
Tag AttributeDescription
External accessDefines how an external application, such as an HMI, historian, or OPC data server, can access a tag. For arrays, this
ConstantDefines whether a tag value remains constant. Tags with this attribute set cannot be changed programmatically.
feature applies to the top level only; for user- defined structure, this feature applies to individual members. Possible
values are:
• Read/Write: External applications can both read and modify the tag’s value
• Read Only: External applications can read the tag’s value, but not modify it
• None: External applications can neither read or write the tag’s value
You can Use RSLinx® Classic software, version 2.56 or later, RSLinx Enterprise
software, versions 5.21 to 5.90, or FactoryTalk® Linx software version 6.00 or
later, for best results with these tag attributes. Using earlier versions of RSLinx
software can result in anomalous behavior from the data servers with the
external access options of Read Only and None.
Rockwell Automation Publication 1756-RM094K-EN-P - October 202087
Chapter 8Data Structures
Notes:
88Rockwell Automation Publication 1756-RM094K-EN-P - October 2020
Chapter 9
Communicate with I/O
I/O values update at a period, requested packet interval (RPI), which you
configure via Module Property dialog in the I/O configuration folder of the
project. The values update asynchronously to the execution of logic.
The module sends input values to the controller at the specified RPI. Because
this transfer is asynchronous to the execution of logic, an I/O value in the
controller can change in the middle of a scan.
Buffer I/O Data
If you reference an I/O tag multiple times, and the application could be
impacted if the value changes during a program scan, you must buffer the I/O
value. You can buffer an I/O tag by using input parameters or coping into a
buffer tag. In your code, reference the buffer tag rather than the I/O tag.
IMPORTANTUse the synchronous copy (CPS) instruction to buffer I/O data. While the CPS
instruction copies data, no I/O updates or other tasks can change the data.
Tasks that attempt to interrupt a CPS instruction are delayed until the
instruction is done. Overuse of the CPS instruction can impact controller
performance by keeping all other tasks from executing.
Buffer I/O data to do the following:
• Help prevent an input or output value from changing during the
execution of a program (I/O updates asynchronous to the execution of
logic).
• Copy an input or output tag to a member of a structure or element of an
array.
• Help prevent produced or consumed data from changing during the
execution of a program.
• Make sure all produced and consumed data arrives or is sent as a group
(not mixed from multiple transfers).
• Only use the CPS instruction if the I/O data that you want to buffer is
greater than 32 bits (or 4 bytes) in size.
Overuse of the CPS instruction can greatly impact controller performance.
If you have a user-defined structure with members that represent I/O devices,
you must use logic to copy the data into the members of the structure from the
corresponding I/O tags.
Rockwell Automation Publication 1756-RM094K-EN-P - October 202089
Chapter 9Communicate with I/O
Guidelines to Specify an RPI
Rate for I/O Modules
GuidelineDescription
Specify an RPI at 50% of the rate you need new data. If you set the RPI faster (specify a smaller number) than what your application needs, it can waste network resources, such
Group devices with similar performance needs onto
the same module.
Set the ControlNet™ network update time (NUT)
equal to or less than the fastest RPI.
In an ControlNet system, use even multiples of the
NUT for the RPI value.
In a ControlNet system, isolate I/O communication.If you use unscheduled ControlNet communication or want to be able to add ControlNet I/O at runtime (see page 98
In an EtherNet/IP™ system, module change of state is
limited to 1/4 of the RPI.
Data transmission depends on the controller.The type of controller determines the data transmission rate.
Configure an RPI rate per module (ControlLogix®) or an RPI rate per
controller (CompactLogix™). The RPI value is the rate at which the controller
attempts to communicate with the module.
as ControlNet® schedule bandwidth, network processing time, and CPU processing time.
For example, if you need information every 80 ms, set the RPI at 40 ms. The data is asynchronous to the controller scan, so
you sample data twice as often (but no faster), you ensure that you have the most current data.
By grouping devices with similar performance needs on the same module, you consolidate data transmission to one
module rather than multiple modules. This conserves network bandwidth.
When configuring a ControlNet network, set the network update time (NUT) equal to or less than the fastest RPI of the I/O
modules and produced/consumed tags in the system. For example, if your fastest RPI is 10 ms, set the NUT to 5 ms for
more flexibility in scheduling t he network.
Set the RPI to a binary multiple of the NUT. For example, if the NUT is 10 ms, select an RPI such as 10, 20, 40, 80, or
160 ms.
),
dedicate one ControlNet network to I/O communication only. On the dedicated I/O network, make sure that there is
the following:
• No HMI traffic
• No MSG traffic
• No programming workstations
• No peer-to-peer interlocking in multi-processor system architectures
If you configure change of state communication for a module in a remote chassis that is connected via an EtherNet/IP
network, the module can send data only as fast as the module RPI. Initially, the module sends its data immediately.
However, when an input changes, the module data is held at the adapter until 1/4 of the RPI is reached to avoid
overloading the EtherNet/IP network with the module communication.
• ControlLogix controllers transmit data at the RPI you configure for the module.
• CompactLogix controllers transmit data at powers of 2 ms (such as 2, 4, 8, 16, 64, or 128). For example, if you specify an
RPI of 100 ms, the data actually transfers at 64 ms.
90Rockwell Automation Publication 1756-RM094K-EN-P - October 2020
Communicate with I/OChapter 9
Local ChassisRemote Chassis
Controlle r
Communication
Module
Communication
Module
Digital Inputs
Digital Outputs
Local ChassisRemote Chassis
Control ler
Communication
Module
Communication
Module
Digital Inputs
Digital Outputs
Communication Formats for
I/O Modules
The communication format determines whether the controller connects to the
I/O module via a direct or a rack-optimized connection. The communication
format also determines the type and quantity of information that the module
provides or uses.
Direct Connection Each module passes its data to/from the controller individually.
Communication modules bridge data across networks.
BenefitsConsiderations
• Each module can determine its own rate (RPI)
• More data can be sent per module, such as diagnostic and analog data
• Supports event task communication
• Requires additional connections and network resources
• This is the only method that is supported in the local chassis
• I/O data is presented as individual tags
Rack-optimized Connection The communication module in a remote chassis consolidates data from
multiple modules into one packet and transmits that packet as one connection
to the controller.
.
BenefitsConsiderati ons
• One connection can service a full chassis of digital modules
• Reduces network resources and loading
The rack-optimized format limits data to one 32-bit input word per module in
a chassis. If you place a diagnostic module in a chassis, the rack-optimized
format eliminates the value that the diagnostic module offers. In this case, it’s
better to use a direct connection so that the diagnostic information from the
module is passed to the controller.
• All Modules are sent at the same rate
• Unused slots are still communicated
• Still need a direct connection for analog and diagnostic data
• Limited to remote chassis
• I/O data is presented as arrays with alias tags for each module
Rockwell Automation Publication 1756-RM094K-EN-P - October 202091
Chapter 9Communicate with I/O
O
U
T
P
U
T
I
N
P
U
T
Output Echo
Connection / Peer Control
Output Data
InputInput
ConnectionListen Only
Peer Control Output modules let peer ownership of input modules to consume input data to
directly control outputs without requiring controller processing.
The 1756-IB16IF and 1756-IB16IFC modules can be listened to presuming
the output module knows the input data layout and connection information.
The configuration from the controller defines how the peer input data is
mapped to the output modules. The controller can use the other digital points
on the module that are not peer-owned as conventional outputs.
The controller can also use the output data it normally sends to the module
with consumed inputs, letting ‘gate-type’ features enabled by controller logic
selectively letting application of the consumed peer input data.
.
BenefitsConsiderations
• Faster response time because the controller scan time is removed from the equation.
Data is sent directly to the output module from the input module.
• Increases controller performance by reducing the need for event tasks to close loops
quickly.
• Each input module has an AND an d OR bit mask that defines the logic that is applied to
each input module.
• You must program the controller for proper relationship with the output modules.
• The peer output module must be in the same chassis as the input module to
maximize response time.
92Rockwell Automation Publication 1756-RM094K-EN-P - October 2020
Communicate with I/OChapter 9
Electronic Keying
Electronic Keying reduces the possibility that you use the wrong device in a
control system. It compares the device that is defined in your project to the
installed device. If keying fails, a fault occurs. These attributes are compared.
AttributeDescription
VendorThe device manufacturer.
Device TypeThe general type of the product, for example, digital I/O module.
Product CodeThe specific type of the product. The Product Code maps to a catalog number.
Major RevisionA number that represents the functional capabilities of a device.
Minor RevisionA number that represents behavior changes in the device.
The following Electronic Keying options are available.
Keying OptionDescription
Compatible
Module
Disable KeyingIndicates that the keying attributes are not considered when attempting to communicate
Exact MatchIndicates that all keying attributes must match to establish communication. If any attribute
Lets the installed device accept the key of the device that is defined in the project when the
installed device can emulate the defined device. With Compatible Module, you can typically
replace a device with another device that has the following characteristics:
• Same catalog number
• Same or higher Major Revision
• Minor Revision as follows:
– If the Major Revision is the same, the Minor Revision must be the same or higher.
– If the Major Revision is higher, the Minor Revision can be any number.
This is the default selection in the Logix Designer application.
with a device. With Disable Keying, communication can occur with a device other than the
type specified in the project.
ATT EN TI ON : Be cautious when using Disable Keying; if used incorrectly, this option can lead
to personal injury or death, property damage, or economic loss.
We strongly recommend that you do not use Disable Keying.
If you use Disable Keying, you must take full responsibility for understanding whether the
device being used can fulfill the functional requirements of the application.
does not match precisely, communication with the device does not occur.
Carefully consider the implications of each keying option when selecting one.
IMPORTANTWhen you change Electronic Keying parameters online, it interrupts
connections to the device and any devices that are connected through the
device. Connections from other controllers can also be broken.
If an I/O connection to a device is interrupted, the result can be a loss of data.
More Information
For more detailed information on Electronic Keying, see Electronic Keying in
Logix 5000™ Control Systems Application Technique, publication LOGIX-
AT001.
Rockwell Automation Publication 1756-RM094K-EN-P - October 202093
Chapter 9Communicate with I/O
Guidelines to Manage I/O Connections
Use the following guidelines to administer your I/O modules.
IMPORTANTCompact 5000™ I/O does not support rack-optimization.
1. The type of I/O module can determine the type of connection.
• Analog modules always use direct connections, except for 1771
• Digital modules can use direct or rack-optimized connections.
2. Select the communication format for a remote adapter based on the
remote I/O modules.
SelectIf
NoneThe remote chassis contains only analog modules, diagnostic digital modules, fused
Rack-optimizedThe remote chassis only contains standard, digital input, and output modul es
Listen Only Rack-optimizedYou want to receive I/O module and chassis slot information from a rack-optimized
analog modules that use messaging and 1734 analog modules that use
Enhanced Rack Optimization.
Communication formats that include optimization in the title are
rack-optimized connections; all other connection options are direct
connections.
output modules, or communication modules.
On a ControlNet network, use None to add a chassis to the network while the
controller is running.
(no diagnostic modules or fused output modules).
For a ControlNet network at runtime (controller is online), you can add new digital
modules to an existing rack-optimized connection, but new rack-optimized
connections can only be added when offline. An EtherNet/IP network supports new
rack-optimized connections both offline and at runtime (online). For more
information, see page 98.
remote chassis that is owned by another controller.
The runtime capability for listen only rack-optimized connections is the same as for
rack-optimized connections.
3. Use rack-optimized connections to conserve connections.
If you are trying to limit the number of controller and network
connections, rack-optimized connections can help.
4. In some cases, all direct connections work best.
For a remote adapter that is configured for rack-optimized connections,
there is always data that is sent for each slot in the chassis, even if a slot is
empty or contains a direct connection module. There are 12 bytes of
data that is transferred for rack-optimized overhead between the
controller and the remote adapter. In addition, the remote adapter sends
8 bytes per slot to the controller; the controller sends 4 bytes per slot to
the remote adapter.
94Rockwell Automation Publication 1756-RM094K-EN-P - October 2020
ExampleDescription
Remote 17-slot chassis
Slot 0: 1756-CNBR/D
Slots 1…15: analog modules
Slot 16: standard digital module
Remote 17-slot chassis
Slot 0: 1756-CNBR/D
Slots 1…8: analog modules
Slots 9…16: digital modules
Option 1: Select Rack Optimization as the communication fo rmat for the remote adapter. This example uses 16 controller connections (15 for
analog modules and 1 for the rack-optimized connection). This example also transfers:
• 12 bytes for rack-optimized overhead.
• 12 bytes for the digital module.
• 12 bytes for each of the 15 analog modules, for a total of 180 bytes.
Option 2: Select None as the communication format for the remote adapter. This example also uses 16 controller connections (1 direct
connection to each I/O module). There is no rack-optimized overhead data to transfer.
Recommendation: Option 2 is recommended because it avoids unnecessary network traffic, and thus improves network performance.
Option 1: Select Rack Optimization as the communication format for the remote adapter. This example uses nine controller connections
(eight for analog modules and one for the rack-optimized connection). This example also transfers:
• 12 bytes for rack-optimized overhead.
• 12 bytes for each of the 8 digital modules, for a total of bytes 96 bytes.
• 12 bytes for each of the 8 analog modules, for a total of 96 bytes.
Option 2: Select Rack Optimization for the communication format of the remote adapter. This example uses 16 controller connections (1
direct connection to each I/O module). There is no rack-optimized overhead data to transfer.
Recommendation: The best option for this example depends on the type of digital I/O modules in the system and other controller
connections. If the total system has many analog modules, diagnostic modules, fused output modules, or produced/consumed tags, select
Option 1 to conserve controller connections. If there are plenty of controller connections available, select Option 2 to reduce unnecessary
network traffic.
Communicate with I/OChapter 9
For a few digital modules in a large chassis, it can be better to use direct
connections because transferring the full chassis information can require
more system bandwidth than direct connections to a few modules.
Rockwell Automation Publication 1756-RM094K-EN-P - October 202095
Chapter 9Communicate with I/O
The individual tag that is created for the I/O
module in remote slot 1.
For example, a remote EtherNet communication module
(Remote_ENT2R) has an I/O module in slot 1.
The entry in the rack-object tag for the remote
communication module that identifies the I/O
module in remote slot 1.
Create Tags for I/O Data
Each I/O tag is automatically created when you configure the I/O module
through the programming software. Each tag name follows this format:
LOCAL = local chassis or DIN rail
ADAPTER_NAME = identifies remote adapter or bridge
SlotNumberSlot number of I/O module in its chassis
TypeType of data:
I = inputC = configuration
O = outputS = status
MemberNameSpecific data from the I/O module, such as Data and Fault; depends on the module
SubMemberNameSpecific data that is related to a MemberName
Bit (optional)Specific point on the I/O module; depends on the size of the I/O module (0…31 for a 32-point module)
If you configure a rack-optimized connection, the software creates a rackobject tag for the remote communication module. You can reference the rackoptimized I/O module individually, or by its element within the rack-object
tag.
96Rockwell Automation Publication 1756-RM094K-EN-P - October 2020
Communicate with I/OChapter 9
Controller Ownership
When you choose a communication format, you have to choose whether to
establish an owner or listen-only relationship with the module.
ModeDescription
OwnerThe owner controller writes configuration data and can establish a connection to the module.
Listen-onlyA controller that uses a listen-only connection only monitors the module. It does not write configuration data and can
only maintain a connection to the I/O module when the owner controller is actively controlling the I/O module.
There is a noted difference in the ownership of input modules versus the
ownership of output modules.
ControllingThis OwnershipDescription
Input modulesOwnerAn input module is configured by a controller that establishes a connection as an owner. This configuring controller
Listen-onlyOnce an input module has been configured (and owned by a controller), other controllers can establish a listen- only
Output modulesOwnerAn output module is configured by a controller that establishes a connection as an owner. Only one owner
Listen-onlyOnce an output module has been configured (and owned by one controller), other controllers can establish listen-
is the first controller to establish an owner connection.
Once an input module has been configured (and owned by a controller), other controllers can establish owner
connections to that module. This lets additional owners to continue to receive multicast data if the original owner
controller breaks its connection to the module. All other additional owners must have the identical configuration
data and identical communication format that the original owner controller has, otherwise the connection attempt
is rejected.
connection to that module. These controllers can receive multicast data while another controller owns the module.
If all owner controllers break their connections to the input module, all controllers with listen-only connections no
longer receive multicast data.
connection can be connected to an output module. If another controller attem pts to establish an owner connection,
the connection attempt is rejected.
only connections to that module. These controllers can receive multicast data while another controller owns the
module. If the owner controller breaks its connection to the output module, all controllers with listen-only
connections no longer receive multicast data.
Rockwell Automation Publication 1756-RM094K-EN-P - October 202097
Chapter 9Communicate with I/O
Runtime/Online Addition of
You can add modules when the controller is in Run mode.
Modules
NetworkConsiderations
ControlNet networkYou can use:
EtherNet/IP networkThe EtherNet/IP I/O modules that you add at runtime can be:
• 1756-CN2, 1756-CN2R, 1756-CN2RTXT any series modules.
• 1756-CNB, 1756-CNBR series D or later communication modules.
Digital I/O modules can be added as rack-optimized connections if the parent module is already configured with rack- optimized connections. While you
can add a new digital I/O module to an existing rack-optimized connection, you cannot add rack-optimized connections while online. Digital I/O
modules can also be added as direct connections.
Analog I/O modules can be added only as direct connections.
Disable the Change of State (COS) feature on digital input modules because it can cause inputs to be sent more quickly than the RPI.
If you plan to add large amounts of I/O to the ControlNet network, dedicate one ControlNet network for I/O. For the dedicated ControlNet network, verify
that there is little or no:
• HMI traffic.
• MSG traffic.
• Programming workstations.
If the module has a Real Time Sample (RTS), disable it or set to a rate that is greater than the RPI.
Considerations for 1756-CN2, 1756-CN2R, 1756-CN2RXT Modules
You can add I/O modules until you reach these limits:
• 80% of CPU utilization of the 1756-CN2, 1756-CN2R, or 1756-CN2RXT communication module.
• Less than 400,000 unscheduled bytes per second are displayed in RSNetWorx™ for ControlNet software after the network has been scheduled.
Considerations for 1756-CNB, 1756-CNBR Modules
Requested Packet Intervals (RPIs) faster than 25 ms for unscheduled modules can overload the 1756-CNB or 1756-CNBR communication module. To
avoid the overload, make these considerations:
• Use a NUT of 10 ms or more.
• Keep the SMAX and UMAX values as small as possible.
You can add I/O modules until you reach these limits:
• 75% of CPU utilization of the 1756-CNB or 1756-CNBR communication module.
• Plan for a CPU-use increase of 1…4% of the 1756-CNB or 1756-CNBR module for each I/O module you add, depending on RPI.
• 48 connections on the 1756-CNB or 1756-CNBR communication module.
• Less than 400,000 unscheduled bytes per second are displayed in RSNetWorx for ControlNet software after the network has been scheduled.
• Added to existing rack-optimized connections
• Added to new rack-optimized connections
• Added as direct connections (you can create rack-optimized connections when adding EtherNet/IP I/O modules at runtime)
You can add I/O modules until you reach the limits of the communication module:
(total number of
packets from both
Ethernet Ports)
80 CIP Connected
Messages
5069-AEN2TR
COMPACT 5000 I/O
Ethernet Adapter
100,000 pps
(total number of
packets from both
Ethernet Ports)
320 CIP Connected
Messages
Communicate with I/OChapter 9
Online Addition of Module and Connection Types
Module Type and
Connection Method
Digital - directYesYesYesYesYesYes—YesYes - 1756 I/O digital
Digital - rack-optimized——YesYesYes—Yes—Yes - 1756 I/O digital
An alog - di rectYe sYesYesYesYesYe s—Ye sYes
Ge ne ric th ird -pa rt y - dire ctYe sYesYesYe sYesYe s—Ye s—
1715 Redundant I/O——YesYes—————
1718/1719 I/O————YesYes——Yes – both analog
1756-ENx - no connectionYesYesYesYes—————
1756-ENx - rack-optimized——YesYes—————
Generic EtherNet/IP thirdparty - direct
1788-EN2FFR or
1788-EN2PAR
1788-CN2FFR or
1788-CN2PAR
1794 FLEX I/O——Yes—YesYes——Yes - Analog output
1734 POINT I/O——Yes—YesYes——Yes
1734 POINT Guard I/O™Yes—Yes——— —— —
5069 Compact 5000 I/O Yes—YesYes
5069 Compact 5000 I/O Safety
Modules
5094 FLEX 5000——YesYes————Yes
5094 FLEX 5000 I/O Safety
Modules
(1) Only supported if adding an entire rack of Compact 5000 I/O modules.
In Local ChassisRemote via an
EtherNet/IP Network
OfflineRuntimeOffline RuntimeOfflineRuntimeOffline only
——YesYes— —— ——
————— —Yes Yes—
——Ye sYesNoYe s———
(1)
Yes—Yes——————
——Ye s—————Ye s
Remote via a ControlNet® NetworkConfigure Hold Last
Output State
Scheduled Unscheduled Scheduled Unscheduled
output modules
output modules
and digital modules
modules only
—— —— Yes
Rockwell Automation Publication 1756-RM094K-EN-P - October 202099
Chapter 9Communicate with I/O
Design Considerations for Runtime/Online Addition of Modules
When you design your network, address these considerations to add modules
at runtime.
Design IssueConsiderations
I/O modulesIf you plan to add 1756 I/O modules at runtime, leave space in the local chassis, remote chassis on a ControlNet network, or remote chassis on
Other modulesYou can add 1757-FFLDC devices remotely via the unscheduled portion of a ControlNet network at runtime.
Input transmission rateMake sure the RPIs work for the data you want to send and receive.
Network topologyOn a ControlNet network, install spare taps so you can add modules at runtime without disrupting the network. Each tap must be terminated
Network configurationOn a ControlNet network, plan which communication can be scheduled or unscheduled.
Network performanceYou can add modules at runtime until you impact the capacity of the communication module.
an EtherNet/IP network for the I/O modules you want to add.
Make sure the added I/O does not depend on change of state data.
not to ground out the system. Check ControlNet system requirements to determine how ma ny spare taps your network can support.
• In a ControlNet network with redundant cabling, you can break the trunk and add a tap, but redundant cabling is lost during the module
installation.
• In a ControlNet ring, add a drop off the ring or add new nodes off the coax and disrupt only part of the network.
• You could remove an existing node and add a repeater off that drop. Then reconnect the existing node and add any new nodes off the new
segment.
On an EtherNet/IP network, reserve some connectio n points on the switch so that you can connect additional nodes or switches in the future.
On an EtherNet/IP network, all communication is immediate and occurs based on the module RPI (also referred to as unscheduled).
If you know that you need a new chassis with digital modules in the future, configure the network and add it to the I/O configuration tree as
rack optimized. Then inhibit the communication adapter until you need the chassis.
Make sure that you have sufficient communication modules for the connections you plan to add.
100Rockwell Automation Publication 1756-RM094K-EN-P - October 2020
Loading...
+ hidden pages
You need points to download manuals.
1 point = 1 manual.
You can buy points or you can get point for every manual you upload.