文件排序 (SRT)
此信息适用于
CompactLogix
5370、ControlLogix
5570、Compact GuardLogix
5370、GuardLogix
5570、Compact GuardLogix
5380、CompactLogix
5380、ControlLogix
5580、GuardLogix
5580 和 ControlLogix 5590 控制器。在适用的情况下会注明控制器的差异。SRT 指令可将数组的某个维数(变化维数)中的一系列值按升序排列。
可用语言
梯形图

功能块
此指令不可用于功能块中。
结构化文本
SRT(Array,Dimtovary,Control);
操作数
梯形图
操作数 | 类型 | 格式 | 说明 |
|---|---|---|---|
Array | SINT INT DINT REAL | 数组标签 | 要排序的数组 指定要排序的元素组的第一个元素 |
Dimension to vary | DINT | 立即数 (0、1、2) | 要使用的维度 维度的顺序是:array[0,1,2] |
Control | CONTROL | 标签 | 运算的控制结构 |
Length | DINT | 立即数 | 要排序的数组的元素数目 |
Position | DINT | 立即数 | 数组中的当前元素 初始值通常为 0 |
长度和位置(对应于控制标签中的 .LEN 和 .POS)是伪操作数。有关详细信息,请参阅 伪操作数初始化。
结构化文本
操作数 | 类型 | 格式 | 说明 |
|---|---|---|---|
Array | SINT INT DINT REAL | 数组标签 | 要排序的数组 指定要排序的元素组的第一个元素 |
Dimension to vary | DINT | 立即数 (0、1、2) | 要使用的维度 维度的顺序是:array[0,1,2] |
Control | CONTROL | 标签 | 运算的控制结构 |
Length | DINT | 立即数 | 要排序的数组的元素数目。 指定的 Length 和 Position 值从 CONTROL 结构的 .LEN 和 .POS 成员获取。 |
Position | DINT | 立即数 | 数组中的当前元素 初始值通常为 0 指定的 Length 和 Position 值从 CONTROL 结构的 .LEN 和 .POS 成员获取。 |
有关结构化文本中表达式语法的详细信息,请参见“结构化文本语法”部分。
CONTROL 结构
助记符 | 数据类型 | 说明 |
|---|---|---|
.EN | BOOL | 使能位,指示 SRT 指令是否使能。 |
.DN | BOOL | 完成位,指令对数组中最后一个元素进行运算后置位。 |
.ER | BOOL | 错误位,当 .LEN < 0 或 .POS < 0 时置位。这两种情况也会引发严重故障。 当 .ER 位置位时,指令不执行。 |
.LEN | DINT | 长度字,用于指定参与指令运算的数组元素数目。 |
.POS | DINT | 位置字,用于指定指令正在访问的当前元素。 |
说明
SRT 指令可将数组的某个维数(变化维数)中的一系列值按升序排列。
重要提示:
必须进行测试并确认指令不会更改用户不希望更改的数据。
SRT 指令将对连续数据存储器执行运算。仅对于 ,指令的作用域受基本标签约束。SRT 指令不会将数据写入基本标签 (base tag) 之外,但可以跨成员边界。如果指定的数组为结构的成员,并且长度超过该数组的大小,则必须测试并确认 SRT 指令不会更改不希望更改的数据。
CompactLogix
5370、ControlLogix
5570、Compact GuardLogix
5370 和 GuardLogix
5570 控制器在,数据受到指定成员的约束。
CompactLogix
5380、ControlLogix
5580、Compact GuardLogix
5380、GuardLogix
5580 和 ControlLogix 5590 控制器在此跳变指令中,继电器梯形图将梯级输入条件由假切换为真时,指令执行。
影响数学状态标志
控制器 | 影响数学状态标志 |
|---|---|
CompactLogix 5380、ControlLogix 5580、Compact GuardLogix 5380、GuardLogix 5580 和 ControlLogix 5590 控制器 | 否 |
CompactLogix 5370、ControlLogix 5570、Compact GuardLogix 5370 和 GuardLogix 5570 控制器 | 是 |
严重/轻微故障
在以下情况下会发生严重故障: | 故障类型 | 故障代码 |
|---|---|---|
.POS < 0 或 .LEN < 0 | 4 | 21 |
Dimension to vary > 维度数 | 4 | 20 |
Length > 数组末尾 | 4 | 20 |
请参见“通用属性”,了解与操作数相关的故障。
执行
梯形图
条件/状态 | 执行的操作 |
|---|---|
预扫描 | 不适用。 |
梯级输入条件为假 | .EN 位设置为假 .EN 位设置为假 .DN 位设置为假 |
梯级输入条件为真 | 指令执行 |
后扫描 | 不适用。 |
结构化文本
条件/状态 | 执行的操作 |
|---|---|
预扫描 | 请参见“梯形图”表中的“预扫描”行 |
正常执行 | 由于该指令需要跳变信号方可执行,因此在梯级由假变真时执行该指令。有关详细信息,请参见“梯形图”表。 |
后扫描 | 请参见“梯形图”表中的“后扫描”行。 |
示例
示例 1
将 DINT_array (DINT[4,5]) 排序。

梯形图

结构化文本
IF sort1 then
control_1.LEN := 4;
control_1.POS := 0;
SRT(DINT_array[0,2],0, control_1);
END_IF;
示例 2
将 DINT_array (DINT[4,5]) 排序。

梯形图

结构化文本
ctrl.LEN := 4;
ctrl.POS := 0;
SRT(DINT_array[0,2],0, ctrl);
提供反馈