OpennessLLM: как ИИ научился самостоятельно навигировать по промышленному коду Siemens TIA Portal
Разработчик OpennessLLM описывает опыт создания инструмента, позволяющего языковой модели самостоятельно анализировать структуру сложных проектов автоматизации, искать зависимости между блоками кода и подготавливать правки, освобождая инженера от рутинного поиска контекста.
# OpennessLLM: как ИИ научился самостоятельно навигировать по промышленному коду Siemens TIA Portal
Работа с программным обеспечением Siemens TIA Portal часто требует глубокого понимания связей между тысячами строк кода. Традиционное использование языковых моделей (LLM) ограничено возможностью анализировать только те фрагменты, которые вручную копирует пользователь. Новое решение под названием OpennessLLM меняет этот подход, давая модели доступ к полному проекту через официальное API TIA Portal Openness. Это позволяет нейросети самостоятельно искать зависимости, проверять гипотезы и предлагать изменения в локальной копии проекта без необходимости постоянного взаимодействия человека.
От курьера до аналитика: проблема контекста
Основной痛оченькой (boleting) при работе с ИИ в промышленной автоматизации является фрагментарность информации. В реальной системе сигнал может формироваться в одном блоке, проверяться в другом, сохраняться в базе данных и участвовать в логике совершенно разных участков программы. Раньше инженер выступал в роли «курьера»: ему приходилось вручную искать связанные блоки, копировать их в чат и объяснять структуру проекта для получения ответа. Процесс превращался в бесконечный цикл уточнений, когда модель не видела всей картины и предлагала решения «из вакуума», не учитывающие специфические правила конкретного проекта (например, оформление аварий или используемые номера блоков).
Создатель OpennessLLM столкнулся с этой проблемой, пытаясь разобраться в поведении сложной системы управления адресными накопителями и конвейерами. Проект был написан в спешке, комментарии отсутствовали, а после сдачи в эксплуатацию детально разобрать логику стало практически невозможно. В таких условиях традиционный чат-бот束手无策 (was unable to help) — он не мог самостоятельно найти упоминания нужного сигнала или понять, почему механизм не запускается из-за скрытой блокировки в другом месте программы.
Техническая архитектура и навигация по коду
OpennessLLM — это программа для Windows, которая выступает в роли посредника между инженером и языковой моделью. Она не содержит собственной нейросети и использует внешний LLM-агент, предоставляя ему доступ к рабочим файлам проекта через TIA Portal Openness API. Это ключевое отличие от простых методов экспорта: проект TIA Portal выгружается в XML, который является огромным файлом с тысячью служебных атрибутов и GUID. Попытка загрузить такой файл целиком в контекстное окно модели невозможна из-за лимитов памяти, а редактирование XML вручную опасно из-за внутренних связей идентификаторов.
Вместо этого OpennessLLM строит локальное файловое представление: исходники блоков, их типы, принадлежность к группам и связи между базами данных и функциями. Модель работает по принципу навигации: она получает общую картину, а затем самостоятельно открывает только те файлы, которые необходимы для решения конкретной задачи. Инструмент использует команды терминала для запуска проверки, чтения отчетов компилятора и правки исходников, что позволяет агенту проверять свои предположения в реальном времени.
Установка OpennessLLM: Процесс настройки упрощен — агент сам находит репозиторий, собирает код и инициализирует подключение. Однако критически важным условием является наличие пользователя Windows в локальной группе Siemens TIA Openness. Без этого права доступа агент не сможет взаимодействовать с проектом, и модель сама объяснит ошибку пользователю.
Реальные кейсы: от поиска ошибок до создания модулей
На практике OpennessLLM продемонстрировал высокую эффективность в анализе существующего кода. Задача могла звучать так: «Разберись, где формируется этот сигнал и что может мешать его установке». Агент самостоятельно находил упоминания, просматривал структуру данных и проверял гипотезы, сопоставляя логику разных частей программы. Это особенно полезно при поиске логических ошибок, которые не видны глазу: одна и та же строка кода может работать по-разному в зависимости от состояния переменных в других блоках, а модели удавалось найти расхождения в условиях запуска у похожих механизмов.
Также инструмент успешно использовался для создания нового кода, интегрированного в существующую архитектуру. При разработке блоков обмена данными между Soft-PLC Siemens WinAC RTX и модулями ввода-вывода ОВЕН по Modbus TCP, модель не просто генерировала стандартный шаблон из документации. Она анализировала стилистику соседних блоков, структуру типов и последовательность вызовов в проекте, создавая код, который органично вписывался в текущую систему. После правки локальные изменения передавались в TIA Portal для компиляции, а ошибки, выводящиеся системой, снова анализировались агентом для итеративного улучшения решения.
Ограничения и роль инженера
Несмотря на возможности автоматизации, полностью автономного инженера, которому можно передать проект и уйти, автор создавать не ставит. Инструмент предназначен для помощи, а не полной замены человека. OpennessLLM вносит изменения только в локальную копию проекта; записывать данные непосредственно в работающий ПЛК или применять изменения в реальном проекте без явного разрешения инженера нельзя. Это критически важно для безопасности автоматизации.
Кроме того, модель не обладает физическим пониманием технологического процесса. Она может идеально проследить программную цепочку, но ошибиться в интерпретации цели сигнала, если названия переменных неинформативны. Ответы модели всегда требуют проверки и тестирования. Инструмент также работает только с текстовым языком SCL (Structured Control Language), так как графические языки (LAD, FBD) не конвертируются в читаемый текст для агента.
Опыт разработки OpennessLLM показывает, что ценность ИИ в промышленной автоматизации заключается не столько в генерации готового кода с нуля, сколько в способности быстро и точно анализировать сложные существующие системы, находить скрытые зависимости и экономить время инженеров на рутинной навигации по километрам кода.