Simple-Scada forum

Simple-Scada 2 => Ваши вопросы => Тема начата: spkzl от 27 Января 2023, 10:43:58

Название: Как сделать запуск кода по расписанию допустим в 12-30
Отправлено: spkzl от 27 Января 2023, 10:43:58
День добрый.
Мне осталось из переменной DataTime вытащить часы и минуты есть оператор который это сделает или пользоваться преобразованием строки?
Название: Re: Как сделать запуск кода по расписанию допустим в 12-30
Отправлено: ART63 от 27 Января 2023, 13:34:59
Функции HourOf(Var TDateTime) и MinuteOf(Var TDateTime)
Название: Re: Как сделать запуск кода по расписанию допустим в 12-30
Отправлено: Simple_Scada от 27 Января 2023, 13:42:07
Здравствуйте.

Если требуется включать/выключать какое-либо оборудование по расписанию, то для этого можно использовать компонент "Расписание (https://simple-scada.com/help/manual/schedule.html)". Если нужно выполнять какие-либо действия из скрипта через заданный интервал времени(по таймеру), то пример такого скрипта можно найти по ссылке (https://simple-scada.com/help/script/second-passed.html). Если требуется выполнять скрипт в какое-то заданное время(например в 12-30), то можно использовать скрипт с типом события "Прошла секунда" (https://simple-scada.com/help/script/event-types.html), в котором сравнивать текущее время с заданным:
Код: (delphi)
begin
  // если сейчас 12:30
  if (HourOf(Now) = 12) and (MinuteOf(Now) = 30) then
  // , то выполнить какое-то действие
end.
Если нужно выполнять скрипт в начале заданного часа, то используйте скрипт с типом события "Прошел час" (https://simple-scada.com/help/script/hour-passed.html).

Цитировать
Мне осталось из переменной DataTime вытащить часы и минуты есть оператор который это сделает или пользоваться преобразованием строки?
Методы для работы с датой/временем можно найти в руководстве по ссылке (https://simple-scada.com/help/script/datetime.html). Функция HourOf  (https://simple-scada.com/help/script/hourof.html)- возвращает час дня. Функция MinuteOf  (https://simple-scada.com/help/script/minuteof.html)- возвращает минуты. Для сравнения значений даты/времени можно использовать функцию CompareDateTime (https://simple-scada.com/help/script/comparedatetime.html).
Название: Re: Как сделать запуск кода по расписанию допустим в 12-30
Отправлено: PavelSh от 28 Января 2023, 07:53:35
Если требуется выполнять скрипт в какое-то заданное время(например в 12-30), то можно использовать скрипт с типом события "Прошла секунда" (https://simple-scada.com/help/script/event-types.html), в котором сравнивать текущее время с заданным:
Я верно понимаю, что он успеет выполниться 60 раз, пока время не будет 12-31?
Название: Re: Как сделать запуск кода по расписанию допустим в 12-30
Отправлено: Simple_Scada от 29 Января 2023, 11:51:00
Да, забыли об этом упомянуть. Проще всего в код, который идет после условия добавить проверку вида: если требуемое действие не выполнено, то выполнить его. Или можно создать внутреннюю переменную с типом Word для хранения прошлой минуты (в примере vrLastMinute) и использовать такой скрипт:
Код: (delphi)
begin
  // если сейчас 12:30
  if (HourOf(Now) = 12) and (MinuteOf(Now) = 30) and (vrLastMinute.AsInt <> MinuteOf(Now)) then
  begin
    // , то выполнить какое-то действие
  end;
  vrLastMinute.Value := MinuteOf(Now);
end.
Название: Re: Как сделать запуск кода по расписанию допустим в 12-30
Отправлено: spkzl от 30 Января 2023, 16:19:21
Спасибо. все получилось.