Simple-Scada forum

Simple-Scada 2 => Ваши вопросы => Тема начата: gaargot1 от 31 Декабря 2021, 00:39:35

Название: В отчёте получить значение периодической переменной за определенное время
Отправлено: gaargot1 от 31 Декабря 2021, 00:39:35
Здравствуйте.
Подскажите пожалуйста, можно ли в отчёте получить следующее:
На пример есть периодический источник данных.
В этот источник добавлена переменная с типом обработки "максимум", получить "время".

Я могу получить значение другой периодической переменной, которое было в то время, которое мы получим в качестве результата из первой переменной?
Название: Re: В отчёте получить значение периодической переменной за определенное время
Отправлено: Simple-Scada от 10 Января 2022, 17:39:01
Здравствуйте.

Встроенных средств для решения данной задачи - нет. Можно попробовать решить через скрипты, но решение не будет простым. По-изменению переменной в скрипте вычислять максимальное значение за нужный период времени и в момент максимума сохранять значение второй переменной в отдельную переменную. Затем полученную отдельную переменную выводить в отчет.
Название: Re: В отчёте получить значение периодической переменной за определенное время
Отправлено: ART63 от 11 Января 2022, 09:39:01
вычислять максимальное значение за нужный период времени и в момент максимума сохранять значение второй переменной в отдельную переменную.

Добрый день!
Какой функцией можно сохранить значение переменной в БД? В руководстве по скриптам в разделе "Работа с БД" только одна процедура RunSQL.
И в классе "Переменная" не нашел такого метода.
Название: Re: В отчёте получить значение периодической переменной за определенное время
Отправлено: Simple_Scada от 11 Января 2022, 10:34:34
Здравствуйте.

Цитировать
Какой функцией можно сохранить значение переменной в БД?
Работа с БД производится через SQL-запросы. В упомянутом разделе руководства "Работа с БД" (https://simple-scada.com/help/script/workbd.html) имеется вся необходимая информация: ссылки на руководства MySQL, ссылки на примеры работы с БД (https://simple-scada.com/help/script/dbscripts.html) и т.д. Подробные примеры работы с БД можно найти в демо-проекте на странице "Скрипты" -> "Работа с БД", а также в разделе "Примеры скриптов -> Работа с БД (https://simple-scada.com/help/script/dbscripts.html)". Как выполнять запросы к БД рассмотрено по ссылке (https://simple-scada.com/help/script/querytodb.html).
Название: Re: В отчёте получить значение периодической переменной за определенное время
Отправлено: ART63 от 11 Января 2022, 17:33:39
По SQL понятно. Спасибо.

Можно попробовать решить через скрипты, но решение не будет простым. По-изменению переменной в скрипте вычислять максимальное значение за нужный период времени и в момент максимума сохранять значение второй переменной в отдельную переменную. Затем полученную отдельную переменную выводить в отчет.
По предложенному вами решению возникает вопрос о метке времени переменных. Допустим в 10:00:00,000 переменная X изменилась и запустился скрипт. Оказалось, что X вошла в максимум. В рамках скрипта мы присваиваем переменной Y значение некоей переменной, которая должна фигурировать в отчете вместе с X. У Y выставлен флаг архивирования и она запишется в архив. Вот только с каким временем? 10:00:00,000 или 10:00:00,000+время выполнения скрипта, допустим 10:00:00,001. Если вариант два, то ваш вариант не сработает - он выдаст в отчет предыдущее значение переменной Y.
Название: Re: В отчёте получить значение периодической переменной за определенное время
Отправлено: Simple-Scada от 12 Января 2022, 17:09:12
Цитировать
Вот только с каким временем?
Будет взято время серверного ПК в момент выполнения присвоения.

Цитировать
Если вариант два, то ваш вариант не сработает - он выдаст в отчет предыдущее значение переменной Y.
Можно задать в периодическом источнике данных тип обработки "последнее значение" (https://simple-scada.com/help/report/periodicsourcework.html), чтобы бралось последнее значение за интервал.

Ещё можно создать в БД собственную отдельную таблицу с нужными столбцами и формировать её через RunSQL (выполняя SQL-запросы), чтобы в таблице были уже готовые данные в нужном виде. Затем эту таблицу выводить в отчет как описано здесь (https://simple-scada.com/help/report/rep-user-data.html). Тогда можно обойтись без стандартных источников данных.