Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?

Официальный форум Simple-Scada.

Автор Тема: Вопрос по таймерам  (Прочитано 987 раз)

NewUser

  • Новичок
  • *
  • Сообщений: 6
    • Просмотр профиля
Вопрос по таймерам
« : 07 Марта 2024, 05:48:37 »
Добрый день, в Simple Scada 2 в разедле  Глобальные процедуры и функции > Время и дата есть таймеры. Которые имееют 4 функции.
Не совсем понимаю как ими пользоваться объясните, пожалуйста.
Я создаю переменную  vrTime типа DataTime.  На рабочем простанстве скады создаю кнопку пуск(Butt) и календерь(Cal), а также текстовый объект(Text).
Далее допустим , что функция Now мне возращает (07.03.2024 10:00).
На каледаре(cal) я ручками выставляю (07.03.2024 10:02).
На кнопку Пуск вешаю скрипт.

Код
begin
    vrTime.Value := Cal.Value;
    TimerStart(vrTime,Now);
end.

К объекту текст я привязываю переменную vrTime и делаю 1 скрипт и вешаю его на 2 сигнала ( по нажаю, и изменилась связанная переменная)

Код
var
  I: Integer;
begin
  Text.text := IntToStr(TimerGetState(vrTime));
end.

По нажатаю кнопки Пуск, таймер стартует это можно видеть по объекту текст т.к он показывает 1, но когда время становится больше либо равно 07.03.2024 10:02 ( значению vrTime , т.е занчение в Cal) , таймер все еще показывает 1 и он стопается.
Вопрос он должен выпасть в -1 или в 0, или я должен ручками его сбрасывать?

Simple Scada

  • Глобальный модератор
  • *****
  • Сообщений: 203
    • Просмотр профиля
    • Simple-Scada
Re: Вопрос по таймерам
« Ответ #1 : 07 Марта 2024, 10:27:32 »
Здравствуйте.

Данные скрипты так, как Вы описали, работать не будут. Таймерные процедуры рассмотрены по ссылке. Пример работы с таймерами можно найти в демо-проекте -> страница "Скрипты" -> "Простые скрипты (1)" -> пример №3). Если нужно поставить таймер на паузу, то нужно использовать процедуру "TimerPause". Если сбросить, то "TimerReset".

Чтобы при достижении значения переменной "vrTime" значения, заданного в календаре "Cal", таймер останавливался или сбрасывался, в скрипт (на событие "OnDataChange" компонента "Текст" с которым связана переменная "vrTime") нужно добавить соответствующую проверку и выполнение процедур "TimerPause" или "TimerReset":
Код: (delphi)
begin
  // если значение таймера >= значение календаря, то ставим таймер на паузу
  if CompareDateTime(vrTime.AsDateTime, Cal.AsDateTime) >= 0 then
    TimerPause(vrTime);

  Text.Text := IntToStr(TimerGetState(vrTime));
end.
Также, в скрипте на кнопку Пуск нужно удалить строку "vrTime.Value := Cal.Value;"

Если не разберетесь, то пришлите для проверки на support@simple-scada.com текущую версию Вашего проекта из директории "..\Simple-Scada 2\Projects\" и укажите скрипты, которые нужно проверить. Опишите подробно, какую именно задачу Вы пытаетесь решить? Если требуется включать/выключать какое-либо оборудование по расписанию, то для этого можно использовать компонент "Расписание".
« Изменён: 07 Марта 2024, 10:42:32 от Simple_Scada »