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

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

Автор Тема: В отчёте получить значение периодической переменной за определенное время  (Прочитано 527 раз)

gaargot1

  • Новичок
  • *
  • Сообщений: 16
    • Просмотр профиля
Здравствуйте.
Подскажите пожалуйста, можно ли в отчёте получить следующее:
На пример есть периодический источник данных.
В этот источник добавлена переменная с типом обработки "максимум", получить "время".

Я могу получить значение другой периодической переменной, которое было в то время, которое мы получим в качестве результата из первой переменной?

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 3000
    • Просмотр профиля
    • Simple-Scada
Здравствуйте.

Встроенных средств для решения данной задачи - нет. Можно попробовать решить через скрипты, но решение не будет простым. По-изменению переменной в скрипте вычислять максимальное значение за нужный период времени и в момент максимума сохранять значение второй переменной в отдельную переменную. Затем полученную отдельную переменную выводить в отчет.

ART63

  • Постоялец
  • ***
  • Сообщений: 149
    • Просмотр профиля
вычислять максимальное значение за нужный период времени и в момент максимума сохранять значение второй переменной в отдельную переменную.

Добрый день!
Какой функцией можно сохранить значение переменной в БД? В руководстве по скриптам в разделе "Работа с БД" только одна процедура RunSQL.
И в классе "Переменная" не нашел такого метода.
« Изменён: 11 Января 2022, 09:43:08 от ART63 »

Simple_Scada

  • Администратор
  • *****
  • Сообщений: 1178
    • Просмотр профиля
Здравствуйте.

Цитировать
Какой функцией можно сохранить значение переменной в БД?
Работа с БД производится через SQL-запросы. В упомянутом разделе руководства "Работа с БД" имеется вся необходимая информация: ссылки на руководства MySQL, ссылки на примеры работы с БД и т.д. Подробные примеры работы с БД можно найти в демо-проекте на странице "Скрипты" -> "Работа с БД", а также в разделе "Примеры скриптов -> Работа с БД". Как выполнять запросы к БД рассмотрено по ссылке.

ART63

  • Постоялец
  • ***
  • Сообщений: 149
    • Просмотр профиля
По SQL понятно. Спасибо.

Можно попробовать решить через скрипты, но решение не будет простым. По-изменению переменной в скрипте вычислять максимальное значение за нужный период времени и в момент максимума сохранять значение второй переменной в отдельную переменную. Затем полученную отдельную переменную выводить в отчет.
По предложенному вами решению возникает вопрос о метке времени переменных. Допустим в 10:00:00,000 переменная X изменилась и запустился скрипт. Оказалось, что X вошла в максимум. В рамках скрипта мы присваиваем переменной Y значение некоей переменной, которая должна фигурировать в отчете вместе с X. У Y выставлен флаг архивирования и она запишется в архив. Вот только с каким временем? 10:00:00,000 или 10:00:00,000+время выполнения скрипта, допустим 10:00:00,001. Если вариант два, то ваш вариант не сработает - он выдаст в отчет предыдущее значение переменной Y.
« Изменён: 11 Января 2022, 17:37:50 от ART63 »

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 3000
    • Просмотр профиля
    • Simple-Scada
Цитировать
Вот только с каким временем?
Будет взято время серверного ПК в момент выполнения присвоения.

Цитировать
Если вариант два, то ваш вариант не сработает - он выдаст в отчет предыдущее значение переменной Y.
Можно задать в периодическом источнике данных тип обработки "последнее значение", чтобы бралось последнее значение за интервал.

Ещё можно создать в БД собственную отдельную таблицу с нужными столбцами и формировать её через RunSQL (выполняя SQL-запросы), чтобы в таблице были уже готовые данные в нужном виде. Затем эту таблицу выводить в отчет как описано здесь. Тогда можно обойтись без стандартных источников данных.