Существует ли способ в текущем цикле программы с определённой точностью иметь значение длительности предыдущего цикла?
Существует ли способ в текущем цикле программы с определённой точностью иметь значение длительности предыдущего цикла?
Подключи модуль "Статистик" в "Конфигурации ПЛК".
Считывать в начале каждого цикла текущее время и брать разницу между текущим и предыдущим значением. Для доступа использовать библиотеку "SYSLIBTIME.LIB"
VAR
CLOCK:TON;
TMDIFF: DWORD;
END_VAR
программа:
в TMDIFF - увидишь время цикла POU в мсек.
CLOCK; (* Timer abfragen *)
TMDIFF:=TIME_TO_DWORD(CLOCK.ET);(* Zeitdifferenz seit letztem Aufruf *)
IF TMDIFF>0 THEN
CLOCK(IN:=FALSE); (* Timer neu starten *)
CLOCK(PT:=t#1h, IN:=TRUE);
ELSE
CLOCK(PT:=t#1h,IN:=TRUE);
END_IF;