# Определение фронта | Типовые задачи Предыдущий Следующий

## Общие сведения Наименование: FRN. Тип выхода: логический. Количество входов: 2. ## Примечание по входам •порядок входов: «Сигнал», «Вид фронта»; •«Вид фронта»: логическая единица — передний (положительный) фронт, логический нуль — задний (отрицательный) фронт. ## Функционирование •если второй вход («Вид фронта») имеет значение логической единицы (передний фронт): •значение выхода равно логической единице при переходе значения первого входа («Сигнал») из логического нуля в логическую единицу; •значение выхода равно логическому нулю, если изменения значения первого входа («Сигнал») из логического нуля в логическую единицу нет; •если второй вход («Вид фронта») имеет значение логического нуля (задний фронт): •значение выхода равно логической единице при переходе значения первого входа («Сигнал») из логической единицы в логический нуль; •значение выхода равно логическому нулю, если изменения значения первого входа («Сигнал») из логической единицы в логический нуль нет; •выход имеет неинициализированное состояние, если хотя бы один из входов имеет неинициализированное состояние; •значение выхода недостоверно, если один из входов имеет недостоверное значение (даже если другой вход имеет неинициализированное состояние); •особые ситуации — значение выхода на один такт становится равным логической единице, если: •значение второго канала («Вид фронта») менялось с логической единицы на нуль и первый вход («Сигнал») был равен логическому нулю; •значение второго канала («Вид фронта») менялось с логического нуля на единицу и первый вход («Сигнал») был равен логической единице.
Не допускается использование данного алгоблока в вызываемых подпрограммах!
## Примеры использования BLOCK1 = FRN(DI1.1; 1) // При включении канала DI1.1 BLOCK1 // на один такт становится равным 1. // ======================================= BLOCK2 = FRN(AI1.1; BLOCK4) // Использование в аргументах каналов и алгоблоков. // ======================================= B1 = FRN(DO1.1; 1) B2 = ADD(AO1.1; B1) B3 = RESULT(AO1.1; B2; 0) // Аналоговый выходной канал AO1.1 считает количество // включений дискретного выходного канала DO1.1. // ======================================= B1 = FRQ(100; 100) // Импульсы: 10 с вкл. и 10 с откл. B2 = FRN(B1; 0) B3 = ADD(AO1.1; B2) B4 = RESULT(AO1.1; B3; 0) // Аналоговый выходной канал AO1.1 считает количество // переключений значения блока В1 из 1 в 0. // ======================================= // Реализация внешней звуковой сигнализации B1 = ASK_LIM(60; AI1.1) // Определение сработанных уставок канала AI1.1 B2 = ASK_LIM(60; AI1.2) // Определение сработанных уставок канала AI1.2 B3 = OR(B1; B2) // Формула срабатывания B4 = DELAY(B3; 30; 1) // Задержка включения 3 с B5 = DELAY(B4; 20; 0) // Задержка отключения 2 с B6 = FORCE_OFF(B5; 6000) // Принудительное отключение через 10 мин B7 = RESULT(DO1.1; B6) // Установка логического значения в DO1.1 B8 = FRN(B7; 1) // Старт прерываний в момент срабатывания B9 = FRQ(50; 30; 1; B8) // Задание прерывания 5 с включен, 3 с отключен B10 = CLR_ACK(B1; B2) // Возобновление сигнализации B11 = ACK(1; B9; B3; DI1.4; B10) // Задание сигнализации (звуковой) B12 = PHY_DSC(DO1.1; B11) // Установка физического значения DO1.1. Файл для импорта: ack.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.help