Каждый день через сортировочные узлы Почты России проходят миллионы писем и посылок. Наша задача — быстро распределить весь этот поток по направлениям. В местах, через которые проходят внушительные объемы отправлений (как, например, во Внуково, куда прилетают самолеты с посылками из Китая), без крупных сортировочных комплексов не обойтись. Поэтому в больших городах — Москве, Санкт-Петербурге, Казани и Новосибирске и других — мы строим огромные автоматизированные центры.
Автоматизированный сортировочный центр похож на завод – по сути, он им и является. Площадь самого большого на сегодняшний день сортцентра Почты, который расположен во Внуково, – 64 тысячи квадратных метров. Мощность производства такого АСЦ — 3 миллиона почтовых отправлений ежедневно и 125 тысяч стандартных писем в час. Производственный процесс здесь идет круглосуточно.
В этой статье расскажем как устроены эти «заводы», что за машины там работают и как именно автоматизация сортировки помогает ускорить доставку ваших писем и посылок.
Сортировочная машина — это промышленный робот, который представляет собой конвейерную ленту c выходами. К примеру, машина для сортировки посылок выглядит так:
![](https://habrastorage.org/r/w780q1/webt/bj/-i/zl/bj-izlokv4af_k1-ws57ogwrlrc.jpeg)
А если представить сортмашину схематично, то так:
![](https://habrastorage.org/r/w1560/webt/m1/ov/7a/m1ov7ac515qajv4dzpp22__6fmq.png)
Прежде чем запустить посылки на сортировочную ленту, мы загружаем в сортмашину план направлений, в котором содержатся правила, по которым происходит сортировка. Его мы просчитываем в системе математического моделирования МРПЛ раз в квартал или в полгода сразу на всю страну, и каждый сортировочный узел Почты работает по нему. О том как составляются такие планы, мы рассказывали в статье «Покинуло сортировочный центр»: как устроена логистика Почты России.
Процесс начинается с того, что отправления выкладывают на ленту сортировщика. Письма, мелкие пакеты и обычные посылки сортируются на разных машинах. А заказные и мелкие пакеты еще и в отдельные сессии — это разделение связано со способом распознавания адреса, о чем поговорим чуть ниже.
![](https://habrastorage.org/r/w780q1/webt/u1/py/n-/u1pyn-pjkof_bry4lvseneglgbk.jpeg)
Так выглядит выкладка отправлений на ленту. Здесь операторы поворачивают посылки специальным образом, чтобы сканеры считывали штрих-код.
У каждой сортмашины есть предельные габариты. Например, на ленту для посылок не поместятся лыжи. Подобные находки сотрудники отсеивают на первичном разборе и отправляют на ручную сортировку.
На ручной сортировке тоже не обошлось без автоматизации. Здесь используют наручные сканеры для быстрой идентификации отправления. С помощью устройства операторы считывают штрихкод, чтобы узнать, в какой выход положить письмо или посылку.
Загруженные для автоматической сортировки отправления с разных выходов стекаются на одну линию и едут к камере, где расположены сканеры штрихкодов, а также фото- и видеокамеры, которые фотографируют посылку со всех сторон, чтобы найти необходимую для сортировки информацию: штрихкод или индекс.
![](https://habrastorage.org/r/w780q1/webt/ef/eb/ta/efebta6_vvjro8jweqstsimecoo.jpeg)
Красный огонек на фото – это работающий сканер
Когда сортируется заказная почта, машина работает в режиме считывания штрихкода. Если через камеру проехала посылка, которую сортмашина не опознала (у нее поврежден или не виден штрихкод), то она отправляется в специальный выход «Отбраковки», расположенный в конце ленты. Там сотрудники вручную разбираются, в чем проблема. Если поврежден штрихкод, они определят индекс самостоятельно и отнесут отправление в нужный выход.
Если же сортируется простая почта, на которую не наносят штрихкод, то работает система оптического распознавания символов (OCR, Optical Character Recognition). Работает OCR так: письмо на ленте попадает под камеру, которая фотографирует отправление в пяти проекциях, находит и распознает текст, ищет индекс и адрес и пытается сопоставить одно с другим. Если текст написан неразборчиво или индекс вообще забыли указать, то фотография отправляется на монитор к специальному сотруднику, который находит и вбивает индекс в систему вручную. Поэтому каждый раз, когда кто-то ленится указать индекс или пишет его неразборчиво, письмо проводит на сортировке на несколько секунд дольше.
Получив данные со сканера, сортмашина сопоставляет их с индексом из плана направлений и, по указанным в правилах сортировки атрибутам (индексу, весу), определяет, в какой выход отправить посылку. И, когда отправление подъезжает к правильному выходу, сталкивает ее туда. Это происходит благодаря синхронизации движения ленты и сталкивателя.
Машина знает, какие индексы отправляла на заполненный выход, и передает нам сообщение «в этом выходе лежат отправления по таким-то индексам». В этот же момент автоматически формируется транспортная единица — зная, какие отправления собраны в конкретном выходе, информационная система Сортмастер присваивает ящику порядковый номер и выводит его на печать на принтер, расположенный над лентой. Сотрудник закрывает ящик крышкой и наклеивает этикетку, на которой указано, куда тот поедет дальше.
Чтобы не таскать собранные ящики к выходу вручную, их ставят на дополнительную конвейерную линию THS, которая умеет сортировать именно готовые емкости. На такой ленте спусков нет, ее функция — развести груз ближе к воротам.
А вот в новом сортировочном центре в Новосибирске, который мы в ближайшее время запустим в эксплуатацию, процесс разгрузки и погрузки планируется автоматизировать. Здесь отправления будут попадать на ленту и выезжать с нее с помощью телескопического конвейера, который раскладывается прямо в кузов автомобиля.
На этом новом конвейере есть сканер, который сразу распределяет емкости по линиям сортировки. Он определяет, что лежит на ленте, и отправляет емкость по конвейерной системе на развилку — на сортировщик писем, крупных или мелких посылок.
Нам нужны сортеры, способные работать годами по 22 часа в сутки, не ломаться и не останавливаться. Поэтому нашими поставщиками стали компании мирового уровня: Toshiba, Siemens, Vanderlande — они производят подобные машины уже не один десяток лет.
Эти компании поставляют свои устройства как программно-аппаратный комплекс. По умолчанию такие машины работают по статическим сортировочным планам, которые вносят при их первой настройке. Сортировочный план – это файл, где указано, какие индексы кидаем в выход №1, какие в выход №2 и так далее. Закупка машин вместе с ПО привела к тому, что мы получили стороннюю систему управления, которая выполняет только заранее заложенную в нее логику сортировки. Нам же был нужен динамический сортировочный план, и вот почему.
У каждой машины есть свои пределы производительности. В среднем одна письмосортировочная машина сортирует 40 000 писем в час, во Внуково у нас их две. Соответственно, производительность этого объекта довольно высокая – до 80 тысяч писем в час.
Посылочная машина сортирует до 8 тысяч посылок в час, лента сортировщика двигается со скоростью 1,8 м/с. Она могла бы ехать и быстрее, но тогда из-за встречного потока воздуха мелкие пакеты начнут взлетать и разлетаться по цеху, что вряд ли поможет ускорить процесс.
В случае статического плана за каждым выходом при планировании сортировки закрепляются свои группы индексов, которые мы не могли заменить. И вот представим, что у нас есть 200 направлений, среди которых Питер, Москва, Ярославль, Краснодар и мы раскладываем отправления только по ним.
Но, допустим, что поток писем в Краснодар увеличился, а в Ярославль — уменьшился. И после одного цикла сортировки выход для Ярославля у нас простаивает. Со статическим планом у нас были бы связаны руки — мы не можем внести изменения в логику работы машины и задействовать пустующий выход для более детальной сортировки выросшего направления.
Мы всегда заранее знаем, что едет к нам на сортировку, а значит можем предугадать, что какой-то из выходов будет простаивать, в то время как другое направление перегружено. Значит, чтобы сортировать эффективнее и загружать машины по максимуму, нам надо научиться менять сортировочные планы в реальном времени — перейти на динамический план сортировки.
Чтобы перейти на динамические планы, мы в Почтатехе разработали собственный программный продукт, который называется SMAB — sorting machine automation bridge.
Sorting Machine Automation Bridge состоит из нескольких микросервисов:
SMAB связывает нашу собственную информационную систему Сортмастер (мы рассказывали про нее в статье про то, как устроена логистика Почты) с контроллерами машины. Как раз контроллеры отвечают за сталкивание посылки в нужный выход в определенный момент. А это значит, что теперь мы сами можем менять логику сортировки — говорить машине что куда сортировать и менять команды на лету.
SMAB обменивается данными с физическим контроллером машины и с Сортмастером по протоколу OPC UA — мировому технологическому стандарту общения с промышленным оборудованием. Этот протокол позволил найти универсальное решение для общения с устройствами разных производителей.
Когда мы видим, что распределение потоков изменилось — в Ярославль писем нет, а вот в Краснодарский край поток увеличился, то вместо одного общего выхода (в Краснодар), мы можем разделить отправления сразу на два — на Краснодар и на Сочи. Так мы задействуем простаивающий без дела выход и сэкономим время и ресурсы ручной сортировки в региональных центрах. А значит доставим отправления получателям еще быстрее.
Сама сортировка теперь работает так: сперва мы просим машину физически идентифицировать отравление и через OPC UA сервер сообщить результат IT-системам «Почты России», а точнее, нашему SMAB. Детектор, расположенный на ленте, считывает информацию об отправлении — распознает штрихкод или считывает индекс и отправляет данные в MQTT — протокол обмена данными, который получает и передает нам события, происходящие с отправлениями на ленте.
Сервис процессинга получает сообщение с детектора и асинхронно отправляет запросы на сортировку в сортировочные сервисы. Проще говоря, машина сообщает «такое-то отправление на ленте» и спрашивает что с ним делать. Для принятия решения у нас есть примерно одна секунда до первой развилки. Сервис процессинга получает ответы от сортировочных сервисов с массивами выходов, в которые нужно отправить письмо или посылку и, учитывая приоритет сортировки, отправляет запрос на сортировку в OPC сервер соответствующего сортировщика. В результате Сортмастер возвращает номер выхода, который мы передаем машине. Отправление, доехав до нужного выхода, сбрасывается в него сталкивателем.
Работой выталкивателей управляют контроллеры (PLC — programming logic controller), в каждом из которых находится OPC UA Server. SMAB обменивается информацией с этим сервером — так машина узнает когда крутить, а когда остановить привод, чтобы вытолкнуть отправление в нужный выход.
Также SMAB позволит нам уйти от ручного закрытия емкостей, теперь машина может автоматически закрывать выход для сортировки, когда в нем оказывается определенное количество посылок или заданный вес. Это возможно, потому что мы видим все параметры посылок в Сортмастере.
Если обобщить, то сортировка со SMAB выглядит так: Сортмашина сканирует отправление и спрашивает Сортмастер «куда положить индекс 107037?». Сортмастер анализирует ситуацию и отвечает «давай в выход № 1» и передает эту команду на контроллер. Все происходит практически в реальном времени — в течение секунды мы говорим, что отправление, которое ты только что сфотографировал, надо положить в выход № 1.
В следующей сортировочной сессии правила могут поменяться и этот выход может принимать уже другой набор индексов, если ситуация изменится.
Причем логика сортировки теперь может быть намного сложнее, чем просто по индексам. Мы можем использовать любые атрибуты отправления для того, чтобы принять решение, куда его положить. Этого могут быть также вес или тип отправления — обычное или первый класс. Например, если выложить на Сортмашину со статическим планом первый класс и обыкновенные посылки вперемешку, то она не сможет разделить их по типу отправления и положит первый класс и обычную посылку с одинаковым индексом в один выход. Когда мы используем дополнительную логику, где в сортировке указываем еще и тип отправления, то появляется возможность разложить в два выхода разные типы отправлений с одинаковым индексом. Так в выходе № 1 у нас будут обыкновенные посылки в Петербург, а в выходе № 2 — первый класс туда же. Это только один из примеров того, что мы можем делать при помощи новой системы. И теперь все новые машины, которые будут появляться в Почте России, будут подчиняться этой логике.
Комплекс машин внутри одного сортировочного центра мы называем сортировочной станцией. Для каждой станции мы делаем единую настройку OPC UA сервера, в которой учитываем все возможные параметры:
Настройка сервера полностью отображает физическую структуру машины — для каждого выхода, каждого OCR, каждого считывателя штрихкодов есть свой метод. Благодаря этим настройкам мы знаем, что машина, А сортирует письма, и когда получаем от нее сообщение, то понимаем, что речь идет о письмах и отправляем нужный запрос в Сортмастер.
Все сервисы, кроме процессинга, построены на стеке Spring, с использованием баз данных PostgreSQL. Сервис процессинга построен на последней версии Vert.x. В качестве discovery используется Consul, CI/CD построен на основе GitLab CI с использованием Docker. Фронтовая часть написана на React.
Теперь все новые машины Почты России будут работать через SMAB, что позволит сортировать отправления более гибко и быстро менять правила в зависимости от текущей нагрузки.
Сейчас у нас 1 100 сортировочных узлов — макрорегиональных, региональных и локальных, расположенных в небольших городах. Большая их часть автоматизирована, и теперь мы планируем постепенно переводить все центры на управление с помощью SMAB. Кроме этого, к 2022 году мы хотим расширить сортировочную сеть еще на 36 центров.
Чтобы реализовать все задуманное, нам нужны люди. К примеру, в команду, которая будет развивать информационную систему для управления сортировочными машинами мы ищем DevOps инженеров и Java разработчиков. Эти и другие вакансии в команде Почтовых технологий можно найти на pochta.tech.
Автоматизированный сортировочный центр похож на завод – по сути, он им и является. Площадь самого большого на сегодняшний день сортцентра Почты, который расположен во Внуково, – 64 тысячи квадратных метров. Мощность производства такого АСЦ — 3 миллиона почтовых отправлений ежедневно и 125 тысяч стандартных писем в час. Производственный процесс здесь идет круглосуточно.
В этой статье расскажем как устроены эти «заводы», что за машины там работают и как именно автоматизация сортировки помогает ускорить доставку ваших писем и посылок.
Как устроена сортмашина
Сортировочная машина — это промышленный робот, который представляет собой конвейерную ленту c выходами. К примеру, машина для сортировки посылок выглядит так:
![](https://habrastorage.org/webt/bj/-i/zl/bj-izlokv4af_k1-ws57ogwrlrc.jpeg)
А если представить сортмашину схематично, то так:
![](https://habrastorage.org/webt/m1/ov/7a/m1ov7ac515qajv4dzpp22__6fmq.png)
Прежде чем запустить посылки на сортировочную ленту, мы загружаем в сортмашину план направлений, в котором содержатся правила, по которым происходит сортировка. Его мы просчитываем в системе математического моделирования МРПЛ раз в квартал или в полгода сразу на всю страну, и каждый сортировочный узел Почты работает по нему. О том как составляются такие планы, мы рассказывали в статье «Покинуло сортировочный центр»: как устроена логистика Почты России.
Из чего состоит сортировка
Процесс начинается с того, что отправления выкладывают на ленту сортировщика. Письма, мелкие пакеты и обычные посылки сортируются на разных машинах. А заказные и мелкие пакеты еще и в отдельные сессии — это разделение связано со способом распознавания адреса, о чем поговорим чуть ниже.
![](https://habrastorage.org/webt/u1/py/n-/u1pyn-pjkof_bry4lvseneglgbk.jpeg)
Так выглядит выкладка отправлений на ленту. Здесь операторы поворачивают посылки специальным образом, чтобы сканеры считывали штрих-код.
У каждой сортмашины есть предельные габариты. Например, на ленту для посылок не поместятся лыжи. Подобные находки сотрудники отсеивают на первичном разборе и отправляют на ручную сортировку.
На ручной сортировке тоже не обошлось без автоматизации. Здесь используют наручные сканеры для быстрой идентификации отправления. С помощью устройства операторы считывают штрихкод, чтобы узнать, в какой выход положить письмо или посылку.
Загруженные для автоматической сортировки отправления с разных выходов стекаются на одну линию и едут к камере, где расположены сканеры штрихкодов, а также фото- и видеокамеры, которые фотографируют посылку со всех сторон, чтобы найти необходимую для сортировки информацию: штрихкод или индекс.
![](https://habrastorage.org/webt/ef/eb/ta/efebta6_vvjro8jweqstsimecoo.jpeg)
Красный огонек на фото – это работающий сканер
Когда сортируется заказная почта, машина работает в режиме считывания штрихкода. Если через камеру проехала посылка, которую сортмашина не опознала (у нее поврежден или не виден штрихкод), то она отправляется в специальный выход «Отбраковки», расположенный в конце ленты. Там сотрудники вручную разбираются, в чем проблема. Если поврежден штрихкод, они определят индекс самостоятельно и отнесут отправление в нужный выход.
Если же сортируется простая почта, на которую не наносят штрихкод, то работает система оптического распознавания символов (OCR, Optical Character Recognition). Работает OCR так: письмо на ленте попадает под камеру, которая фотографирует отправление в пяти проекциях, находит и распознает текст, ищет индекс и адрес и пытается сопоставить одно с другим. Если текст написан неразборчиво или индекс вообще забыли указать, то фотография отправляется на монитор к специальному сотруднику, который находит и вбивает индекс в систему вручную. Поэтому каждый раз, когда кто-то ленится указать индекс или пишет его неразборчиво, письмо проводит на сортировке на несколько секунд дольше.
Получив данные со сканера, сортмашина сопоставляет их с индексом из плана направлений и, по указанным в правилах сортировки атрибутам (индексу, весу), определяет, в какой выход отправить посылку. И, когда отправление подъезжает к правильному выходу, сталкивает ее туда. Это происходит благодаря синхронизации движения ленты и сталкивателя.
Машина знает, какие индексы отправляла на заполненный выход, и передает нам сообщение «в этом выходе лежат отправления по таким-то индексам». В этот же момент автоматически формируется транспортная единица — зная, какие отправления собраны в конкретном выходе, информационная система Сортмастер присваивает ящику порядковый номер и выводит его на печать на принтер, расположенный над лентой. Сотрудник закрывает ящик крышкой и наклеивает этикетку, на которой указано, куда тот поедет дальше.
Чтобы не таскать собранные ящики к выходу вручную, их ставят на дополнительную конвейерную линию THS, которая умеет сортировать именно готовые емкости. На такой ленте спусков нет, ее функция — развести груз ближе к воротам.
А вот в новом сортировочном центре в Новосибирске, который мы в ближайшее время запустим в эксплуатацию, процесс разгрузки и погрузки планируется автоматизировать. Здесь отправления будут попадать на ленту и выезжать с нее с помощью телескопического конвейера, который раскладывается прямо в кузов автомобиля.
На этом новом конвейере есть сканер, который сразу распределяет емкости по линиям сортировки. Он определяет, что лежит на ленте, и отправляет емкость по конвейерной системе на развилку — на сортировщик писем, крупных или мелких посылок.
Скорость сортировки и что на нее влияет
Нам нужны сортеры, способные работать годами по 22 часа в сутки, не ломаться и не останавливаться. Поэтому нашими поставщиками стали компании мирового уровня: Toshiba, Siemens, Vanderlande — они производят подобные машины уже не один десяток лет.
Эти компании поставляют свои устройства как программно-аппаратный комплекс. По умолчанию такие машины работают по статическим сортировочным планам, которые вносят при их первой настройке. Сортировочный план – это файл, где указано, какие индексы кидаем в выход №1, какие в выход №2 и так далее. Закупка машин вместе с ПО привела к тому, что мы получили стороннюю систему управления, которая выполняет только заранее заложенную в нее логику сортировки. Нам же был нужен динамический сортировочный план, и вот почему.
У каждой машины есть свои пределы производительности. В среднем одна письмосортировочная машина сортирует 40 000 писем в час, во Внуково у нас их две. Соответственно, производительность этого объекта довольно высокая – до 80 тысяч писем в час.
Посылочная машина сортирует до 8 тысяч посылок в час, лента сортировщика двигается со скоростью 1,8 м/с. Она могла бы ехать и быстрее, но тогда из-за встречного потока воздуха мелкие пакеты начнут взлетать и разлетаться по цеху, что вряд ли поможет ускорить процесс.
В случае статического плана за каждым выходом при планировании сортировки закрепляются свои группы индексов, которые мы не могли заменить. И вот представим, что у нас есть 200 направлений, среди которых Питер, Москва, Ярославль, Краснодар и мы раскладываем отправления только по ним.
Но, допустим, что поток писем в Краснодар увеличился, а в Ярославль — уменьшился. И после одного цикла сортировки выход для Ярославля у нас простаивает. Со статическим планом у нас были бы связаны руки — мы не можем внести изменения в логику работы машины и задействовать пустующий выход для более детальной сортировки выросшего направления.
Мы всегда заранее знаем, что едет к нам на сортировку, а значит можем предугадать, что какой-то из выходов будет простаивать, в то время как другое направление перегружено. Значит, чтобы сортировать эффективнее и загружать машины по максимуму, нам надо научиться менять сортировочные планы в реальном времени — перейти на динамический план сортировки.
От статики к динамике
Чтобы перейти на динамические планы, мы в Почтатехе разработали собственный программный продукт, который называется SMAB — sorting machine automation bridge.
Sorting Machine Automation Bridge состоит из нескольких микросервисов:
- Portal Back — обрабатывает запросы с фронта, формирует отчётность, позволяет управлять правами пользователей.
- Management — предназначен для валидации и регистрации сортировочных станций посредством подключения к серверам OPC. А также хранит структуру всех сортировочных станций и обеспечивает настройки сервиса процессинга.
- Processing — сервис, который поддерживает асинхронную работу с сортировочным оборудованием, получает события из MQTT брокера (протокол, который передает данные о событиях между устройствами), выполняет сортировку почтовых отправлений через сортировочные сервисы (Сортмастер, TIAM и др.), вызывает методы на OPC серверах, пишет состояние сортировочной сессии в базу данных.
SMAB связывает нашу собственную информационную систему Сортмастер (мы рассказывали про нее в статье про то, как устроена логистика Почты) с контроллерами машины. Как раз контроллеры отвечают за сталкивание посылки в нужный выход в определенный момент. А это значит, что теперь мы сами можем менять логику сортировки — говорить машине что куда сортировать и менять команды на лету.
SMAB обменивается данными с физическим контроллером машины и с Сортмастером по протоколу OPC UA — мировому технологическому стандарту общения с промышленным оборудованием. Этот протокол позволил найти универсальное решение для общения с устройствами разных производителей.
Когда мы видим, что распределение потоков изменилось — в Ярославль писем нет, а вот в Краснодарский край поток увеличился, то вместо одного общего выхода (в Краснодар), мы можем разделить отправления сразу на два — на Краснодар и на Сочи. Так мы задействуем простаивающий без дела выход и сэкономим время и ресурсы ручной сортировки в региональных центрах. А значит доставим отправления получателям еще быстрее.
Сама сортировка теперь работает так: сперва мы просим машину физически идентифицировать отравление и через OPC UA сервер сообщить результат IT-системам «Почты России», а точнее, нашему SMAB. Детектор, расположенный на ленте, считывает информацию об отправлении — распознает штрихкод или считывает индекс и отправляет данные в MQTT — протокол обмена данными, который получает и передает нам события, происходящие с отправлениями на ленте.
Сервис процессинга получает сообщение с детектора и асинхронно отправляет запросы на сортировку в сортировочные сервисы. Проще говоря, машина сообщает «такое-то отправление на ленте» и спрашивает что с ним делать. Для принятия решения у нас есть примерно одна секунда до первой развилки. Сервис процессинга получает ответы от сортировочных сервисов с массивами выходов, в которые нужно отправить письмо или посылку и, учитывая приоритет сортировки, отправляет запрос на сортировку в OPC сервер соответствующего сортировщика. В результате Сортмастер возвращает номер выхода, который мы передаем машине. Отправление, доехав до нужного выхода, сбрасывается в него сталкивателем.
Работой выталкивателей управляют контроллеры (PLC — programming logic controller), в каждом из которых находится OPC UA Server. SMAB обменивается информацией с этим сервером — так машина узнает когда крутить, а когда остановить привод, чтобы вытолкнуть отправление в нужный выход.
Также SMAB позволит нам уйти от ручного закрытия емкостей, теперь машина может автоматически закрывать выход для сортировки, когда в нем оказывается определенное количество посылок или заданный вес. Это возможно, потому что мы видим все параметры посылок в Сортмастере.
Если обобщить, то сортировка со SMAB выглядит так: Сортмашина сканирует отправление и спрашивает Сортмастер «куда положить индекс 107037?». Сортмастер анализирует ситуацию и отвечает «давай в выход № 1» и передает эту команду на контроллер. Все происходит практически в реальном времени — в течение секунды мы говорим, что отправление, которое ты только что сфотографировал, надо положить в выход № 1.
В следующей сортировочной сессии правила могут поменяться и этот выход может принимать уже другой набор индексов, если ситуация изменится.
Причем логика сортировки теперь может быть намного сложнее, чем просто по индексам. Мы можем использовать любые атрибуты отправления для того, чтобы принять решение, куда его положить. Этого могут быть также вес или тип отправления — обычное или первый класс. Например, если выложить на Сортмашину со статическим планом первый класс и обыкновенные посылки вперемешку, то она не сможет разделить их по типу отправления и положит первый класс и обычную посылку с одинаковым индексом в один выход. Когда мы используем дополнительную логику, где в сортировке указываем еще и тип отправления, то появляется возможность разложить в два выхода разные типы отправлений с одинаковым индексом. Так в выходе № 1 у нас будут обыкновенные посылки в Петербург, а в выходе № 2 — первый класс туда же. Это только один из примеров того, что мы можем делать при помощи новой системы. И теперь все новые машины, которые будут появляться в Почте России, будут подчиняться этой логике.
Технологический стек
Комплекс машин внутри одного сортировочного центра мы называем сортировочной станцией. Для каждой станции мы делаем единую настройку OPC UA сервера, в которой учитываем все возможные параметры:
- Структуру машин: они могут быть кольцевыми или линейными, с разным количеством выходов, с обычным или реверсивным конвейером — который может ехать в две стороны.
- Внутреннюю логику состояния сортузлов: в какую сторону едет конвейер — на вход или на выход.
- Условия перехода между состояниями: при каких условиях работает OCR, а при каких — сканируем штрихкоды.
Настройка сервера полностью отображает физическую структуру машины — для каждого выхода, каждого OCR, каждого считывателя штрихкодов есть свой метод. Благодаря этим настройкам мы знаем, что машина, А сортирует письма, и когда получаем от нее сообщение, то понимаем, что речь идет о письмах и отправляем нужный запрос в Сортмастер.
Все сервисы, кроме процессинга, построены на стеке Spring, с использованием баз данных PostgreSQL. Сервис процессинга построен на последней версии Vert.x. В качестве discovery используется Consul, CI/CD построен на основе GitLab CI с использованием Docker. Фронтовая часть написана на React.
Теперь все новые машины Почты России будут работать через SMAB, что позволит сортировать отправления более гибко и быстро менять правила в зависимости от текущей нагрузки.
Сейчас у нас 1 100 сортировочных узлов — макрорегиональных, региональных и локальных, расположенных в небольших городах. Большая их часть автоматизирована, и теперь мы планируем постепенно переводить все центры на управление с помощью SMAB. Кроме этого, к 2022 году мы хотим расширить сортировочную сеть еще на 36 центров.
Чтобы реализовать все задуманное, нам нужны люди. К примеру, в команду, которая будет развивать информационную систему для управления сортировочными машинами мы ищем DevOps инженеров и Java разработчиков. Эти и другие вакансии в команде Почтовых технологий можно найти на pochta.tech.