Просмотр полной версии : Вопрос по счетчикам в ПР
Константин1991
15.01.2026, 10:53
Всем добрый день!
Нужна ваша помощь, совет, мысли.
Не совсем я новичок, но есть следующая потребность в решении такой простой, на мой взгляд, задачи.
Условно, есть некий датчик, который выдает кратковременно сигнал равный логической 1 на вход любой из ПР. При повторном появлении этого сигнала на тот же вход ПР в течении заданного времени необходимо включить один из выходов ПР до момента сброса вручную, например с кнопки. Но, если в течении заданного времени повторно сигнал так и не поступил на вход, то необходимо обнулить цикл этого блока алгоритма.
Понимаю, что мне скорее всего подойдет один из счетчиков в ОвенЛогике и скорее всего 1 из таймеров с задержкой, но не понимаю как это все связать воедино.
когда не знаете спросите у Алисы:
Разберём задачу пошагово и построим алгоритм на базе стандартных функциональных блоков (ФБ) в среде Овен Логика (или аналогичной ПЛК‑среде).
Анализ требований
Нам нужно:
Фиксировать первый импульс на входе → запомнить факт события.
Запустить таймер обратного отсчёта (заданное время).
Если в течение этого времени приходит второй импульс на тот же вход → включить выход до ручного сброса.
Если второй импульс не пришёл до истечения таймера → сбросить состояние (обнулить цикл).
Обеспечить ручной сброс выхода (например, по кнопке).
Необходимые функциональные блоки
RS‑триггер — запоминает факт первого импульса.
Таймер с задержкой выключения (TOF) — отсчитывает заданное время после первого импульса.
И‑элемент (AND) — проверяет одновременное наличие:
сигнала на входе (второй импульс),
активного состояния RS‑триггера (первый импульс был),
неистекшего таймера (время ещё идёт).
RS‑триггер для выхода — удерживает выходной сигнал до ручного сброса.
Кнопка сброса — асинхронный вход для обнуления выходного триггера.
Схема алгоритма (пошагово)
Шаг 1. Фиксация первого импульса
Вход датчика → детектор фронта (чтобы ловить только нарастающий край).
Выход детектора → вход S первого RS‑триггера (Trig_1).
Trig_1 теперь «запомнил», что первый импульс был.
Шаг 2. Запуск таймера
Выход Trig_1 → запускает TOF‑таймер (Timer_TOF).
Параметр таймера: заданное время (например, 5 с).
Пока таймер активен (Timer_TOF.Q = 1), ждём второй импульс.
Шаг 3. Проверка второго импульса
Вход датчика (снова через детектор фронта) → вход A элемента AND.
Выход Trig_1 → вход B элемента AND.
Выход Timer_TOF.Q → вход C элемента AND.
Выход AND → вход S второго RS‑триггера (Output_Trig).
Если все три условия выполнены (второй импульс + первый был + время не истекло) → Output_Trig включается.
Шаг 4. Удержание выхода
Выход Output_Trig → выходной сигнал ПЛК.
Кнопка сброса → вход R Output_Trig (асинхронный сброс).
Шаг 5. Сброс цикла
Если таймер Timer_TOF истёк (Q = 0), а второй импульс не пришёл:
Подключить Timer_TOF.Q к входу R Trig_1 → обнуляет память о первом импульсе.
Это готовит систему к новому циклу.
Сергей0308
15.01.2026, 16:03
Всем добрый день!
Нужна ваша помощь, совет, мысли.
Не совсем я новичок, но есть следующая потребность в решении такой простой, на мой взгляд, задачи.
Условно, есть некий датчик, который выдает кратковременно сигнал равный логической 1 на вход любой из ПР. При повторном появлении этого сигнала на тот же вход ПР в течении заданного времени необходимо включить один из выходов ПР до момента сброса вручную, например с кнопки. Но, если в течении заданного времени повторно сигнал так и не поступил на вход, то необходимо обнулить цикл этого блока алгоритма.
Понимаю, что мне скорее всего подойдет один из счетчиков в ОвенЛогике и скорее всего 1 из таймеров с задержкой, но не понимаю как это все связать воедино.
Много раз обсуждалось на форуме тема формирования сигнала двойного нажатия кнопки, было много разных вариантов!
Можно так сформировать сигналы:
87559
Для фиксации(запоминания) можно RS-триггер применить или что-то подобное, на ваш вкус!
Вот, для вашего случая, убрал лишнее:
87563
Константин1991
16.01.2026, 08:08
Всем огромная благодарность, кто откликнулся! В итоге опирался на первый вариант, который был предложен ИИ-ассистентом Алисой + доработал под себя. Для меня случилось открытие, что такие задачи можно решать с помощью ИИ. Как-то до этого момента не додумался))
Пример своей мини-программы прилагаю, если вдруг будет кому-то интересно. 87560
Сергей0308
16.01.2026, 15:11
Всем огромная благодарность, кто откликнулся! В итоге опирался на первый вариант, который был предложен ИИ-ассистентом Алисой + доработал под себя. Для меня случилось открытие, что такие задачи можно решать с помощью ИИ. Как-то до этого момента не додумался))
Пример своей мини-программы прилагаю, если вдруг будет кому-то интересно. 87560
ИИ наверно всю ночь не спал, всё вам программу малевал?!
В смысле, другие варианты в несколько раз меньше по количеству элементов!
Константин1991!
17.01.2026, 18:14
Вообще не понял посыл последнего вашего сообщения. Для чего, зачем и т.д.
Вопрос-сарказм из разряда шуточки за 100.
Пусть другие врианты меньше по количеству элементов, проще, но вообще это не имеет никакой разницы если необходимая цель достигнута. Пока я не дошел до того уровня, который помогает использовать минимальное количество функциональных блоков для формирования готового алгоритма. Предложенные варианты не плохие, но у меня есть еще часть функционального кода, которая выполняет заданную для меня фукнцию и мне проще было соединить воедино именно так как я и сделал.
Но я благодарен каждому кто откликнулся и хоть как-то направил в нужную сторону, подсказал.
Вы никогда не дойдете до "того" уровня, если не будете учиться у профи оптимизации. Это был не сарказм, а объективная критика.
Не обращайте внимание. Мы уже привыкли к тому, что новички "стреляют из пушки по воробьям". Удачи!
Powered by vBulletin® Version 4.2.3 Copyright © 2026 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot