![](https://habrastorage.org/getpro/habr/upload_files/983/607/881/98360788105e45667b364d157f3fe580.png)
В одном из проектов понадобилось намотать под сотню трансформаторов. Это стало поводом пересмотреть нелюбовь к моточным изделиям, которая тянулась ещё со школы, где, помогая в кабинете физики, вручную перематывал большую катушку для опытов Фарадея. Зелёную, как сейчас помню.
Поэтому вместо поиска трансформаторного завода меня манил ящик с деталями от старых проектов.
Видео
Проектирование
Быстрый поиск показал, что большая часть комплектующих в нём уже есть. Нашёлся даже шаговый мотор с винтом на ось укладчика, который достался в наследство с 3Д принтером.
Пока шли недостающие драйверы и шаговый мотор со сквозным валом, прикидывал конструкцию во Fusion 360 и печатал детали импровизированного укладчика.
![Первая версия механики Первая версия механики](https://habrastorage.org/getpro/habr/upload_files/196/1ba/bc2/1961babc2cacac2d6d579b0ae108dfad.png)
На тот момент была идея установить энкодер с другой стороны вала, чтобы подкрутить катушку рукой на паузе не сбивая счёт. Идея оказалась не востребованной и осталось просто колёсико.
Когда все детали оказались на столе, оставалось просто собрать всё в одну конструкцию.
Так за выходные получилось Мотало.
Управление
Сразу встал вопрос с управлением. Рядом с Ардуино нашёлся стенд с ПЛК Siemens, который показался более интересной альтернативой. Тем более в нём уже был экран для простого пользовательского интерфейса. Ещё нашлась плата управления 3D принтером под Marlin, но экран победил.
![](https://habrastorage.org/getpro/habr/upload_files/d51/c94/36b/d51c9436b3cd03820f79957feb46aede.jpg)
Первый запуск показал работоспособность изделия: катушка мотается, проволока укладыватся, но держатель катушки, казавшийся ровным на экране, в реальности оказался не таким из-за своей конструкции и особенностей FDM печати.
Вторая версия держателя, спроектированная под фотополимерный принтер, получилась удачнее. Появилась поддержка катушки с другой стороны: сверло, как ровный калиброванный вал нашедшийся под рукой, вращается в подшипниках и пружиной зажимает катушку между двумя половинами держателя. Это сильно улучшило повторяемость установки и стабильность катушки на высоких скоростях.
![Вторая версия механики Вторая версия механики](https://habrastorage.org/getpro/habr/upload_files/a9f/5e9/343/a9f5e93430623b663578fbd19a3002cd.png)
Программирование
ПЛК можно рассматривать как большую Ардуину в которой решены вопросы корпусирования, защиты портов ввода-вывода и связи с внешним миром. Как Controllino, только для промышленного применения. Вместо breadboard и «DuPont» — плоская отвёртка и провода с наконечниками.
![Controllino, Arduino и ПЛК S7-1200 Controllino, Arduino и ПЛК S7-1200](https://habrastorage.org/getpro/habr/upload_files/e4d/62f/8ce/e4d62f8ceb0bd8b82456787bddc644bc.jpg)
В среде TIA Portal, через которую происходит программирование ПЛК, многие параметры конфигурируются мышкой, как в CubeMX от STM. Настраивается не только низкоуровневая периферия, но и высокоуровневые объекты-«библиотеки».
Для намотки потребовалось два таких технологических объекта для управления осями. В каждом объекте выбирается выход, куда подключён драйвер шагового двигателя, количество импульсов на оборот и задаются динамические характеристики. Даже джерки из коробки.
![Настройка параметров оси Настройка параметров оси](https://habrastorage.org/getpro/habr/upload_files/e0d/686/a9f/e0d686a9fd67e3116bf404fdb70b9456.png)
Программирование похоже на программирование микроконтроллеров. Только вместо 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. Похожие свойства и события в элементах управления:
![Визуальный редактор GUI Визуальный редактор GUI](https://habrastorage.org/getpro/habr/upload_files/9d8/65b/7a5/9d865b7a5fa5d5e6a4b95dd6258d9eb9.png)
В получившемся интерфейсе задаётся количество витков, диаметр проволоки, ширина катушки и скорость намотки. Также есть кнопки остановки, запуска, начала намотки тейпа и обнуления.
Мотало в действии
Теперь нужно ввести параметры намотки, вставить корпус трансформатора, закрепить проволоку и запустить намотку. А в конце сделать несколько оборотов специальной лентой.
![](https://habrastorage.org/getpro/habr/upload_files/40b/238/28d/40b23828d67a78d9bc176c439cc5541c.gif)
Режим с растягиванием слоя на два сработал только на тонкой проволоке. На более толстой два слоя вместо одного не влезли на катушку — они не дают катушке сесть на плату.
Итоги
Укладчик делался без серьёзных исследований, поэтому не получается виток-к-витку на тонком проводе, хотя и позволяет наматывать на скорости 10-15 об/сек и получать готовый трансформатор примерно за пять минут.
Моточные изделия теперь кажутся чуть менее страшными. Но, пожалуй, нужно всё-таки искать завод.
![](https://habrastorage.org/getpro/habr/upload_files/9f0/c55/d8c/9f0c55d8c03b28fd3212f8dd5c274d03.jpg)
В качестве послесловия
Как так же просто сделать аналогичное устройство на отечественных аналогах — пока не знаю.
Надеялся на ОВЕН, но у них в ПЛК нет похожих удобных штук для управления осями (хотя, на ПЛК 110 можно извернуться и сделать руками в прерывании), а о разрабатываемом модуле управления перемещением МП210-601 поддержка сказала, что приоритеты сменились и планов по выпуску оного пока нет. И даже в АСУТП-шной группе в Телеграм не нашлось подходящего ответа. Если кто-то знает удобную штуку для управления осями — поделитесь, пожалуйста, в комментариях.