Здравствуйте.
Данные изначально накапливаются в оперативной памяти и периодически сбрасываются в БД. Чем реже меняется переменная, тем реже данные попадают в БД. Также, данные сбрасываются в БД при остановке проекта.
В
трендах,
отчетах (при использовании стандартных источников данных: "
Периодический" или "
По-изменению") и в
процедурах для работы с архивными данными используют все данные, в том числе и из оперативной памяти.
Как можно "зафорсить" запись в БД последнего считанного значения за смену?
Опишите подробно, для чего это требуется? Какую именно задачу Вы пытаетесь решить?
Если нужно вычислить количество деталей произведенных за смену, как разницу между значением на начало смены и значением на конец смены, то в случае отчета можно использовать
периодический источник данных с типом обработки -> "разница". Если данные необходимо выводить на мнемосхему, то можно использовать процедуру
ArchiveValueByTime и вычислять разницу между двух значений за необходимый интервал времени. Пример использования процедуры
ArchiveValueByTime с подробным описанием можно найти в руководстве
по ссылке.
Архивацию по-времени не хочу, будет засорять БД.
Подробное описание типов архивации см. в руководстве
по ссылке.
В Simple-Scada все доступные типы архивации основаны на изменении значения переменной. Если переменная не меняла свое значение, то новая точка тренда не будет создана/записана в БД независимо от типа архивации. Это позволяет экономить место в БД, а также значительно увеличивает производительность при работе с архивными данными (построение отчетов, просмотр трендов и т.д.). Точки трендов создаются только при изменении переменной. Например, даже если установить тип архивации "По времени" и задать интервал в 10 сек, то новое значение переменной будет записано в архив только при изменении значения переменной, если прошло больше времени (от последней добавленной в архив точки), чем указано в параметре "Интервал архивации".