File Sort (SRT)
    This information applies to the 
CompactLogix
 5370, ControlLogix
 5570, Compact GuardLogix
 5370, GuardLogix
 5570, CompactLogix
 5380, CompactLogix
 5480, and ControlLogix
 5580 controllers. Controller differences are noted where applicable. The SRT instruction sorts a set of values in one dimension (Dim to vary) of the array into ascending order.
Available Languages
Ladder Diagram

Function Block
This instruction is not available in function block.
Structured Text
SRT(Array,Dimtovary,Control);
Operands
Ladder Diagram
Operand  | Type  | Format  | Description  | 
|---|---|---|---|
Array  | SINT INT DINT REAL  | Array tag  | array to sort specify the first element of the group of elements to sort  | 
Dimension to vary  | DINT  | Immediate (0, 1, 2)  | which dimension to use the order of the dimensions is: array[0,1,2]  | 
Control  | CONTROL  | Tag  | control structure for the operation  | 
Length  | DINT  | Immediate  | number of elements of the array to sort  | 
Position  | DINT  | Immediate  | current element in the array initial value is typically 0  | 
Length and Position (corresponding to .LEN and .POS in the control tag) are pseudo-operands. For details, see Pseudo-operand initialization.
Structured Text
Operand  | Type  | Format  | Description  | 
|---|---|---|---|
Array  | SINT INT DINT REAL  | Array tag  | array to sort specify the first element of the group of elements to sort  | 
Dimension to vary  | DINT  | Immediate (0, 1, 2)  | which dimension to use the order of the dimensions is: array[0,1,2]  | 
Control  | CONTROL  | Tag  | control structure for the operation  | 
Length  | DINT  | Immediate  | Number of elements of the array to sort.  The specified Length and Position values are accessed from the .LEN and .POS members of the CONTROL structure.  | 
Position  | DINT  | Immediate  | current element in the array initial value is typically 0 The specified Length and Position values are accessed from the .LEN and .POS members of the CONTROL structure.  | 
See Structured Text Syntax for more information on the syntax of expressions within structured text.
CONTROL Structure
Mnemonic  | Data Type  | Description  | 
|---|---|---|
.EN  | BOOL  | The enable bit indicates the SRT instruction is enabled.  | 
.DN  | BOOL  | The done bit is set when the instruction has operated on the last element in the Array.  | 
.ER  | BOOL  | The error bit is set when either .LEN < 0 or .POS < 0. Either of these conditions also generates a major fault. When .ER bit is set, the instruction does not execute.  | 
.LEN  | DINT  | The length word specifies the number of elements in the array on which the instruction operates.  | 
.POS  | DINT  | The position word identifies the current element that the instruction is accessing.  | 
Description
The SRT instruction sorts a set of values in one dimension (Dim to vary) of the Array into ascending order.
     IMPORTANT: 
    
You must test and confirm that the instruction does not change data that you don’t want it to change.
The SRT instruction operates on contiguous data memory. For the
        
        only, the scope of the instruction is constrained by the base tag. The SRT instruction will not write data outside of the base tag but can cross member boundaries. If you specify an array that is a member of a structure, and the length exceeds the size of that array you must test and confirm that the SRT instruction does not change data you do not want changed.
CompactLogix
 5370, ControlLogix
 5570, Compact GuardLogix
 5370, and GuardLogix
 5570 controllersIn the
        
        , the data is constrained by the specified member.
CompactLogix
 5380, CompactLogix
 5480, ControlLogix
 5580, Compact GuardLogix
 5380, and GuardLogix
 5580 controllersIn this transitional instruction, the relay ladder toggles the rung-condition-in from false to true for the instruction to execute.
Affects Math Status Flags
Controllers  | Affects Math Status Flags  | 
|---|---|
CompactLogix  5380, CompactLogix  5480, ControlLogix  5580, Compact GuardLogix  5380, and GuardLogix  5580 controllers | No  | 
CompactLogix  5370, ControlLogix  5570, Compact GuardLogix  5370, and GuardLogix  5570 controllers | Yes  | 
Major/Minor Faults
A major fault will occur if:  | Fault type  | Fault code  | 
|---|---|---|
.POS < 0 or .LEN < 0  | 4  | 21  | 
Dimension to vary > number of dimensions  | 4  | 20  | 
Length > end of array  | 4  | 20  | 
See 
Common Attributes
 for operand related faults.Execution
Ladder Diagram
Condition / State  | Action Taken  | 
|---|---|
Prescan  | N/A.  | 
Rung-condition-in is false  | .EN bit is cleared to false .EN bit is cleared to false .DN bit is cleared to false  | 
Rung-condition-in is true  | The instruction executes  | 
Postscan  | N/A.  | 
Structured Text
Condition / State  | Action Taken  | 
|---|---|
Prescan  | See Prescan in the Ladder Diagram table  | 
Normal execution  | Since this instruction requires a transition to execute it is executed false and then true. See the Ladder Diagram table for details.  | 
Postscan  | See Postscan in the Ladder Diagram table.  | 
Examples
Example 1
Sort DINT_array, which is DINT[4,5].

Ladder Diagram

Structured Text
IF sort1 then
 control_1.LEN := 4;
 control_1.POS := 0;
 SRT(DINT_array[0,2],0, control_1);
END_IF;
Example 2
Sort DINT_array, which is DINT[4,5].

Ladder Diagram

Structured Text
ctrl.LEN := 4;
ctrl.POS := 0;
SRT(DINT_array[0,2],0, ctrl);
Provide Feedback