STACK
INT

Аргументы:
PUSH BOO команда “PUSH” (на переднем фронте)
добавить значение IN в верхушку стека
POP BOO команда “POP” (на переднем фронте)
удалить из верхушки стека последнее сохраненное значение
R1 BOO сбросить стек в пустое состояние
IN INT сохраняемое значение
N INT размер стека определенный приложением
EMPTY BOO TRUE если стек пустой
OFLO BOO переполнение: TRUE если стек переполнен
OUT INT значение в верхушке стека
Описание:
Управляет стеком целых значений.
Функциональный блок “STACKINT” включает определение переднего фронта для команд PUSH и POP. Максимальный размер стека 128. Размер стека определенный приложением - N не может быть меньше 1 и больше 128.
Заметим, что значение OFLO действительно только после сброса (R1 было установлено в TRUE, по крайней мере, однажды и обратно в FALSE)
(*FBD пример блоков “STACKINT” : управление ошибками*)

(* ST Эквивалент: Мы предполагаем, что STACKINT1 - это экземпляр блока STACKINT *)
STACKINT1(err_detect, acknoledge, manual_mode, err_code, max_err);
appli_alarm := auto_mode AND NOT(STACKINT1.EMPTY);
err_alarm := STACKINT1.OFLO;
last_error := STACKINT1.OUT;
(* IL Эквивалент: *)
LD err_detect
ST STACKINT1.push
LD acknoledge
ST STACKINT1.pop
LD manual_mode
ST STACKINT1.r1
LD err_code
ST STACKINT1.IN
LD max_err
ST STACKINT1.N
CAL STACKINT1
LD auto_mode
ANDN STACKINT1.empty
ST appli_alarm
LD STACKINT1.OFLO
ST err_alarm
LD STACKINT1.OUT
ST last_error