Блок Стек ^^^^^^^^^ .. figure:: ../../zwb/lib/fbd_block_STACK.png :align: center **Описание:** Блок функции "Стек" сохраняет массив переменных заданного типа данных. Максимальное количество значений в стеке (размер массива) указывается в свойстве «Размер» блока (см. ниже "Свойства блока"). Значения записываются и считываются по принципу «первый вошел – последний вышел». На вход ``val`` подается значение, записываемое в стек. На вход ``push`` (команда «втолкнуть») для записи значения со входа ``val`` нужно подать значение **1** в течение 1 шага работы схемы. Записываемое значение становится «вершиной стека», ранее записанные значения сдвигаются вниз, а количество значений в стеке, отображаемое на выходе ``depth``, увеличивается на **1**. Вход ``pop`` (команда «вытолкнуть») используется для возврата к предыдущему записанному значению (оно становится «вершиной стека»), при этом текущее значение «вершины стека» стирается, а количество значений в стеке, отображаемое на выходе ``depth``, уменьшается на **1**. **Внимание!** Если выход, подключенный ко входу ``push`` (также, как и ко входу ``pop``), выдает неизменные **1** в течение некоторого интервала времени, блок будет выполнять команду каждый шаг. Если нужно выполнять команду по фронту подаваемого сигнала, нужно установить соответствующим образом свойство входа "Тип входа". Выход ``top`` выдает значение "вершины стека", если стек пустой – значение **0**. Выход ``depth`` выдает количество значений в стеке, оно не может быть больше указанной «максимальной глубины» стека. Выход ``err`` выдает признак ошибки - если подана команда ``push`` при полностью заполненном стеке (``push`` = **1** и ``depth`` = «макс. глубина»), или если подана команда ``pop`` при пустом стеке (``pop`` = **1** и ``depth`` = **0**). При выдаче ``err`` = **1** состояние стека не меняется. **Свойства блока:** (ПКМ по блоку - Свойства ( :guilabel:`Alt` + :guilabel:`P` )) **Общие свойства:** см. Редактирование свойств блока. **Тип данных:** допускаются любые типы данных из предложенных. **Макс. глубина:** в данном пункте устанавливается предельное количество значений в массиве, которые могут быть записаны в стек.