Устранение дребезга контактов

Работая на одном из объектов, столкнулся с тем, что на входе контроллера кратковременно пропадает дискретный сигнал от датчика типа «сухой контакт». После принятия необходимых в таком случае мер (обжатие контактов клеммника, перекручивание фишек, продергивание проводов, замена интерфейсных реле и т.п.), ничего не поменялось. Изредка, но это пропадание происходило.

Как всегда, времени разбираться с проблемой глубоко не было (заказчик кричит «давай-давай запускай!»). Поэтому было принято решение применить одну из схем устранения дребезга контактов. Естественно, программным способом.

Но, поскольку это был «дребезг наоборот», т.е. сигнал кратковременно размыкался, а потом восстанавливался, я воспользовался таймером. Таким образом, попросту создал задержку в 1,5 секунды на пропадание сигнала.

Все делалось на языке программирования ПЛК LD, контроллер OMRON CS1D. Поэтому пришлось немножко по извращаться. И выглядело это вот так:

ustranenie-drebezga-kontaktov

Здесь схемка немножко сложнее, чем я описал словами.

Дело в том, что результирующий сигнал  формировался из реального сигнала от фотодатчика на входе контроллера и виртуального сигнала имитатора. И задержку на таймере я поставил на оба сигнала, собранные по схеме ИЛИ.

В контроллерах Omron функциональный блок таймера немного отличается от прописанных стандартом МЭК 61131-3. Он называется TIM. Фактически, это таймер с задержкой включения. И выглядит он больше похожим на катушку реле времени с настройкой времени задержки срабатывания и отдельным контактом (Т0491 на схеме).

Когда на входе TIM появляется логическая «1», он начинает отсчет времени. Если «1» исчезает, таймер прекращает отсчёт. При следующем появлении «1» отсчёт начинается сначала. Если «1» остается «висеть» на входе таймера, то и выход таймера (контакт Т0491) через заданное время становится равным «1».

В этой схеме при, включении контроллера и отсутствии сигнала имитатора и датчика («дребезжащий» контакт на схеме), через 1,5 секунды таймер сбросит сигнал «Факел (суммарный) горелки» был он или его не было. Если сигнал (реальный или имитируемый) появляется, то он сразу попадает на выход (SET K2G1_FG_ON), становится логической «1», а вход и, соответственно, выход таймера сбрасываются. И, соответственно, RSET K2G1_FG_ON не работает. Наш сигнал уходит в схему дальше для использования по назначению.

Если сигнал K2G1UDF_IYFG пропадает, то таймер начинает отсчёт. В случае кратковременного пропадания сигнала (<1,5секунд), выход таймера не появится, т.к. таймер не успеет отсчитать 1,5 секунды и команда RSET K2G1_FG_ON не сработает.

Если же сигнал пропадает больше, чем на 1,5 секунды, то K2G1_FG_ON сбросится в «0» и этим нулем уйдет дальше в схему.

Вот такая схемка задержки пропадания сигнала. Или устранения дребезга контактов наоборот. 🙂

Смело можете использовать, проверено на практике — работает.

Делитесь своими мыслями в комментариях, делитесь ссылкой на статью с друзьями и коллегами в соцсетях.

4 комментария

Оставить комментарий
  1. Сегодня случайно нашел Ваш сайт. Сохранил в закладках.

    Спасибо за полезную информацию.

    У ПЛК, вроде как, есть такой параметр определяющий минимальное время которое должен приходить дискретный сигнал на вход ПЛК что бы он принял его за единицу. Т.е. если сигнал на вход приходит меньше определенного времени, то ПЛК не воспримет его и программным путем не устранить проблему. Могу ошибаться. Проясните пожалуйста

    1. Все верно. У контроллеров есть такая функция. Но она работает с небольшими таймингами — чаще всего до 100мс. А если нужна бОльшая задержка, тогда и пригодится такой способ.Хотя он не единственный 🙂

      1. А какой ещё может быть способ?

        1. Как вариант, анализировать сигнал за определенное количество тактов контроллера и выдавать тот, который продержался более заданного количества тактов. В-общем, все методы сводятся к временнЫм.

Добавить комментарий для Вадим Отменить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *

3 + 2 =