PDA

Просмотр полной версии : Как сделать паузу в таймере ТР?



Сергей Борисович
23.09.2013, 18:47
Как сделать паузу в таймере ТР?
Возникла необходимость выполнения паузы в таймере, именно во времени, чтобы после снятия паузы время шло от точки, когда была выполнена пауза.
Может где есть готовые решения?

Валенок
23.09.2013, 19:04
например:
запомнить tp.pt - tp.et
сбросить tp (непонятно - что с выходом на время паузы)
пауза
зарядить в tp то что запомнили

Sergey666
23.09.2013, 22:11
Вообще я такими вещами не занимаюсь (просто можно написать свой таймер) , но...
Если обьявить вызов таймера в подпрограмме (Action) , а вызов (запуск) подпрограммы завязать с "паузой" , то по идее все должно "подвиснуть" как надо .

Сергей Борисович
24.09.2013, 12:55
например:
запомнить tp.pt - tp.et
сбросить tp (непонятно - что с выходом на время паузы)
пауза
зарядить в tp то что запомнили

примерно так и думал делать.
Думаю есть уже решение у кого-нибудь, чтобы не городить огород.

Sergey666
24.09.2013, 13:31
Вообще я такими вещами не занимаюсь (просто можно написать свой таймер) , но...
Если обьявить вызов таймера в подпрограмме (Action) , а вызов (запуск) подпрограммы завязать с "паузой" , то по идее все должно "подвиснуть" как надо .

Да , косяк , попробовал в симуляции (плк неохота трогать) время таймера "привязано" к системному , так он сделан (TON , TOF , TP).

Можно таймер в виде ФБ написать какой-надо и ....все ... делов-то.

amn
24.09.2013, 17:15
Как сделать паузу в таймере ТР?
Возникла необходимость выполнения паузы в таймере, именно во времени, чтобы после снятия паузы время шло от точки, когда была выполнена пауза.
Может где есть готовые решения?

А что на выходе таймера во время паузы TRUE или FALSE?

Сергей Борисович
24.09.2013, 18:37
А что на выходе таймера во время паузы TRUE или FALSE?

Если ТР то чтобы так и оставалось TRUE

amn
24.09.2013, 19:03
Сделал с выходом FALSE во время паузы по умолчанию. Чтобы на выходе во время паузы было TRUE надо подать TRUE на вход pause_on.

Сергей Борисович
25.09.2013, 15:20
Сделал с выходом FALSE во время паузы. Чтобы было TRUE раскоментируйте 21 строчку, а ту что под ней удалите.

Спасибо большое!
Попробовал, то что надо.
Честно, я долгое время сам такое хотел сделать, но опыта не хватает.
А тут за один день!
СПАСИБО!!!

Viktor D
28.03.2023, 23:08
Понимаю, что тема старая,но может быть кто то подскажет...
В восьмом посте выложен макрос в формате .exp Не могу сообразить как его прикрутить к проекту. ПРошу помочь. Заранее спасибо.

saii
28.03.2023, 23:25
Импортировать в проект

kondor3000
29.03.2023, 00:07
Понимаю, что тема старая,но может быть кто то подскажет...
В восьмом посте выложен макрос в формате .exp Не могу сообразить как его прикрутить к проекту. ПРошу помочь. Заранее спасибо.

Нажмите Проект / Импорт и выберите файл.
Либо вставьте код таймера TP_P на ST и пользуйтесь:


FUNCTION_BLOCK TP_P (* Таймер TP с паузой *)
VAR_INPUT
IN: BOOL; (* IN - запуск,можно снять TRUE после запуска), *)
Pause: BOOL; (* Pause - при FALSE считает время, при TRUE останавливает счёт, сохраняя время остановки, при подаче опять FALSE, продолжает счёт со времени остановки *)
PT: TIME;
END_VAR
VAR_OUTPUT
Q: BOOL;
ET: TIME;
END_VAR
VAR
clk: BOOL;
StartTime: TIME;
tx: TIME;
END_VAR
__________________________________________________ ______________
tx:= TIME();
IF Pause THEN
StartTime:= tx - ET;
END_IF
IF IN AND NOT clk THEN
StartTime:= tx;
clk:= TRUE;
ELSIF ET=PT THEN
clk:= FALSE;
ET:= t#0s;
END_IF
IF clk AND ET<PT THEN
ET:= MIN(PT, tx - StartTime);
Q:=ET<PT AND NOT Pause;
END_IF

Здесь выложены ещё таймеры TON, TP с паузой и даже скрин работы таймеров https://owen.ru/forum/showthread.php?t=7077&page=5