# Генератор импульсов | Типовые задачи Предыдущий Следующий

## Общие сведения Наименование: 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. Файл для импорта: 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. // ======================================= // Квитирование прерывания звуковой сигнализации // на физическом выходе (перевод в 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