LIFO

PLCopen motion icon

 Function BlockClosed A function block groups an algorithm and a set of private data. It has inputs and outputs. - Manages a last in / first out list.

Inputs

Inputs

Data Type

Range

Unit

Default

Description

BUFFER

ANY

 

 

 

Array for storing values.

NEXTOUT

ANY

 

 

 

Value at the top of the stack.

Updated after call.

NEXTIN

ANY

 

 

 

Value to be pushed.

POP

BOOL

 

 

 

Pop a new value on the rising edgeClosed The transition of a digital signal from low to high. AKA: positive edge..

PUSH

BOOL

 

 

 

Push a new value on the rising edge.

RST

BOOL

 

 

 

ResetClosed New start of the microprocessor. the list.

Outputs

Outputs

Data Type

Range

Unit

Description

EMPTY

BOOL

 

 

TRUE if the list is empty.

OFLO

BOOL

 

 

TRUE if the overflow is on a PUSH command.

CountClosed Internal count pulses, 1 pulse = 1/2^20turn.

DINT

 

 

Number of values in the list.

pRead

DINT

 

 

IndexClosed Zero pulse (zero signal) of a hardware pin such as digital input or feedback pin. in the buffer of the top of the stack.

pWrite

DINT

 

 

Index in the buffer of the next push positionClosed Position means a point in space which is described by different coordinates. Depending on the used system and transformation it can consist of a maximum of six dimensions (coordinates).This means three Cartesian coordinates in space and coordinates for the orientation. In ACS there can be even more than six coordinates. If the same position is described in different coordinate systems the values of the coordinates are different..

Remarks

  • NEXTIN, NEXTOUT, and BUFFER must have the same data type.
    • It cannot be a STRING.
  • The NEXTOUT argument specifies a variable filled with the value at the top of the stack after the block is called.
  • Values are stored in the BUFFER array.
    • Data is never shifted or reset.
    • Only read and write pointers and pushed values are updated.
    • The maximum size of the stack is the dimension of the array.
  • The first time an instance of the LIFO functionClosed A function calculates a result according to the current value of its inputs. A function has no internal data and is not linked to declared instances. block is called, that instance stores which array is passed to BUFFER.
    • If a later call to the same instance passes a different array for the BUFFER argument, the call is considered invalid and no action is performed.
    • The EMPTY output returns TRUE in this case.

FBD Language Example

FFLD Language Example

  • In the FFLD Language, the input rung is the PUSH input.
    • The output rung is the EMPTY output.

IL Language Example

(* MyLIFO is a declared instance of LIFO function block *)
Op1: CAL MyLIFO (PUSH, POP, RST, NEXTIN, NEXTOUT, BUFFER)
FFLD  MyLIFO.EMPTY
STClosed Structured text - A high-level language that is block structured and syntactically resembles Pascal.  EMPTY
FFLD  MyLIFO.OFLO
ST  OFLO
FFLD  MyLIFO.COUNT
ST  COUNT
FFLD  MyLIFO.PREAD
ST  PREAD
FFLD  MyLIFO.PWRITE
ST  PWRITE

ST Language Example

(* MyLIFO is a declared instance of LIFO function block. *)
MyLIFO (PUSH, POP, RST, NEXTIN, NEXTOUT, BUFFER);
EMPTY := MyLIFO.EMPTY;
OFLO := MyLIFO.OFLO;
COUNT := MyLIFO.COUNT;
PREAD := MyLIFO.PREAD;
PWRITE := MyLIFO.PWRITE;

See Also

FIFO