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

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

Автор Тема: Задержка  (Прочитано 5240 раз)

Виктория

  • Пользователь
  • **
  • Сообщений: 87
    • Просмотр профиля
Задержка
« : 25 Августа 2017, 10:38:42 »
Возможно ли в Simple Scada организовать задержку по времени на 500  мс?

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 3214
    • Просмотр профиля
    • Simple-Scada
Re: Задержка
« Ответ #1 : 25 Августа 2017, 10:58:09 »
Скрипты в Simple-Scada выполняются в синхронном режиме, поэтому задержки возможно делать только на основе таймеров., а минимальный таймер сейчас 1 секунда. Уточните какую задачу Вы хотите решить добавлением задержки, возможно мы предложим другое решение?

Виктория

  • Пользователь
  • **
  • Сообщений: 87
    • Просмотр профиля
Re: Задержка
« Ответ #2 : 25 Августа 2017, 11:01:31 »
Вот такую: мы, например, отправили команду на включение датчика давления ,и через каждые 500 мс надо проверить - изменил ли свое значение датчик давления.  Именно каждые 500 мс.(((

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 3214
    • Просмотр профиля
    • Simple-Scada
Re: Задержка
« Ответ #3 : 25 Августа 2017, 11:08:57 »
Для этого нужно использовать событие OnDataChange (это событие вызывается каждый раз, когда переменная с которой связан объект изменилась). Последовательность такая:

1. Выставить у переменной датчика частоту опроса = 500 мс;
2. Создать любой объект в проекте, например объект Текст и связать его с переменной датчика (или использовать существующий объект, если такой есть). Если не нужно видеть объект, то можно выключить свойство "Видимый" или вынести его координаты за пределы проекта;
3. Выделяем наш объект связанный с переменной датчика и на событие OnDataChage пишем любые проверки. Этот скрипт будет вызываться каждый раз, когда переменная датчика изменяет своё значение, что Вам и требуется. Если переменная будет меняться каждые 500 мс., то и скрипт будет выполняться каждые 500 мс. Если переменная будет меняться раз в час, то и скрипт будет вызываться раз в час, что хорошо скажется на производительности и позволит избежать лишних срабатываний скрипта по сравнению с использованием таймеров.

Пример OnDataChange скрипта для объекта который связан с переменной vrSignal:
Код
begin
  if vrSignal.AsFloat > 50 then  // если значение переменной больше 50
    AddMessage(Now, mkAlarm, 'Значение выше 50!', True, True);  // то выдаём аварийное сообщение
end.

UPD: начиная с версии 2.6.14.0 добавлена возможность запускать задержки через RunDelay.
« Изменён: 29 Августа 2024, 10:29:24 от Simple-Scada »

Виктория

  • Пользователь
  • **
  • Сообщений: 87
    • Просмотр профиля
Re: Задержка
« Ответ #4 : 25 Августа 2017, 11:16:04 »
Спасибо, это лучше, чем ничего)))