Через полгода после пуска 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 тегов без расчёта - интегратор.
Обсуждение