Часть 2: Роботизация бизнес-процессов
Часть 3: Волшебные интерфейсы и оживление железа (в этой публикации)
Часть 4: Личные кабинеты, чат-боты и dream team
Влияние рабочего места диспетчера на пропускную способность отгрузки на заводе
Цифровизация предприятия - это не только процесс внедрение новых систем и сервисов. Этому предшествуют поиски узких мест в рабочих процессах и на конкретных рабочих местах пользователей.
Рекомендация: Не айтишные книги, которые полезно прочитать айтишнику
Принципы. Жизнь и работа. Рэй Далио
Цель. Процесс непрерывного совершенствования. Элияху Голдратт
Гемба Кайдзен. Путь к снижению затрат и повышению качества. Масааки Имаи
Какие идеи обычно возникают, когда нужно увеличить пропускную способность отгрузки на заводе:
Увеличить количество точек для одновременной отгрузки на заводе.
Увеличить количество КПП для одновременного въезда/выезда на завод.
На первый взгляд ответы правильные и логичные. Остается только найти пару 10 или 100 млн. руб. на инвестиционный проект и реализовать его.
Личный опыт: Не верьте программистам и консультантам
Когда программисты или консультанты тех. поддержки говорят вам, что у пользователей нет вопросов и проблем, потому что пользователи не обращались - это может означать, что:
У пользователя действительно все хорошо и прекрасно.
Пользователь не знает к кому обращаться со своими проблемами.
Пользователь много раз обращался, никто не решил проблему, потерял надежду и перестал обращаться.
Пользователь не видит проблем или привык к тому, что проблемы стали частью его повседневной жизни и адаптировался под них.
У пользователя нет возможности обратиться из-за отсутствия времени, так как оно полностью занято оперативной работой.
Еще одна причина:
Программист и консультант никогда не были в гемба и не видели, как именно пользователь работает с системой и насколько это соответствует реальным бизнес-процессам.
Общий счет 5:1 в пользу того, чтобы не верить программистам и консультантам, что у пользователей нет вопросов и проблем.
Завод находится в 150 км от моего непосредственного рабочего места. И точно уже не вспомню, письмо мне в почту со скриншотом ошибки или звонок на мобильный от диспетчера, что способствовало выехать меня на место, чтобы разобраться в причинах проблем.
Выявленные на месте явные проблемы (без погружения в детали):
3 рукописных журнала для оперативной работы (при наличии рабочего места в ERP).
2 монитора, чтобы вывести нужную информацию (изображение с 2-х видеокамер, данные с 2-х промышленных весов, программы для вывода текста на Led-табло, монитор для работы в ERP).
Настольный калькулятор (для вычисления max. веса к погрузке по каждой машине).
Ручки и фломастеры (для заполнения настольных журналов).
Поток жалоб от диспетчера на ошибки в рабочем месте ERP и постоянные проблемы со вторым монитором, куда выводятся данные с промышленных весов.
Лайфхак #1: Фотографируйте рабочие места пользователей
Когда повторно просматриваешь сделанные фотографии, обращаешь внимание на детали, которые изначально могли быть не замечены. Иногда фотографии помогают вспомнить диалог или конкретную ситуацию.
Так выглядело рабочее место диспетчера, когда я приехал и это было нормой с 2016 года.
Лайфхак #2: Наблюдайте, слушайте диалоги, задавайте вопросы
Это помогло за одну 12-часовую смену понять суть работы диспетчера:
Регистрация прибытия водителей на погрузку.
Планирование времени отгрузки в журнале (формирование очереди).
Вызов водителей на погрузку по журналу (по очереди из числа прибывших)
Выдача номерных номерных пломб и магнитных карт, их регистрация в ERP (для погрузки).
Ручная отправка задания на промышленные весы (для взвешивания машины до погрузки).
Ручное вычисление max. веса к погрузке (по каждой машине с учетом грузоподъемности и веса пустой машины).
Ручная отправка на промышленные весы задания на погрузку (max. вес к погрузке).
Печать отгрузочных накладных (после окончания погрузки).
Простые замеры времени операций показали, что на заводе высокая скорость погрузки (одна машина грузится ~ 10 минут), но есть простои до 3-х минут между погрузкой машин , потому что диспетчер физически не успевает "обслужить" весь трафик.
Диалоги диспетчера с водителями обнажили бюрократию на рабочем месте и предвзятое отношение к водителям:
У одних водителей ничего не спрашиваем и не проверяем, у других - проверяем каждую букву в ФИО и гос. номерах.
Одни водители ожидают свою очередь, другие - проезжают на погрузку без очереди, хвастаясь перед другими водителями.
Одним водителям всё подробно рассказываем, других - игнорируем и не отвечаем на элементарные вопросы.
Все это порождало хаос в работе диспетчера и водителей, конфликты между людьми: между водителями и диспетчером, между самими водителями.
Анализ проблем показал, что узким местом на заводе является рабочее место диспетчера. Пропускную способность отгрузки можно увеличить без капитальных затрат, а с помощью автоматизации.
Нарисовались следующие задачи, которые были решены
Ускорить регистрацию прибывших на погрузку водителей.
Ускорить выдачу диспетчером номерных пломб и магнитных карт для водителей.
Развести машины по времени прибытия на завод.
Упорядочить очередь прибывших на погрузку машин.
Ускорить взвешивание машин до и после погрузки.
Привести в порядок интерфейс рабочего место диспетчера в ERP.
Убрать у диспетчера второй монитор, журналы, калькулятор и фломастеры.
На решение задач и автоматизации, которые дали наибольший эффект ~ 2 месяца с учетом покупки и настройки оборудования, закупки партий номерных пломб со штрихкодами, написания ТЗ и других связанных процессов.
Рабочее место диспетчера преображалось по мере готовности: первым появился сканер штрихкодов, поочередно убирались журналы, калькулятор и фломастеры, менялось рабочее место в ERP, последним убрали второй монитор.
На гифке сразу виден результат преобразований (автоматическая очередь машин в новом рабочем месте диспетчера в ERP).
Время "обслуживания" диспетчером одной машины сократилось в 10 раз
Автоматическая очередь машин через 1 КПП для 3-х точек отгрузки на заводе.
Автоматическое управление из ERP взвешиванием на промышленных весах.
Вся информация выведена на 1 экран 1 монитора пользователя.
Выдача номерных пломб и магнитной карты водителю с помощью сканера штрихкодов за 5 секунд.
Печать комплекта отгрузочных накладных диспетчером за 5 секунд.
Рабочее место диспетчера без журналов, калькулятора и фломастеров.
Почему мы установили диспетчеру сканер штрихкодов вместо считывателя магнитных карт, которые уже использовались на заводе? Все дело в номерных пломбах, удобстве и скорости работы для диспетчера.
Так выглядят номерные пломбы для выдачи водителю:
Приходят в коробках по 10 тыс. шт. и соединены друг с другом пластиковыми "ножками" (особенность изготовления).
Изначально был только номер, затем мы заказали с нанесением штрихкодов.
Штрихкод просто кодирует номер самой пломбы.
Чтобы диспетчеру было удобно одновременно выдавать номерные пломбы и магнитные карты, не путаясь в устройствах считывания, мы на магнитные карты наклеили штрихкоды с номером.
Таким образом, диспетчер перед выдачей водителю сканирует номерные пломбы и магнитные карты на одном сканере штрихкодов и делает это машинально, не задумываясь.
Чтобы сканер различал штрихкоды, мы кодируем первый знак: 1 - штрихкод номерной пломбы, 2 - штрихкод магнитной карты.
Мы доработали подсистему распознавания штрихкодов, чтобы номерные пломбы не нужно было расцеплять до сканирования, и сканировать несколько раз без "задвоения" номеров штрихкодов.
ГЛАВНЫЙ РЕЗУЛЬТАТ: пропускная способность отгрузки продукции автотранспортом на заводе увеличена в 2 раза без капитальных затрат.
Пример движения очереди машин в ERP (скриншоты)
Подробнее, о том, что для этого было сделано, читайте далее...
Электронная очередь для грузового автотранспорта
Фактически очередь начинает формироваться на этапе приема заказов:
> с нашей доставкой, клиент указывает только дату и время выгрузки по адресу доставки.
> на самовывозе, клиент указывает только дату и время погрузки на заводе.
Клиентский сервис: когда завод принял заказ, то мы должны соблюдать время погрузки и выгрузки машин, не допускать простоев автотранспорта и срыва поставок клиентам.
Конкурентное преимущество: мы поддерживаем такой высокий уровень сервиса, чтобы клиенты могли получить продукцию завода: "день в день" - для регионов до 300 км, на следующий день - для регионов до 600 км, и через день - для регионов свыше 600 км.
Существующие ограничения на заводе при отгрузке в автотранспорт
Разная продукция завода отгружается в разные часы в течение суток.
Скорость отгрузки продукции на заводе не более 6 машин в час на 1 точку погрузки.
Один вид продукции отгружается с 2-х точек погрузки, второй - с одной точки.
Одновременно на заводе могут находиться не более 8 грузовых машин на всех точках погрузки.
Все машины заезжают на завод и выезжают с завода через 1 КПП и одного диспетчера в смену.
Пример настроек в ERP по действующим ограничениям
При расчете свободного времени отгрузки на заводе также учитывается расстояние до пункта выгрузки у клиента и средняя скорость движения грузового автомобиля.
Для некоторых видов продукции учитывается суточный лимит объема отгрузки вместо ограничения по количеству машин в час.
Экранная форма заказа клиента в ERP это тоже волшебный интерфейс (если сравнить со стандартной формой). Вся информация видна сразу, важная - имеет акценты (цвета, индикаторы, расшифровки).
В какой момент формируются 3 разные очереди в ERP
Заказ клиента принят 21.01.2021 в 11:14.
Расстояние от завода до пункта разгрузки у клиента 630 км.
Чтобы доставить заказ клиенту 22.01.2021 к 8:00, машина должна приехать на завод для погрузки 21.01.2021 не позднее 15:00 - это плановая очередь погрузки.
Когда машины приезжают на завод для погрузки - это фактическая очередь прибытия.
По плановому времени погрузки по заказу и фактическому времени прибытия машин на завод строится реальная очередь на отгрузку.
Способы регистрация прибытия водителей на заводе:
через диспетчера
через уличный терминал
через чат-бот Telegram (подробнее в четвертой части)
через распознавание гос. номера машины (в планах на этот год)
Пример регистрации водителей через диспетчера в ERP
Машины, которые фактически находятся на погрузке на заводе.
Очередь машин на погрузку по статусам:
- кто еще не прибыл на завод (НЕ ПРИБЫЛ).
- кто прибыл и ожидает своей очереди (В ОЧЕРЕДИ).
- кто прибыл и автоматически приглашен на погрузку (К ПОГРУЗКЕ).
Динамические данные двух промышленных весов (показ только у диспетчера).
Изображение с двух камер на точках погрузки на заводе.
Пример регистрации водителей через уличный терминал на заводе
Сенсорный антивандальный монитор 24" российского производства (широкоформатный 16:9, TFT TN, 1920х1080, углы обзора 160/160), установлен на КПП завода.
Монитор без собственного ПО для подключения к любому ПК, с особыми характеристиками яркости (1000 кд/м2) и температурного режима (-30/+30), в защищенном корпусе (сталь 2 мм) c закаленным стеклом (4 мм) и весом ~ 20 кг.
Монитор подключен к системному блоку, на котором автоматически запускается ERP и разработанный нами интерфейс для самостоятельной регистрации прибытия водителей на погрузку.
Таймер обратного отсчета на экране монитора мотивирует водителя выполнять действия быстрее, чтобы не задерживать очередь у терминала.
Этот кейс также относится к теме оживления железа (оживление с помощью разработанного ПО для автономной работы в составе единой информационной системы), но здесь подробно рассматриваться не будет.
Пример регистрации водителей через чат-бот Telegram
Команда прибытия на погрузку в чат-боте Telegram.
Уведомление водителя с подтверждением времени прибытия.
Чат-бот для водителей в Telegram интегрирован с ERP в режиме онлайн и работает автоматически по заданным сценариям (подробнее в четвертой части).
Как происходит автоматический вызов водителя на погрузку из очереди:
Способ регистрации прибытия | Способ вызова на погрузку |
через диспетчера | уличное LED-табло и SMS |
через уличный терминал | уличное LED-табло и SMS |
через чат-бот Telegram | уличное LED-табло и чат-бот Telegram |
через распознавание гос. номера (в плане) | уличное LED-табло и SMS (в плане) |
Пример приглашения водителей на погрузку по SMS
Пример приглашения водителя на погрузку в чат-боте Telegram
На скриншоте ниже видно историю взаимодействия водителей с чат-ботом Telegram в интерфейсе ERP (подробнее в четвертой части).
Водитель (1) нажал команду прибытия в чат-боте (2). Когда пришла очередь, чат-бот вызвал водителя к погрузке (3).
Пример приглашения водителей через уличное Led-табло
Размер каждой LED-панели примерно 1,5 х 2 метра.
LED-панели развернуты на 2 стороны стоянки грузовых автомобилей перед заводом.
И если SMS или уведомление в чат-бот Telegram отправляется однократно, то приглашение на уличное LED-табло может выводиться несколько раз в соответствии с тем, как меняется автоматическая очередь в ERP:
Первый вызов и ожидание водителя в течение 5 минут.
Второй и последующие вызовы через каждые 5 минут, после вызова на погрузку следующего по очереди водителя и окончания погрузки очередной машины на заводе.
Таким образом, очередь на LED-табло постоянно автоматически обновляется и к погрузке по очереди вызываются разные водители из числа прибывших на завод.
Оживление LED-табло и автоматическое управление из ERP
Уличные LED-панели были куплены еще до начала работ по комплексной автоматизации рабочего места диспетчера, взамен старого (с которым раньше работали диспетчеры через программу для ручного вывода строк).
Вместе с LED-панелями производитель предоставил программу для вывода строк на табло.
После реализации автоматической очереди погрузки в ERP, логично, что информация на табло должна выводиться также автоматически.
Нам повезла, что изготовитель нашел документ с описанием протокола: описание формата пакетов второго уровня, вывода данных по строкам и столбцам, и пример одной функции подсчета контрольной суммы.
Пример 3-х страниц с описанием протокола
С программистом 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-х промышленных весах на заводе. Напишите в комментариях, если вам интересно узнать об этом подробнее.
Спасибо, что дочитали до конца!
avl33
Кармы поставить плюс нет — извини, НО пишу здесь, потому что не могу не порадоваться за качественный и грамотный подход к самому процессу выявления и анализа проблем.
Поездка за 150 км к пользователю вообще считаю героизмом, поскольку на своих рабочих местах подчиненных за 500м. палкой выгонять надо сходить, особенно теперь — короновирус же :)
E_BEREZIN Автор
Спасибо!
Эта поездка была не единственной) А на этапе запуска новой системы в эксплуатацию, мне пришлось отвезти туда конкретного программиста, который выполнял разработку в ERP.
Я ему обещал, что мы не поедем обратно, пока не доведём до нормального состояния интерфейс и стабильность системы.
За тот 15-часовой рабочий день программист на месте сделал гораздо больше, чем из офиса за неделю. Когда он увидел конфликты диспетчера с водителями из-за багов в системе, агрессивных и уставших от стресса людей, его мотивация привести все в порядок была очень высокая.
И когда мы убедились, что система действительно работает, ближе у полуночи поехали обратно:)
iiwabor
Поставил плюс, хорошее грамотное изложение.
Особенно понравился лайфхак #2. Полученные честные данные о работе системы от ее непосредственных пользователей на нижнем уровне, без фильтрации этих данных их руководством — заставляют взглянуть на это несовершенный мир без розовых очков. Несколько раз оказывалось, что наши благие намерения по автоматизации технологических операций, которые должны были бы облегчать работу операторов, на самом деле создают им только проблемы и неудобства.
E_BEREZIN Автор
Спасибо!
Вы все верно написали, непосредственный руководитель диспетчеров особо не вникал в процессы, а предложением было увеличить количество точек отгрузки на заводе и сделать ещё одно КПП