Таймеры на ST для Regul

Jun 05, 25

Курсы

В июне съездил в Самару на курсы по работе с ПЛК Regul и решил для закрепления оставить код двух таймеров, которые использовали во время выполнения практических занятий.

Нам нужно было реализовать прерывистое движение конвейерной ленты через таймер. Таймеров стандартных три штуки - TON, TOF, TP.

Код следующий:

Переменные
kn1 : bool; //физическая кнопка на конвейере
countStart := bool; //переменная старта 
L1 : bool;
TPInst : TP;
TON : TON;
TOFInst : TOF;
TPold  : bool;

___________________

	
//Решение через TON
IF kn1 THEN
	countStart := TRUE;
END_IF;

TON(IN:= countStart, PT:= T#5s);
IF TON.Q THEN
	ML := TRUE;		//двигаемся влево
	MR := FALSE;	//двигаемся вправо
	countStart := FALSE;
END_IF;

l1 := (NOT TON.Q) AND countStart;

//Решение через TP
TPInst(IN:= kn1, PT:= T#5s);
IF(NOT TPInst.Q AND TPold) THEN
	ML := TRUE;		//двигаемся влево
	MR := FALSE;	//двигаемся вправо
END_IF;

l1 := TPInst.Q;	//TPInst.ET < TPInst.PT
TPold := TPInst.Q;

//Решение через TOF (да похоже на TP)
countStart := (kn1_ph AND NOT kn1_old);

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

IF(NOT TOFInst.Q AND TOFold) THEN
	ML := TRUE;		//двигаемся влево
	MR := FALSE;	//двигаемся вправо
END_IF;

l1 := TOFInst.Q;
kn1_old := kn1_ph;	//перекладка кнопки
TOFold := TOFInst.Q;