Таймер ^^^^^^ .. figure:: ../../zwb/lib/fbd_block_timer1.png :align: center **Описание:** Выдает на выход **1** с заданным интервалом многократно, или однократно после установки разрешающего сигнала. Вход ``еn`` – разрешение работы таймера, при установленной **1** – выдача **1** на выходе разрешена, при **0** – запрещена. Вход ``interval`` задает период выдачи **1** на выходе. Выход равен **1**, если соблюдены все следующие условия: * вход ``en`` равен **1** в течение времени, в миллисекундах, не меньшего, чем значение на входе ``interval``, сохраненное на шаге переднего фронта входа ``en``, * значение выхода на предыдущем шаге выполнения было **0**, * со времени выдачи предыдущей **1** или переднего фронта входа ``en`` на выходе прошло время, в миллисекундах, не меньшее, чем значение на входе ``interval``, запомненное в шаге предыдущей **1** или переднего фронта входа ``en``. Циклограмма работы блока :guilabel:`Таймер`: .. figure:: ../../zwb/lib/fbd_cycle_timer.png :align: center **Свойства блока:** **Общие свойства:** см. Редактирование свойств блока. **Однократно:** **1** выдается только в «одиночном» режиме, т.е. течение одного шага! Между соседними **1** в течение, как минимум, одного шага, гарантированно выдается **0**. Опция ``Однократно`` указывает, что выдача **1** будет выполняться только один раз, после каждого переднего фронта входа ``en``. Иначе 1 будут выдаваться многократно. Все блоки-таймеры проекта используют один аппаратный «базовый» таймер устройства, настраиваемый на определенный постоянный интервал срабатывания. Интервал срабатывания базового таймера указывается в свойствах проекта. Переменная – признак срабатывания базового таймера устанавливается перед выполнением каждого шага вычисления схемы, при этом, если на предыдущем шаге была **1**, то на этом шаге устанавливается **0**, независимо от времени. Для отсчета времени каждый блок использует внутреннюю переменную-счетчик. Алгоритм выполнения блока: * если признак срабатывания базового таймера равен **0** – выдать **0**, закончить выполнение, * если вход ``en`` равен **0** – выдать **0**, записать в переменную-счетчик значение ``Interval`` / (Интервал базового таймера), закончить выполнение, * уменьшить переменную-счетчик на 1, * если переменная-счетчик равна **0** – выдать **1** и, если свойство ``Однократно`` **не** установлено – записать в переменную-счетчик значение ``Interval`` / (Интервал базового таймера) для следующего срабатывания.