Simple-Scada forum

Simple-Scada 2 => Ваши вопросы => Тема начата: Виктория от 25 Августа 2017, 10:38:42

Название: Задержка
Отправлено: Виктория от 25 Августа 2017, 10:38:42
Возможно ли в Simple Scada организовать задержку по времени на 500  мс?
Название: Re: Задержка
Отправлено: Simple-Scada от 25 Августа 2017, 10:58:09
Скрипты в Simple-Scada выполняются в синхронном режиме, поэтому задержки возможно делать только на основе таймеров., а минимальный таймер сейчас 1 секунда. Уточните какую задачу Вы хотите решить добавлением задержки, возможно мы предложим другое решение?
Название: Re: Задержка
Отправлено: Виктория от 25 Августа 2017, 11:01:31
Вот такую: мы, например, отправили команду на включение датчика давления ,и через каждые 500 мс надо проверить - изменил ли свое значение датчик давления.  Именно каждые 500 мс.(((
Название: Re: Задержка
Отправлено: Simple-Scada от 25 Августа 2017, 11:08:57
Для этого нужно использовать событие OnDataChange (https://simple-scada.com/help/manual/general-properties.html) (это событие вызывается каждый раз, когда переменная с которой связан объект изменилась). Последовательность такая:

1. Выставить у переменной датчика частоту опроса (https://simple-scada.com/help/manual/variable-new.html) = 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 (https://simple-scada.com/help/script/rundelay.html).
Название: Re: Задержка
Отправлено: Виктория от 25 Августа 2017, 11:16:04
Спасибо, это лучше, чем ничего)))