Показано с 1 по 8 из 8

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

  1. #1

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

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

  2. #2
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,620

    По умолчанию

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

    Нам нужно:

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

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

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

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

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

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

    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 → обнуляет память о первом импульсе.

    Это готовит систему к новому циклу.
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

    среди успешных людей я не встречала нытиков
    Барбара Коркоран

  3. #3
    Пользователь Аватар для Сергей0308
    Регистрация
    25.06.2011
    Адрес
    Галактика Андромеды (M31)
    Сообщений
    9,522

    По умолчанию

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

    Одинарный или двойной клик за период.png

    Для фиксации(запоминания) можно RS-триггер применить или что-то подобное, на ваш вкус!

    Вот, для вашего случая, убрал лишнее:

    Двойной клик за период.PNG
    Последний раз редактировалось Сергей0308; 16.01.2026 в 09:15.
    Если проблему можно решить за деньги, это не проблема, это расходы. Бог каждому посылает проблемы по его силам. Так что одно из двух. Либо ты можешь-таки
    справиться с проблемами, либо это не твои проблемы.

  4. #4

    По умолчанию

    Вариант:
    Owen.jpg

  5. #5

    По умолчанию

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

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

  6. #6
    Пользователь Аватар для Сергей0308
    Регистрация
    25.06.2011
    Адрес
    Галактика Андромеды (M31)
    Сообщений
    9,522

    По умолчанию

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

    Пример своей мини-программы прилагаю, если вдруг будет кому-то интересно. Screenshot_1.jpg
    ИИ наверно всю ночь не спал, всё вам программу малевал?!
    В смысле, другие варианты в несколько раз меньше по количеству элементов!
    Если проблему можно решить за деньги, это не проблема, это расходы. Бог каждому посылает проблемы по его силам. Так что одно из двух. Либо ты можешь-таки
    справиться с проблемами, либо это не твои проблемы.

  7. #7

    По умолчанию

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

  8. #8

    По умолчанию

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

Похожие темы

  1. Вопрос про ШИМ
    от Dmitry Dedkov в разделе ПЛК2хх
    Ответов: 13
    Последнее сообщение: 27.06.2024, 16:41
  2. Вопрос
    от Vladimir NK в разделе СПК1xx (архив)
    Ответов: 3
    Последнее сообщение: 22.02.2024, 11:00
  3. Ответов: 13
    Последнее сообщение: 29.08.2021, 11:50
  4. Вопрос по САУ-М6
    от lokamber в разделе Эксплуатация
    Ответов: 2
    Последнее сообщение: 12.10.2016, 06:35
  5. вопрос по трм
    от АлександрАкимов в разделе Эксплуатация
    Ответов: 5
    Последнее сообщение: 10.01.2014, 08:48

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •