Здравствуйте.
но при следующем запуске таймера переменная и сам календарь сбрасываются
Конечно сбрасывается, ведь таймер основывается на виртуальной переменной и соответственно хранится в оперативной памяти сервера только во время работы проекта.
Запустим таймер и затем поставим на паузу . Изменим в поле vrTime и снова запустим - время сбросится на прежнее время.
Для запуска таймера с какого-то определённого времени у процедуры TimerStart (https://simple-scada.com/help/script/timerstart.html) есть отдельный параметр который задаёт с какого времени таймер будет стартовать. Таким образом Вы можете задать любое время.
Для сохранения значения таймера можно использовать запись в двоичный файл. Для этого можно создать в проекте два скрипта, один на событие "Полностью запущен", второй на событие "Остановка проекта".
Скрипт "Полностью запущен". Загружает сохранённое значение таймера из файла:
begin
if FileOpen('SaveFile.ssf', '') then
vrTimer.Value := FileReadDateTime
else
vrTimer.Value := 0;
end.
Скрипт "Остановка проекта". Сохраняет значение таймера в файл:
begin
if FileRecreate('SaveFile.ssf', '') then
FileWriteDateTime(vrTimer.AsDateTime);
end.
Скрипт для запуска таймера. Стартует таймер с того места на котором остановился:
begin
TimerStart(vrTimer, vrTimer.AsDateTime);
end.
Пауза таймера:
begin
TimerPause(vrTimer);
end.
Сброс таймера:
begin
TimerReset(vrTimer);
end.
Но нужно учитывать, что сохранение в файл будет выполняться только при плановой остановке проекта, поэтому в случае аварийного завершения работы сервера-скады, или аварийного выключения компьютера значение таймера не сохранится.
У Вас для запуска таймера используется такой код?
begin
TimerStart(vrTimer, vrTimer.AsDateTime);
end.