Триггеры

Триггеры используются для хранения состояния (вкл./выкл.) с приоритетом одного из входов.

RS — Триггер с доминантой RESET

Приоритет имеет вход RESET: если RESET = TRUE, выход всегда FALSE.

Входные параметры:

  • SET (BOOL) — вход установки

  • RESET (BOOL) — вход сброса (приоритетный)

Выходные параметры:

  • Q (BOOL) — выход триггера

Описание работы:

Блок RS реализует триггер, у которого вход RESET имеет приоритет над входом SET. Если вход RESET активен (TRUE), выход Q всегда равен FALSE, независимо от состояния входа SET. Если RESET неактивен (FALSE), то при активации SET выход Q устанавливается в TRUE. При отсутствии сигналов на обоих входах выход Q сохраняет предыдущее состояние.

Таблица истинности:

SET

RESET

Q (новое)

FALSE

FALSE

Без изменений

FALSE

TRUE

FALSE (приоритет)

TRUE

FALSE

TRUE

TRUE

TRUE

FALSE (приоритет)

Пример использования:

PROGRAM Example
VAR
    rs1 : RS;
    set_signal : BOOL;
    reset_signal : BOOL;
    output_state : BOOL;
END_VAR

    rs1(SET := set_signal, RESET := reset_signal);
    output_state := rs1.Q;

END_PROGRAM
        

Внутренняя реализация:

Исходный код блока:

FUNCTION_BLOCK RS
VAR_INPUT
    SET : BOOL;
    RESET : BOOL;
END_VAR
VAR_OUTPUT
    Q : BOOL;
END_VAR
VAR
    SQ : BOOL;
END_VAR

SQ := NOT RESET AND (SQ OR SET);
Q := SQ;

END_FUNCTION_BLOCK
        

SR — Триггер с доминантой SET

Приоритет имеет вход SET: если SET = TRUE, выход всегда TRUE.

Входные параметры:

  • SET (BOOL) — вход установки (приоритетный)

  • RESET (BOOL) — вход сброса

Выходные параметры:

  • Q (BOOL) — выход триггера

Описание работы:

Блок SR реализует триггер, у которого вход SET имеет приоритет над входом RESET. Если вход SET активен (TRUE), выход Q всегда равен TRUE, независимо от состояния входа RESET. Если SET неактивен (FALSE), то при активации RESET выход Q сбрасывается в FALSE. При отсутствии сигналов на обоих входах выход Q сохраняет предыдущее состояние.

Таблица истинности:

SET

RESET

Q (новое)

FALSE

FALSE

Без изменений

FALSE

TRUE

FALSE

TRUE

FALSE

TRUE

TRUE

TRUE

TRUE (приоритет)

Пример использования:

PROGRAM Example
VAR
    sr1 : SR;
    set_signal : BOOL;
    reset_signal : BOOL;
    output_state : BOOL;
END_VAR

    sr1(SET := set_signal, RESET := reset_signal);
    output_state := sr1.Q;

END_PROGRAM
        

Внутренняя реализация:

Исходный код блока:

FUNCTION_BLOCK SR
VAR_INPUT
    SET : BOOL;
    RESET : BOOL;
END_VAR
VAR_OUTPUT
    Q : BOOL;
END_VAR
VAR
    SQ : BOOL;
END_VAR

SQ := (NOT RESET AND SQ) OR SET;
Q := SQ;

END_FUNCTION_BLOCK
        

См. также

Встроенные типы данных - для информации о типе BOOL.