LIFO Unload (LFU)

The LFU instruction unloads the value at .POS of the LIFO and stores 0 in that location.
Use the LFU instruction with the LFL instruction to store and retrieve data in a last-in/first-out order.
When enabled, the LFU instruction unloads the value at .POS of the LIFO and places that value in the Destination. The instruction unloads one value and replaces it with 0 each time the instruction is enabled, until the LIFO is empty. If the LIFO is empty, the LFU returns 0 to the Destination.
IMPORTANT: You must test and confirm that the instruction does not change data that you don’t want it to change.
The LFU instruction operates on contiguous memory. The scope of the instruction is constrained by the base tag. The LFL 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 LFL instruction does not change data you do not want changed.
The data is constrained by the specified member.
If the instruction tries to read past the end of an array, the instruction sets the .ER bit and generates a major fault.
Typically, the Source and the LIFO are the same data type. If Source and LIFO data types mismatch, the instruction converts the Source value to the data type of the FIFO tag.
A smaller integer converts to a larger integer by sign-extension.
Available Languages
Ladder Diagram
Ladder Diagram_LIFO Unload (LFU)_v1
Operands
There are data conversion rules for mixed data types within an instruction.
Ladder Diagram
Operand
Type
Format
Description
LIFO
SINT
INT
DINT
REAL
String type
structure
array tag
LIFO to modify
Specify the first element of the LIFO
Not use CONTROL.POS in the subscript
Destination
SINT
INT
DINT
REAL
String type
structure
tag
Value unloaded from the LIFO.
Control
CONTROL
tag
Control structure for the operation
Typically use the same CONTROL as the associated LFL.
Length
DINT
immediate
Maximum number of elements the LIFO can hold at one time
Position
DINT
immediate
Next location in the LIFO where the instruction unloads data
Initial value is typically 0
CONTROL Structure
Mnemonic
Data Type
Description
.EU
BOOL
The enable bit indicates the LFU instruction is enabled.
.DN
BOOL
The done bit is set to indicate that the LIFO is full (.POS = .LEN).
.EM
BOOL
The empty bit indicates the LIFO is empty. If .LEN < or = to 0 or .POS < 0, both the .EM bit and .DN bit are set.
.LEN
DINT
The length specifies the maximum number of elements the LIFO can hold at one time.
.POS
DINT
The position identifies the end of the data that has been loaded into the LIFO.
Affects Math Status Flags
No
Major/Minor Faults
A major fault will occur if:
Fault Type
Fault Code
If the specified Length is past the end of LIFO array
4
20
See Common Attributes for operand-related faults.
Execution
All conditions occur only during Normal Scan mode
Ladder Diagram
Condition/State
Action Taken
Prescan
See LFU Flow Chart (Prescan)
Rung-condition-in is false
See LFU Flow Chart (False)
Rung-condition-in is true
See LFU Flow Chart (True)
Postscan
N/A
LFU Flow Chart (Prescan)
LFU Flow Chart Prescan
LFU Flow Chart (False)
LFU Flow Chart False
LFU Flow Chart (True)
LFU Flow Chart True
Examples
Example 1
Ladder Diagram
FTStudio-LFU-LD-EX1-V1
RSL5K_LFU array_dint before and after FIFO unload
Example 2
Destination array is STRING array or Structure array
Ladder Diagram
FTStudio-LFU-LD-EX2-V1
Example 3
Data type of LIFO source array mismatch data type of destination array
Ladder Diagram
FTStudio-LFU-LD-EX3-V1
Provide Feedback
Have questions or feedback about this documentation? Please submit your feedback here.