Парсим SCADA-конфиг за 20 строк Python — и почему на заводе этого недостаточно
Когда приходишь на промышленный объект с задачей «разобраться с данными оборудования», первое что делаешь — смотришь что вообще есть. Чаще всего есть SCADA. И в ней — конфиг с тысячами тегов.
Технически вытащить их несложно. Вот как это выглядит на Python за двадцать строк:
Запускаешь — получаешь CSV с тысячей строк. Красиво. Быстро. И совершенно бесполезно само по себе.
Что не так с тем, что вышло
Открываешь CSV и видишь примерно вот это:
Проблемы сразу три:
Первая — описания либо пустые, либо обрывочные. «Давл» — это давление где? На входе? На выходе? Какого агрегата? Инженер, который заполнял конфиг десять лет назад, всё понимал. Он уже не работает здесь.
Вторая — нет привязки к физическому оборудованию. TI_101 — это термометр. Но на каком насосе? В каком цехе? На какой позиции по P&ID? Этого в SCADA нет. SCADA знает адрес в памяти контроллера — и всё.
Третья — нет истории. Тег существует. А когда он появился? Что было до него? Этот насос — тот же, что в паспорте 2009 года, или его заменили в 2018-м и забыли переименовать тег?
Почему это важно
Если вы внедряете EAM или CMMS — систему управления техническим обслуживанием — вам нужен справочник оборудования. Не список тегов. Справочник: что это за агрегат, где стоит, какой заводской номер, когда последний ремонт, какие запчасти подходят.
SCADA даёт вам сырой список сигналов. Это примерно как получить телефонный справочник с номерами без имён — данные есть, смысла нет.
Связать теги с реальными объектами — отдельная работа. Она требует:
- сверки с P&ID и принципиальными схемами
- работы с паспортами оборудования (часто бумажными)
- интервью с механиками и технологами
- сверки с данными из ERP и складского учёта
Двадцать строк Python решают техническую задачу извлечения. Инженерную задачу понимания — нет.
Что делать с этим на практике
Мы в таких проектах идём по следующей схеме:
- Парсим все доступные источники — SCADA-конфиг, выгрузки из ERP, Excel-таблицы механиков, сканы паспортов
- Строим черновой реестр оборудования с пометкой источника каждого поля
- Разрешаем конфликты — когда два источника говорят разное об одном агрегате
- Верифицируем с людьми на объекте — только они знают, что реально стоит в цехе
- Отдаём готовый справочник в формате, который принимает целевая система
Шаги 1 и 2 автоматизируются хорошо. Шаги 3–5 — нет. И именно они занимают большую часть времени.