Аудит не восстановит производство, если конфигурация ПЛК ушла от эталона

Аудит не восстановит производство, если конфигурация ПЛК ушла от эталона

изображение: grok

На промышленном предприятии у одной и той же программы ПЛК иногда есть две версии. Одна лежит в хранилище и считается эталонной. Вторая фактически работает на контроллере и постепенно меняется после наладки, ремонта, модернизации или срочных доработок оборудования. Пока линия выполняет план, расхождение может оставаться незаметным. Проблема начинается тогда, когда нужно восстановить систему или понять причину отклонения.

Мы в UDV Group считаем дрейф конфигурации одним из недооцененных рисков в АСУ ТП. Речь не обязательно о злонамеренной правке. Инженер мог изменить параметр в ночную смену, подрядчик — доработать логику по гарантии, наладчик — скорректировать уставку под реальное оборудование, а программист — исправить нештатный сценарий. Если изменение не зафиксировано и не сверено с проектом, через несколько месяцев уже трудно понять, что именно работает на контроллере.

Для производства это не бумажная проблема. На одном объекте повреждение оборудования обнаружили раньше расчетного срока. Проверка показала, что рабочий параметр меняли, но новое значение не выходило за допустимые пределы, поэтому штатная сигнализация не сработала. Чтобы связать изменение с ускоренным износом, нужно было понять, кто внес правку, когда она появилась и как долго установка работала в новом режиме. Сделать это не удалось: старые журналы перезаписались новыми, а истории изменений проекта не было. Формально аварийного события не произошло, но установку пришлось остановить, а плановая поставка сорвалась.

Так проявляется главная особенность дрейфа конфигурации: риск копится тихо. Контроллер продолжает работать, оборудование выполняет задачу, оператор не видит тревоги. Но эталонная версия в хранилище уже не совпадает с тем, что фактически загружено в ПЛК. Когда происходит сбой, замена модуля, аварийная остановка или расследование отклонения, предприятие обнаруживает, что у него нет достоверной точки восстановления.

Причина в том, что программный слой производства вырос быстрее контроля версий. Все больше логики работы оборудования определяется кодом: станки с ЧПУ, роботизированные ячейки, дискретные линии, контроллеры, локальные сценарии обработки отклонений. Систему нельзя заранее описать на все случаи жизни. Реальные режимы, неисправности датчиков, повреждения кабелей, отказы модулей ввода-вывода и особенности конкретного оборудования часто выявляются уже в эксплуатации. Каждая такая ситуация добавляет правку.

Импортозамещение усилило этот разрыв. Раньше предприятие могло получить линию под ключ от одного поставщика, с единой платформой и понятным набором инструментов. Теперь на одной площадке часто работают контроллеры нескольких вендоров, а проекты меняют подрядчики и штатные инженеры. У каждой платформы свои особенности, и то, что привычно для одного контроллера, может не работать на другом. Часть различий проявляется только на реальном объекте, потому что стенд не воспроизводит всех режимов производства.

Особенно много изменений возникает во время пусконаладки. Главная задача команды — запустить линию. Логику корректируют под фактическую работу оборудования, параметры подгоняют под реальный процесс, нештатные ситуации закрывают по мере появления. Документирование в этот момент часто отстает. В результате уже на старте эксплуатации файл в хранилище может расходиться с программой на контроллере.

После запуска главным риском становится рутина. Инженер решил производственную задачу, убедился, что оборудование работает, но не описал изменение и не загрузил обновленный проект в хранилище. Он не пытался нарушить правила. Просто процесс фиксации правок либо не выстроен, либо существует только для аудита.

Одна незаписанная правка может не привести к инциденту. Но риск растет, когда изменения переходят от одного участника к другому без контекста. Дежурный меняет программу ночью и уходит. Утром другой инженер уже не знает, что было исправлено. Подрядчик дорабатывает линию по гарантии, но не передает исходники. Специалист увольняется, и вместе с ним уходит память о том, как проект менялся последние годы.

Слабый контроль доступа делает ситуацию еще хуже. На части объектов одна учетная запись используется всей сменой. Где-то отдельного пароля нет. Где-то правила доступа мешают быстро действовать в аварийной ситуации, поэтому персонал начинает их обходить. В такой среде несанкционированное изменение почти не отличается от штатной работы инженера. Контроллер продолжает работать, но установить автора, время и причину правки уже невозможно.

Формальное хранилище само по себе не решает проблему. На многих предприятиях роль репозитория выполняет сетевая папка с каталогами по установкам и контроллерам. Аудитору ее можно показать. Но такая структура не отвечает на главный вопрос: сколько изменений было внесено после сохранения файлов и можно ли по этой версии реально восстановить систему.

Даже регулярные резервные копии не всегда дают полную картину. Исходный проект, выгрузка с контроллера и фактические настройки оборудования могут содержать разные данные. Исходники нужны инженеру, чтобы понимать логику программы. Выгрузка с ПЛК иногда представляет собой скомпилированный образ или низкоуровневое представление кода. На старых контроллерах вместо имен переменных могут остаться только адреса памяти, а таблица символов хранится в среде разработки. Восстановить логику по такой копии можно, но на остановленной линии времени на это обычно нет.

Отдельно существуют уставки, появившиеся уже на площадке. Программу могли разработать для линейки оборудования, а конкретный экземпляр довести под реальные условия. Если головка не доходит до заданной точки на несколько миллиметров, значение корректируют на месте. Такая настройка может остаться только в контроллере и не попасть в исходный проект.

Поэтому для восстановления нужны как минимум две вещи: исходный проект, по которому инженер понимает логику, и слепок фактического состояния ПЛК со всеми настройками конкретного оборудования. Одно без другого не дает полной уверенности. Если сохраненная версия не совпадает с фактической, восстановление затягивается независимо от причины сбоя.

В проектах UDV Group мы видим, что потери не ограничиваются одним простоем. У линии есть нормативный цикл выпуска и резерв времени на обслуживание. Если этот резерв регулярно уходит на восстановление утраченного контекста, производство начинает выпадать из плана. Такие отклонения могут повторяться, но не всегда попадают в отчетность как самостоятельные инциденты.

Начинать нужно с единого доверенного источника. В нем должны храниться схемы, исходные проекты, резервные копии, выгрузки с контроллеров и сведения обо всех правках. Создание такого источника начинается не с красивой структуры папок, а с инвентаризации: нужно найти материалы, убрать дубли, сопоставить сохраненные файлы с фактическим состоянием оборудования и понять, где доверять данным уже нельзя.

Проверить качество такого хранилища можно простым способом: передать проект другому инженеру и попросить объяснить логику программы и порядок восстановления. В программировании это похоже на ревью кода. В АСУ ТП такая проверка показывает, сможет ли команда восстановить систему без автора проекта, подрядчика или специалиста, который уже уволился.

После инвентаризации нужна регулярная сверка сохраненной копии с тем, что фактически загружено в ПЛК. Контрольная сумма покажет, что файл изменился, но не объяснит, в чем именно состоит правка. Более полезна проверка, которая сопоставляет версии и показывает конкретные расхождения. Частота зависит от процесса: для стабильной линии может хватить ежемесячной проверки, во время пусконаладки, модернизации или ремонта сверку нужно делать чаще.

В разнородном парке контроллеров ручная сверка быстро превращается в постоянный обход инженера с ноутбуком. Руководитель при этом все равно не получает общей картины. Поэтому система контроля версий проектов ПЛК должна централизованно сопоставлять сохраненные проекты с программами на контроллерах и вести историю по всему парку.

Но просто найти расхождение недостаточно. Для каждой правки нужно сохранять контекст: что изменили, зачем, по чьей заявке и на каком основании. Короткого комментария может хватить команде, которая сама разрабатывает программу. Если линию передает подрядчик, описание должно быть понятным инженеру предприятия без участия автора.

Это требование нужно закреплять и в договорах. Изменения подрядчика должны попадать в тот же процесс: кто выгрузил программу, что исправил, когда загрузил обратно, какие параметры изменил и где сохранена актуальная версия. Без этого поставщик уходит с объекта, а предприятие остается с работающей линией, которую трудно восстановить после сбоя.

Для нас в UDV Group главный сдвиг здесь управленческий, а не технический. Контроль версий ПЛК должен работать постоянно, а не только перед проверкой. Если предприятие три недели приводит данные в порядок перед аудитом, оно управляет не состоянием системы, а впечатлением о нем.

Когда линия остановится, ее восстановит не успешно пройденный аудит, а достоверная конфигурация. Поэтому промышленным компаниям важно знать не только, где лежит проект, но и совпадает ли он с тем, что реально работает на контроллере. Без такой уверенности любая авария, замена оборудования или расследование отклонения превращаются в поиск утраченного контекста.

UDV Group
Автор: UDV Group
UDV Group — российский разработчик в области кибербезопасности промышленных и корпоративных сетей.
Комментарии: