В классической парадигме автоматизации главным источником данных в цеху является человек. Мастер нажимает кнопку «Взять в работу», кладовщик сканирует штрихкод, рабочий закрывает сменный наряд.
Но там, где есть человек, всегда есть человеческий фактор: забыл нажать, нажал дважды, закрыл наряд в конце смены «задним числом», приписал лишнюю деталь. Это рождает «фантомный ФОТ» и критически искажает себестоимость.
В этой статье мы глубоко разберем, как архитектура 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 уровня трансформации данных: От железа к финансам
Мы не будем подключать станки напрямую. Мы выстраиваем конвейер, где каждый слой решает свою узкую задачу, фильтруя информационный шум.
Станки разговаривают на своих индустриальных языках (OPC UA, Modbus TCP, MTConnect). В шкаф управления ставится промышленный микрокомпьютер (Edge Gateway). На нем работает легковесный скрипт, который непрерывно опрашивает ПЛК станка, переводит данные в единый формат и пуляет их «вверх» по протоколу MQTT.
Данные со шлюзов летят непрерывным потоком. Нам нужен «буфер» — RabbitMQ или Mosquitto. Брокер принимает 10 000 сообщений в секунду, складывает их в очереди и гарантирует, что ни один байт данных не потеряется, даже если принимающий сервер временно перезагружается.
Бизнесу не нужны сырые координаты оси X каждую миллисекунду. Асинхронный микросервис (на Go) читает очередь и анализирует паттерны. Пример: Если шпиндель крутился под нагрузкой > 20% в течение 10 минут, а затем остановился — фиксируем завершение цикла. Микросервис формирует один четкий JSON-пакет: {"event": "CYCLE_DONE", "qty": 1}.
Здесь в работу включается наше ядро. Агрегированные данные попадают в API. Система автоматически обновляет ProductionTask и формирует транзакцию в ProductionLedger. Фиксируется машинное время, списывается металл, начисляется амортизация — и всё это без участия человека.
Часть 3. Бизнес-результат: Зачем такие сложности?
Внедрение IoT-телеметрии в связке с архитектурой ModernERP полностью меняет правила игры на заводе и переводит управление из ручного режима в цифровой.
1. Убийство «Фантомного ФОТ»
Оператор больше не может приписать себе лишние детали в конце смены. Зарплата начисляется только за те циклы обработки, которые физически подтверждены датчиками станка и намертво записаны в Ledger.
2. Абсолютно точная себестоимость (Flat BOM)
ERP знает точное до секунды машинное время, затраченное на конкретную деталь в конкретном заказе, и точный расход электроэнергии шпинделем. Эти данные ложатся в расчет фактической рентабельности.
3. Реальный OEE (Overall Equipment Effectiveness)
Директор видит реальную картину загрузки парка станков. Если станок простаивает 2 часа, система автоматически генерирует алерт MACHINE_IDLE. Больше никаких красивых цифр, которые рисуют мастера в Excel, чтобы скрыть логистические провалы цеха.