Найти тему

Программирование сегнетикс. Счетчики. Задержка включения. Задержка выключения. Антидребезг.

Счетчики - широко применяемый инструмент. Используется в основном для построения таймеров, задержек, фильтров дискретных сигналов (антидребезг), подсчета событий (например можно подсчитывать нажатия кнопки). Есть два основных типа счетчиков: инкрементирующий и декрементирующий. Существует еще с двумя направлениями счета.

Инкрементирующий увеличивает свое значение на единицу.

Декрементирующий уменьшает свое значение на единицу.

Рассмотрим реализацию в smlogix. 

Скрин справки.
Скрин справки.

Слева у блока входы, справа - выходы.

Нас интересует временная диаграмма (по ней смотрим, как зависит состояние выходов от значений входов)

У этого счетчика два выхода

DO - значение счетчика

QU - флаг "счет окончен" (когда DO достигает значения DI, выставляется 1 , счет останавливается)

Reset - сброс счетчика. При RESET = "1", выход DO и QU сбрасываются в ноль, счет не ведется.

"+" - если "1", то выход DO увеличивается на единицу. (не забываем про RESET,) Если "1" висит постоянно, то приращение происходит каждый тик работы программы. (Если надо, например, подсчитывать нажатия кнопок, то заводить на счетчик нужно через блок определения переднего фронта сигнала (об этом позже))

DI - уставка счетчика (величина, до которой ведется счет)

#Задержка включения (#delay on )

Вход Di - сигнал на включение, "NOT" нужен для обнуления счетчика, "time_tick" время задержки в тиках программы (тик - время 1 цикла выполнения программы).
Вход Di - сигнал на включение, "NOT" нужен для обнуления счетчика, "time_tick" время задержки в тиках программы (тик - время 1 цикла выполнения программы).
В smlogix есть функция перевода секунд в тики. Можно использовать ее, тогда время будем задавать уже в секундах.  Нужно учесть, что блоки работают с целыми числами, поэтому этот макрос сможет генерировать задержки кратные одной секунде.
В smlogix есть функция перевода секунд в тики. Можно использовать ее, тогда время будем задавать уже в секундах. Нужно учесть, что блоки работают с целыми числами, поэтому этот макрос сможет генерировать задержки кратные одной секунде.

#Задержка выключения (#delay of )

Задержка выключения. Использован декрементирующий счетчик. Добавились блоки: "ИЛИ" и "преобразование целого в булевое". Реализация может быть необязательно такая (можно реализовать и на инкрементирующем счетчике)
Задержка выключения. Использован декрементирующий счетчик. Добавились блоки: "ИЛИ" и "преобразование целого в булевое". Реализация может быть необязательно такая (можно реализовать и на инкрементирующем счетчике)
Этот же счетчик в процессе счета.
Этот же счетчик в процессе счета.
Неплохой макрос из конструктора вентиляции от сегнетика - антидребезг контактов. Универсален, Может использоваться как задержка на включение, так и на выключение.
Неплохой макрос из конструктора вентиляции от сегнетика - антидребезг контактов. Универсален, Может использоваться как задержка на включение, так и на выключение.

PS. Не по теме.

-7