Блог

Историк собирает тренды, сменный отчёт пустой

2026-07-21 08:24

Мастер смены открывает сменный отчёт в SCADA в конце вахты - пустые таблицы, нули в суммах, графики «нет данных за период». При этом на том же сервере тренд давления за смену рисуется нормально, архив в MasterSCADA 4D или в клиенте историка показывает кривые. Диспетчер говорит: «историк же работает». Бухгалтерия технологических показателей недовольна: «опять вручную в Excel».

Разрыв между «тренды есть» и «отчёт пустой» почти никогда не означает поломку диска. Это разные подсистемы: непрерывное архивирование по тегам и отчётный механизм с фильтрами по времени, смене, агрегации, шаблону и правам. Статья разбирает, почему historian пишет, а сменный отчёт не видит данные: границы смены, timezone, привязка тегов в шаблоне, агрегаты, лицензия точек, пустые интервалы. Не даём полный курс по настройке SCADA - фокус на стыке архива и отчётов.

Короткий ответ

Если тренды в историке есть, а сменный отчёт пустой, данные в архиве записываются, но отчёт их не запрашивает или запрашивает не те теги/интервал. Проверьте: совпадает ли окно смены (начало/конец, календарь смен) с реальным временем архива и часовым поясом сервера; привязаны ли в шаблоне отчёта те же имена тегов, что в каналах архивирования (не копии, не старые пути); включено ли архивирование для тегов, попадающих в агрегаты SUM/AVG; не стоят ли в отчёте фильтры quality или «только при работе»; генерируется ли отчёт на том же узле, где база истории; права роли на чтение архива за прошлый период. Тренд и отчёт часто используют один historian, но разные запросы - сбой в шаблоне не отключает запись трендов.

Два контура: архивирование и отчётность

Архивирование - циклическая запись значений тегов по расписанию или по изменению в historian database. Трендовый экран читает сырые или сжатые ряды за выбранный интервал. Сменный отчёт - шаблон (таблица, PDF, Excel) с параметрами ShiftStart, ShiftEnd, агрегатами за смену, счётчиками выпуска, простоями.

Типичная архитектура в MasterSCADA 4D или связке CODESYS + SCADA: каналы с флагом Archive; отдельный объект отчёта или внешний генератор; иногда SQL-запрос к той же БД, куда пишет historian.

Если Archive включён и тренд строится - запись работает. Отчёт может ссылаться на тег Tank1.Level в шаблоне, а архивируется Objects.Tank1.Level_Arch после переименования полгода назад. Или отчёт смотрит смену 08:00-20:00, а на объекте смена с 07:00, и «рабочие» часы попадают мимо окна.

Границы смены и производственные сутки

Смена 20:00-08:00 пересекает календарные сутки. Если отчёт привязан к дате «00:00-24:00», ночная смена разрезается на два пустых куска. Расписание смен должно быть единым источником для экрана «текущая смена», журнала оператора и отчёта.

При смене состава смен (праздники, укороченный день) статическое расписание в шаблоне Excel не обновляют - отчёт за праздник пустой при живом тренде. Технолог знает, что «вчера была укороченная», SCADA - нет, если календарь не завели.

На пуске согласуйте с производством: сколько смен, коды смен, пересечение полуночи, кто владелец справочника. АСУ вносит в SCADA; без этого интегратор ставит «08-20 / 20-08» по умолчанию и уезжает с объекта.

Часовой пояс и переход на летнее время

Сервер SCADA в UTC, смены в локальном UTC+5 - классика пустого отчёта «на час» или «на сутки». Оператор смотрит тренд в локальном времени клиента, отчёт генерируется на сервере в UTC - интервалы не пересекаются.

Проверьте: настройки timezone ОС сервера и SCADA Runtime; таблицу смен в справочнике; параметры отчёта «предыдущая смена» - от какого момента считается; переход на летнее время (если применимо). Симптом: «вчера отчёт был, сегодня пустой» ровно в неделю DST.

На пуске зафиксируйте: «все отчёты и тренды - время завода X, сервер синхронизирован NTP». Без этого спор «историк врёт» повторяется каждый квартал.

Качество GOOD, BAD и пустой интервал

Если в конце смены был обрыв связи, весь интервал может помечаться BAD для строгого отчёта. Тренд показывает последнее значение «замёрзшим», а агрегат AVG не считается. Настройка «игнорировать BAD» vs «пустая ячейка» меняет картину.

Для дискретных событий (пуски, счётчики) AVG бессмысленен - нужен LAST, COUNT или интеграл. Ошибочный тип агрегата даёт пустоту или ноль без ошибки в логе. Отчёт «средняя температура» по BOOL пуска - пустая ячейка при живом тренде состояния.

Сверьте политику quality в historian и в шаблоне отчёта. Если они разные, тренд и PDF живут в разных правилах.

Шаблон отчёта: теги, агрегаты, условия

В шаблоне сменного отчёта ячейки ссылаются на теги и функции: AVG(Pressure, ShiftStart, ShiftEnd), SUM(Flow, ...), COUNT(Alarm). Ошибки:

Тег в отчёте не архивируется (Archive выключен после оптимизации «чтобы диск не забивать»). Архивируется с deadband, а среднее за смену при стабильном процессе - пусто или одна точка. Условие «печатать только если Run=true» - за смену не было флага Run в архиве. Агрегат по строковому тегу или BOOL без приведения. Ссылка на вычисляемый тег, который считается только online, без записи в historian.

Откройте шаблон, для каждой пустой ячейки проследите цепочку до канала и флаг Archive. Сравните с тегом, который успешно рисуется на тренде - часто это разные имена.

Historian пишет, SQL отчёта смотрит в другую БД

На крупных объектах historian на одном сервере, отчёты Crystal/SSRS/скрипт - на другом, подключение к «боевой» копии БД не обновили. Тренд в SCADA читает live historian, отчёт - пустую тестовую базу.

Проверьте connection string отчёта, имя БД, реплику read-only с лагом репликации (отчёт за «только что закончившуюся смену» пуст, через час появляется). Для MasterSCADA - один узел архивации в дереве проекта.

Лицензия точек и отключённые каналы

В MasterSCADA 4D лицензия по точкам протокола: канал может отображаться в проекте, но архивирование отключено лицензией или политикой. Тренд иногда строят по live-каналу за последние часы из оперативного буфера, а отчёт требует глубокий архив - пусто.

Сверьте счётчик точек, какие каналы реально пишутся в БД (таблица тегов historian, диагностика диска). CODESYS на том же железе без счётчика точек - но место на диске и настройка Task архивации всё равно ограничивают.

Агрегация: AVG, LAST, SUM и «ноль вместо пусто»

Отчёт запрашивает среднее за смену. Если насос не работал и архив не писал (archive on change, значение не менялось), в интервале ноль записей - AVG пустой. Тренд на экране показывает интерполяцию или последнее значение, визуально «линия есть», в отчёте - blank.

Решения: архивировать по времени для технологических тегов сменного отчёта; в шаблоне использовать LastValue или Interpolate; явно помечать «нет данных» вместо нуля. Ноль в отчёте и пустая ячейка - разное для технолога.

Для счётчиков расхода за смену нужен SUM разностей или интеграл, не AVG мгновенного расхода. Ошибка в формуле даёт нули при полном тренде.

Права и автоматическая генерация

Отчёт генерируется по расписанию службой под учёткой SCADA_Service. У службы нет прав на объекты или архив - файл пустой. Интерактивный тренд оператор открывает под своей ролью с другими правами.

Проверьте журнал генерации отчётов, ошибки доступа, путь сохранения PDF (диск полон - пустой файл). Ручной запуск отчёта под администратором vs автоматический - сравнение за ту же смену.

Процедура диагностики на объекте

Выберите одну пустую метрику в отчёте, например среднее давление. Найдите тег в шаблоне. В дереве SCADA убедитесь Archive=on. Постройте тренд за ту же смену с тем же тегом - данные есть. Вручную задайте в отчёте те же ShiftStart/End, что в справочнике смен. Если пусто - ошибка в выражении шаблона или тип данных. Если вручную OK, автомат - смотрите расписание и учётку службы. Экспортируйте сырой CSV из historian за смену - есть ли строки. SQL к БД historian с COUNT(*) за интервал - согласуется с CSV.

Зафиксируйте в паспорте: список тегов сменного отчёта = список обязательного архивирования.

Приёмка: тестовая смена с контрольным листом

На FAT или в первую неделю эксплуатации проведите «контрольную смену»: 3-5 тегов вручную записать в журнал (время, значение с поля), сравнить с трендом и с PDF отчёта. Расхождение сразу показывает сдвиг timezone или неверный агрегат. Без этой процедуры пустой отчёт всплывает через месяц, когда бухгалтерия технологических показателей начнёт требовать цифры.

Включите в пакет сдачи документов при вводе раздел «архив и отчёты»: список тегов, период архивации, расписание смен, учётная запись генерации отчёта.

Связь с журналом оператора и HMI

Иногда «пустой отчёт» ожидают заполненным событиями оператора, а шаблон тянет только технологические теги. Кнопки «начало смены» не нажимали - параметры смены в отчёте default. Отладка HMI и журнал оператора помогает отделить человеческий фактор от архива. Гайд по ресурсам АСУ ТП - про структуру подсистем на объекте.

Что в отчёте, настройка и проверка

Что в отчёте Настройка Проверка
Пустые все ячейки Неверный интервал дат/смен Сверить расписание смен с шаблоном
Пусто только по одному тегу Другой канал в шаблоне Сравнить имя архива на тренде и в отчёте
Пусто после обрыва связи Фильтр только GOOD Тренд quality, журнал связи
Нули вместо прочерков AVG по пустому ряду Тип агрегата LAST/SUM
Сдвиг на час Часовой пояс Метки в экспорте CSV архива
Пусто по понедельникам Особое расписание не задано Календарь производства
В ручном отчёте OK, в авто нет Другой сервер / учётка Журнал задач; права службы
AVG пусто, MAX есть Мало точек в интервале Период архивации; archive on change
Отчёт не создаётся Путь / диск Место на диске; права на папку export

Вопросы с эксплуатации

Можно ли доверять тренду, если отчёт пустой?
Тренд показывает, что данные приходили. Отчёт говорит, что по правилам шаблона их нельзя учесть - разберите правила, не «перезапускайте архив».

Кто должен править шаблон - АСУ или IT?
Тот, кто знает границы смен и технологические сутки; IT подключает часовой пояс и расписание задач.

Достаточно ли видеть тренд для приёмки архива?
Нет. Приёмка включает сменный отчёт за тестовую смену с сверкой 3-5 контрольных тегов с трендом.

MasterSCADA и CODESYS по-разному архивируют?
Среды взаимозаменяемы на железе; механизм historian зависит от конфигурации проекта. Принцип «тренд ≠ отчёт без настройки шаблона» одинаков.

Почему отчёт пустой сразу после конца смены?
Задержка записи буфера, реплика БД или отчёт стартует до flush historian. Добавьте offset 5-15 минут в расписание.

Ссылки по теме