LIFO 卸载 (LFU)
下表列出了支持此指令的控制器和应用程序。
架构 | 标准应用程序 | 安全应用程序 |
|---|---|---|
CompactLogix 5370、ControlLogix 5570、Compact GuardLogix 5370 和 GuardLogix 5570 控制器 | 是 | 否 |
CompactLogix 5380、ControlLogix 5580、Compact GuardLogix 5380、GuardLogix 5580 和 ControlLogix 5590 控制器 | 是 | 是 |
LFU 指令用于卸载 LIFO 中 .POS 处的值,并在该位置存储 0。
LFU 指令可与 LFL 指令配合使用,以后进先出的顺序存储和检索数据。
使能后,LFU 指令会卸载 LIFO 中 .POS 处的值,并将该值放入 Destination。指令在每次使能后都将卸载一个值并将其替换为 0,直到 LIFO 为空。如果 LIFO 为空,LFU 会将 0 返回到 Destination。
重要提示:
必须进行测试并确认指令不会更改用户不希望更改的数据。
LFU 指令对连续内存进行操作。指令的作用域受到基本标签的约束。LFL 指令不会将数据写入基本标签之外,但可以跨成员边界。如果指定的数组为结构的成员,并且长度超过该数组的大小,则必须测试并确认 LFL 指令不会更改不希望更改的数据。
数据受到指定成员的约束。
如果指令尝试超出数组的末尾执行读操作,则指令会将 .ER 位置位并生成严重故障。
通常,Source 和 LIFO 使用相同的数据类型。如果 Source 和 LIFO 的数据类型不匹配,则指令会将 Source 值转换为 FIFO 标签的数据类型。
较小的整型类型可通过符号扩展转换为较大的整型类型。
可用语言
梯形图

操作数
指令中混用数据类型时,需遵从相关的数据转换规则。
梯形图
操作数 | 类型 | 格式 | 说明 |
|---|---|---|---|
LIFO | SINT INT DINT REAL 字符串类型 结构 | 数组标签 | 要修改的 LIFO 指定 LIFO 的第一个元素 不要在下标中使用 CONTROL.POS |
Destination | SINT INT DINT REAL 字符串类型 结构 | 标签 | 从 LIFO 卸载的值。 |
Control | CONTROL | 标签 | 运算的控制结构 通常使用与关联 LFL 相同的 CONTROL 结构。 |
Length | DINT | 立即数 | LIFO 可同时存储的最大元素数目 |
Position | DINT | 立即数 | LIFO 中指令卸载数据的下一个位置 初始值通常为 0 |
CONTROL 结构
助记符 | 数据类型 | 说明 |
|---|---|---|
.EU | BOOL | 使能位,指示 LFU 指令是否使能。 |
.DN | BOOL | 完成位,置位时指示 LIFO 已满 (.POS = .LEN)。 |
.EM | BOOL | 空位,指示 LIFO 为空。如果 .LEN < 或 = 0 或 .POS < 0,则 .EM 位和 .DN 位都将置位。 |
.LEN | DINT | 长度,指定 LIFO 可同时存储的最大元素数目。 |
.POS | DINT | 位置,用于标识已加载到 LIFO 中的数据的末尾。 |
影响数学状态标志
否
严重/轻微故障
在以下情况下会发生严重故障: | 故障类型 | 故障代码 |
|---|---|---|
如果指定的 Length 超过 LIFO 数组的末尾 | 4 | 20 |
有关操作数相关的故障,请参阅 常用属性。
执行
所有条件仅在普通扫描模式期间才会出现
梯形图
条件/状态 | 执行的操作 |
|---|---|
预扫描 | 请参见“LFU 流程图(预扫描)” |
梯级输入条件为假 | 请参见“LFU 流程图(假)” |
梯级输入条件为真 | 请参见“LFU 流程图(真)” |
后扫描 | 不适用 |
LFU 流程图(预扫描)

LFU 流程图(假)

LFU 流程图(真)

示例
示例 1
梯形图


示例 2
目标数组是 STRING 类型数组或 Structure 类型数组
梯形图

示例 3
LIFO 源数组的数据类型与目标数组的数据类型不匹配
梯形图

提供反馈