Страница 1 из 1

Задержка на отключение реле.

Добавлено: 19 дек 2018, 11:54
VladimirD
День добрый. Сперва просерфил поиском форум, но не нашел простого решения или все не по теме.
Задача такая.
Если ультразвуковой датчик расстояния. Есть потенциометр для регулировки реакции датчика расстояния.
Если расстояние, которое получил датчик, меньше смасштабированного значения потенциометра (человек появился в поле зрения), подаем сигнал на включение реле, которое включает лампочку.
По сути можно было использовать обычный датчик движения, но человек может стоять некоторое время неподвижно и свет может выключится, а танцевать постоянно около датчика движения не вариант. Использовать ПИР-датчик тоже не вариант - есть теплые или горячие объекты в помещении. Помещение небольшое и нет проблем с прицеливанием датчика расстояния.
С включением реле проблем вообще не возникло. Тут простое сравнение и передача на порт 1 - реле включилось.
Заковыка возникла с таймером на выключение. Хотелось бы сделать так, чтоб, при отсутствии преград для датчика расстояния, была временная задержка, скажем в 20сек на выключение реле.
Прошу посильно помощи. FBD для меня новая тема. Я понимаю как написать обычным кодом в IDE, но их редактор мне не нравится и FLProg многие вещи делать удобнее. Плюс хочу получше познакомиться с данным редактором.

Задержка на отключение реле.

Добавлено: 19 дек 2018, 12:05
pan
зачем использовать инвертирование сигналов и задержку на включение, если вам надо на отключение?
элемент энд для чего?

Изображение

Задержка на отключение реле.

Добавлено: 19 дек 2018, 12:25
VladimirD
pan писал(а): 19 дек 2018, 12:05зачем использовать инвертирование сигналов и задержку на включение, если вам надо на отключение?
элемент энд для чего?

Изображение
Сама задумка этого раздела состоит в том, что если статус реле ложный, условие из первой платы ЛОЖЬ, надо его проверить.
Кодом я бы проверил так.

Код: Выделить всё

if (!stateRelay){
//Таймер на 1сек для проверки, вдруг человек пошевелился и вернулся обратно
//или просто сбой датчика.
//Таймер на 20сек когда действительно никого нет и выключаем реле
}
Отправлено спустя 3 минуты 59 секунд:
секунды я изменил буквально сейчас, пока рассуждал логику и скорость отработки. 100мс мало может быть.

Отправлено спустя 8 минут 24 секунды:
Опять же, в тех же 20-ти секундах на ожидание отключения, человек может снова появиться, и таймер должен отключиться.

Задержка на отключение реле.

Добавлено: 19 дек 2018, 12:45
pan
VladimirD писал(а): 19 дек 2018, 12:25Кодом я бы проверил так.
двойной клик по названию платы.

Задержка на отключение реле.

Добавлено: 19 дек 2018, 13:26
VladimirD
Что-то подобное получилось. Железок на руках сейчас нет - дома.
Но сейчас мне вроде все нравится и код складывается логичный.
Правда пришлось ввести дополнительную переменную.
Опять же, код скорее всего чуть подправлю, чтоб не было двух условий, а одно условие. если есть преграда тогда вклчить иначе отклчить, а не два отдельных условия. Хотя и это не очень важно

Отправлено спустя 1 минуту 8 секунд:
Во! уже увидел косяк. Надо в TON дать на вход статус реле, а не постянную истину. если и так все выключено, то и таймеры не надо запускать.