- Studio 5000 Logix Designer
- Tasks, programs, and routines
- Add-On Instructions
- Controller Organizer
- Logical Organizer
- Alarms
- Tag-based alarms
- Tag Editor and Data Monitor
- Configure settings for Tag Editor and Data Monitor
- Equipment phases
- Equipment Sequences
- Equipment Sequence Diagrams
- Ladder Editor
- Structured Text Editor
- Sequential Function Chart Editor
- Define the steps of an SFC process
- PlantPAx instruction properties
- Controller Properties
- Editing Controller Properties
- Controller Security
- Source Protection
- License Source Protection for Routines and Add-On Instructions
- Module Information
- 1756 ControlLogix I/O Modules
- Instruction Set
For (FOR)
This information applies to the CompactLogix 5370, ControlLogix 5570, Compact GuardLogix 5370, GuardLogix 5570, Compact GuardLogix 5380, CompactLogix 5380, CompactLogix 5480, ControlLogix 5580, and GuardLogix 5580 controllers.
The FOR instruction executes a routine repeatedly.
When enabled, the FOR instruction repeatedly executes the Routine until the Index value exceeds the Terminal value. This instruction does not pass parameters to the routine.
The step value can be positive or negative. If it is negative, the loop ends when the index is less than the terminal value. If it is positive, the loop ends when the index is greater than the terminal value.
Each time the FOR instruction executes the routine, it adds the Step size to the Index.
Be careful not to loop too many times in a single scan. An excessive number of repetitions can cause the controller’s watchdog to timeout, which causes a major fault.
Available Languages
Ladder Diagram

Operands
Ladder Diagram
Operand | Type | Format | Description |
---|---|---|---|
Routine name | ROUTINE | tag | Subroutine that is invoked each time the FOR loop executes. |
Index | DINT | tag | Counts how many times the routine has been executed |
Initial value | SINT INT DINT | immediate tag | Value at which to start the index |
Terminal value | SINT INT DINT | immediate tag | Value at which to stop executing the routine |
Step size | SINT INT DINT | immediate tag | Amount to add to the index each time the FOR instruction executes the routine |
Affects Math Status Flags
No
Major/Minor Faults
A major fault will occur if: | Fault type | Fault code |
---|---|---|
The nesting level limit > 25 | 4 | 94 |
the subroutine is an SFC and it is already executing (recursive call) | 4 | 82 |
See Common Attributes for operand-related faults.
Execution
Condition/State | Action |
---|---|
Prescan | The instruction will prescan the named subroutine if it has never been prescanned before. Tip: If recursive FOR instruction exist to the same subroutine, or multiple FOR instruction exist (non-recursive) to the same subroutine, the subroutine is pre-scanned only once. This is also true if the subordinate was prescanned by a JSR. |
Rung-condition-in is false | N/A |
Rung-condition-in is true | See the following FOR Flow Chart (True). |
Postscan | The instruction will postscan the named subroutine exactly once. |
FOR Flow Chart (True)

Examples
When enabled, the FOR instruction repeatedly executes routine_2 and increments value_2 by 1 each time. When value_2 is > 50000 or a BRK instruction is enabled, the FOR instruction no longer executes routine_2.

Provide Feedback