Генератор импульсов

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

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

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

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

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

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

порядок входов: «Продолжительность логи­чес­кой единицы», «Про­дол­­жительность логического нуля», «Порядок следования импульсов», «Логический сигнал сброса»;

значения двух первых входов целые положительные и задаются в тактах Контроллера (один такт = 100 мс);

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

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

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

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

значение выхода равно логическому нулю, если первый вход имеет нулевое значение, а значение второго входа больше или равно нулю;

значение выхода равно логической единице, если второй вход имеет нулевое значение, а значение первого входа больше нуля;

недостоверное значение или неинициализированное состояние третьего входа («Порядок следования импульсов») эквивалентно логической единице;

недостоверное значение или неинициализированное состояние четвертого входа («Логический сигнал сброса») эквивалентно логическому нулю;

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

первый или второй вход имеет округленное значение, меньшее либо равное нулю;

первый и второй входы имеют неиницилизированные состояния;

первый и второй входы имеют значение меньшее либо равное нулю (даже если третий или четвертый вход имеет неинициализированное состояние);

значение выхода недостоверно, если:

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

первый и второй входы имеют недостоверные значения (даже если третий или четвертый вход имеет неинициализированное состояние).

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

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

BLOCK1 = FRQ(10; 10)

// Задает последовательность, состоящую из 

// 1 с единичного значения и 1 с нулевого.

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

BLOCK2 = FRQ(10; 100; 0)

// Задает последовательность, состоящую из 

// 10 с нулевого значения и 1 с единичного.

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

BLOCK5 = FRQ(AI1.1; BLOCK4; 0; DI1.4)

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

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

// Подсчет количества задних фронтов периодического сигнала

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

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

// Реализация счетчика моточасов

// DI1.1 - равен 1, когда агрегат включен (работает)

// AO1.1 - счетчик моточасов 

// TBL1 - таблица из одной ячейки, хранит значение счетчика

// при отключении питания модуля ПР

B00 = FRQ(1; 5999)

// B00 раз в 10 минут на 1 такт становится равным 1

B10 = DIV(DI1.1; 36000)

// пересчет времени работы агрегата в часы

B20 = TBL_SEL(TBL1; 0)

B30 = MAX(AO1.1; B20)

// восстанавливаем значение, если было отключение питания

B40 = ADD(B30; B10)

// увеличиваем значение счетчика

B50 = TBL_WRITE(TBL1; 0; B40; B00)

// записываем значение в ячейку таблицы TBL1 раз в 10 минут

B60 = RESULT(AO1.1; B40; 0)

// записываем значение в канал AO1.1.

motor_fbd

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

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

// на физическом выходе (перевод в 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