PDA

Просмотр полной версии : Таймер обратного отчета с заданием итервала



Dmitrijb
04.12.2018, 15:13
Добрый день, подскажите как реализовать таймер обратного отсчета с заданием интервала. через программу st или можно блоками работа со временем?

SCADAMaster
04.12.2018, 15:32
Можно на ST, можно на отдельных - запускать счетчик времени, и вычитать его значение из какой то величины

Dmitrijb
05.12.2018, 08:55
нашел заготовки и немного передалал, в конечном итоге получилось вот что

PROGRAM MAIN_PROGRAM

VAR_INPUT
timer_start:bool;
tin:uint;
END_VAR
var
tpinst : tp;
tm:time;
end_var

VAR_OUTPUT
count:time;
esttime:time;
out3:bool;
END_VAR

tm:=word_TO_TIME(tin*1000);
tpinst(in:=timer_start, PT:=tm);
out3:=tpinst.Q;
count:=tpinst.ET;
esttime:=tm-count;
END_PROGRAM

но этот счетчик отсчитывает только малое количество секунд, есть ли возможность увеличить время отсчета, т.к. задача стоит в отсчете до 2х часов

SCADAMaster
05.12.2018, 09:14
Так может вызывать раз в секунду и уменьшать счетчик?
Еще можно в скрипт C# - сохраняете текущее время, прибавляете нужный вам интервал, а затем каждый цикл опроса вычитаете из конечного интервала текущее время. Если будете этот вариант пробовать, то яндексите DateTime и TimeSpan

Dmitrijb
05.12.2018, 09:19
не могли бы Вы подробнее описать как вызывать раз в секунду

SCADAMaster
05.12.2018, 09:32
Ставите периодический опрос у ФБ. А затем уже в коде делаете чтобы ваш таймер выдавал импульс раз в секунду.

Dmitrijb
05.12.2018, 10:06
а фб импульс по времени в купе с текущим временем не могут сделать тоже самое? я попробовал но что то выход не успевает отработать

Dmitrijb
05.12.2018, 10:26
С учетом прибавления к реальному времени +1сек выход на фб импульс по времени не успевает отработать

SCADAMaster
05.12.2018, 11:27
Вообще импульс по времени формируем сигнал в определенный момент времени.
Как он вам поможет, если нужен таймер обратного отсчета?

Если нужно просто импульс, спустя какое то время, то можно вообще элементарно - Событие. В нем текущее время берете, сравниваете с сохраненным моментом времени (когда начался отсчет) + время задержки которое вам нужно.

Dmitrijb
05.12.2018, 11:33
Нет, нужен импульс каждую секунду, если к текущему времени плюсовать секунду и формировать по такому времени в фб имульс по времени то должно было бы сработать

SCADAMaster
05.12.2018, 12:58
А импульс то зачем нужен?

Dmitrijb
05.12.2018, 13:15
так его и считать каждую секунду, или это не правильно будет

SCADAMaster
05.12.2018, 14:42
Проще вариант.
Работа со временем - Счетчик пробега или Счетчик времени. Подаете сигнал - бежит время. Это время вычитаете из расчета.

Dmitrijb
05.12.2018, 16:10
Спасибо, действительно самый простой вариант