LIFO
Function block - Manages a last in / first out stack.
Inputs
Input |
Data type |
Description |
PUSH |
BOOL |
Push a new value (on rising edge). |
POP |
BOOL |
Pop a new value (on rising edge). |
RST |
BOOL |
Reset the list. |
NEXTIN |
ANY |
Value to be pushed. |
NEXTOUT |
ANY |
Value at the top of the stack - updated after call! |
BUFFER |
ANY |
Array for storing values. |
Outputs
Output |
Data type |
Description |
EMPTY |
BOOL |
TRUE if the stack is empty. |
OFLO |
BOOL |
TRUE if overflow on a PUSH command. |
COUNT |
DINT |
Number of values in the stack. |
PREAD |
DINT |
Index in the buffer of the top of the stack. |
PWRITE |
DINT |
Index in the buffer of the next push position. |
Remarks
NEXTIN, NEXTOUT and BUFFER must have the same data type and cannot be STRING.
The NEXTOUT argument specifies a variable that is 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 the block is called, it remembers on which array it should work. If you call later the same instance with another BUFFER input, the call is considered as invalid and makes nothing. Outputs reports an empty stack in this case.
In LD language, input rung is the PUSH input. The output rung is the EMPTY output.
ST Language
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;
FBD Language
LD Language
|
Created with the Personal Edition of HelpNDoc: Experience the Power and Ease of Use of HelpNDoc for CHM Help File Generation