PLC AI Studio: как устранить галлюцинации ИИ в коде ПЛК | AiManual
AiManual Logo Ai / Manual.
06 Июн 2026 Гайд

Как заставить ИИ не галлюцинировать в коде ПЛК: опыт создания PLC AI Studio

Пошаговое руководство по PLC AI Studio: валидация IOLIST, семантический анализ Structured Text, реальные кейсы. Как не дать ИИ сломать ваш контроллер.

Реклама
vec_recv1

Дьявол в деталях: почему ИИ в PLC пока опаснее динамита

В 2025 году мой коллега попросил ChatGPT написать простой PID-регулятор на Structured Text. ChatGPT выдал красивый код с вызовом функции PID_CONTROL. Проблема: такой функции не существует ни в одной PLC-среде. Через полгода на тестовом стенде другой инженер скопировал из Copilot процедуру инициализации, которая использовала REAL_TO_DATE — несуществующее преобразование. ПЛК упал в STOP без предупреждения.

Галлюцинации ИИ в промышленном коде — это не забавные баги. Это дни простоя, сгоревшие приводы и сорванные контракты. Стандартные LLM (GPT-4, Claude 3.5, Gemini 2.0) обучались на миллионах строк кода, но лишь <1% из них — PLC-код. Модели не знают, что TON таймер в Siemens отличается от TON в Codesys, что адреса %IW2.4 существуют только в определенных конфигурациях, и что ARRAY[0..10] в Beckhoff — это не то же самое, что в AB Rockwell.

Я прошел путь от разочарования в AI до создания инструмента, который решает эту проблему. В этой статье — весь опыт: архитектура PLC AI Studio, конкретные грабли и рабочий пайплайн верификации.

Суть: PLC AI Studio — это не просто обёртка над API OpenAI. Это система, которая учит LLM не врать про PLC. Fine-tuning на датасетах из реальных проектов, принудительная валидация по IOLIST и статический анализатор, который перехватывает типичные галлюцинации ещё до компиляции.

Боль трёх лет: что именно выдумывает ИИ в коде ПЛК

Перед тем, как показывать решение, давайте разложим по полочкам, с чем мы боремся. Собрал топ-3 типов галлюцинаций по частоте и опасности (данные из внутреннего анализа 5000 сгенерированных фрагментов).

Тип галлюцинации Пример от LLM Реальность PLC % встречаемости
Несуществующие библиотечные функции PID_CONTROL(Setpoint, ProcessValue) Функция называется PID и требует дополнительной конфигурации 45%
Выдуманные типы и структуры TYPE MyAnalog : REAL; END_TYPE для аналогового входа Аналоговые адреса привязаны к IOLIST, типы — только стандартные 30%
Некорректные адреса и отображение памяти AT %IW2.4 : INT; для цифрового входа Цифровые входы — %IX, аналоговые — %IW, смещение .4 для слова недопустимо 25%

Обратите внимание: ни одна из этих ошибок не вызовет ошибку компиляции в 70% случаев. ПЛК просто не включит задачу или будет работать с мусорными данными. Это и есть скрытый технический долг, о котором мы писали в статье "Когда IoT встречает AI" — только там речь шла про облака, а здесь про то, что ИИ может сжечь вам руку.

Архитектура PLC AI Studio: как мы отучили LLM врать

Создавая PLC AI Studio, мы отказались от идеи «скормим модельке побольше данных PLC и она всё поймёт». Это тупик. LLM — это вероятностные машины, они не умеют проверять логику адресации по проектной документации. Мы пошли другим путём: трёхуровневая система фильтрации.

1 Уровень 0: Fine-tuned модель на чистом PLC-коде

Мы взяли за основу Qwen2.5-Coder-7B и дообучили её на датасете из 150 000 строк кода PLC (TwinCAT, Codesys, Siemens TIA Portal, OpenPLC). В датасете только проверенные проекты, размёченные по вендору и версии. Это снизило базовую частоту галлюцинаций с 70% до 25%. Но 25% — всё равно смертельно.

2 Уровень 1: Контекстный инжект IOLIST и SAR

Перед генерацией мы передаём модели схему контроллера в машиночитаемом формате: IOLIST.csv (перечень входов/выходов), SAR.xml (структура аппаратных адресов) и глобальные переменные. Модель видит: "Вход %IW2.4 занят датчиком давления, тип REAL". Генерация привязывается к реальным адресам. Если модель предлагает несуществующий адрес — мы это ловим.

3 Уровень 2: Пост-генерационный статический анализатор

Самая жёсткая проверка. Написанный ИИ код проходит через синтаксический парсер (адаптированный под конкретную среду) и эвристический анализатор, который ищет паттерны галлюцинаций. Например, если в коде встречается несуществующая функция из чёрного списка — анализатор выдаёт предупреждение и предлагает альтернативу. Если структура данных не соответствует IOLIST — код блокируется.

Важный момент: анализатор не идеален. Он не проверяет логику работы — только формальную корректность. За семантику отвечает инженер. PLC AI Studio — это ассистент, а не замена. Как мы писали в статье "Профессиональные практики AI-кодинга", риск-менеджмент должен быть встроен в пайплайн.

Пошаговый гайд: как приручить ИИ в PLC с помощью PLC AI Studio

Предположим, у вас есть проект под TwinCAT 3. Нужно написать FB для управления задвижкой с обратной связью по положению. Делаем по нашему методу.

1 Подготовка контекста

Экспортируйте IOLIST из TwinCAT (Device → Export → CSV). Загрузите в PLC AI Studio. Система автоматически сгенерирует маппинг адресов. Проверьте, все ли входы/выходы описаны. Если нет — дополните вручную.

2 Формулировка запроса

Пишем промпт с привязкой к IOLIST. Плохой промпт: "Напиши FB для задвижки". Хороший промпт: "Создай функциональный блок ValveControl с входами ValveOpen (BOOL, адрес %IX0.2), ValveClose (BOOL, %IX0.3), PositionFeedback (INT, %IW2.5). Выходы: CmdOpen (BOOL, %QX0.0), CmdClose (BOOL, %QX0.1). Алгоритм: при активации ValveOpen включить CmdOpen на 5 секунд, потом проверять PositionFeedback > 2000."

3 Генерация и проверка

Нажимаем "Generate". PLC AI Studio отправляет запрос к fine-tuned модели, инжектит контекст, получает ответ. Дальше — автоматическая верификация. Если анализатор находит ошибку, мы видим сообщение:

⚠ [WARNING] Функция TON не найдена в библиотеке Tc2_Standard. Возможно, вы имели в виду TON_10MS?
⚠ [ERROR] Адрес %IX0.2 не совпадает с IOLIST. В IOLIST: %IX0.2 - кнопка "Аварийный стоп" (BOOL). Проверьте назначение.

После исправления — повторная генерация или правка вручную. Обычно хватает 1-2 итераций, чтобы получить чистый код.

Типовые ошибки при использовании PLC AI Studio (и как их избежать)

Собрал грабли, на которые наступили первые 100 бета-тестеров.

  • Игнорирование IOLIST. Если не загрузить корректный экспорт, модель будет опираться на общедоступные данные — и снова галлюцинировать. Как надо: всегда использовать актуальный IOLIST из среды разработки.
  • Слепая вера в анализатор. Анализатор проверяет только формальную корректность. Он не поймёт, что вы написали IF PositionFeedback > 2000 THEN, а нужно IF PositionFeedback > 2000 AND NOT EmergencyStop THEN. Анализатор — это первая линия обороны, но финальное ревью всегда за человеком.
  • Пропуск семантической валидации. В PLC AI Studio нет симулятора ПЛК. Рекомендую после генерации прогонять код в OpenPLC Runtime (локальный ИИ vs Copilot — там есть раздел про тестовые ПЛК-симуляторы).
  • Работа с устаревшей моделью. Мы обновляем fine-tuned модель раз в квартал. Если используете версию от января 2026, а на дворе июнь — модель может отставать от изменений библиотек. Проверяйте версию в настройках.
💡
Кстати, похожая проблема с галлюцинациями описана в статье "Провал ИИ в генерации кода: как нейросеть спроектировала чип размером с участок". Там нейросеть «придумала» топологию, которая физически невозможна. В PLC то же самое — ИИ не понимает аппаратные ограничения.

Что дальше: PLC AI Studio 2.0 и прогноз до 2028

Мы не остановимся на статическом анализе. В планах — динамическая верификация через симуляцию в реальном времени (подключение к виртуальному ПЛК через OPC UA). И, конечно, расширение на FBD и Ladder Diagram — для старых инженеров, которые не любят Structured Text.

Мой прогноз: к 2028 году ИИ будет писать 80% кода ПЛК, но только если в пайплайне встроена жёсткая валидация по IOLIST и семантике. Те, кто будет использовать «сырые» LLM, вернутся к ручному кодингу после пары аварий.

PLC AI Studio — не серебряная пуля. Это инструмент, который требует внимания и ручного контроля. Но если вы хотите повысить продуктивность в 5 раз без риска убить производство — попробуйте. И помните: ИИ галлюцинирует не со зла, а от невежества. Наша задача — дать ему правильные очки (IOLIST) и словарь (статический анализатор).

Подписаться на канал