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

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

Автор Тема: Архивные тренды  (Прочитано 2774 раз)

mvs

  • Новичок
  • *
  • Сообщений: 9
    • Просмотр профиля
Архивные тренды
« : 02 Апреля 2018, 15:23:31 »
Как сделать запись в архив с отсчетом от начала суток, например данные должны архивироваться и отображаться в трендах с периодом 30 мин .: 00:00:00, 00:30:00, 1:00:00, 1:30:00 ... и.т.д.

TeNQ

  • Постоялец
  • ***
  • Сообщений: 199
    • Просмотр профиля
Re: Архивные тренды
« Ответ #1 : 02 Апреля 2018, 19:51:27 »
Как сделать запись в архив с отсчетом от начала суток, например данные должны архивироваться и отображаться в трендах с периодом 30 мин .: 00:00:00, 00:30:00, 1:00:00, 1:30:00 ... и.т.д.
Тут два варианта есть. Первый: Для вашей переменной задать архивацию "По времени" и Интервал = 30 мин. И в секундном скрипте поймать начало часа/пол часа, проверить не запущена ли архивация, и если нет, то запустить архивацию. П.С. Не катит, нет свойства у переменной позволяющего проверить, архивируется она или нет. Тогда не проверять, а просто запустить архивацию и все.
Второй: Для переменной задать архивацию "По времени" и Интервал = 2 мин.
В скрипте типа "Прошла секунда" прописать
Код: (delphi)
begin
  //Проверяю на начало часа или на пол часа.
  if (Now.MinuteOf = 0) or (Now.MinuteOf = 30)
  then
    //включаю архивацию
    VariableX.Archived := true
  else
    //выключаю архивацию
    VariableX.Archived := false;
end.
Поскольку следующая точка пойдет в архив только через 2 минуты, то секундный скрипт выключит архивацию раньше. Ну и да, секундный скрипт должен успевать обрабатываться за 1 секунду, иначе точно в секунды вы не уложитесь. И еще отключите в скрипте типа "Запуск проекта" архивацию переменной, иначе до того как словится в первый раз начало часа/пол часа запишутся лишние значения.
Код: (delphi)
begin
  VariableX.Archived := false;
end.
« Изменён: 26 Мая 2018, 13:34:58 от Simple-Scada »

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 3193
    • Просмотр профиля
    • Simple-Scada
Re: Архивные тренды
« Ответ #2 : 02 Апреля 2018, 23:53:04 »
Как сделать запись в архив с отсчетом от начала суток, например данные должны архивироваться и отображаться в трендах с периодом 30 мин .: 00:00:00, 00:30:00, 1:00:00, 1:30:00 ... и.т.д.
Здравствуйте. Наиболее надёжным вариантом, который предусматривает погрешности при получении времени, является следующий вариант: создать новую виртуальную переменную с теми же параметрами, что и основная переменная. Допустим оригинальная переменная имеет имя vrBase, а новая виртуальная имя vrVirtual. Архивацию включить нужно только у vrVirtual, её же выводить в тренды, тип архивации "по-изменению". Далее создаем новый скрипт с типом события "Прошла секунда" и пишем следующий код:
Код: (delphi)
const
  INTERVAL: Word = 30;
begin
  if (MinuteOf(Now) mod INTERVAL = 0) and
     (MinuteSpan(Now, vrVirtual.Timestamp) > 1) then
    vrVirtual.Value := vrBase.Value;
end.

А для чего архивация строго в 00:00, 00:30 и т.д.? Как планируется использовать эти архивные данные?
« Изменён: 26 Мая 2018, 13:35:05 от Simple-Scada »

Nikso

  • Новичок
  • *
  • Сообщений: 44
    • Просмотр профиля
Re: Архивные тренды
« Ответ #3 : 03 Апреля 2018, 15:13:41 »
Буквально вчера возник аналогичный вопрос. В моем случае это необходимо для сопоставления с архивом с приборов учёта не входящих в проект. В частности есть почасовые показания коммерческого прибора учета ээ по высокой стороне и 10 приборов учета по низкой стороне. Путем сопоставления данных определяются потери в линиях и трансформаторах.

mvs

  • Новичок
  • *
  • Сообщений: 9
    • Просмотр профиля
Re: Архивные тренды
« Ответ #4 : 03 Апреля 2018, 20:49:43 »
Добрый день. Данные нужно архивировать для системы учета электроэнергии. В счетчиков электроэнергии график нагрузки составляет 30 мин. для сведения баланса нужно иметь данные за такие промежутки времени.

mvs

  • Новичок
  • *
  • Сообщений: 9
    • Просмотр профиля
Re: Архивные тренды
« Ответ #5 : 05 Апреля 2018, 22:01:38 »
Как сделать чтобы в момент старта (остановки) сервера данные не сохранялись.
« Изменён: 05 Апреля 2018, 22:02:11 от mvs »

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 3193
    • Просмотр профиля
    • Simple-Scada
Re: Архивные тренды
« Ответ #6 : 06 Апреля 2018, 14:54:12 »
Как сделать чтобы в момент старта (остановки) сервера данные не сохранялись.
Это возможно только если не использовать стандартную систему архивации, и вместо этого добавлять данные в архив когда требуется при помощи пользовательского SQL-запроса. Для выполнения запросов к БД можно использовать процедуру RunSQL.
« Изменён: 06 Апреля 2018, 14:55:09 от Simple-Scada »