Блок Очередь

_images/fbd_block_QUEUE.png

Описание: Блок функции “Очередь” cохраняет массив переменных заданного типа данных и фиксированной длины. Количество значений в очереди (размер массива) указывается в свойстве «Длина очереди» (см. ниже “Свойства блока”). Значения записываются и считываются по принципу FIFO - «первый вошел – первый вышел».

Вход val используется для подачи значения, записываемого в очередь.

Для записи в очередь значения со входа val, на вход push (команда «втолкнуть») нужно подать значение 1 в течение 1 шага работы схемы. Записываемое значение становится в первую позицию очереди, ранее записанные значения сдвигаются в следующую позицию. Внимание! Если выход, подключенный ко входу push, выдает неизменные 1 в течение некоторого интервала времени, блок будет выполнять команду каждый шаг. Если нужно выполнять команду по фронту подаваемого сигнала, нужно установить соответствующим образом свойство входа “Тип входа”.

Выход last выдает значение первого записанного элемента в очередь, при условии, что за ним еще 9 значений во очереди. Если количество записанных элементов в очереди меньше длины очереди – на выход last выдается 0. Значения, позиция в очереди которых больше длины очереди, не сохраняются.

Таким образом, данный блок выполняет “задержку” значения, подаваемого на вход, на указанное количество шагов. Например, для задержки на 10 секунд нужно на вход push подать сигнал таймера с периодом 1000 мсек, а в свойстве “Размер” указать 10. Блок будет хранить 10 последних значений и выдавать на выход самое старое из них.

Свойства блока: (ПКМ по блоку - Свойства ( Alt + P ))

Общие свойства: см. Редактирование свойств блока.

Тип данных: допускаются любые типы данных из предложенных.

Размер очереди: в данном пункте устанавливается предельное количество значений в массиве, которые могут быть записаны в очередь.