О проекте
Typhoon — производитель профессиональных электрических конвекционных ростеров для кофе.
Когда перед нами встала задача расширить линейку поддерживаемых комплектующих и одновременно повысить надёжность системы, мы провели глубокий рефакторинг и оптимизацию всего программного комплекса — от прошивки микроконтроллера STM32 до пользовательского интерфейса на Qt. Рассказываем, как мы научили ростеры Typhoon «понимать» разные модели частотников и какие новые возможности это открыло.
Почему потребовались изменения?
Изначально прошивка и верхнеуровневое Qt-приложение были жёстко завязаны на одну конкретную модель частотного преобразователя и протокол Modbus. Такое решение было надёжным, но создавало ряд ограничений:
- Зависимость от поставщика: мы не могли оперативно заменять ПЧ на аналоги при перебоях с поставками или изменении цен.
- Сложность модернизации: подключение нового, более современного частотника с расширенными функциями требовало переписывания значительной части кода как на STM32, так и в Qt.
- Ограниченный функционал: мы не могли использовать уникальные возможности разных ПЧ (например, расширенную диагностику или скоростные протоколы), потому что были «заточены» под минимум.
Мы поставили цель: создать гибкую систему, которая позволяет легко добавлять поддержку новых устройств без изменения основной логики управления и при этом сохраняет быстродействие, критически важное для конвекционной обжарки.
Рефакторинг: разделение на уровни
Вся архитектура была разделена на три независимых уровня, взаимодействующих через чётко определённые интерфейсы.
1. Аппаратно-зависимый уровень в прошивке STM32
Здесь сосредоточены драйверы для каждого типа ПЧ. Каждый драйвер реализует единый набор функций (инициализация, установка частоты, чтение статуса и т.д.), скрывая детали работы с конкретным протоколом — будь то Modbus RTU, Modbus ASCII или аналоговый сигнал 0–10 В через ЦАП.
2. Ядро системы (STM32)
Модули управления обжаркой, ПИД-регуляторы, логика безопасности. Ядро обращается к частотнику только через универсальный интерфейс драйвера, поэтому изменения в «железе» не влияют на алгоритмы обжарки.
3. Пользовательский интерфейс (Qt)
Приложение на Qt отображает параметры, принимает команды оператора и позволяет настраивать оборудование. Оно не содержит жёстко прописанных кодов регистров — вся информация о возможностях подключённого ПЧ поступает из прошивки в структурированном виде.
Оптимизация реального времени
Разные частотники имеют разное время реакции. Чтобы система не «подвисала» в ожидании ответа, мы:
- Перевели все обмены по Modbus в асинхронный режим с использованием конечного автомата.
- Настроили приоритеты прерываний: команды аварийной остановки обрабатываются вне очереди.
- Ввели буферизацию команд: если ПЧ занят, запросы ставятся в очередь и отправляются по готовности.
Удалённое обслуживание и обновления
Промышленное оборудование должно не только стабильно работать, но и легко обновляться в полевых условиях. Мы реализовали комплексный механизм управления прошивками, который делает обслуживание ростеров простым и безопасным.
Обновление прошивки через интернет
Qt-приложение получило модуль проверки обновлений. При подключении к интернету программа периодически обращается к нашему серверу, сравнивает версию текущей прошивки STM32 с актуальной и при наличии новой версии предлагает пользователю установить её.
Процесс полностью автоматизирован:
- Загрузка файла прошивки выполняется в фоновом режиме с контролем целостности (проверка CRC).
- Пользователь видит прогресс и может запланировать установку на удобное время (например, между сменами).
- Сама прошивка передаётся в микроконтроллер по надёжному протоколу с подтверждением каждого блока.
Резервное копирование и восстановление
Мы добавили в интерфейс приложения возможность сохранить текущую прошивку платы в файл на компьютере, а также загрузить прошивку из файла в устройство. Это полезно в нескольких сценариях:
- Откат на предыдущую версию — если новая прошивка по какой-то причине не подошла.
- Клонирование настроек — при вводе в эксплуатацию нескольких машин можно загрузить одинаковую прошивку на все платы без доступа в интернет.
- Сервисное обслуживание — инженер может сохранить «слепок» прошивки перед экспериментами и в любой момент восстановить исходное состояние.
Все операции выполняются через удобный графический интерфейс, не требуя от оператора знания командной строки или работы с программаторами.
Безопасность обновлений
Мы уделили особое внимание защите от сбоев во время обновления:
- Прошивка загружается в резервную область памяти, и только после полной проверки целостности происходит переключение на новую версию.
- При потере питания или связи во время обновления устройство остаётся работоспособным — старая прошивка сохраняется.
- Каждый файл прошивки подписывается цифровой подписью, что исключает установку неофициального или повреждённого ПО.
Новые возможности, которые мы получили
Благодаря проделанной работе ростеры Typhoon обрели ряд преимуществ:
- Гибкость производства: мы можем комплектовать оборудование частотниками разных производителей (Delta, Omron, INVT и др.) без доработки ПО — достаточно выбрать соответствующий драйвер при конфигурации.
- Точное управление охлаждением: использование ПЧ с обратной связью позволило реализовать алгоритм поддержания заданной скорости вращения вентилятора независимо от нагрузки и температуры — это улучшило повторяемость профилей обжарки.
- Диагностика и прогнозирование: анализ тока и крутящего момента через расширенные регистры некоторых ПЧ позволяет выявлять износ подшипников или засорение воздуховодов на ранней стадии. Сигналы выводятся в Qt-интерфейс в виде уведомлений.
- Удалённое обслуживание: теперь обновление прошивки можно выполнить силами самого клиента через интернет, не высылая инженера на место. Это сокращает время простоев и стоимость поддержки.
- Безопасность и надёжность: механизм резервного копирования и атомарного обновления сводит к минимуму риск выхода оборудования из строя при сбоях.
Заключение
Рефакторинг программного комплекса — от прошивки STM32 до Qt — позволил нам сделать ростеры Typhoon по-настоящему адаптивными и простыми в обслуживании. Теперь добавление поддержки нового оборудования занимает дни вместо недель, а функции удалённого обновления и резервного копирования дают нашим клиентам уверенность в том, что их инвестиции защищены.
Мы не просто расширили список совместимых компонентов — мы создали архитектуру, готовую к будущим вызовам: будь то переход на новые протоколы (EtherCAT, CANopen) или интеграция с облачными сервисами заказчика.