
Сообщение от
evgeni293
IF (TIMER+T#1S) TIMER:=TIME();
CHASTOTA_AUTO:=CHASTOTA_AUTO+1;
Дело в том, что эта конструкция не работоспособна в CODESYS.
По поводу переполнения:
Типа TIME хватит на 49 дней 17 часов 2 минут 47 секунд непрерывного подсчета.
Если нужно больше - используйте тип DATE_AND_TIME, его будет достаточно до 2106го года
Но если задача стоит: просто увеличивать что-либо раз в секунду, то решить задачу можно с применением таймера не боясь переполнения:
Код:
PROGRAM PLC_PRG
VAR
// Таймер для задержки
fb_tonIncreaseDelay : Standard.TON;
// Значение частоты
rAutoFrequency : REAL;
END_VAR
// Задержка между запуском таймера и срабатыванием
fb_tonIncreaseDelay.PT := T#1S;
// Запускаю отсчет
fb_tonIncreaseDelay.IN := TRUE;
fb_tonIncreaseDelay();
// Если таймер сработал
IF fb_tonIncreaseDelay.Q THEN
// Увеличиваю счетчик
rAutoFrequency := rAutoFrequency + 1;
// Сбрасываю таймер
fb_tonIncreaseDelay.IN := FALSE;
fb_tonIncreaseDelay();
END_IF