Управление вакуумной установкой с ноутбука: open-source система с эмулятором и MCP

Прокомментировать Просмотры: 0

После публикаций о напылении рентгеновского зеркала с помощью LLM и локальной Qwen 3.8 в роли оператора возник закономерный вопрос: как испытать агента в управлении вакуумной установкой, не располагая ни оборудованием, ни ПЛК? Для этого мы опубликовали под лицензией Apache-2.0 пакет APS Control Community, в который входят наша рабочая программа управления напылением, физический эмулятор оборудования и MCP-сервер.

Пакет запускается на обычном компьютере с Windows без прав администратора. Доступны три конфигурации: простая камера с двумя магнетронами (Sputter), установка со шлюзом загрузки из предыдущей статьи (ADS) и четырёхкамерный кластер с транспортным роботом (Cluster). Клапанами и рецептами можно управлять вручную через операторский интерфейс или подключить по MCP локальную модель либо Claude Code.


Эмулятор в виде самостоятельного сетевого процесса

Недавно на SE7ENе вышла статья «Эмуляция АСУ ТП», посвящённая отладке самописной программы для бетонного завода без SCADA. В описанном решении Delphi-приложение при сборке переключается директивой {$IF Emulate=True} между обращением к реальному порту ComPort.Write и вызовом Emulator.Send. Вес задаётся ползунком в окне отладки, а задержка шины RS-485 воспроизводится паузой порядка 20 мс на модуль, или 400–1000 мс на цикл опроса. Для отдельного приложения такой подход прост и удобен.

Мы выбрали другую архитектуру и вынесли эмуляцию в независимый сетевой процесс. В управляющей программе нет условной компиляции #if EMULATE: штатные драйверы контроллеров Siemens S7 на порту 102 и периферийных приборов на портах 5025–5033 постоянно используют обычные TCP-сокеты. В лаборатории они соединяются с реальным оборудованием, а на ноутбуке — с локально запущенным эмулятором по адресам 127.0.0.1–127.0.0.5. Для системы управления не имеет значения, отвечает ей стойка с ПЛК или модель, написанная на C#.

Опрос устройств и физическая модель камеры

Отдельный поток для каждой шины

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

В нашей системе каждой шине выделен собственный постоянный поток (LongRunning), который работает без await и Task.Run. Задержка одного контроллера ограничивается его циклом и не затрагивает остальные. Состояния клапанов считываются с ПЛК одним пакетным запросом за такт. Команды оператора и шаги рецепта проходят через планировщик приоритетов и выполняются раньше фонового опроса датчиков. За обновлением цикла наблюдает сторожевой таймер: при потере связи система выдаст аварию, вместо того чтобы продолжать показывать устаревшие значения.

Расчёт вакуума и теплообмена в эмуляторе

Состояние каждой камеры эмулятор определяет по общему балансу газа и тепла. Эффективная скорость откачки квадратично зависит от степени открытия дроссельной заслонки: S_eff = PumpSpeed * (Throttle / 100)^2. Постоянная времени камеры рассчитывается как tau = Volume / S_eff. Если прикрыть заслонку до 25%, откачка замедлится в 16 раз.

Регуляторы расхода газа (MFC) достигают заданного потока с постоянной времени 0,5 с. Нагрев и остывание подложкодержателя рассчитываются по закону излучения Стефана — Больцмана (T4), отдельно от охлаждения стенок камеры. Дожидаться откачки и остывания в реальном времени необязательно: в окне эмулятора модельные часы можно ускорить в десять и более раз относительно штатного режима 1x. Там же можно на лету задать перегрев или отказ любого узла и проверить реакцию защит.

На рисунках 1–3 показан профиль ADS — камера со шлюзом загрузки, четырьмя магнетронами и ионным источником — в процессе напыления многослойного зеркала Ru/C.

Рисунок 1. Вкладка System в профиле ADS во время напыления структуры Ru/C: через клапан V2 подаётся 40 sccm аргона, давление в камере 3,00·10−3 Торр, работают магнетроны углерода и рутения (400 и 300 Вт). Ручное управление на панели заблокировано — включён удалённый режим REMOTE.
Рисунок 1. Вкладка System профиля ADS при напылении структуры Ru/C. Через клапан V2 поступает 40 sccm аргона, давление в камере составляет 3,00·10−3 Торр, работают магнетроны углерода и рутения мощностью 400 и 300 Вт. Ручное управление с панели недоступно: включён удалённый режим REMOTE.
Рисунок 2. Вкладка Process во время выполнения того же рецепта: карусель подложек на шесть позиций (FL 1–FL 6), графики давления (3,00 мТорр), открытия дросселя (27,2%) и токов магнетронов (707,11 и 612,37 мА), а также шкала напыления слоёв.
Рисунок 2. Вкладка Process при выполнении того же рецепта: шестипозиционная карусель подложек (FL 1–FL 6), графики давления (3,00 мТорр), открытия дросселя (27,2%) и токов магнетронов (707,11 и 612,37 мА), а также шкала напыления слоёв.
Рисунок 3. Окно эмулятора в профиле ADS: турбонасос TP вышел на рабочие обороты, а прикрытая до 27% дроссельная заслонка удерживает в камере давление 3,01 мТорр.
Рисунок 3. Окно эмулятора с профилем ADS: турбонасос TP достиг рабочих оборотов, а дроссельная заслонка, открытая на 27%, поддерживает давление в камере на уровне 3,01 мТорр.

Многокамерный кластер с пятью ПЛК

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

Рисунок 4. Вкладка Process в профиле Cluster на завершающем шаге стартового рецепта SYSTEM_START (шаг 90 из 90): транспортный модуль с роботом в центре, шлюз LL, четыре камеры с кривыми откачки до 10−7 Торр и графики потоков газа и температур.
Рисунок 4. Вкладка Process профиля Cluster на последнем шаге стартового рецепта SYSTEM_START (90 из 90): в центре расположен транспортный модуль с роботом, рядом — шлюз LL и четыре камеры. Также показаны кривые откачки до 10−7 Торр и графики расхода газа и температуры.

Рецепты и предотвращение ошибок

Технологический процесс описывается простым текстовым сценарием внутри XML-файла с расширением .rcpx. Встроенный редактор поддерживает подсветку синтаксиса, а в комплект поставки входят стандартные программы откачки и запуска установки, например SYSTEM_PUMP_OUT и SYSTEM_START. Ниже приведён проверенный в эмуляторе рецепт напыления пятипериодной структуры Ru/C для профиля ADS:

pump SP1 on
 valve FL open
 valve GVM open
 pump TP on
 MFC Ar1 40
 valve V2 open
 pwait 3mT 90
 set PSU_C Power 300
 power PSU_C on
 set PSU_B Power 400
 power PSU_B on
 loop 5
   deposit Ru 25 Home
   deposit C 25 Home
 endloop
 power PSU_C off
 power PSU_B off
 pwait 0 1
 MFC Ar1 0
 valve V2 close

Сценарий работает следующим образом: сначала включаются форвакуумный насос SP1 и турбонасос TP, открываются клапаны откачки, через V2 подаётся 40 sccm аргона и система ожидает стабилизации давления на уровне 3 мТорр. Затем на магнетроны подаётся 300 и 400 Вт. В пяти циклах рутений и углерод напыляются поочерёдно по 25 секунд — всего по 125 секунд на каждый материал, или 250 секунд суммарно.

Для чего перед прекращением подачи аргона добавлена команда pwait 0 1? Если пропустить её и сразу выполнить MFC Ar1 0, синтаксис останется корректным, но встроенный анализатор validate_recipe предупредит о проблеме ещё до запуска. При обнулении последнего расходомера камера переходит в дежурный режим Idle, тогда как дроссель продолжает поддерживать рабочее давление 3 мТорр. В режиме Idle допустимо не более 0,0001 Торр, поэтому через 60 секунд установка выдаст тревогу по вакууму. Команда pwait 0 1 предварительно сбрасывает уставку и полностью открывает заслонку.

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

Подключение LLM через MCP и открытый бенчмарк

На том же профиле ADS мы испытывали локальную Qwen 3.8 на видеокарте с 16 ГБ памяти. Вместе с программой управления мы опубликовали универсальный навык оператора aps-operator-skill под лицензией CC-BY-4.0 и расширенный бенчмарк ads-benchmark (ADS-Bench v2.0). Он включает 46 задач: 40 коротких упражнений и 6 сквозных сценариев для всех трёх профилей — Sputter, ADS и Cluster. В их числе и 22 задачи из предыдущей статьи. Теперь в одинаковых условиях можно испытать любую модель или связку с Claude Code.

По умолчанию сетевой доступ для агентов выключен. Скрипт tools\Enable-AgentAccess.ps1 создаёт конфигурацию локального сервера на 127.0.0.1:8026 с TLS, привязкой сертификата и проверкой ключа по SHA-256, а затем выводит готовую команду claude mcp add aps-control … для подключения моста APS.Mcp.exe через stdio.

Семнадцать инструментов MCP распределены по трём уровням доступа:

• Read — просмотр схемы установки и текущих показаний датчиков (describe_machine, describe_hardware, device_snapshot);

• Recipe — проверка сценариев перед запуском, их выполнение и выгрузка логов (validate_recipe, start_recipe, list_runs, fetch_run_files); этот уровень активен по умолчанию;

• Manual — непосредственное управление отдельными узлами (device_command); предоставляется только с флагом -Manual.

Даже при наличии ключа управляющие команды не будут выполняться, пока человек самостоятельно не переведёт пульт в режим Online-Remote. На тестовом стенде для этого предусмотрена переменная окружения APS_DEV_CONTROL_MODE=Remote. В локальном режиме модель может считывать показания и проверять рецепты через validate_recipe, но система не разрешит ей открыть клапан или запустить напыление.

Возможности и ограничения эмулятора

Эмулятор рассчитывает общий баланс газа и тепла в объёме камеры, но не моделирует плазму и трёхмерную газодинамику. Этого достаточно для отладки защитных блокировок, последовательности переключения клапанов, инерционности расходомеров и поведения ИИ-агентов. При этом модель не воспроизводит постепенную выработку мишени магнетрона, дугообразование («прострелы») и дрейф скорости напыления в продолжительной серии процессов. О работе той же системы управления с реальным оборудованием мы рассказали в статье о цифровизации нашей лаборатории и в препринте arXiv:2609.12796.

Установка, конфигурации и первый запуск

Исходный код и установщик доступны в репозитории APS Control Community; актуальный релиз — v1.7.2. Программа устанавливается в профиль пользователя и не требует прав администратора. Интерфейс создан на WinForms, поэтому сборка работает только в Windows и нуждается в .NET 10 Desktop Runtime: базового рантайма без библиотек для настольных приложений недостаточно. Установщик пока не имеет цифровой подписи, поэтому при первом запуске Windows SmartScreen покажет предупреждение.

В папке Configs\ находятся три готовых профиля оборудования с разной сложностью:

Профиль

Конфигурация установки

Состав эмулятора

Назначение

Sputter (по умолчанию)

Одна камера объёмом 200 л, два магнетрона (DC/PDC и RF), время разгона турбонасоса — 120 с

1 ПЛК S7 и 2 источника питания

Простой стенд для знакомства с системой

ADS

Камера со шлюзом загрузки, 4 магнетрона (Si, C, Ru, Co), ионный источник, дроссельная заслонка и вращающийся подложкодержатель

1 ПЛК S7, 6 источников питания, контроллер дросселя TC1, приводы держателя и заслонки

Установка, использованная в наших испытаниях LLM

Cluster

Шестигранный модуль с роботом TM (100 л), шлюз LL (10 л) и четыре камеры C1–C4 объёмом по 30 л

5 независимых ПЛК S7, 6 источников питания и контроллер робота

Многокамерный кластер с перемещением подложек

Для первого запуска откройте APS Emulator Community, выберите профиль через меню File -> Open Project… и оставьте установленным флажок Also point Control at this project. Вручную изменять конфигурационные файлы не потребуется. Затем запустите APS Control Community — программа управления откроется с выбранной установкой. Встроенный редактор рецептов и режим Online-Remote работают без файла лицензии.

Если обнаружите ошибку в профилях или захотите добавить драйвер для своего оборудования, создавайте issue или отправляйте pull request на GitHub.

 

Источник

Похожие статьи

Поиск по играм, новостям и статьям…

Введите не менее двух символов

Введите не менее двух символов