Блог

Архив трендов HMI съедает диск: период, deadband и что можно выкинуть

Через полгода после пуска SCADA-инженер получает письмо от ИТ: «Диск historian на 500 ГБ заполнен на 94%. Остановите записи или купите диск». На объекте всё «как настроили»: период 1 с на все теги, deadband 0, хранение «максимально». Никто не считал, что 800 тегов с секундной дискретизацией за год - это десятки миллиардов строк. Операторы жалуются не на диск, а что «тренд за прошлый месяц не открывается». Инженер открывает настройки архива и видит: ротация отключена, сжатие нет, половина тегов - статусы и счётчики, которые меняются раз в сутки.

Это не про «дыру в тренде за ночь» из-за обрыва связи или переполнения кольцевого буфера на панели - такие пропуски разбирают отдельно. Здесь - планирование объёма: период записи, deadband, срок хранения, ротация файлов, какие теги не стоит архивировать и как балансировать «хватит для разбора аварии» против места на диске. Угол практический: что выкинуть без потери расследований.

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

Диск historian заполняется, когда период записи слишком мал, deadband нулевой, срок хранения бесконечный и в архив попали «мусорные» теги - статусы, heartbeat, дубликаты с HMI. Сначала считают объём: число тегов × частота × байт на точку × срок. Потом режут: увеличить период для медленных параметров, deadband по классу сигнала, отдельные политики для аварийных тегов, ротация и выгрузка на cold storage.

Не архивировать: постоянные биты, счётчики опроса, качество связи, если это не нужно для RCA. Для разбора аварии достаточно 1-5 с на критичных тегах за окно ±1 ч вокруг события плюс 10-60 с на остальных технологических параметрах за сутки. Зафиксировать в паспорте объекта классы тегов и параметры - не «все теги 1 с навсегда». При заполнении диска срочно не удалять файлы вручную: сначала остановить новые тяжёлые каналы, сжать/перенести старые периоды, расширить ротацию.

Сколько места реально нужно: грубая арифметика

Один тег с записью раз в секунду и 8 байт на значение (с меткой времени в среднем больше) даёт порядка 30 МБ в сутки на тег в простых historian. 500 тегов - 15 ГБ в день, 450 ГБ в месяц. Секундная дискретизация на всём заводе без отсечения - не «настройка по умолчанию», а авария диска через месяцы.

Deadband 0 на температуре в стабильном режиме не добавляет строк, пока значение не двигается - но на шумном канале 4-20 мА с мёртвой зоной 0 historian пишет каждое микродвижение. Фильтр в ПЛК и deadband в архиве должны быть согласованы: двойная «нулевая» зона не нужна, но разные уровни допустимы.

Срок хранения 10 лет для секундного архива всего завода - бюджет на petabyte. Реалистично: секунды на критичных тегах 30-90 дней, минутные агрегаты годы, часовые - дольше. Разбор ночной аварии редко требует секунду с шестого года эксплуатации.

Период записи: не один для всех

Классы по скорости изменения: быстрые (давление в пульсирующем трубопроводе, момент), средние (температура в аппарате), медленные (уровень в резервуаре), статические (режим «авто/ручной»). Период 1 с на медленном уровне - мусор. Период 60 с на быстром давлении при пуске - потеря детализации для RCA.

Практика: таблица классов в проекте - A (1-2 с), B (5-10 с), C (30-60 с), D (по изменению + большой deadband). Пуск и авария - временное «boost» частоты на подмножество тегов по триггеру, если historian поддерживает.

На HMI локальный архив - короткое окно 24-48 ч для оператора. Серверный historian - длиннее, но не дублировать секунду на панели и на сервере для всех 800 тегов без причины.

Deadband: не только «чтобы меньше писать»

Deadband в архиве - зона, внутри которой новое значение не создаёт записи. Для температуры в PID с коридором ±0,5 °C deadband 0,2 °C разумно. Для уровня с гистерезисом 5% - deadband 2-3%. Нулевой deadband на всём - подарок для диска от шума АЦП.

Отличие от дыры в тренде: при большом deadband тренд выглядит «прямым», но данные есть в смысле «процесс стабилен». При заполнении диска historian может перестать писать новые файлы или удалять старые по политике - и тогда реальная дыра. Диагностика разная: смотреть free space, политику retention, журнал службы архива, не только тренд на экране.

Согласовать deadband с отчётами: если сменный отчёт берёт «последнее значение за час» из сырого архива, слишком агрессивный deadband сдвигает время последней точки. Для отчётов - отдельный канал или агрегат min/max/avg за интервал.

Ротация файлов и срок хранения

Historian пишет в файлы по дням или часам. Без ротации один каталог растёт до лимита ФС. Политика: raw 90 дней, 1-минутные агрегаты 2 года, часовые 10 лет - пример, числа из ТЗ заказчика.

Ротация не равна backup. Перед удалением старых raw - выгрузка на NAS или tape по регламенту. ИТ удалил «старые папки historian» без согласования - и историк трендов для сменного отчёта пустой уже по другой причине.

Мониторинг: алерт на 80% диска, не на 95%. На 95% historian может остановить записи, и вы теряете данные текущей аварии.

Что не архивировать

Статусы «связь OK» каждую секунду. Счётчики успешных Modbus транзакций. Дубликаты: тег на HMI и тот же на сервере с одной частотой. Тестовые и симуляционные объекты после FAT. Бит heartbeat от стороннего SCADA.

Архивировать обязательно: технологические PV/SV на критичных контурах, позиции клапанов и ПЧ при аварийных остановах, ключевые interlock и разрешения, главные причины остановки. Газоанализ и двери шкафа - по классу безопасности, не секундой на все 200 DI.

Если точки MasterSCADA кончились после включения архива - это лицензия, не диск; но паттерн тот же: «включили всё» без приоритизации.

Таблица: тип тега, нужна ли архивация, параметры по умолчанию

Тип тега Нужна ли архивация Период / deadband / срок (ориентир)
Температура / давление на критичном контуре да 1-5 с, deadband 0,1-0,5 ед., raw 60-90 дней
Уровень, медленный аппарат да 10-30 с, deadband 1-2%, raw 90 дней
Позиция клапана / ПЧ при остановах да 1-2 с в режиме останов/пуск, 10 с в работе
Режим авто/ручной, бит разрешения да, но редко on-change, deadband 0, срок 1-3 года
Связь Modbus/OPC OK, heartbeat обычно нет только журнал событий при смене качества
Счётчики опроса, CPU load нет для RCA диагностика online или 5-мин агрегат 7 дней
Дубликат с HMI (сервер уже пишет) нет на панели HMI кольцо 48 ч для экрана
Аварийный стек, first-out да on-change + 1 с около события, срок 3-5 лет
Вспомогательные статусы (лампа «местный») часто нет on-change или не архивировать

Числа - старт для ТЗ; заказчик и технолог подписывают классы.

Баланс «разбор аварии» vs диск

Минимальный пакет для разбора - из практики ночных инцидентов: 10-20 тегов с секундой за ±1 ч, остальные с минутой за сутки, журнал событий, SOE, снимок уставок. Это укладывается в гигабайты, не сотни гигабайт.

Полный секундный архив всего завода нужен для спорных редких случаев и моделей - если бюджет и диск позволяют. Средний объект выбирает tiered storage: hot на SSD 30-90 дней, cold на HDD или NAS.

При расследовании не «открыть тренд за год», а выгрузить окно. Инструменты historian (export, REST) должны быть в инструкции смены. Экраны после пуска часто не имеют кнопки выгрузки - тема HMI после пуска и жалоб смены.

Сжатие, агрегаты и «выкинуть без боли»

Сжатие на уровне historian (lossless для raw, lossy для агрегатов) экономит 30-70% на некоторых БД. Агрегаты min/max/avg/end за минуту и час снимают запрос «тренд за год» без секундного raw.

Что выкинуть первым при кризисе диска: новые не критичные каналы, дубликаты, диагностические теги с секундой, продление срока только для агрегатов. Не выкинуть: raw за последние 7-14 дней и всё вокруг недавних аварий.

Пересчёт агрегатов из удалённого raw невозможен - удалять старый raw только после проверки, что агрегаты есть и отчёты читают их.

HMI vs сервер: два архива, одна политика

Панель съедает flash или microSD не менее жёстко, чем сервер - диск. Локальный historian на HMI: жёсткий лимит точек, период 5-10 с, только теги экрана трендов. Всё остальное - с сервера по запросу.

Если на панели включили «архивировать все связанные теги» ради одного красивого тренда - через месяц microSD мёртв или панель тормозит. Политика в одном документе «Архивирование АСУ ТП», не в трёх разных PDF от вендоров.

Настройка на пуске: что зафиксировать в паспорте

Список тегов класса A/B/C/D с периодом, deadband, сроком. Размер диска и алерт 80%. Ротация и backup. Кто утверждает изменение политики (технолог + главный инженер АСУ). Запрет «временно deadband 0 для всех» без тикета.

Тест: смоделировать 30 дней записи на стенде с полным списком тегов - оценить ГБ/день. Один день с секундой на всё умноженный на 365 - часто пугает заказчика раньше, чем production упадёт.

МикроSD и flash на панели: тихий аналог серверного диска

Панель оператора с локальным historian на microSD умирает не менее драматично, чем сервер на 500 ГБ. Период 1 с и deadband 0 на 200 тегов на панели - перегрузка flash и тормоза UI. Оператор видит «тренд не грузится», инженер форматирует карту - и теряет локальный архив без backup.

Политика для HMI: жёсткий лимит тегов в локальном архиве (20-50 на экран), период 5-15 с, срок 24-72 ч. Всё для RCA - на сервере. Если карта вынута для копирования - инструкция не выключать архив «для скорости».

При замене панели копируют проект с deadband 0 «как на старой» - и новая панель через месяц снова в ремонт. В паспорте объекта отдельная строка для локального архива HMI, не только для серверного historian.

Событийный архив vs непрерывный тренд

Не каждый параметр нужен в непрерывном тренде. Аварийный стек, first-out, переход в аварийный режим - on-change плюс короткий burst 1 с после триггера. Это резко снижает объём без потери детализации в момент события.

Непрерывная секунда нужна для PID и быстрых контуров при RCA «почему качнулась температура за 40 секунд до остановки». Для уровня в резервуаре - минутный архив часто достаточен, если нет требования регулятора.

Historian с поддержкой event-based recording стоит настроить на пуске, а не «когда диск кончился». Триггер: любая авария класса A, ручной режим на критичном насосе, открытие bypass. Окно burst - 300-600 с с периодом 1 с на подмножество тегов.

Отчёты, OEE и «архив для бухгалтерии»

Сменный отчёт и OEE часто тянут сырой секундный архив, потому что «так настроили в Excel». Перевод отчётов на минутные и часовые агрегаты historian снимает 80% давления на диск без потери KPI. Availability и простои считаются из событий и агрегатов, не из каждой секунды моторного тока.

Если сменный отчёт пустой - причина может быть в источнике данных, а не в объёме. Но при полном диске historian отчёт тоже пустой: служба не читает БД. Диагностика: free space, лог SQL, тестовый запрос за вчера.

Разделить в ТЗ: «архив для RCA» и «архив для отчётов». Разные сроки, разные агрегаты. Один список тегов на всё - снова путь к 1 с на 800 тегов.

Кризисный план: диск на 95%

Шаг 1: не удалять файлы вручную без списка. Шаг 2: остановить записи на класс C/D и диагностику. Шаг 3: перенести самые старые сырые файлы на внешний носитель, если политика позволяет. Шаг 4: расширить том или добавить диск. Шаг 5: пересмотреть политику с технологом в течение недели, не «вернуть как было».

Записать в журнал: что отключили, с какой даты, кто утвердил. После аварии без данных за критичный период спросят именно это. Временное увеличение deadband на класс B - лучше, чем полная остановка historian.

Вопросы при работе

Диск полон, historian остановился - как спасти текущие данные?
Срочно расширить том или перенести самые старые файлы на другой носитель, перезапустить службу. Не чистить каталоги наугад без списка удалённых периодов в журнале изменений.

Можно ли уменьшить период только задним числом?
Нет для прошлого. Для будущего - смена политики с даты. Прошлое - только удаление или агрегаты.

Deadband убили - тренд «рваный» на экране?
Увеличить интерполяцию отображения или уменьшить deadband только для класса A. Не путать с пропуском из-за связи.

Кто виноват - АСУ или ИТ?
Если политику архива не передали ИТ для sizing - совместно. Если ИТ не мониторили диск - ИТ. Если интегратор включил 1 с на 2000 тегов без расчёта - интегратор.

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

Обсуждение