Simple-Scada forum
Simple-Scada 2 => Ваши вопросы => Тема начата: gaargot1 от 31 Декабря 2021, 00:39:35
-
Здравствуйте.
Подскажите пожалуйста, можно ли в отчёте получить следующее:
На пример есть периодический источник данных.
В этот источник добавлена переменная с типом обработки "максимум", получить "время".
Я могу получить значение другой периодической переменной, которое было в то время, которое мы получим в качестве результата из первой переменной?
-
Здравствуйте.
Встроенных средств для решения данной задачи - нет. Можно попробовать решить через скрипты, но решение не будет простым. По-изменению переменной в скрипте вычислять максимальное значение за нужный период времени и в момент максимума сохранять значение второй переменной в отдельную переменную. Затем полученную отдельную переменную выводить в отчет.
-
вычислять максимальное значение за нужный период времени и в момент максимума сохранять значение второй переменной в отдельную переменную.
Добрый день!
Какой функцией можно сохранить значение переменной в БД? В руководстве по скриптам в разделе "Работа с БД" только одна процедура RunSQL.
И в классе "Переменная" не нашел такого метода.
-
Здравствуйте.
Какой функцией можно сохранить значение переменной в БД?
Работа с БД производится через 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).
-
По SQL понятно. Спасибо.
Можно попробовать решить через скрипты, но решение не будет простым. По-изменению переменной в скрипте вычислять максимальное значение за нужный период времени и в момент максимума сохранять значение второй переменной в отдельную переменную. Затем полученную отдельную переменную выводить в отчет.
По предложенному вами решению возникает вопрос о метке времени переменных. Допустим в 10:00:00,000 переменная X изменилась и запустился скрипт. Оказалось, что X вошла в максимум. В рамках скрипта мы присваиваем переменной Y значение некоей переменной, которая должна фигурировать в отчете вместе с X. У Y выставлен флаг архивирования и она запишется в архив. Вот только с каким временем? 10:00:00,000 или 10:00:00,000+время выполнения скрипта, допустим 10:00:00,001. Если вариант два, то ваш вариант не сработает - он выдаст в отчет предыдущее значение переменной Y.
-
Вот только с каким временем?
Будет взято время серверного ПК в момент выполнения присвоения.
Если вариант два, то ваш вариант не сработает - он выдаст в отчет предыдущее значение переменной Y.
Можно задать в периодическом источнике данных тип обработки "последнее значение" (https://simple-scada.com/help/report/periodicsourcework.html), чтобы бралось последнее значение за интервал.
Ещё можно создать в БД собственную отдельную таблицу с нужными столбцами и формировать её через RunSQL (выполняя SQL-запросы), чтобы в таблице были уже готовые данные в нужном виде. Затем эту таблицу выводить в отчет как описано здесь (https://simple-scada.com/help/report/rep-user-data.html). Тогда можно обойтись без стандартных источников данных.