Simple-Scada forum

Simple-Scada 2 => Ваши вопросы => Тема начата: matiem от 02 Октября 2026, 08:36:21

Название: Расписание.
Отправлено: matiem от 02 Октября 2026, 08:36:21
Подскажите, пожалуйста, как элемент расписание 'понимает'  какой сегодня день? Пытаюсь создать форму где будет выведено на экран когда оно выключится (если работает), или когда включится (если не работает). но, пока у меня выводит только первую попавшуюся (понедельник вместо пятницы)
Название: Re: Расписание.
Отправлено: pan2000 от 04 Октября 2026, 00:31:41
  Здравствуйте.

  Интервалы расписания (https://simple-scada.com/help/script/tmschedule.html) можно рассматривать как двумерный массив с фиксированным числом строк (день расписания) и переменным числом столбцов (интервал расписания). Оба индекса массива начинаются с 0. Из текущей даты функцией DayOfTheWeek(Now) (https://simple-scada.com/help/script/dayoftheweek.html) можно получить день недели, но в диапазоне 1 - 7.
  Определить время перехода расписания в противоположное, относительно текущего, состояние можно по анализу интервалов. Для удобства границы интервалов считаются в секундах относительно начала суток вызова скрипта.
  Однако следует учитывать, что интервалы дня не упорядочены и могут перекрываться, т.е. анализ следует вести по всем интервалам расписания, а с учётом цикличности расписания - по сегодня дважды.
  Алгоритм заключается в движении по времени суток временной метки, начиная со времени вызова скрипта и соответствующей состоянию расписания на момент вызова. Все интервалы последовательно (а, для включенного состояния ещё и многократно) сравниваются с временной меткой, и по результатам принимается решение о перемещении метки. По достижении конца суток принимается решение о переходе к следующим суткам или завершении процесса.
  Алгоритм работает как при отсутствии интервалов в расписании, так и полностью "закрашенном" в любом порядке расписанием.
  Пример во вложении.