RS-триггер

Типовые задачи  Предыдущий  Следующий

Общие сведения

Наименование: TRG.

Тип выхода: логический.

Количество входов: 2 или 3.

Примечания по входам

порядок входов: «S-вход», «R-вход», «Приоритетное значение»;

значение на третий вход («Приоритетное значение») можно не указывать — по умолчанию равно логической единице.

Функционирование

если «Приоритетное значение» равно логической единице (прио­ри­тет на включение):

значение выхода будет равно логической единице с момента установления значения логической единицы на «S-входе» до момента установления значения логического нуля на «S-входе» и логической единицы на «R-входе»;

значение выхода будет равно логическому нулю с момента установления значения логического нуля на «S-входе» и логической единицы на «R-входе» до момента установления значения логической единицы на «S-входе»;

если «Приоритетное значение» равно логическому нулю (приори­тет на отключение):

значение выхода будет равно логической единице с момента уста­новления значения логической единицы на «S-входе» и логи­чес­кого нуля на «R-входе» до момента установления логи­ческой еди­ницы на «R-входе»;

значение выхода будет равно логическому нулю с момента установления значения логического нуля на «S-входе» и логической единицы на «R-входе» до момента установления значения логической единицы на «S-входе»;

выход имеет неинициализированное состояние, если хотя бы один из входов имеет неинициализированное состояние;

значение выхода недостоверно, если один из входов имеет недосто­верное значение (даже если другой вход имеет неинициализированное состояние).

Не допускается использование данного алгоблока в вызываемых подпрограммах!

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

BLOCK1 = TRG(DI1.1; DI1.2; 0)

// Приоритет на отключение.

// =======================================

BLOCK2 = TRG(DO1.1; ~DO1.2)

// ~DO1.2 — инверсия значения.

// =======================================

BLOCK3 = TRG(BLOCK1; BLOCK2)

// Использование в аргументах значений других алгоблоков.

// =======================================

B1 = OR(DI1.1; DI1.2; DI1.3)

B2 = AND(DI1.4; DI1.5)

B3 = TRG(B1; B2)

B4 = RESULT(DO1.1; B3)

// Реализация дискретного регулирования на канале DO1.1,

// (где: В1 - формула включения, В2 - формула отключения)

// с приоритетом на включение.

// =======================================

// Дискретное регулирование от 100 до 900

B1 = DOWN_HYSTER(AI1.1; 100)

B3 = UP_HYSTER(AI1.1; 900)

B5 = TRG(B1; B3)

B6 = RESULT(DO1.1; B5)

B7 = PHY_DSC(DO1.1)

// Дискретное регулирование по значению 

// аналогового входного канала AI1.1 

// от 100 до 900 посредством 

// дискретного выходного канала DO1.1.

do100to900_fbd

Файл для импорта: do100to900.help

// =======================================

// Реализация тумблера

// (первое нажатие DI1.1 включает DO1.1,

// второе нажатие DI1.1 отключает DO1.1)

B010 = TRG(B020; ~DI1.1)

B020 = AND(DI1.1; ~B010)

B030 = AND(~B050; B020)

B040 = AND(B050; B020)

B050 = TRG(B030; B040)

B060 = RESULT(DO1.1; B050)

toggle_fbd

Файл для импорта: toggle.help

// =======================================

// Квитирование прерывания звуковой сигнализации

// на физическом выходе (перевод в 0)

// DO1.1 - сигнальный звуковой канал

// B001 - логика срабатывания DO1.1

B001 = OR(DI1.1; DI2.1; DI3.1)

B005 = RESULT(DO1.1; B001)

// DI1.2 - кнопка квитирования

// прерывание физ. сигнала (вкл/откл): 1 с / 1 с

B010 = OR(DO1.1; DI1.2)

B020 = TRG(DI1.2; ~B010)

B030 = FRN(DO1.1; 1)

B040 = FRQ(10; 10; 1; B030)

B050 = AND(~B020; DO1.1; B040)

B060 = PHY_DSC(DO1.1; B050)

confirm_alarm_fbd.bcf100

Файл для импорта: confirm_alarm.help

// =======================================

// Выделение переднего фронта из сигнала DI1.1

// DO1.1 на один такт = 1, когда включается DI1.1

B020 = TRG(B030; ~DI1.1)

B030 = AND(~B020; DI1.1)

B040 = RESULT(DO1.1; B030)

// Выделение заднего фронта из сигнала DI1.1

// DO1.2 на один такт = 1, когда отключается DI1.1

B110 = TRG(DI1.1; B120)

B120 = AND(~DI1.1; B110)

B130 = RESULT(DO1.2; B120)

front_fbd

Файл для импорта: front.help