Simple-Scada forum

Simple-Scada 2 => Ваши вопросы => Тема начата: RadMur от 09 Октября 2025, 09:58:14

Название: Последнее считанное значение не сохраняется в БД
Отправлено: RadMur от 09 Октября 2025, 09:58:14
Здравствуйте,

Есть автомат, который работает посменно. Я читаю с него кол-во выработанных штук. Мне нужно сохранять значения в БД.
В скаде сделал архивацию по изменению, все сохраняется в БД, кроме последнего считанного значения. Оно пишется при начале следующей
смены, а мне так не надо. При этом, в скаде на интерфейсе последнее значение отображается, но в БД не пишется. Но, если закрыть сервер скады,
то это последнее значение пишется в БД.
Как можно "зафорсить" запись в БД последнего считанного значения за смену?
Архивацию по-времени не хочу, будет засорять БД.
Версия скады 2.7.1.0. Система архивации v2. База Postgres 16.
Название: Re: Последнее считанное значение не сохраняется в БД
Отправлено: Simple_Scada от 09 Октября 2025, 18:42:56
Здравствуйте.

Данные изначально накапливаются в оперативной памяти и периодически сбрасываются в БД. Чем реже меняется переменная, тем реже данные попадают в БД. Также, данные сбрасываются в БД при остановке проекта.

В трендах (https://simple-scada.com/help/manual/client-trends-view.html), отчетах (https://simple-scada.com/help/report/index.html) (при использовании стандартных источников данных: "Периодический (https://simple-scada.com/help/report/periodicsourcework.html)" или "По-изменению (https://simple-scada.com/help/report/changesourcework.html)") и в процедурах для работы с архивными данными (https://simple-scada.com/help/script/work-with-archive.html) используют все данные, в том числе и из оперативной памяти.

Цитировать
Как можно "зафорсить" запись в БД последнего считанного значения за смену?
Опишите подробно, для чего это требуется? Какую именно задачу Вы пытаетесь решить?

Если нужно вычислить количество деталей произведенных за смену, как разницу между значением на начало смены и значением на конец смены, то в случае отчета можно использовать периодический источник данных с типом обработки -> "разница" (https://simple-scada.com/help/report/periodicsourcework.html). Если данные необходимо выводить на мнемосхему, то можно использовать процедуру ArchiveValueByTime (https://simple-scada.com/help/script/archivevaluebytime.html) и вычислять разницу между двух значений за необходимый интервал времени. Пример использования процедуры ArchiveValueByTime (https://simple-scada.com/help/script/archivevaluebytime.html) с подробным описанием можно найти в руководстве по ссылке (https://simple-scada.com/help/script/flow-calculation.html).

Цитировать
Архивацию по-времени не хочу, будет засорять БД.
Подробное описание типов архивации см. в руководстве по ссылке (https://simple-scada.com/help/manual/vararchive.html). В Simple-Scada все доступные типы архивации основаны на изменении значения переменной. Если переменная не меняла свое значение, то новая точка тренда не будет создана/записана в БД независимо от типа архивации. Это позволяет экономить место в БД, а также значительно увеличивает производительность при работе с архивными данными (построение отчетов, просмотр трендов и т.д.). Точки трендов создаются только при изменении переменной. Например, даже если установить тип архивации "По времени" и задать интервал в 10 сек, то новое значение переменной будет записано в архив только при изменении значения переменной, если прошло больше времени (от последней добавленной в архив точки), чем указано в параметре "Интервал архивации".
Название: Re: Последнее считанное значение не сохраняется в БД
Отправлено: RadMur от 13 Октября 2025, 09:28:15
Я не знаю как еще более подробно описать. Вроде достаточно подробно описал.
Автомат фасует и считает, архивация раз в минуту. В 16:59 было 990 штук, в 17:00 стало 1000 штук, но в БД записалось 990.
В 17:00 автомат выключили и счетчик не меняет значение.
1С-ник в конце смены запускает обработку и тянет из базы 990 штук, а на бумаге у них 1000 штук. 1000 запишется в БД только
завтра утром, когда счетчик изменит значение. В результате счетчик за день не совпадает.
Мне надо, чтобы последнее значение, считанное в 17:00 (1000 штук) записалось в БД тем же днем, а не следующим.
Сам я никакие отчеты не делаю, все делают 1С-ники, я только в БД пишу.
Название: Re: Последнее считанное значение не сохраняется в БД
Отправлено: Simple_Scada от 13 Октября 2025, 11:23:20
Цитировать
1С-ник в конце смены запускает обработку
В этом случае необходимо создать в БД свою таблицу и записывать в нее значения нужных переменных. Пример передачи текущих значений из скада-системы в сторонние приложения через БД доступен по ссылке (https://simple-scada.com/help/script/passval.html). Далее, из 1С можно читать данные из полученной таблицы.

Другие возможные варианты передачи данных в 1С рассмотрены по ссылке (https://simple-scada.com/help/manual/faq-other.html?anchor=q9).
Название: Re: Последнее считанное значение не сохраняется в БД
Отправлено: RadMur от 13 Октября 2025, 11:40:30
Спасибо!