Правда станков: Как ModernERP собирает IoT-телеметрию с ЧПУ (и почему PHP не работает в одиночку)

Индустрия 4.0 начинается тогда, когда система перестает верить людям и начинает слушать оборудование. Разбираем распределенную архитектуру сбора данных для устранения человеческого фактора.

В классической парадигме автоматизации главным источником данных в цеху является человек. Мастер нажимает кнопку «Взять в работу», кладовщик сканирует штрихкод, рабочий закрывает сменный наряд.

Но там, где есть человек, всегда есть человеческий фактор: забыл нажать, нажал дважды, закрыл наряд в конце смены «задним числом», приписал лишнюю деталь. Это рождает «фантомный ФОТ» и критически искажает себестоимость.

Станок с ЧПУ (Fanuc, Siemens, Haas) не умеет врать. Если шпиндель крутился под нагрузкой 45 минут, значит, шла обработка. Если станок был включен, но стоял 2 часа — это чистый простой.

В этой статье мы глубоко разберем, как архитектура ModernERP забирает сырые физические данные со станков и превращает их в финансовые транзакции в нашем неизменяемом ядре (Ledger), используя стек PHP/Symfony в связке с IoT-микросервисами.

Часть 1. Архитектурный вызов: Проблема синхронного PHP

Стандартный станок с ЧПУ может генерировать десятки событий в секунду: координаты резца, обороты шпинделя, сила тока на приводах, температура СОЖ.

Если в цеху стоит 20 станков, это тысячи сообщений в секунду. PHP (и фреймворк Symfony) — это синхронный язык, созданный для обработки веб-запросов. Если мы попытаемся подключить станки напрямую к Symfony через REST API, произойдет следующее:

  • Веб-сервер (Nginx/PHP-FPM) моментально исчерпает пул воркеров.
  • База данных (PostgreSQL) захлебнется от потока мелких INSERT.
  • ERP-система «ляжет» и перестанет отвечать пользователям.

Именно поэтому сбор телеметрии в ModernERP строится по распределенной 4-уровневой архитектуре (Data Pipeline). Symfony вступает в игру только на самом последнем этапе.

Часть 2. 4 уровня трансформации данных: От железа к финансам

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

1. Уровень Edge (Край сети) — Добыча данных

Станки разговаривают на своих индустриальных языках (OPC UA, Modbus TCP, MTConnect). В шкаф управления ставится промышленный микрокомпьютер (Edge Gateway). На нем работает легковесный скрипт, который непрерывно опрашивает ПЛК станка, переводит данные в единый формат и пуляет их «вверх» по протоколу MQTT.

2. Message Broker — Амортизатор нагрузки

Данные со шлюзов летят непрерывным потоком. Нам нужен «буфер» — RabbitMQ или Mosquitto. Брокер принимает 10 000 сообщений в секунду, складывает их в очереди и гарантирует, что ни один байт данных не потеряется, даже если принимающий сервер временно перезагружается.

3. Data Aggregator — Интеллектуальный фильтр

Бизнесу не нужны сырые координаты оси X каждую миллисекунду. Асинхронный микросервис (на Go) читает очередь и анализирует паттерны. Пример: Если шпиндель крутился под нагрузкой > 20% в течение 10 минут, а затем остановился — фиксируем завершение цикла. Микросервис формирует один четкий JSON-пакет: {"event": "CYCLE_DONE", "qty": 1}.

4. ModernERP (Symfony) — Финансовый учет

Здесь в работу включается наше ядро. Агрегированные данные попадают в API. Система автоматически обновляет ProductionTask и формирует транзакцию в ProductionLedger. Фиксируется машинное время, списывается металл, начисляется амортизация — и всё это без участия человека.

Часть 3. Бизнес-результат: Зачем такие сложности?

Внедрение IoT-телеметрии в связке с архитектурой ModernERP полностью меняет правила игры на заводе и переводит управление из ручного режима в цифровой.

1. Убийство «Фантомного ФОТ»

Оператор больше не может приписать себе лишние детали в конце смены. Зарплата начисляется только за те циклы обработки, которые физически подтверждены датчиками станка и намертво записаны в Ledger.

2. Абсолютно точная себестоимость (Flat BOM)

ERP знает точное до секунды машинное время, затраченное на конкретную деталь в конкретном заказе, и точный расход электроэнергии шпинделем. Эти данные ложатся в расчет фактической рентабельности.

3. Реальный OEE (Overall Equipment Effectiveness)

Директор видит реальную картину загрузки парка станков. Если станок простаивает 2 часа, система автоматически генерирует алерт MACHINE_IDLE. Больше никаких красивых цифр, которые рисуют мастера в Excel, чтобы скрыть логистические провалы цеха.

ModernERP спроектирована так, чтобы бесшовно принимать эти данные. Мы оставили тяжелую работу по парсингу частот микросервисам, а Symfony делает то, что у него получается лучше всего — управляет бизнес-логикой и сложными финансовыми транзакциями в неизменяемом реестре.
Zero Trust в действии

Хватит теорий. Посмотрите, как работает боевой интерфейс.

Мы не прячем систему за красивыми презентациями и NDA. Посмотрите короткие скринкасты и убедитесь своими глазами, как монолитная архитектура навсегда закрывает дыры в цеховом учете.

  • Кабинет директора: контроль P&L и живой список производственных заявок.
  • Рабочее место мастера: аппаратный блок на списание сырья сверх нормы.
  • Ledger-журнал: почему в системе технически невозможно изменить наряд «задним числом».

Видеокейсы

Смотреть скринкасты Без заполнения форм