Tag Archives: таймеры

Работа с таймерами на языке ST

Пример работы с дискретными входами и выходами ПЛК, а также с таймерами ton и tof. Пример на языке ST.

При замыкании первого входа замыкается первый выход.

При замыкании первого и второго входа замыкается второй выход.

Через 5 секунд после замыкания третьего входа замыкается третий выход.

Через 10 секунд после размыкания четвертого входа размыкается четвертый выход.

Листинг:

PROGRAM PLC_PRG

VAR

tim1:TON;

tim2:TOF;

END_VAR

(*plc100-24.K-L core 2-03 target 2-02-4*)

out1:=in1;

Out2:=in1 AND in2;

(*задержка включения*)

tim1(IN := in3, PT := T#5s);

out3:=tim1.Q;

(*задержка выключения*)

tim2(IN := in4, PT := T#10s);

out4:=tim2.Q;

Таймеры в CoDeSys

TP Функциональный блок ‘таймер’.

TP(IN, PT, Q, ET) Входы IN и PT типов BOOL и TIME соответственно. Выходы Q и ET аналогично типов BOOL и TIME.

Пока IN равен FALSE, выход Q = FALSE, выход ET = 0. При переходе IN в TRUE выход Q устанавливается в TRUE и таймер начинает отсчет времени (в миллисекундах) на выходе ET до достижения длительности, заданной PT. Далее счетчик не увеличивается. Таким образом, выход Q генерирует импульс длительностью PT по фронту входа IN.

Временная диаграмма работы TP:


 

Пример объявления:

TPInst : TP;

Пример IL:

CAL TPInst(IN := VarBOOL1, PT := T#5s)

LD TPInst.Q

ST VarBOOL2

Пример FBD:

Пример ST:

TPInst(IN := VarBOOL1, PT:= T#5s);

VarBOOL2 :=TPInst.Q;

TON Функциональный блок ‘таймер с задержкой включения’.

TON(IN, PT, Q, ET) Входы IN и PT типов BOOL и TIME соответственно. Выходы Q и ET аналогично типов BOOL и TIME.

Пока IN равен FALSE, выход Q = FALSE,  выход ET=0.  Как только IN становится TRUE, начинается отсчет времени (в миллисекундах) на выходе ET до значения, равного PT. Далее счетчик не увеличивается. Q равен TRUE, когда IN равен TRUE и ET равен PT, иначе FALSE. Таким образом, выход Q устанавливается с задержкой PT от фронта входа IN.

Временная диаграмма работы TON:

 

 

 

Пример объявления:

TONInst : TON ;

Пример IL:

CAL TONInst(IN := VarBOOL1, PT := T#5s)

LD TONInst.Q

ST VarBOOL2

Пример FBD:

Пример ST:

TONInst(IN := VarBOOL1, PT:= T#5s);

TOF Функциональный блок ‘таймер с задержкой выключения’.

TOF(IN, PT, Q, ET) Входы IN и PT типов BOOL и TIME соответственно. Выходы Q и ET аналогично типов BOOL и TIME.

Если IN равен TRUE, то выход Q = TRUE и выход ET = 0. Как только IN переходит в FALSE, начинается отсчет времени (в миллисекундах) на выходе ET. При достижении заданной длительности отсчет останавливается. Выход Q равен FALSE, если IN равен FALSE и ET равен PT, иначе — TRUE.

Таким образом, выход Q сбрасывается с задержкой PT от спада входа IN.

Временная диаграмма работы TOF:

Пример объявления:

TOFInst : TOF ;

Пример IL:

CAL TOFInst(IN := VarBOOL1, PT := T#5s)

LD TOFInst.Q

ST VarBOOL2

Пример FBD:

Пример ST:

TOFInst(IN := VarBOOL1, PT:= T#5s);

VarBOOL2 :=TOFInst.Q;

 

Задача на изучение блоков стандартных библиотек (управление освещением)

Условие задачи

Условие задачи

Условие задачи

На входе установлены два дискретных датчика: один снаружи комнаты, другой внутри. Когда срабатывает сначала внешний датчик, затем внутренний, это означает, что человек зашел в комнату.Когда срабатывает сначала внутренний датчик, затем внешний, это означает, что человек вышел из комнаты.

Задача1: Если человек вошел – включить свет, Если человек вышел – выключить свет.

Задача2: Необходимо считать количество людей, заходящих и выходящих из комнаты.

Пока в комнате остается хотя бы один человек, свет должен быть включен.

Реализовать задачу управления светом комнате с помощью компонентов стандартной библиотеки. Свет должен выключаться через 5 секунд, после того как последний человек покинет комнату.

 

Рисунок 1 Визуализация задачи

Рисунок 1 Визуализация задачи

Рисунок 2 Добавление стандартных библиотек

Рисунок 2 Добавление стандартных библиотек

Программа

Область переменных:

PROGRAM PLC_PRG

VAR vh_sen, vyh_sen:BOOL;(*сигналы с сенсоров на входной двери*)

light:BOOL;(*сигнал включения света в комнате*)

ludi:INT;(*число людей в комнате*)

vh_sen_pred, vyh_sen_pred:BOOL;(*вспомогательные переменные: состояния сенсоров на предыдущем шаге*)

rtr1: R_TRIG;(*детекторы передних фронтов*)

rtr2: R_TRIG;

tt2: TOF;(*таймер для организации задержки выключения*)

tzad:TIME;(*текущее время задержки*)

END_VAR

Рисунок 3 Вид программы на языке СFC с использованием стандартных библиотек

Рисунок 3 Вид программы на языке СFC с использованием стандартных библиотек

Мой блог находят по следующим фразам