PDA

Просмотр полной версии : Вопрос по счетчикам в ПР



Константин1991
15.01.2026, 10:53
Всем добрый день!
Нужна ваша помощь, совет, мысли.
Не совсем я новичок, но есть следующая потребность в решении такой простой, на мой взгляд, задачи.
Условно, есть некий датчик, который выдает кратковременно сигнал равный логической 1 на вход любой из ПР. При повторном появлении этого сигнала на тот же вход ПР в течении заданного времени необходимо включить один из выходов ПР до момента сброса вручную, например с кнопки. Но, если в течении заданного времени повторно сигнал так и не поступил на вход, то необходимо обнулить цикл этого блока алгоритма.
Понимаю, что мне скорее всего подойдет один из счетчиков в ОвенЛогике и скорее всего 1 из таймеров с задержкой, но не понимаю как это все связать воедино.

capzap
15.01.2026, 11:08
когда не знаете спросите у Алисы:

Разберём задачу пошагово и построим алгоритм на базе стандартных функциональных блоков (ФБ) в среде Овен Логика (или аналогичной ПЛК‑среде).
Анализ требований

Нам нужно:

Фиксировать первый импульс на входе → запомнить факт события.

Запустить таймер обратного отсчёта (заданное время).

Если в течение этого времени приходит второй импульс на тот же вход → включить выход до ручного сброса.

Если второй импульс не пришёл до истечения таймера → сбросить состояние (обнулить цикл).

Обеспечить ручной сброс выхода (например, по кнопке).

Необходимые функциональные блоки

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

EFrol
15.01.2026, 16:42
Вариант:
87557

Константин1991
16.01.2026, 08:08
Всем огромная благодарность, кто откликнулся! В итоге опирался на первый вариант, который был предложен ИИ-ассистентом Алисой + доработал под себя. Для меня случилось открытие, что такие задачи можно решать с помощью ИИ. Как-то до этого момента не додумался))

Пример своей мини-программы прилагаю, если вдруг будет кому-то интересно. 87560

Сергей0308
16.01.2026, 15:11
Всем огромная благодарность, кто откликнулся! В итоге опирался на первый вариант, который был предложен ИИ-ассистентом Алисой + доработал под себя. Для меня случилось открытие, что такие задачи можно решать с помощью ИИ. Как-то до этого момента не додумался))

Пример своей мини-программы прилагаю, если вдруг будет кому-то интересно. 87560

ИИ наверно всю ночь не спал, всё вам программу малевал?!
В смысле, другие варианты в несколько раз меньше по количеству элементов!

Константин1991!
17.01.2026, 18:14
Вообще не понял посыл последнего вашего сообщения. Для чего, зачем и т.д.
Вопрос-сарказм из разряда шуточки за 100.
Пусть другие врианты меньше по количеству элементов, проще, но вообще это не имеет никакой разницы если необходимая цель достигнута. Пока я не дошел до того уровня, который помогает использовать минимальное количество функциональных блоков для формирования готового алгоритма. Предложенные варианты не плохие, но у меня есть еще часть функционального кода, которая выполняет заданную для меня фукнцию и мне проще было соединить воедино именно так как я и сделал.
Но я благодарен каждому кто откликнулся и хоть как-то направил в нужную сторону, подсказал.

EFrol
17.01.2026, 19:15
Вы никогда не дойдете до "того" уровня, если не будете учиться у профи оптимизации. Это был не сарказм, а объективная критика.
Не обращайте внимание. Мы уже привыкли к тому, что новички "стреляют из пушки по воробьям". Удачи!