Технический кейс

Кейс стабилизации ПО управления MBE-оборудованием и поставки Windows-версии

Winge Technology провела диагностику и стабилизацию Windows Qt-приложения для полупроводникового технологического оборудования и создала отдельную тестовую архитектуру для десяти Modbus-регуляторов, клапана EI-BISYNCH, камеры Galaxy, записей SQLite, установщика и плана приёмки на объекте.

Кейс стабилизации ПО управления MBE-оборудованием и поставки Windows-версии

Обзор проекта

Проект был посвящён Windows-приложению верхнего уровня для управления полупроводниковым технологическим оборудованием. Система на Qt/C++ обменивается данными с регуляторами температуры, игольчатым клапаном, вакуумметрами, контроллерами заслонок и промышленной камерой. SQLite хранит измерения устройств, события команд и метаданные кадров. Требовалось диагностировать разрывы температурных данных, неполное подтверждение команд, снижение частоты камеры и незаметную остановку записи, не прерывая работающую на объекте программу.

Поставка была разделена на две изолированные линии. Линия сопровождения внесла ограниченные обратимые изменения в существующее приложение и сформировала установщик Windows x64. Отдельная линия v2 использовала собственный каталог и AppId для проверки владения последовательными портами, соединениями базы, потоками камеры и выполнением скриптов. Конфигурация и исторические данные были сохранены; программное обеспечение с доступом к оборудованию не запускалось без согласованного оператором безопасного окна.

Состав системы и технологии

ОбластьТехнология или оборудованиеВыполненная работа
Управляющее приложениеWindows 10/11 x64, Qt 5.12.12, C++, MSVCДиагностика, стабилизация, Release-сборка и установщик
Температура10 регуляторов Modbus RTU, 9600 baudКороткие чтения, последовательные транзакции, ответ записи и чтение SP
Клапан и заслонкиEI-BISYNCH и собственные ответы устройствРазбор протокола, ACK/NAK и проверка состояния
Промышленная камераGalaxy SDK, базовая экспозиция 125 мсПоследний кадр, исправление ACK, watchdog захвата и хранения
Данные и скриптыSQLite, JPEG и технологические скриптыОдин путь записи, отдельные времена, моделирование и границы отказа

Диагностика на основе данных

Анализ только для чтения охватил около 8,89 часа исторических журналов и баз. На COM5 зарегистрировано 5 168 очисток буфера после превышения 128 байт, а эффективное обновление десяти регуляторов было заметно медленнее настроенного двухсекундного периода. Код показывал, что каждый частый опрос читает около 35 регистров и получает типичный ответ примерно 75 байт. Планирование GUI, медленные пакеты базы и окно ожидания 150 мс повышали вероятность смешения запоздалого ответа со следующим запросом.

Дополнительное сравнение дали две исторические записи камеры с одного компьютера. Базовая версия сохраняла JPEG со скоростью 8,006 FPS, версия с регрессией — 3,919 FPS. В обеих выборках не было соседних полностью одинаковых JPEG. ACK сырого кадра возвращался в очередь рабочего потока камеры; блокирующий захват мог выполниться раньше ACK, и новый кадр регулярно пропускался, пока предыдущий считался ожидающим. Эти числа подтверждают регрессию и её диагностику, но не являются результатом приёмки исправленной версии.

Ограниченное сопровождение существующего приложения

Линия сопровождения сохранила интерфейс, конфигурацию устройств, каталоги данных и точки входа технологических скриптов. Изменяемые файлы резервировались до замены, для архива патча и установщика записывались SHA-256. Установщик сохраняет существующие MBE_Data, Scriptfile и конфигурацию и не запускает приложение автоматически после установки.

  • Частое чтение температуры ограничено регистрами PV, SP и Working SP; типичный ответ уменьшен примерно с 75 до 15 байт.
  • Запись температуры Sub сопоставляет ответ Modbus 0x06, затем читает SP. Отсутствие ответа или другое значение считается ошибкой.
  • Захват камеры выполняет рабочий поток; предпросмотр и сырая запись допускают по одному кадру в обработке и выбирают последний кадр.
  • Температурные значения в градусах больше не делятся повторно на десять в строке состояния и старом пути управления.

Чтение Ramp Rate из устройства

Ячейка Ramp Rate начинается с --, а не с фиксированного программного значения. Затем приложение читает регистр 0x0023. В устойчивом режиме один регулятор читается каждые три секунды, полный цикл по десяти занимает около 30 секунд. Ramp Rate не включён в частый запрос PV/SP и не увеличивает каждый ответ на шине 9600 baud.

Изменение исправляет источник отображаемого значения: число появляется только после данных устройства. Синхронизацию после изменения на панели требуется проверить с версией 1.0.3 на реальном оборудовании; реализация не выдаётся за завершённую аппаратную приёмку.

Захват и хранение изображений

Предпросмотр и запись используют последний кадр. Если GUI или JPEG-кодировщик временно медленнее захвата, промежуточные кадры заменяются, а очередь событий не растёт без ограничения. ACK сырого кадра непосредственно освобождает атомарный флаг и не ждёт за следующим блокирующим вызовом камеры. Имена файлов и поля базы используют фактическое время захвата; начало и завершение сохранения записываются отдельно.

В 1.0.3 добавлены два watchdog-механизма. Если камера открыта, но сырой кадр не приходит три секунды, захват закрывается и открывается снова с десятисекундной паузой между перезапусками. Если задача записи или интервал от последнего сохранения превышает три секунды, зависшее состояние снимается и выполняется повтор с текущим кадром. Механизм устраняет тихую остановку, но не заменяет проверку драйвера, USB, скорости диска и ошибок базы на объекте.

Изолированная архитектурная линия v2

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

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

Сборка, упаковка и сохранение данных

Версия сопровождения 1.0.3 собрана CMake и MSVC в конфигурации Release x64 и упакована Inno Setup 6.7.3. Размер Release-файла — 1 727 488 байт. Установочная стадия содержит 78 файлов общим объёмом 66 292 772 байта. Проверены Galaxy SDK, библиотеки Qt, драйвер SQLite, VC Runtime и конфигурация; отладочных Qt DLL нет.

Версия установщика — 1.0.3.20260728, размер — 19 884 961 байт. Полные SHA-256 программы, архива патча и установщика сохранены в записи поставки. Установщик не подписан Authenticode, поэтому Windows может показать сообщение о неизвестном издателе.

Доказательства проверки и границы

ПроверкаЗафиксированный результатГраница
Историческая диагностика8,89 часа; 5 168 очисток COM5Подтверждает старую неисправность, не результат исправления
Историческое сравнение камерыБаза 8,006 FPS; регрессия 3,919 FPSДля диагностики ACK, не полевой тест 1.0.3
Release сопровожденияWindows x64 сборка и шесть статических проверокСборка и путь кода, не аппаратная приёмка
CTest сопровожденияКод возврата 0, вывод No tests were foundЗафиксировано отсутствие автоматических тестов
Тестовая программа v2Полная Debug-сборка; CTest 1/1; 11 групп без оборудованияПротокол, состояние, скрипт, хранение; оборудование не подключено
Полевое оборудование1.0.3 и v2 не запускались с подключёнными устройствамиRamp Rate, восстановление, запись Sub и 8 часов ожидают проверки

Безопасность и план приёмки

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

  • Наблюдать 30 минут и вычислить интервалы измерений, долю таймаутов и максимальный разрыв каждого регулятора.
  • Записать несколько безопасных целей Sub и сопоставить ответ 0x06, чтение SP, панель устройства и PV.
  • Зафиксировать экспозицию, разрешение и каталог; измерить FPS захвата, FPS записи, пропуски и сквозную задержку.
  • Отключить и восстановить камеру, проверить журнал watchdog, предпросмотр и запись.
  • Выполнить восьмичасовую совместную запись до решения о замене старого приложения.

Повторно применимый инженерный подход

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

Входные данные для похожего проекта

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

Частые вопросы

Это новая разработка или сопровождение существующей системы?

Использованы обе линии. Сопровождение дало ограниченные изменения и установщик 1.0.3. v2 — отдельная линия для проверки владения потоками, транзакциями и данными и не заменяет старую программу.

Почему новую сборку не запустили через SSH?

Запуск может занять камеру и порты и отправить команды. Без подтверждённого безопасного состояния выполнялись только работа с кодом, сборка, упаковка и статические проверки.

8,006 FPS — это результат после исправления?

Нет. Это историческая база на том же компьютере; 3,919 FPS относится к версии с регрессией. Сравнение использовалось для поиска ошибки ACK. Исправленную версию ещё нужно измерить в заданных условиях.

Проверены ли все функции оборудования?

Нет. В проекте сопровождения автоматические тесты не зарегистрированы. Одна программа v2 покрыла 11 групп проверок протокола, состояния, скрипта и хранения без оборудования. Реальные устройства и длительная работа остаются пунктами приёмки.

Как защищены данные и конфигурация объекта?

Файлы резервировались до изменений, хэши фиксировались, установщик сохраняет данные, скрипты и конфигурацию, а v2 использует отдельные AppId и каталог. Переключение версии зависит от полевой приёмки.

Обсудить похожий проект

Отправьте протоколы, топологию портов, модель камеры, версию ПО, границы безопасности и показатели приёмки.

Online
Phone
13910119357
WeChat
WhatsApp
Winge Technology WhatsApp QR code Scan or click to contact us
Top