Все статьи

Статья

Реверс-инжиниринг

Сказ о том, как турецкий ростер с кривым софтом обрусел и стал работать как положено с помощью простого советского Читать далее...


Сказ о том, как турецкий ростер с кривым софтом обрусел и стал работать как положено с помощью простого советского Читать далее...

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

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

Фабула

Обжарочный цех ребят

Ранее, в предыдущей статье, я писал, что ездил на обучение и пусконаладку нового Kuban Supreme v2 к ребятам, а еще раньше летал в Измир на завод к туркам — с экскурсией и рекомендациями.

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

Самое большое разочарование — это, конечно же, софт.

Задумка хорошая:

  • Включить в панель все инструкции по обслуживанию оборудования, добавить счетчики часов и подключить ко всему этому напоминалки, чтобы обжарщик не пропускал ТО.

В целом работает.

  • Логгер с профилями и простым складским учетом — для того, чтобы можно было включать автоповторение.

В реальности автоповторение кривое: ростер либо прерывает запись по достижении конечной температуры, либо не дает во время обжарки смотреть прирост температуры, время и процент развития. Ничего не говорю о визуальной умеренно-вырвиглазной реализации UX/UI. Фоток не будет — не счел нужным запечатлеть.

  • UX/UI не продуман для удобного использования. Хоть экран и сенсорный, вызовы клавиатуры кривые. Не очевидно, что есть SV, которое ограничивает максимальную температуру, потому что эта графа не в основных настройках, а вшита по клику на температуру зерна.
  • Склад зеленого зерна очень урезанный.
  • Нет подключения к Cropster/Artisan для ведения нормальных логов обжарки и учета сырья.
  • Не всегда регулировки нормально отрабатывают: нет сообщений об ошибке, если что-то не сработало.

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

Решение


Разворачиваем хакер-штаб

В общем, задача понятна: панель общается с PLC, которая отвечает за управление ростером, через протоколы S7 и Modbus. Значит, нужно:

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

В целом это не заняло много времени: карта составлена, логика работы понятна. Устанавливаем Artisan на панель, вводим настройки вручную — тестируем.

Работает все, что нужно, но по адресу горелки идет перезапись поверх команд, которые передает Artisan. Значит, есть протокол защиты.

Закрываем родной софт — все работает. Значит, был запущен фоновый процесс, который перетирал команды.

Дополнительно выяснилась механика работы вытяжки.

Во время моей поездки в Измир Сахин, директор по развитию компании, упомянул, что ему очень нравится Giesen, поэтому они встроили датчик давления в паскалях — по аналогии.

Датчик сам по себе дает только информацию, но никак не влияет на работу связки PLC — частотник двигателя.

Поэтому при запуске с Artisan я столкнулся с проблемой: значения выставляются не в паскалях, как в родном софте, а в процентах.

Значит, надо составить карту давления ростера при определенных оборотах двигателя вытяжки.

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

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

Вуаля, панель с артисаном, полностью автономная.

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

Следом я сделал протокол прогрева и остужения для удобства.

Последним шагом было подключение ноутбука к ростеру — по запросу обжарщика, потому что ему удобнее работать с компьютера.

Пробные обжарки — и все готово.

Красота

Дополнительно откалибровал горелку под нормальный рабочий диапазон, чтобы можно было управляемо работать в диапазоне 0–100% горелки и получить больше контроля над обжаркой.

Собственно, и все.

Вдогонку — нижегородский антураж.

Баблти Всё

Пловные дела

Кросевое

Спасибо ребятам из Медник Кофе за гостеприимство и хороших обжарок!

P. S. Работа в консалтинге никогда не бывает одинаковой. Всегда есть какие-то интересные нетривиальные задачи, которые можно решить разными путями — с разным качеством результата.

За это я и люблю заниматься такой ерундой.

Пока не буду освещать то, чем сейчас очень активно занимаюсь, но очень скоро вы все узнаете.

Ждите анонсов.