Статья
Реверс-инжиниринг
Сказ о том, как турецкий ростер с кривым софтом обрусел и стал работать как положено с помощью простого советского Читать далее...
Сказ о том, как турецкий ростер с кривым софтом обрусел и стал работать как положено с помощью простого советского Читать далее...
На майские праздники ездил доделывать свою работу, гулять по Нижегородскому кремлю и жарить шашлыки к ребятам в Медник Кофе.
Прекрасный город: очень живой и по-своему очень уютный. Такой уютный, что я моргнул на вокзале и опоздал на поезд домой, но сказ не об этом.
Фабула
Обжарочный цех ребят
Ранее, в предыдущей статье, я писал, что ездил на обучение и пусконаладку нового Kuban Supreme v2 к ребятам, а еще раньше летал в Измир на завод к туркам — с экскурсией и рекомендациями.
Что ж, результат не заставил себя долго ждать, но, к моему сожалению, какие-то решения они не дожали, какие-то отклонили, и получилось как всегда.
Самое большое разочарование — это, конечно же, софт.
Задумка хорошая:
- Включить в панель все инструкции по обслуживанию оборудования, добавить счетчики часов и подключить ко всему этому напоминалки, чтобы обжарщик не пропускал ТО.
В целом работает.
- Логгер с профилями и простым складским учетом — для того, чтобы можно было включать автоповторение.
В реальности автоповторение кривое: ростер либо прерывает запись по достижении конечной температуры, либо не дает во время обжарки смотреть прирост температуры, время и процент развития. Ничего не говорю о визуальной умеренно-вырвиглазной реализации UX/UI. Фоток не будет — не счел нужным запечатлеть.
- UX/UI не продуман для удобного использования. Хоть экран и сенсорный, вызовы клавиатуры кривые. Не очевидно, что есть SV, которое ограничивает максимальную температуру, потому что эта графа не в основных настройках, а вшита по клику на температуру зерна.
- Склад зеленого зерна очень урезанный.
- Нет подключения к Cropster/Artisan для ведения нормальных логов обжарки и учета сырья.
- Не всегда регулировки нормально отрабатывают: нет сообщений об ошибке, если что-то не сработало.
К тому же турки настолько сильно верят в свой софт, что сознательно не стали делать интеграцию со сторонними логгерами. При том что ростер вышел уже как два года назад — ни одного обновления. Это, в целом, говорит о многом.
Решение
Разворачиваем хакер-штаб
В общем, задача понятна: панель общается с PLC, которая отвечает за управление ростером, через протоколы S7 и Modbus. Значит, нужно:
- декомпилировать софт, чтобы найти адреса, по которым родной софт общается с панелью;
- понять логику общения и построить карту адресов;
- учесть протоколы безопасности и встроенные фоновые процессы.
В целом это не заняло много времени: карта составлена, логика работы понятна. Устанавливаем Artisan на панель, вводим настройки вручную — тестируем.
Работает все, что нужно, но по адресу горелки идет перезапись поверх команд, которые передает Artisan. Значит, есть протокол защиты.
Закрываем родной софт — все работает. Значит, был запущен фоновый процесс, который перетирал команды.
Дополнительно выяснилась механика работы вытяжки.
Во время моей поездки в Измир Сахин, директор по развитию компании, упомянул, что ему очень нравится Giesen, поэтому они встроили датчик давления в паскалях — по аналогии.
Датчик сам по себе дает только информацию, но никак не влияет на работу связки PLC — частотник двигателя.
Поэтому при запуске с Artisan я столкнулся с проблемой: значения выставляются не в паскалях, как в родном софте, а в процентах.
Значит, надо составить карту давления ростера при определенных оборотах двигателя вытяжки.
Я решил пойти продвинутым путем и составить сразу три карты: на холодный ростер, на прогретый ростер и на перегретый — чтобы было точнее.
После этого написал небольшое фоновое приложение, которое читало бы команды и конвертировало их в вилку поддерживаемых значений, понятную частотнику.
Вуаля, панель с артисаном, полностью автономная.
Все заработало. Немного уличной магии, тонких настроек — и уже есть автоматизация включения охладителя, миксера, продвинутые метрики, офсеты по термопарам, автоотметки и рабочее автоповторение профиля.
Следом я сделал протокол прогрева и остужения для удобства.
Последним шагом было подключение ноутбука к ростеру — по запросу обжарщика, потому что ему удобнее работать с компьютера.
Пробные обжарки — и все готово.
Красота
Дополнительно откалибровал горелку под нормальный рабочий диапазон, чтобы можно было управляемо работать в диапазоне 0–100% горелки и получить больше контроля над обжаркой.
Собственно, и все.
Вдогонку — нижегородский антураж.
Баблти Всё
Пловные дела
Кросевое
Спасибо ребятам из Медник Кофе за гостеприимство и хороших обжарок!
P. S. Работа в консалтинге никогда не бывает одинаковой. Всегда есть какие-то интересные нетривиальные задачи, которые можно решить разными путями — с разным качеством результата.
За это я и люблю заниматься такой ерундой.
Пока не буду освещать то, чем сейчас очень активно занимаюсь, но очень скоро вы все узнаете.
Ждите анонсов.