В одном из проектов понадобилось намотать под сотню трансформаторов. Это стало поводом пересмотреть нелюбовь к моточным изделиям, которая тянулась ещё со школы, где, помогая в кабинете физики, вручную перематывал большую катушку для опытов Фарадея. Зелёную, как сейчас помню.
Поэтому вместо поиска трансформаторного завода меня манил ящик с деталями от старых проектов.
Видео
Проектирование
Быстрый поиск показал, что большая часть комплектующих в нём уже есть. Нашёлся даже шаговый мотор с винтом на ось укладчика, который достался в наследство с 3Д принтером.
Пока шли недостающие драйверы и шаговый мотор со сквозным валом, прикидывал конструкцию во Fusion 360 и печатал детали импровизированного укладчика.
На тот момент была идея установить энкодер с другой стороны вала, чтобы подкрутить катушку рукой на паузе не сбивая счёт. Идея оказалась не востребованной и осталось просто колёсико.
Когда все детали оказались на столе, оставалось просто собрать всё в одну конструкцию.
Так за выходные получилось Мотало.
Управление
Сразу встал вопрос с управлением. Рядом с Ардуино нашёлся стенд с ПЛК Siemens, который показался более интересной альтернативой. Тем более в нём уже был экран для простого пользовательского интерфейса. Ещё нашлась плата управления 3D принтером под Marlin, но экран победил.
Первый запуск показал работоспособность изделия: катушка мотается, проволока укладыватся, но держатель катушки, казавшийся ровным на экране, в реальности оказался не таким из-за своей конструкции и особенностей FDM печати.
Вторая версия держателя, спроектированная под фотополимерный принтер, получилась удачнее. Появилась поддержка катушки с другой стороны: сверло, как ровный калиброванный вал нашедшийся под рукой, вращается в подшипниках и пружиной зажимает катушку между двумя половинами держателя. Это сильно улучшило повторяемость установки и стабильность катушки на высоких скоростях.
Программирование
ПЛК можно рассматривать как большую Ардуину в которой решены вопросы корпусирования, защиты портов ввода-вывода и связи с внешним миром. Как Controllino, только для промышленного применения. Вместо breadboard и «DuPont» — плоская отвёртка и провода с наконечниками.
В среде TIA Portal, через которую происходит программирование ПЛК, многие параметры конфигурируются мышкой, как в CubeMX от STM. Настраивается не только низкоуровневая периферия, но и высокоуровневые объекты-«библиотеки».
Для намотки потребовалось два таких технологических объекта для управления осями. В каждом объекте выбирается выход, куда подключён драйвер шагового двигателя, количество импульсов на оборот и задаются динамические характеристики. Даже джерки из коробки.
Программирование похоже на программирование микроконтроллеров. Только вместо C — Паскале-подобный МЭК язык. Например Blink в одну строчку:
"LED_Out" := "Clock_1Hz";
LED_Out — это выход ПЛК, а Clock_1Hz — системная переменная типа Bool, которая меняет своё значение раз в секунду.
Вначале код намотки был тривиален — после каждого слоя расчёт движения последующего и запуск на исполнение. Но в процессе эксплуатации захотелось дополнительных возможностей: отвода укладчика с одновременным медленным поворотом катушки в обратном направлении для более удобного отрезания и закрепления проволоки, режима ручной укладки тейпа и замедления на сменах направления движения укладчика. Показалось интересным добавить функцию растягивания неполного слоя на два, чтобы конец обмотки оказался там же, где и начало для соединения с контактами.
После таких доработок изначальный код превратился в стейт-машину под сотню строк.
CASE "Control_DB".state OF
// …
"STATE_IDLE":
IF "Control_DB".doRun THEN
"Control_DB".doRun := FALSE;
"Control_DB".state := "STATE_WINDING_PREPARE";
"Control_DB".isAxisEnable := TRUE;
ELSIF "Control_DB".doSetHome THEN
"Control_DB".doSetHome := FALSE;
#home := true;
END_IF;
"STATE_WINDING_PREPARE":
#_rodPosition_mm := 0;
#_rodVelocity_mms := 2;
#_coilRotations := 0;
#_coilVelocity_rps := 1;
#_doExecuteCoil := TRUE;
#home := true;
"Control_DB".state := "STATE_WINDING_RUN_NEXT";
"STATE_WINDING":
// …
"STATE_WINDING_RUN_NEXT":
// …
"STATE_MOVE_ROD_PREPARE":
// …
"STATE_MOVE_ROD":
// …
"STATE_TAPING_PREPARE":
// …
"STATE_TAPING":
// …
"STATE_RETURN_ROD_PREPARE":
// …
"STATE_RETURN_ROD":
// …
END_CASE;
А ведь ещё хочется автоматического закрепления и отрезания проволоки на выводах. Но это пока больше вопрос механики.
Интерфейс для экрана собирается мышкой, почти как WinForms в VisualStudio. Похожие свойства и события в элементах управления:
В получившемся интерфейсе задаётся количество витков, диаметр проволоки, ширина катушки и скорость намотки. Также есть кнопки остановки, запуска, начала намотки тейпа и обнуления.
Мотало в действии
Теперь нужно ввести параметры намотки, вставить корпус трансформатора, закрепить проволоку и запустить намотку. А в конце сделать несколько оборотов специальной лентой.
Режим с растягиванием слоя на два сработал только на тонкой проволоке. На более толстой два слоя вместо одного не влезли на катушку — они не дают катушке сесть на плату.
Итоги
Укладчик делался без серьёзных исследований, поэтому не получается виток-к-витку на тонком проводе, хотя и позволяет наматывать на скорости 10-15 об/сек и получать готовый трансформатор примерно за пять минут.
Моточные изделия теперь кажутся чуть менее страшными. Но, пожалуй, нужно всё-таки искать завод.
В качестве послесловия
Как так же просто сделать аналогичное устройство на отечественных аналогах — пока не знаю.
Надеялся на ОВЕН, но у них в ПЛК нет похожих удобных штук для управления осями (хотя, на ПЛК 110 можно извернуться и сделать руками в прерывании), а о разрабатываемом модуле управления перемещением МП210-601 поддержка сказала, что приоритеты сменились и планов по выпуску оного пока нет. И даже в АСУТП-шной группе в Телеграм не нашлось подходящего ответа. Если кто-то знает удобную штуку для управления осями — поделитесь, пожалуйста, в комментариях.
Автор:
TehDmitry