SemaPLC: агент для кода ПЛК даёт 52,2 балла по динамике на реальном контроллере против 22, 31 у аналогов

SemaPLC: агент для кода ПЛК даёт 52,2 балла по динамике на реальном контроллере против 22, 31 у аналогов

Промышленные контроллеры, ПЛК (англ. PLC, programmable logic controller), управляют работой заводов и производственных линий, и большие языковые модели уже умеют генерировать отдельные программные блоки (POU, program organization units) для них. До сих пор оставалось плохо проверенным, действительно ли такая сгенерированная логика встраивается в существующий проект ПЛК и корректно работает после этого, тесты на это были ограниченными.

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

На тесте из 117 задач по генерации независимых программных блоков, соответствующих существующим бенчмаркам, SemaPLC показал наивысшую строго проверенную долю успеха на всех семи протестированных моделях, в среднем 72,6%. На втором тесте, треке из 65 задач, где сгенерированная логика должна компилироваться и работать внутри реального проекта, SemaPLC также добился наивысших средних показателей по интегрированной компиляции, статическому поведению и динамическому поведению.

Из трёх уровней проверки именно динамическое поведение оказалось наиболее показательным: авторы измеряли его, разворачивая сгенерированную и эталонную логику на живом ПЛК-рантайме и сравнивая исполненные трассы. По статическим оценкам все методы отличались друг от друга не больше чем на 10 баллов, тогда как по динамическим оценкам разрыв оказался резким: у базовых методов, от 22,4 до 31,4 балла, у SemaPLC, 52,2 балла. Авторы делают вывод, что именно исполнение, а не статическая оценка, служит достоверной проверкой того, работает ли сгенерированная управляющая логика на самом деле. Код SemaPLC выложен в открытый доступ на GitHub (midea-ai/SemaPLC).

Ключевые факты

  • SemaPLC объявляет задачу выполненной только после независимых проверок, по спецификации, компиляции и поведению на живом ПЛК-рантайме, а не когда модель сама решит, что результат готов.
  • На тесте из 117 задач по независимым программным блокам SemaPLC достиг наивысшей строго проверенной доли успеха на всех семи протестированных моделях, в среднем 72,6%.
  • На треке из 65 задач с интеграцией в реальный проект по динамическому поведению (сравнение реального исполнения с эталонным на живом контроллере) SemaPLC набрал 52,2 балла против 22,4, 31,4 у базовых методов, тогда как по статическим оценкам методы отличались не больше чем на 10 баллов.
  • Авторы делают вывод: не статическая оценка кода, а его фактическое исполнение на реальном оборудовании достоверно показывает, работает ли сгенерированная управляющая логика.
  • Код SemaPLC выложен в открытый доступ на GitHub.

Почему это важно

Языковые модели уже пишут отдельные программные блоки для ПЛК, но до сих пор такой код почти никто по-настоящему не проверял на том, ради чего он и нужен, на корректной работе внутри реального проекта и на живом оборудовании. SemaPLC меняет правило приёмки: задача засчитывается не тогда, когда модель сама решила, что готова, а только когда это подтвердили внешние логированные проверки по спецификации, компиляции и поведению на рантайме. Результат по динамическим оценкам говорит о том, что статическая проверка кода сильно переоценивает его реальную работоспособность: при разрыве не больше 10 баллов по статике разброс по факту исполнения, от 22,4, 31,4 у базовых методов до 52,2 у SemaPLC.

Кому это важно

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

Как это применить

SemaPLC собран из обычных инструментов (компилятор, спецификационные проверки, живой ПЛК-рантайм для исполнения), а не требует новой специализированной модели, и код выложен в открытый доступ на GitHub (midea-ai/SemaPLC), им можно воспользоваться как готовым харнессом для проверки сгенерированного кода ПЛК на своих проектах вместо того, чтобы доверять самооценке модели.

Можно ли доверять

Материал, препринт на HuggingFace Papers, и все цифры получены авторами на собственных бенчмарках (117 задач по независимым блокам и 65 задач с интеграцией в проект), без сведений о независимом стороннем воспроизведении. В тексте не названы ни семь протестированных моделей, ни базовые методы, с которыми сравнивается SemaPLC, это не позволяет проверить сопоставление извне и оценить, насколько сильны были сами базовые методы.

Риски и подводные камни

52,2 балла по динамическому поведению, это лучший результат среди сравнённых подходов, но до полного совпадения с эталонным поведением на реальном контроллере ещё далеко; для управляющего кода, от которого зависит работа промышленного оборудования, это ещё далеко не показатель, снимающий необходимость проверки человеком. Дополнительный риск, непрозрачность сравнения: раз базовые методы и модели не названы, сложно судить, насколько репрезентативен разрыв в цифрах для более широкого класса подходов.

«Исполнение, а не статическая оценка, достоверная проверка того, действительно ли работает сгенерированная управляющая логика.»

— авторы SemaPLC