Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 15

Тема: Антидребезг программно

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    По умолчанию Антидребезг программно

    Помогите, пожалуйста, с такой проблемой. Необходимо считывать состояние входов с переменным напряжением 220В, для этого был куплен модуль ввода дискретных сигналов МВ110-8ДФ. Управление осуществляется при помощи контроллера ПЛК110-60, который опрашивает МВ110-8ДФ по Modbus. Проблема обнаружилась при отладке программы на объекте: оказалось, что в модуле МВ110-8ДФ нет фильтра дребезга контактов, а у датчика, который подключен к нему они дребезжат и сделать с этим ничего нельзя. Поэтому вопрос, возможно ли при помощи ПЛК как нибудь программно отфильтровать ложные срабатывания (достаточно фильтра в 500мс).

  2. #2

    По умолчанию

    Применительно к CoDeSys у меня это выглядит так:

    TON1(IN:=iblnInput, PT:=t#500ms, Q=>qblnOutPut);
    где
    TON1 - таймер (задержка на включение)
    iblnInput - булевая переменная которую фильтруем
    qblnOutPut - булевая переменная для дальнейшего использования
    Автоматизация Диспетчеризация Сервис
    e-mail: ads-kaluga@mail.ru

  3. #3

    По умолчанию

    Вообще неплохо, но срабатывает не с первого касания а через 500 мс,
    я бы сделал так
    tp1:TP;

    tp1(in:=inp1,pt:=t#500ms)

    work1:=tp1.q and inp1;
    Часто задаваемые вопросы по кодесис
    1) Почему программа не работает - Следует выполнить "Онлайн ->Старт"
    2) Где скачать CoDeSys, таргеты, прошивки, библиотеки - http://www.owen.ru/catalog/codesys_v3/opisanie

  4. #4

    По умолчанию

    для антидребезга есть как минимум два метода:
    1. защелка - работает по первому фронту
    2. интегратор - работает по сумме накопленной за некое кол-во тиков.

    как выбрать - решайте.

  5. #5

    По умолчанию

    п1. приоритет д.б. у райза при 0-1, и у фалла при 1-0 меж ними дид таймаут.
    п2. if(in)integral+=1;
    else integral-=1;
    if(integral>max){integral=max; out = 1;}
    else if (integral<=0){integral=0; out = 0;}

    max - время реакции в тиках программы.
    Последний раз редактировалось LordN; 14.09.2011 в 06:46.

  6. #6

    По умолчанию

    Как ни извращайся, от задержек реакции все равно не избавишься. Либо задержки, либо неотфильтрованный сигнал. Не вижу в задержке, как в физическом явлении, ничего страшного до тех пор, пока она адекватна решаемой задаче...
    В общем случае фильтр для дискретного сигнала - это последовательно включенные таймеры TON и TOF. Временные константы выбираем "по вкусу", задавая желаемую реакцию фильтра на фронт и спад сигнала.
    Возможен альтернативный вариант, с решением на аппаратном уровне - при условии, что датчик (или концевой выключатель) имеет переключающую контактную группу. Контакт "NO" на один дискретный вход ПЛК, контакт "NC" на другой. Сигналы с этих входов подаем на RS-триггер.

  7. #7

    По умолчанию

    так входов плк не напасешься. может проще кондер впаять?

  8. #8

    По умолчанию

    Цитата Сообщение от swerder Посмотреть сообщение
    так входов плк не напасешься. может проще кондер впаять?
    Можно, и можно гарантии лишиться.
    Если качество дискретных сигналов не очень хорошее, лучше стоит подумать о их замене на более качественные.
    Последний раз редактировалось Александр Приходько; 14.09.2011 в 09:48.

  9. #9

    По умолчанию

    Цитата Сообщение от Александр Приходько Посмотреть сообщение
    Можно, и можно гарантии лишиться.
    неправильное слово подобрал, не имел ввиду "впаять в сам прибор". или гарантия теряется просто от наличия на дискретном входе конденсатора?

  10. #10

    По умолчанию

    Цитата Сообщение от swerder Посмотреть сообщение
    так входов плк не напасешься. может проще кондер впаять?
    Это вариант, без задержки реагирующий на переключение дребезжащего концевика. Не предлагаю применять его повсеместно, но в каких-то особых случаях может пригодиться. Например, встречал такое решение в станках с ЧПУ (для концевиков, по которым производится реферирование осей).
    Кстати, он интересен еще и тем, что позволяет без труда реализовать самодиагностику на "обрыв датчика" (по отсутствию сигнала на обоих входах дольше заданного времени) и "короткое замыкание датчика" (одновременное наличие сигнала на обоих входах).

Страница 1 из 2 12 ПоследняяПоследняя

Ваши права

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