Часть 1: CRM для ERP

Часть 2: Роботизация бизнес-процессов

Часть 3: Волшебные интерфейсы и оживление железа (в этой публикации)

Часть 4: Личные кабинеты, чат-боты и dream team

Влияние рабочего места диспетчера на пропускную способность отгрузки на заводе

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

Рекомендация: Не айтишные книги, которые полезно прочитать айтишнику
  1. Принципы. Жизнь и работа. Рэй Далио

  2. Цель. Процесс непрерывного совершенствования. Элияху Голдратт

  3. Гемба Кайдзен. Путь к снижению затрат и повышению качества. Масааки Имаи

Какие идеи обычно возникают, когда нужно увеличить пропускную способность отгрузки на заводе:

  • Увеличить количество точек для одновременной отгрузки на заводе.

  • Увеличить количество КПП для одновременного въезда/выезда на завод.

На первый взгляд ответы правильные и логичные. Остается только найти пару 10 или 100 млн. руб. на инвестиционный проект и реализовать его.

Узкое горлышко найдено, дело за малым
Узкое горлышко найдено, дело за малым
Личный опыт: Не верьте программистам и консультантам

Когда программисты или консультанты тех. поддержки говорят вам, что у пользователей нет вопросов и проблем, потому что пользователи не обращались - это может означать, что:

  • У пользователя действительно все хорошо и прекрасно.

  • Пользователь не знает к кому обращаться со своими проблемами.

  • Пользователь много раз обращался, никто не решил проблему, потерял надежду и перестал обращаться.

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

  • У пользователя нет возможности обратиться из-за отсутствия времени, так как оно полностью занято оперативной работой.

Еще одна причина:

  • Программист и консультант никогда не были в гемба и не видели, как именно пользователь работает с системой и насколько это соответствует реальным бизнес-процессам.

Общий счет 5:1 в пользу того, чтобы не верить программистам и консультантам, что у пользователей нет вопросов и проблем.

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

Выявленные на месте явные проблемы (без погружения в детали):

  • 3 рукописных журнала для оперативной работы (при наличии рабочего места в ERP).

  • 2 монитора, чтобы вывести нужную информацию (изображение с 2-х видеокамер, данные с 2-х промышленных весов, программы для вывода текста на Led-табло, монитор для работы в ERP).

  • Настольный калькулятор (для вычисления max. веса к погрузке по каждой машине).

  • Ручки и фломастеры (для заполнения настольных журналов).

  • Поток жалоб от диспетчера на ошибки в рабочем месте ERP и постоянные проблемы со вторым монитором, куда выводятся данные с промышленных весов.

Лайфхак #1: Фотографируйте рабочие места пользователей

Когда повторно просматриваешь сделанные фотографии, обращаешь внимание на детали, которые изначально могли быть не замечены. Иногда фотографии помогают вспомнить диалог или конкретную ситуацию.

Так выглядело рабочее место диспетчера, когда я приехал и это было нормой с 2016 года.

Часть рабочего места диспетчера, вид сверху
Часть рабочего места диспетчера, вид сверху
Монитор 1 - данные с 2-х камер, данные с 2-х весов, программа для led-табло
Монитор 1 - данные с 2-х камер, данные с 2-х весов, программа для led-табло
Монитор 2 - интерфейс рабочего места в ERP, беспощадный и жестокий
Монитор 2 - интерфейс рабочего места в ERP, беспощадный и жестокий
Настольный калькулятор и журналы на столе диспетчера
Настольный калькулятор и журналы на столе диспетчера
Журнал прибывших машин на погрузку с отметками плановых точек погрузки на заводе
Журнал прибывших машин на погрузку с отметками плановых точек погрузки на заводе
Журнал с очередью машин (кто и во сколько приехал, когда и кого грузить, кто отгружен)
Журнал с очередью машин (кто и во сколько приехал, когда и кого грузить, кто отгружен)
Журнал выданных номерных пломб (учет по сериям) по сменам диспетчеров
Журнал выданных номерных пломб (учет по сериям) по сменам диспетчеров

Лайфхак #2: Наблюдайте, слушайте диалоги, задавайте вопросы

Это помогло за одну 12-часовую смену понять суть работы диспетчера:

  • Регистрация прибытия водителей на погрузку.

  • Планирование времени отгрузки в журнале (формирование очереди).

  • Вызов водителей на погрузку по журналу (по очереди из числа прибывших)

  • Выдача номерных номерных пломб и магнитных карт, их регистрация в ERP (для погрузки).

  • Ручная отправка задания на промышленные весы (для взвешивания машины до погрузки).

  • Ручное вычисление max. веса к погрузке (по каждой машине с учетом грузоподъемности и веса пустой машины).

  • Ручная отправка на промышленные весы задания на погрузку (max. вес к погрузке).

  • Печать отгрузочных накладных (после окончания погрузки).

Простые замеры времени операций показали, что на заводе высокая скорость погрузки (одна машина грузится ~ 10 минут), но есть простои до 3-х минут между погрузкой машин , потому что диспетчер физически не успевает "обслужить" весь трафик.

Диалоги диспетчера с водителями обнажили бюрократию на рабочем месте и предвзятое отношение к водителям:

  • У одних водителей ничего не спрашиваем и не проверяем, у других - проверяем каждую букву в ФИО и гос. номерах.

  • Одни водители ожидают свою очередь, другие - проезжают на погрузку без очереди, хвастаясь перед другими водителями.

  • Одним водителям всё подробно рассказываем, других - игнорируем и не отвечаем на элементарные вопросы.

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

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

Нарисовались следующие задачи, которые были решены
  1. Ускорить регистрацию прибывших на погрузку водителей.

  2. Ускорить выдачу диспетчером номерных пломб и магнитных карт для водителей.

  3. Развести машины по времени прибытия на завод.

  4. Упорядочить очередь прибывших на погрузку машин.

  5. Ускорить взвешивание машин до и после погрузки.

  6. Привести в порядок интерфейс рабочего место диспетчера в ERP.

  7. Убрать у диспетчера второй монитор, журналы, калькулятор и фломастеры.

На решение задач и автоматизации, которые дали наибольший эффект ~ 2 месяца с учетом покупки и настройки оборудования, закупки партий номерных пломб со штрихкодами, написания ТЗ и других связанных процессов.

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

На гифке сразу виден результат преобразований (автоматическая очередь машин в новом рабочем месте диспетчера в ERP).

Волшебное рабочее место диспетчера в ERP - маленький мир больших машин
Волшебное рабочее место диспетчера в ERP - маленький мир больших машин
Время "обслуживания" диспетчером одной машины сократилось в 10 раз
  • Автоматическая очередь машин через 1 КПП для 3-х точек отгрузки на заводе.

  • Автоматическое управление из ERP взвешиванием на промышленных весах.

  • Вся информация выведена на 1 экран 1 монитора пользователя.

  • Выдача номерных пломб и магнитной карты водителю с помощью сканера штрихкодов за 5 секунд.

  • Печать комплекта отгрузочных накладных диспетчером за 5 секунд.

  • Рабочее место диспетчера без журналов, калькулятора и фломастеров.

Почему мы установили диспетчеру сканер штрихкодов вместо считывателя магнитных карт, которые уже использовались на заводе? Все дело в номерных пломбах, удобстве и скорости работы для диспетчера.

Так выглядят номерные пломбы для выдачи водителю:

  • Приходят в коробках по 10 тыс. шт. и соединены друг с другом пластиковыми "ножками" (особенность изготовления).

  • Изначально был только номер, затем мы заказали с нанесением штрихкодов.

  • Штрихкод просто кодирует номер самой пломбы.

Пластиковые номерные пломбы со штрихкодами
Пластиковые номерные пломбы со штрихкодами

Чтобы диспетчеру было удобно одновременно выдавать номерные пломбы и магнитные карты, не путаясь в устройствах считывания, мы на магнитные карты наклеили штрихкоды с номером.

Примерка штрихкода для наклеивания на магнитную карту
Примерка штрихкода для наклеивания на магнитную карту

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

  • Чтобы сканер различал штрихкоды, мы кодируем первый знак: 1 - штрихкод номерной пломбы, 2 - штрихкод магнитной карты.

  • Мы доработали подсистему распознавания штрихкодов, чтобы номерные пломбы не нужно было расцеплять до сканирования, и сканировать несколько раз без "задвоения" номеров штрихкодов.

ГЛАВНЫЙ РЕЗУЛЬТАТ: пропускная способность отгрузки продукции автотранспортом на заводе увеличена в 2 раза без капитальных затрат.

Пример движения очереди машин в ERP (скриншоты)
Экран 1
Экран 1
Экран 2
Экран 2
Экран 3
Экран 3
Экран 4
Экран 4
Экран 5
Экран 5
Экран 6
Экран 6
Увеличение изображения камеры в рабочем месте диспетчера в ERP
Увеличение изображения камеры в рабочем месте диспетчера в ERP

Подробнее, о том, что для этого было сделано, читайте далее...

Электронная очередь для грузового автотранспорта

Фактически очередь начинает формироваться на этапе приема заказов:

> с нашей доставкой, клиент указывает только дату и время выгрузки по адресу доставки.

> на самовывозе, клиент указывает только дату и время погрузки на заводе.

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

Конкурентное преимущество: мы поддерживаем такой высокий уровень сервиса, чтобы клиенты могли получить продукцию завода: "день в день" - для регионов до 300 км, на следующий день - для регионов до 600 км, и через день - для регионов свыше 600 км.

Существующие ограничения на заводе при отгрузке в автотранспорт
  1. Разная продукция завода отгружается в разные часы в течение суток.

  2. Скорость отгрузки продукции на заводе не более 6 машин в час на 1 точку погрузки.

  3. Один вид продукции отгружается с 2-х точек погрузки, второй - с одной точки.

  4. Одновременно на заводе могут находиться не более 8 грузовых машин на всех точках погрузки.

  5. Все машины заезжают на завод и выезжают с завода через 1 КПП и одного диспетчера в смену.

Пример настроек в ERP по действующим ограничениям
Настройки пропускной способности отгрузки в ERP
Настройки пропускной способности отгрузки в ERP
Настройки вариантов подбора свободного времени отгрузки продукции в ERP
Настройки вариантов подбора свободного времени отгрузки продукции в ERP

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

Для некоторых видов продукции учитывается суточный лимит объема отгрузки вместо ограничения по количеству машин в час.

Автоматический подбор свободного часа погрузки на заводе (по заказу в ERP) для доставки клиенту ко времени
Автоматический подбор свободного часа погрузки на заводе (по заказу в ERP) для доставки клиенту ко времени

Экранная форма заказа клиента в ERP это тоже волшебный интерфейс (если сравнить со стандартной формой). Вся информация видна сразу, важная - имеет акценты (цвета, индикаторы, расшифровки).

В какой момент формируются 3 разные очереди в ERP
  1. Заказ клиента принят 21.01.2021 в 11:14.

  2. Расстояние от завода до пункта разгрузки у клиента 630 км.

  3. Чтобы доставить заказ клиенту 22.01.2021 к 8:00, машина должна приехать на завод для погрузки 21.01.2021 не позднее 15:00 - это плановая очередь погрузки.

  4. Когда машины приезжают на завод для погрузки - это фактическая очередь прибытия.

  5. По плановому времени погрузки по заказу и фактическому времени прибытия машин на завод строится реальная очередь на отгрузку.

Способы регистрация прибытия водителей на заводе:

  • через диспетчера

  • через уличный терминал

  • через чат-бот Telegram (подробнее в четвертой части)

  • через распознавание гос. номера машины (в планах на этот год)

Пример регистрации водителей через диспетчера в ERP
Диспетчер отмечает прибытие водителей правой кнопкой мыши в своем рабочем месте в ERP
Диспетчер отмечает прибытие водителей правой кнопкой мыши в своем рабочем месте в ERP
  1. Машины, которые фактически находятся на погрузке на заводе.

  2. Очередь машин на погрузку по статусам:

    - кто еще не прибыл на завод (НЕ ПРИБЫЛ).

    - кто прибыл и ожидает своей очереди (В ОЧЕРЕДИ).

    - кто прибыл и автоматически приглашен на погрузку (К ПОГРУЗКЕ).

  3. Динамические данные двух промышленных весов (показ только у диспетчера).

  4. Изображение с двух камер на точках погрузки на заводе.

Пример регистрации водителей через уличный терминал на заводе
  • Сенсорный антивандальный монитор 24" российского производства (широкоформатный 16:9, TFT TN, 1920х1080, углы обзора 160/160), установлен на КПП завода.

  • Монитор без собственного ПО для подключения к любому ПК, с особыми характеристиками яркости (1000 кд/м2) и температурного режима (-30/+30), в защищенном корпусе (сталь 2 мм) c закаленным стеклом (4 мм) и весом ~ 20 кг.

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

Начальный экран - крупные шрифты, большие кнопки, не промахнешься
Начальный экран - крупные шрифты, большие кнопки, не промахнешься
Шаг 1: Быстрый поиск по водительскому удостоверению - водитель не найден
Шаг 1: Быстрый поиск по водительскому удостоверению - водитель не найден
Шаг 2: Быстрый поиск по цифрам гос. номера автомобиля
Шаг 2: Быстрый поиск по цифрам гос. номера автомобиля
Шаг 3: Найденные по гос. номеру автомобили - выбор и подтверждение
Шаг 3: Найденные по гос. номеру автомобили - выбор и подтверждение
Шаг 4: Проверка данных и регистрация прибытия на погрузку
Шаг 4: Проверка данных и регистрация прибытия на погрузку

Таймер обратного отсчета на экране монитора мотивирует водителя выполнять действия быстрее, чтобы не задерживать очередь у терминала.

Этот кейс также относится к теме оживления железа (оживление с помощью разработанного ПО для автономной работы в составе единой информационной системы), но здесь подробно рассматриваться не будет.

Пример регистрации водителей через чат-бот Telegram
Водитель отмечает прибытие на завод для погрузки в чат-боте Telegram
Водитель отмечает прибытие на завод для погрузки в чат-боте Telegram
  1. Команда прибытия на погрузку в чат-боте Telegram.

  2. Уведомление водителя с подтверждением времени прибытия.

Чат-бот для водителей в Telegram интегрирован с ERP в режиме онлайн и работает автоматически по заданным сценариям (подробнее в четвертой части).

Как происходит автоматический вызов водителя на погрузку из очереди:

Способ регистрации прибытия

Способ вызова на погрузку

через диспетчера

уличное LED-табло и SMS

через уличный терминал

уличное LED-табло и SMS

через чат-бот Telegram

уличное LED-табло и чат-бот Telegram

через распознавание гос. номера (в плане)

уличное LED-табло и SMS (в плане)

Пример приглашения водителей на погрузку по SMS
Автоматическое приглашение водителей на погрузку по SMS из ERP
Автоматическое приглашение водителей на погрузку по SMS из ERP

Пример приглашения водителя на погрузку в чат-боте Telegram
1 - водитель отметил прибытие на завод, 2 - чат-бот автоматически пригласил на погрузку
1 - водитель отметил прибытие на завод, 2 - чат-бот автоматически пригласил на погрузку

На скриншоте ниже видно историю взаимодействия водителей с чат-ботом Telegram в интерфейсе ERP (подробнее в четвертой части).

Автоматическое приглашение водителей на погрузку в чат-боте Telegram
Автоматическое приглашение водителей на погрузку в чат-боте Telegram

Водитель (1) нажал команду прибытия в чат-боте (2). Когда пришла очередь, чат-бот вызвал водителя к погрузке (3).

Пример приглашения водителей через уличное Led-табло
Автоматическое приглашение водителей на LED-табло по гос. номеру автомобиля
Автоматическое приглашение водителей на LED-табло по гос. номеру автомобиля
  • Размер каждой LED-панели примерно 1,5 х 2 метра.

  • LED-панели развернуты на 2 стороны стоянки грузовых автомобилей перед заводом.

И если SMS или уведомление в чат-бот Telegram отправляется однократно, то приглашение на уличное LED-табло может выводиться несколько раз в соответствии с тем, как меняется автоматическая очередь в ERP:

  • Первый вызов и ожидание водителя в течение 5 минут.

  • Второй и последующие вызовы через каждые 5 минут, после вызова на погрузку следующего по очереди водителя и окончания погрузки очередной машины на заводе.

Таким образом, очередь на LED-табло постоянно автоматически обновляется и к погрузке по очереди вызываются разные водители из числа прибывших на завод.

Оживление LED-табло и автоматическое управление из ERP

Уличные LED-панели были куплены еще до начала работ по комплексной автоматизации рабочего места диспетчера, взамен старого (с которым раньше работали диспетчеры через программу для ручного вывода строк).

Фото от российского производителя LED-панелей (1,5 х 2 м), готовых к отправке на завод
Фото от российского производителя LED-панелей (1,5 х 2 м), готовых к отправке на завод

Вместе с LED-панелями производитель предоставил программу для вывода строк на табло.

Окно программы для вывода текстовых строк на LED-табло
Окно программы для вывода текстовых строк на LED-табло

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

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

Пример 3-х страниц с описанием протокола
Страница 2 описания протокола
Страница 2 описания протокола
Страница 5 описания протокола
Страница 5 описания протокола
Страница 8 описания протокола
Страница 8 описания протокола

С программистом 1С мы посмотрели протокол и не поняли, как именно управлять выводом очереди машин на табло из ERP.

По нашей просьбе, изготовитель LED-панелей договорился с производителем компонент электроники, из которых оно состоит, чтобы они написали пример кода для программного вывода информации на табло. Пример был написан на языке Pascal, который программист с большим трудом перевел на язык 1С.

Пример кода на языке Pascal (Delphi 10) по использованию протокола
unit ConnTypes;

interface

const
     RecBuffSizeByte=1024;

type

TLevel2Pack=packed record
  SrcAddr:word; //source address
  DstAddr:word; //receiver address
  PId:byte;     //Packet id
  Cmd:byte;   // Command code
  Flags:byte;  //options
  Status:byte; //command status
  DataLen:word; //length of data
  Data:array[0..RecBuffSizeByte-1] of byte;  //data
  end;

PLevel2Pack=^TLevel2Pack;

TLevel2Head=packed record
  SrcAddr:word; //source address
  DstAddr:word; //receiver address
  PId:byte;     //Packet id
  Cmd:byte;   // Command code
  Flags:byte;  //options
  Status:byte; //command status
  DataLen:word; //length of data
  end;
PLevel2Head=^TLevel2Head;

TFullPacket=packed record
  bSTX:byte;
  LenLo:byte;
  LenHi:byte;
  Data:array[0..RecBuffSizeByte*2-1+32] of byte;
  end;
  
PFullPacket=^TFullPacket;

function MakeFullPacket(Src:PLevel2Pack; Dst:Pointer):integer;
function EncodeWord(v:word):word;

implementation

uses CRCUnit;

function CS2word(cslo, cshi:byte):word;
var b:PByte;
begin
Result:=0;
b:=@Result;
b^:=cslo or $80;
inc(b);
b^:=$80 or ((cslo shr 7) and $01) or ((cshi and $3F) shl 1);
end;

function EncodeWord(v:word):word;
begin
Result:=((v and $3F80) shl 1) or (v and $7F) or $8080;
end;

function DecodeWord(v:word):word;
begin
Result:=((v and $7F00) shr 1) or (v and $7F);
end;

function EncodeDataForComm(Src, Dst:Pointer; SrcSize:integer):integer;
 var PS, PD:PByte;
     i:integer;
     b:byte;
  begin
  PS:=Src;
  PD:=Dst;
  Result:=0;
  for i:=1 to SrcSize do
    begin
    b:=PS^ xor $80;
    if (b<$20) or (b=$7F)
       then begin
            PD^:=$7F;
            inc(PD);
            PD^:=b or $80;
            inc(Result);
            end
       else PD^:=b;
    inc(PS);
    inc(PD);
    inc(Result);
    end;
  end;

function MakeFullPacket(Src:PLevel2Pack; Dst:Pointer):integer;
var cs:word;
    PB:PByte;
    F:PFullPacket;
    PackLen:word;
    PackSize:integer;
  begin
  PB:=Dst;
  F:=Dst;
  cs:=0;
  PackLen:=word(Src^.DataLen+sizeof(TLevel2Head));
  CountCSNewW(Src, PackLen, cs);
  F^.bSTX:=$02;
  PWord(@F^.LenLo)^:=EncodeWord(PackLen);
  inc(PB, 3);// add bSTX, LenLo, LenHi
  PackSize:=EncodeDataForComm(Src, PB, PackLen);
  inc(PB, PackSize);
  PWord(PB)^:=EncodeWord(cs);
  inc(PB, 2); // add CsLo, CsHi
  PB^:=$03;
  Result:=PackSize+6;
  end;
end.

Таким образом, нам удалось реализовать полностью автоматическое управление выводом очереди автомобилей на LED-табло из ERP.

Мы также реализовали автоматическое управление взвешиванием машин из ERP до и после погрузки на 2-х промышленных весах на заводе. Напишите в комментариях, если вам интересно узнать об этом подробнее.

Спасибо, что дочитали до конца!