
Когда говорят о разработке ПО для промышленности, многие сразу представляют себе команды программистов, пишущих строки кода где-то в уютном офисе. Это, пожалуй, самый большой миф. На деле, ключевое — это не столько сам код, сколько умение погрузиться в специфику конкретного производства, понять, как на самом деле работает смена, что значит для технолога ?все в порядке? и почему оператор станка с ЧПУ может проигнорировать самую красивую кнопку на интерфейсе. Без этого погружения любое, даже технически безупречное, программное обеспечение обречено пылиться на сервере или, что хуже, тормозить реальные процессы.
Если брать конкретно наш сектор — производство электротехнического оборудования, как, например, на нашем предприятии OOO Шэньхэн Энергетическое Оборудование, то разработка ПО редко бывает ?с нуля? для всего. Чаще это доработка, интеграция и создание связующих звеньев. У нас есть ERP-система для учета, САПР для конструкторов, но всегда возникает серая зона — там, где данные из чертежа должны превратиться в заказ на металл, а информация о простое станка — в сводку для начальника цеха. Вот эта ?серая зона? и есть основное поле для разработки.
Например, несколько лет назад мы пытались внедрить готовое MES-решение. Брали, что называется, ?из коробки?. И столкнулись с тем, что его логика планирования не учитывала нашу ключевую особенность — длительный цикл испытаний высоковольтных компонентов. Система видела, что станок свободен, и ставила на него новую задачу, а по факту готовая продукция еще неделю висела на стендах контроля. Получился сбой цепочки, пришлось срочно откатываться. Это был урок: промышленное ПО должно проектироваться от технологии, а не наоборот.
Сейчас мы движемся по пути точечных решений. Не пытаемся объять необъятное, а автоматизируем конкретные болезненные точки. Скажем, для контроля сборки распределительных щитов разработали простой планшетный чек-лист с привязкой к заказу. Оператор отмечает выполненные операции, система фиксирует время и ответственного. Казалось бы, ерунда. Но это убило две проблемы: поиск виноватого при браке и ?забывчивость? установить какую-нибудь шину. Разработка заняла не месяц, а несколько дней, но эффект — налицо.
Самая сложная часть в разработке для действующего завода — это не написать новый модуль, а заставить его говорить со старыми системами. У нас на производстве стоит оборудование разных лет и производителей. Станки с ЧПУ одной марки выдают данные по одному протоколу, другой — по второму, а какой-нибудь старый пресс вообще молчит, как партизан. Задача разработки — создать этот ?переводчик?.
Помню историю с интеграцией данных о потреблении энергии с участка окраски. Датчики были, но их софт писал данные в свой закрытый формат. Нам нужно было просто видеть график нагрузки в общем пульте. Пришлось нестандартно подойти: через ПЛК считать сигналы напрямую с трансформаторов тока и уже своими силами агрегировать. Получилось криво, с костылями, но это работало. Позже, конечно, переделали на нормальный OPC-сервер. Суть в том, что на практике идеальные протоколы встречаются редко, и разработчик должен быть готов к реверс-инжинирингу или ?грязным? решениям, лишь бы цех получил нужную информацию.
На сайте https://www.chshpower.ru мы пишем о готовой продукции — силовых трансформаторах, комплектных распределительных устройствах. Но за кадром остается эта самая внутренняя кухня, где десятки этих мелких программ-связок обеспечивают ту самую стабильность и качество, которое мы декларируем. Без них согласовать производство электротехнических компонентов высокого и низкого напряжения от заказа до отгрузки было бы в разы сложнее.
Можно написать гениальный алгоритм оптимизации раскроя металла, но если интерфейс для ввода данных будет требовать пять лишних кликов от мастера, его проигнорируют. И будут правы. У нас был печальный опыт с системой учёта инструмента. Разработали по всем канонам: база данных, штрих-коды, история использования. Сделали логично с точки зрения программиста. Внедрили — и упёрлись в то, что инструментальщик в возрасте просто не хотел тыкать планшетом в каждый ключ, который он выдаёт. Система встала.
Пришлось переделывать. Сели с этим самым инструментальщиком, выслушали его ритм работы. Оказалось, главное для него — не вести учёт в реальном времени, а быстро закрыть смену и составить заявку на пополнение. Перевернули логику. Теперь система в конце дня сама анализирует остатки по ячейкам и предлагает заказ. Интерфейс — одна большая кнопка ?Сформировать заявку? и список для правки. Её стали использовать. Вывод: разработка ПО для промышленных предприятий — это на 50% социология и психология труда. Нужно идти к людям и смотреть, как они работают, а не приносить им ?идеальное? решение сверху.
Сейчас при создании любого интерфейса для цеха мы используем правило ?трёх секунд?. Если ключевое действие (принять задание, сообщить о проблеме, отметить выполнение) нельзя совершить за три секунды и интуитивно понятно — интерфейс плох. Это касается и диспетчерских панелей, и мобильных приложений для обходчиков. Простота и надёжность важнее визуальных изысков.
Следующий этап, на который мы потихоньку выходим, — это использование накопленных данных не просто для отчётности, а для прогноза. Когда у тебя годами копятся данные по времени сборки, простоям, сезонному спросу, грех не попробовать это использовать. Скажем, в производстве оборудования для передачи электроэнергии есть длиннющие циклы поставки некоторых комплектующих — медных шин, специфической изоляции.
Мы начали с малого — построили простые графики зависимости времени выполнения заказа от его сложности (количества разных позиций в спецификации). Потом добавили фактор загрузки цеха. Получилась грубая, но работающая модель для предварительной оценки сроков для клиента. Это уже не просто учёт, а инструмент планирования. Следующая цель — связать эту модель с данными от поставщиков, чтобы система сама могла подсказывать: ?Для заказа на такой-то трансформатор, который вероятно поступит в ноябре, нужно уже в авгуце заказать вентили у конкретного поставщика, иначе будет простой?.
Конечно, до идеального предиктивного анализа нам далеко. Мешают те самые ?грязные? данные, ручные корректировки в Excel-табличках, которые ведёт какой-нибудь начальник участка. Но движение в эту сторону — обязательная часть современной разработки по. Если система не учится на прошлом опыте предприятия, она быстро устаревает.
В офисном софте сбой — это потерянные часы работы. В промышленном — это потенциальный простой цеха, порча материалов, срыв контракта. А в нашей сфере, связанной с энергетическим оборудованием, последствия могут быть ещё серьёзнее. Поэтому любая внутренняя разработка ведётся с оглядкой на надёжность и отказоустойчивость.
Мы выработали для себя несколько железных правил. Первое: никакие экспериментальные или новые модули не ставятся напрямую на рабочие контуры без длительного теста на ?теневом? участке. Второе: обязательное дублирование критичных данных. Даже наша самописная система сбора оперативных данных с участка испытаний пишет их сразу в две разные базы — основную и архивную. Третье: любой софт, который хоть как-то может повлиять на управление оборудованием (не напрямую, а даже через формирование заданий), проходит дополнительную валидацию с главным механиком и технологом.
Это замедляет процесс? Да. Но это та цена, которую мы платим за стабильность. Потому что на кону — репутация OOO Шэньхэн Энергетическое Оборудование как производителя, который поставляет надёжные компоненты для высоковольтных сетей. Наша внутренняя разработка программного обеспечения должна соответствовать тому же уровню ответственности, что и наша основная продукция. Не бывает ?просто софта?. Бывает часть технологического процесса, от которой зависит реальный, физический результат.
Куда всё это движется? Думаю, главный тренд — это стирание грани между ?железом? и ?софтом?. Оборудование всё чаще поставляется с открытыми API, и задача разработки смещается от создания связок к созданию единой цифровой среды завода. Уже сейчас мы смотрим в сторону digital twin-ов (цифровых двойников) для ключевых производственных линий. Не для красоты, а для того, чтобы на модели отрабатывать перепланировки, ввод новых изделий в ассортимент, например, того же низковольтного комплектного распределительного устройства новой серии.
Вторая очевидная вещь — это рост роли мобильности. Не в смысле ?приложения на телефоне?, а в смысле доступа к данным и управлению с любого устройства в любой точке цеха. Мастер должен иметь возможность не бежать к терминалу, а с того же планшета проверить складской остаток, подтвердить этап работы и вызвать наладчика. Это требует уже другой архитектуры решений — облачных, с низкой задержкой, но при этом безупречно защищённых.
В итоге, возвращаясь к началу. Разработка по для промышленных предприятий — это давно не удел только IT-специалистов. Это совместная работа технологов, производственников, инженеров и программистов. Успех измеряется не строками кода или красотой интерфейса, а тем, насколько тише и предсказуемее стал работать цех, насколько меньше стало бумажных сводок и авралов из-за нехватки комплектующих. Это медленная, итеративная, часто неблагодарная работа. Но когда видишь, как благодаря твоей небольшой программе сборщики перестали путать модификации щитов, понимаешь — оно того стоит. И это, пожалуй, главный критерий качества для любого промышленного софта: его незаметность в успешной работе.