Определение фронта

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

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

Наименование: 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.

alarm_fbd

Файл для импорта: 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_fbd.bcf100

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