IoT
WMS-система для мясокомбината

Заречное

IoT
WMS-система для мясокомбината
Заречное
Заказчик
Агропромышленная группа “Заречное” занимает центральное положение в первом в России мясном кластере и активно работает над вовлечением местных производителей в индустрию производства высококачественной говядины. Настоящий пионер индустрии всегда должен смотреть вперед и вести за собой — в этом состоит наша миссия.
С чем пришел клиент
О клиенте
О системах управления складом (WMS) мы впервые узнали от “Заречное”. От них же мы узнали о том, что в нашей стране подобные системы не разрабатываются (за исключением разве что нескольких штук, имеющих слишком узкую сферу применения). Заречному требовалось разработать систему управления автоматическим стеллажным ящичным хранилищем MPS.

Система должна была стать заменой уже функционирующего на протяжении нескольких лет на мясокомбинате программного обеспечения, разработанного немецкой компанией CSB, которое уже не только не удовлетворяло заказчика в некоторых технических аспектах, но и не могло работать в связке с новой ERP, которую руководство компании решило ввести на смену морально устаревшей системы управления предприятием на базе 1С.
Почему клиент выбрал нас
Почему мы
Самым логичным вариантом для разработки нового сервиса на смену переработки действующего сервиса кажется обращение к предыдущему подрядчику, который не только уже обладает почти что всеми необходимыми данными и даже программными реализациями многих вещей, но и лично знаком с заказчиком, имея опыт в работе с ним. Но взаимодействие с иностранным подрядчиком, особенно с тем, который за прошедшее с момента запуска проекта время вырос в несколько раз и, соответственно, возросли стоимость его работы и усложнился процесс взаимодействия с ним — это то еще удовольствие.
Другим возможным вариантом реализации данного сервиса является его создание внутри ERP, без создания какого-либо промежуточного стека. Но данный вариант не только не был возможен технически (ERP не умеет работать напрямую с сетевыми сокетами и не может обеспечить действительного realtime, так как не может создавать и управлять потоками), но и логически — заказчик хотел иметь полностью автономный сервис, который вне зависимости от ERP мог поддерживать работу MPS при помощи веб-интерфейса.
А так как мы уже имеем большой опыт в реализации самых различных веб-интерфейсов, а используемые нами технологии позволяют технически реализовать многопоточность и управление сокетами, то никаких видимых причин сомневаться в том, что мы способны успешно реализовать задуманное ни у нас, ни у заказчика не было. К тому же, являясь чуть ли не единственной компанией, которая решилась взяться за создание данного сервиса, мы столь уверенно и оперативно давали обратную связь по проекту, что у заказчика не осталось веских причин, из-за которых они могли бы нам отказать.
Техническое описание проекта
Задача
Мясокомбинат “Заречное” — это одно из немногих в нашей стране полностью автоматизированных предприятий, на котором транспортировка, хранение и отгрузка изделий осуществляется в автоматическом режиме. Оборудованный по последнему слову техники немецкой инжиниринговой компанией MPS с использованием оборудования Siemens, Bizerba, Cisco и т.д. конвейер, с лифтами, различными датчиками, толкателями, ограничителями, стеллажами, моечными машинами и многими другими механизмами — это целый комплекс из различных логических и функциональных устройств, выполняющих ту или иную работу по части транспортировки и складирования ящиков с изделиями из говядины.
Но вся эта огромная и сложная система ничего не знает о своей топологии, о том, что и куда должно транспортироваться, по каким правилам и при каких условиях. Это лишь навороченное железо, для полноценной работы которого необходим внешний управляющий механизм.
Другой частью является ERP, которая отвечает за регистрацию и отгрузку продукции. Также в ней хранится вся информация по внутренним перемещениями продукции и актуальное состояние частей исполнительного устройства. Данную информацию ERP должно получать от проектируемого сервиса, то есть от нашего сервиса (WMS). Таким образом, наш сервис должен стать ядром системы, на плечи которого ложится управлением MPS, сбор, обработка и отправка данных от и в ERP, а также все решения относительно физической транспортировки, размещения и отгрузки продукции, обработка нештатных ситуаций и, что самое главное, система должна работать без сбоев в режиме реального времени, потому что любая, даже самая незначительная на первый взгляд ошибка, может привести к остановке работы всего мясокомбината, порче мяса или к другим ощутимым неприятностям.
Проблемы проекта
Задача
Одна из основных сложностей заключалась в том, что документация по части MPS хоть и была у заказчика, но она не только носила скорее общий, а не технический характер, но и часто крайне сильно отличалась от того, что было практически реализовано в контроллерах.
Одним из таких неописанных моментов был интерфейс RFC 1006 - протокол для осуществления “общения” с промышленными контроллерами Siemens. Техническое описание отсутствовало от слова “совсем”. А то описание, которое удавалось найти, мягко скажем, было столь поверхностным, что написать на его основе что-то работающее было просто нереально.
Еще одной проблемой оказалась реализация собственного сервиса SOAP, который должен был выступить в качестве связующего интерфейса для общения с ERP. До этого мы если и касались SOAP, то лишь в одном единственном качестве - для получения данных от 1С. Отправлять же подобные запросы мы не пробовали и это оказалось не столь просто, как виделось нам до этого.
Тырнов Юлиан / Технический директор
Сказать, что было тяжело - это ничего не сказать. Как сейчас помню свое разочарование и даже отчаяние после того, как вроде бы идеальная библиотека, которая работала без малейших сбоев на тестовом окружении отказывалась работать в реальных условиях. Мы безмерно благодарны заказчику за его терпение и всестороннюю помощь, оказываемую им на всем протяжении создания проекта. Терпение и помощь сотрудников “Заречное” с одной стороны и искреннее желание реализовать проект с нашей — это те факторы, которые в конечном итоге позволили нам создать и без особых проблем запустить проект.
Технологии
Ruby — наш любимый язык, а Rails — наш любимый фреймворк для быстрой реализации веб-сервисов. Не верьте, что Ruby медленный из-за того, что он интерпретируемый, а не компилируемый. На данном проекте Ruby уверенно держит REALTIME сразу для нескольких параллельных сетевых соединений, а интерпретация кода позволяет менять логику без остановки всего проекта.
Capistrano + GIT это достаточно просто, но при этом гибко и надежно, эта связка позволяет за пару тройку щелчков мыши выкатывать новый код на любое количество серверов по заранее заданным условиям (тестирование кода, запуск и остановка сторонних сервисов, обновление баз данных и т.д.).
NGINX является нашим безусловным кумиром по части веб-сервисов: он стабильный, быстрый и безопасный, а это именно то, что и требуется от добротного веб-сервера.
PostgreSQL трудно поверить, но эта СУБД даже без каких-то оптимизаций и хитроумных решений по части архитектуры данных способна обрабатывать десятки тысяч запросов буквально за считанные мгновения (менее 50мс).
Итоги
Ежедневно выезжая на мясокомбинат, снимая при помощи сниффера данные, которыми обменивался MPS и действующий на тот момент сервис CSB, а затем байт за байтом разбирая эти данные, производя и тестируя различные гипотезы, мы в итоге создали собственную реализацию библиотеки для работы по протоколу RFC 1006.
Дело оставалось за малым — реализовать всё остальное. Мы справились и с этой и со многими другими задачами. Клиент остался доволен. Система работает быстро и стабильно, в ней реализовано всё то, что давно хотелось увидеть в действующей ранее WMS.
Результаты
Данный проект помог нам не только зарекомендовать себя в качестве надежного и компетентного подрядчика по части проектов IoT, но и позволил сильно подрасти в теоретическо-практическом плане. Теперь мы смело можем сказать, что знаем как разрабатываются подобные сервисы и мы умеем их разрабатывать. А если что-то еще и не умеем, то знаем, как этому научиться и умеем это.