ISaGRAF. Version 3.4

          

STACK


INT

STACK

Аргументы:

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” : управление ошибками*)

STACK

(* 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



Содержание раздела