Добрый вечер, форумчане.
Для тех кого по каким-либо причинам не устраивают стандартные таймеры TON, TOFF, TP, предлагаю рассмотреть работу с таймером Timer, который я сделал для себя.
Код таймера приведен в прикрепленном проекте. Здесь я дам короткие комментарии.
Основное преимущество работы с данным таймером, состоит в том, что все обращения к таймеру лингвистически понятны.
Так, например, для того чтобы запустить таймер мы пишем:
Timer.Start(),
для того чтобы остановить или очистить таймер, мы пишем:
Timer.Stop() или Timer.Clear().
Проверка запущен ли таймер или нет также понятна: if Timer.Started then...
Пример использования в пошаговом алгоритме:
PROGRAM PLC_PRG
VAR
Step : INT := 1;
StepTimer : Timer;
StepTime : TIME := T#10s;
CurTime : TIME;
END_VAR
CASE Step OF
1:
IF NOT StepTimer.Started THEN
StepTimer.Start();
END_IF;
IF GetTimer(StepTimer) > StepTime THEN
StepTimer.Stop();
Step := 2;
END_IF;
2:
Step := 1;
END_CASE;
Алгоритм читается без комментариев.