PDA

Просмотр полной версии : Антидребезг программно



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

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

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

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

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

work1:=tp1.q and inp1;

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

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

LordN
14.09.2011, 06:43
п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 - время реакции в тиках программы.

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

swerder
14.09.2011, 09:43
так входов плк не напасешься. может проще кондер впаять?

Александр Приходько
14.09.2011, 09:45
Предлагаю сделать следующий вариант,
1) ставите на вход тригера сигнал с кнопки
2) Если тригер срабатывает, взводите 2 таймера
3) ждете пока на первом таймере пройдет 50мс
4) Если 50мс прошло и сигнал с кнопки активен, то, воспринимаете его за истину
5) ждете завершение второго таймера (например 1с)
6) ели в течении работы второго таймера (при условии, что первый отработал) появляются с дискретного входа сигналы, их отсеиваете, как дребезг или ложные.

Александр Приходько
14.09.2011, 09:46
так входов плк не напасешься. может проще кондер впаять?

Можно, и можно гарантии лишиться.
Если качество дискретных сигналов не очень хорошее, лучше стоит подумать о их замене на более качественные.

swerder
14.09.2011, 10:14
Можно, и можно гарантии лишиться.

неправильное слово подобрал, не имел ввиду "впаять в сам прибор". или гарантия теряется просто от наличия на дискретном входе конденсатора?

Александр Приходько
14.09.2011, 10:22
в таком варианте вы ни чего не потеряете.

Валенок
14.09.2011, 10:30
А что выбрал fox ?
Если конечно он не застрелился.

swerder
14.09.2011, 10:45
А что выбрал fox ?
Если конечно он не застрелился.

уже не в первый раз на форуме ситуация, когда человек задает вопрос, ему дают ответов страницы на 2-3, а он так и не возвращается:)
хоть вариантов много разных придумали

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

swerder
14.09.2011, 13:24
Кстати, он интересен еще и тем, что позволяет без труда реализовать самодиагностику на "обрыв датчика" (по отсутствию сигнала на обоих входах дольше заданного времени) и "короткое замыкание датчика" (одновременное наличие сигнала на обоих входах).

согласен, очень хорошее решение