Синхронизация двух шаговых двигателей на одной оси MACH3

Mach, популярные и не очень CAD, CAM. Обсуждение и разработка программ для управления станками.
Аватара пользователя
Kinghandles
Новичок
Сообщения: 32
Зарегистрирован: 04 авг 2018, 21:23
Репутация: 1
Настоящее имя: Владимир
Откуда: Санкт- Петербург
Контактная информация:

Синхронизация двух шаговых двигателей на одной оси MACH3

Сообщение Kinghandles »

Форумчане, добрый день !
Подскажите, такой вопрос:
Имеется станок 2400 на 1600
По Оси Х стоят два шаговых двигателя (Х с подчиненной осью А)
Очень хотелось бы настроить синхронизацию этих двигателей, на случай, если произойдет пропуск шага на одном из них.
ШД разведены, и программно, через MACH3 подчиненны.
Датчики разведены по разным пинам. Ось А свой датчик, Ось Х свой датчик.

В моем понимании, это должно происходить следующим образом:
1) Нажимаем на кнопку HOME.
2) Оба двигателя начинают вращаться в сторону датчиков.
3) В случае перекоса портала, один из моторов должен доехать до своего датчика и остановиться, второй мотор должен ехать дальше, пока не доедет до своего датчика, после того, как оба двигателя доехали до своих датчиков, должны, одновременно, откатиться на определенное расстояние (допустим 5мм)

На данный момент, реализовать такой алгоритм действий - не получается. И выходит, следующее:
0) Ось А не реагирует на свой датчик.
1) Нажимаем на кнопку HOME.
2) Оба двигателя начинают вращаться в сторону датчиков.
3) Ось Х доезжает до своего датчика и оба мотора останавливаются, и откатываются назад, соответственно, в случае, если произошел перекос портала, и ось А захочет приехать первой до своего датчика(на который она не реагирует), то она не остановиться, а поедет за пределы станка, пока ось Х не доедет до своего датчика. Или же, Ось Х приедет первой, а ось А не доедет до своего датчика, и соответственно, перекос не исправится.
4) Ось А начинает отдельно ехать на свой датчик( ось Х стоит ) и косить портал. Реакции на датчик нет. спасет только ЕСТОП

Настройка Ось Х и оси А на один датчик ситуацию не меняет. В любом случае, останавливаются оба мотора, что происходить не должно. Возможно надо менять скрипт кнопки HOME ( чего, к сожалению, без посторонней помощи, я сделать не смогу, так как, его не изучал )

На борту:
Шаговые двигатели Leadshine 12 N.М.(+86CM120) - 4шт.
Драйвера Leadshine AM882H - 4шт.
Контроллер MACH3-USB на 5 осей - 1шт.
Блок питания 70V, 10А - 4шт.
Датчики ИНДУКТИВНЫЙ ДАТЧИК SN04-N, КЛАСС A - 8шт.

На данный момент в тестовом режиме подключены только два датчика, так как, с остальными осями все понятно, главное разобраться с ось Х и ее подданной ось А

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

Заранее, благодарен за любые комментарии.
Enot_1
Мастер
Сообщения: 1353
Зарегистрирован: 28 апр 2015, 00:12
Репутация: 240
Настоящее имя: Arkadiy
Откуда: Краснодар
Контактная информация:

Re: Синхронизация двух шаговых двигателей на одной оси MACH3

Сообщение Enot_1 »

Всё работет корректно в стоке на мач3. Два двигателя, два датчика, да думаю и с одним получится. Оба едут на датчики, первый касается и откатывается назад, потом едет второй мотор на свой датчик или на этот же, первый стоит.
Порядок поиска базы по осям установили в настройках баз и ограничений?
Аватара пользователя
FLUKE
Мастер
Сообщения: 843
Зарегистрирован: 11 мар 2013, 21:18
Репутация: 187
Настоящее имя: Сергей
Откуда: Смоленск
Контактная информация:

Re: Синхронизация двух шаговых двигателей на одной оси MACH3

Сообщение FLUKE »

На сколько помню концевик для А должен присутствовать и назначен как Home. В окне диагностики, при нажатии на A Home срабатывает? На М4?
Фотки окна General Config и где входа, с прописанным концевиком А.
Кнопка Home у меня имеет следующий скрипт, один в один тебе он не подойдёт.

Код: Выделить всё

Message("Home All Axis Pressed")

If GetOEMLED(23) Then 'Turn Off Softlimits
	DoOEMBUTTON(119)
End If 

code "g28.1 g91 x0y0"
While IsMoving()
Wend

Code "G1 X72 Y10 F5000"
While IsMoving()
Wend

Sleep(100)
DoOEMButton (1008)
DoOEMButton (1009)
If Not GetOEMLED(23) Then 'Turn on softlimits
DoOEMBUTTON(119)
End If         

Code "G90"
While IsMoving()
Wend
  
Аватара пользователя
Kinghandles
Новичок
Сообщения: 32
Зарегистрирован: 04 авг 2018, 21:23
Репутация: 1
Настоящее имя: Владимир
Откуда: Санкт- Петербург
Контактная информация:

Re: Синхронизация двух шаговых двигателей на одной оси MACH3

Сообщение Kinghandles »

Enot_1 писал(а):Всё работет корректно в стоке на мач3. Два двигателя, два датчика, да думаю и с одним получится. Оба едут на датчики, первый касается и откатывается назад, потом едет второй мотор на свой датчик или на этот же, первый стоит.
Порядок поиска базы по осям установили в настройках баз и ограничений?

Они должны одновременно двигаться, если они будут двигаться по очереди, это поломает портал.

Одновременно стартуют, каждый доезжает до своего и останавливается(не откатывается, пока не доедет второй шд до своего) как только второй доезжает до своего датчика, они оба откатываются.
Аватара пользователя
Kinghandles
Новичок
Сообщения: 32
Зарегистрирован: 04 авг 2018, 21:23
Репутация: 1
Настоящее имя: Владимир
Откуда: Санкт- Петербург
Контактная информация:

Re: Синхронизация двух шаговых двигателей на одной оси MACH3

Сообщение Kinghandles »

FLUKE писал(а):На сколько помню концевик для А должен присутствовать и назначен как Home. В окне диагностики, при нажатии на A Home срабатывает? На М4?
Фотки окна General Config и где входа, с прописанным концевиком А.
Кнопка Home у меня имеет следующий скрипт, один в один тебе он не подойдёт.

Код: Выделить всё

Message("Home All Axis Pressed")

If GetOEMLED(23) Then 'Turn Off Softlimits
	DoOEMBUTTON(119)
End If 

code "g28.1 g91 x0y0"
While IsMoving()
Wend

Code "G1 X72 Y10 F5000"
While IsMoving()
Wend

Sleep(100)
DoOEMButton (1008)
DoOEMButton (1009)
If Not GetOEMLED(23) Then 'Turn on softlimits
DoOEMBUTTON(119)
End If         

Code "G90"
While IsMoving()
Wend
  
Сегодня, ближе к вечеру, доберусь до станка и настроек, все сфоткаю и скину сюда.
Аватара пользователя
Kachik
Мастер
Сообщения: 1406
Зарегистрирован: 13 янв 2017, 16:22
Репутация: 308
Настоящее имя: Сергей
Откуда: Питер
Контактная информация:

Re: Синхронизация двух шаговых двигателей на одной оси MACH3

Сообщение Kachik »

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

Нашел: Модуль выравнивания портала станка с чпу любого типа #1
Enot_1
Мастер
Сообщения: 1353
Зарегистрирован: 28 апр 2015, 00:12
Репутация: 240
Настоящее имя: Arkadiy
Откуда: Краснодар
Контактная информация:

Re: Синхронизация двух шаговых двигателей на одной оси MACH3

Сообщение Enot_1 »

Kinghandles писал(а):не откатывается, пока не доедет второй шд до своего
Я процесс описал как есть . А там смотрите, проверяйте.
Аватара пользователя
Kinghandles
Новичок
Сообщения: 32
Зарегистрирован: 04 авг 2018, 21:23
Репутация: 1
Настоящее имя: Владимир
Откуда: Санкт- Петербург
Контактная информация:

Re: Синхронизация двух шаговых двигателей на одной оси MACH3

Сообщение Kinghandles »

FLUKE писал(а):На сколько помню концевик для А должен присутствовать и назначен как Home. В окне диагностики, при нажатии на A Home срабатывает? На М4?
Фотки окна General Config и где входа, с прописанным концевиком А.
Кнопка Home у меня имеет следующий скрипт, один в один тебе он не подойдёт.

Код: Выделить всё

Message("Home All Axis Pressed")

If GetOEMLED(23) Then 'Turn Off Softlimits
	DoOEMBUTTON(119)
End If 

code "g28.1 g91 x0y0"
While IsMoving()
Wend

Code "G1 X72 Y10 F5000"
While IsMoving()
Wend

Sleep(100)
DoOEMButton (1008)
DoOEMButton (1009)
If Not GetOEMLED(23) Then 'Turn on softlimits
DoOEMBUTTON(119)
End If         

Code "G90"
While IsMoving()
Wend
  

Вот такие настройки у меня в mach3
Пробовал по всякому настраивать датчики, результата 0
home slave with master axis галочку ставил, тоже смысла нет
При Хоминге Оси Х, моторы реагируют только на датчик оси Х. и останавливаются Оба. Ось А не реагирует на свой датчик.
Мне кажется, это можно решить написанием нового кода в кнопке Хоминг, чего соответственно я не умею делать, пока буду учить, пару месяцев пройдет точно (

При нажатии на датчик A Home ( срабатывает М4) но при хоминге, Ось а на датчик М4 не реагирует.
Вложения
IMG_20181207_190742.jpg (10457 просмотров) <a class='original' href='./download/file.php?id=152306&sid=395152f963ea5f07ac163615c630db5b&mode=view' target=_blank>Загрузить оригинал (6.28 МБ)</a>
IMG_20181207_190755.jpg (10457 просмотров) <a class='original' href='./download/file.php?id=152307&sid=395152f963ea5f07ac163615c630db5b&mode=view' target=_blank>Загрузить оригинал (5.96 МБ)</a>
IMG_20181207_190759.jpg (10457 просмотров) <a class='original' href='./download/file.php?id=152308&sid=395152f963ea5f07ac163615c630db5b&mode=view' target=_blank>Загрузить оригинал (4.31 МБ)</a>
IMG_20181207_190814.jpg (10457 просмотров) <a class='original' href='./download/file.php?id=152309&sid=395152f963ea5f07ac163615c630db5b&mode=view' target=_blank>Загрузить оригинал (6.88 МБ)</a>
IMG_20181207_190821.jpg (10457 просмотров) <a class='original' href='./download/file.php?id=152310&sid=395152f963ea5f07ac163615c630db5b&mode=view' target=_blank>Загрузить оригинал (6.54 МБ)</a>
IMG_20181207_191559.jpg (10457 просмотров) <a class='original' href='./download/file.php?id=152311&sid=395152f963ea5f07ac163615c630db5b&mode=view' target=_blank>Загрузить оригинал (4.03 МБ)</a>
enderukov
Новичок
Сообщения: 8
Зарегистрирован: 04 июл 2016, 11:25
Репутация: 1
Настоящее имя: Александр
Контактная информация:

Re: Синхронизация двух шаговых двигателей на одной оси MACH3

Сообщение enderukov »

Добрый день, как я понял у вас настроено правильно, кроме самого скрипта.
Стандартная последовательность такая:
DoButton (22)
DoButton (23)
DoButton (24)
DoButton (25)

Переводя на человечий язык:
X
Y
Z
A

Чтобы каждая ось возвращалась по своему датчика нужно поставить так:
DoButton (24)
DoButton (23)
DoButton (22)
DoButton (25)

т.е. Поднимаем ось Z, возвращаем Y, а потом X вместе с A ведем к своим датчикам.
Тогда будет возвращаться вместе.
Еще в чем может быть проблема - Mach3 USB контроллер.
Встречал такое, что некоторые USB контроллеры усердно отказываются это делать. Скиньте, фото контроллера, руководство может я как раз с таким и работал.
Аватара пользователя
Kinghandles
Новичок
Сообщения: 32
Зарегистрирован: 04 авг 2018, 21:23
Репутация: 1
Настоящее имя: Владимир
Откуда: Санкт- Петербург
Контактная информация:

Re: Синхронизация двух шаговых двигателей на одной оси MACH3

Сообщение Kinghandles »

enderukov писал(а):Добрый день, как я понял у вас настроено правильно, кроме самого скрипта.
Стандартная последовательность такая:
DoButton (22)
DoButton (23)
DoButton (24)
DoButton (25)

Переводя на человечий язык:
X
Y
Z
A

Чтобы каждая ось возвращалась по своему датчика нужно поставить так:
DoButton (24)
DoButton (23)
DoButton (22)
DoButton (25)

т.е. Поднимаем ось Z, возвращаем Y, а потом X вместе с A ведем к своим датчикам.
Тогда будет возвращаться вместе.
Еще в чем может быть проблема - Mach3 USB контроллер.
Встречал такое, что некоторые USB контроллеры усердно отказываются это делать. Скиньте, фото контроллера, руководство может я как раз с таким и работал.

Я убрал в своем скрипте DoButton() который отвечает за Ось А, иначе, после того, как все отхомятся, Ось А едет отдельно от Оси Х и ломает портал
Вот ссылка на эту плату, там же есть кое какая информация по ней.

https://kitaez-cnc.com/magazin/product/ ... op2-tabs-2
Аватара пользователя
FLUKE
Мастер
Сообщения: 843
Зарегистрирован: 11 мар 2013, 21:18
Репутация: 187
Настоящее имя: Сергей
Откуда: Смоленск
Контактная информация:

Re: Синхронизация двух шаговых двигателей на одной оси MACH3

Сообщение FLUKE »

http://www.cnc-club.ru/forum/viewtopic.php?f=3&p=131604
На контроллере ESS у меня с RefCombination все работает как надо. Т.е., все оси едут одновременно, каждая останавливается своим концевиком, как только все оси наедут на свои концевики - происходит отъезд на заданную в скрипте длину.
На контроллере USS RefCombination не работает, совсем. Я использую code "g28.1 g91 x0y0". С ним едут сначала Х и А, потом У. Причём Х и А хомятся довольно странно. Портал движется пока какая-нибудь ось не наедет первой на концевик, съезжает с него, потом хомится оставшаяся ось, съезжает с концевика, потом Х и А отъезжают на заданную длину.
Аватара пользователя
Kinghandles
Новичок
Сообщения: 32
Зарегистрирован: 04 авг 2018, 21:23
Репутация: 1
Настоящее имя: Владимир
Откуда: Санкт- Петербург
Контактная информация:

Re: Синхронизация двух шаговых двигателей на одной оси MACH3

Сообщение Kinghandles »

Kinghandles писал(а):DoButton (24)
DoButton (23)
DoButton (22)
DoButton (25)
перестановка скрипта, ко сожалению, ничего не дала.
по прежнему, реакция идет только на датчик для оси Х, и останавливает ось Х и ось А.
Аватара пользователя
Kinghandles
Новичок
Сообщения: 32
Зарегистрирован: 04 авг 2018, 21:23
Репутация: 1
Настоящее имя: Владимир
Откуда: Санкт- Петербург
Контактная информация:

Re: Синхронизация двух шаговых двигателей на одной оси MACH3

Сообщение Kinghandles »

FLUKE писал(а):RefCombination
RefCombination тоже, не работает, пробовал разные настройки этого кода, и 9 писать и пот отдельности писать.
пока в тупике, не могу понять что с этим делать.
Enot_1
Мастер
Сообщения: 1353
Зарегистрирован: 28 апр 2015, 00:12
Репутация: 240
Настоящее имя: Arkadiy
Откуда: Краснодар
Контактная информация:

Re: Синхронизация двух шаговых двигателей на одной оси MACH3

Сообщение Enot_1 »

Kinghandles писал(а):иначе, после того, как все отхомятся, Ось А едет отдельно от Оси Х и ломает портал
Она его не ломает, а выравнивает по датчикам. Для этой операции выставляем датчики, чтобы портал при хомлении вставал и работал далее перпендикулярно другой оси.
У Вас изначально всё работает правильно.
Аватара пользователя
Kinghandles
Новичок
Сообщения: 32
Зарегистрирован: 04 авг 2018, 21:23
Репутация: 1
Настоящее имя: Владимир
Откуда: Санкт- Петербург
Контактная информация:

Re: Синхронизация двух шаговых двигателей на одной оси MACH3

Сообщение Kinghandles »

Enot_1 писал(а):
Kinghandles писал(а):иначе, после того, как все отхомятся, Ось А едет отдельно от Оси Х и ломает портал
Она его не ломает, а выравнивает по датчикам. Для этой операции выставляем датчики, чтобы портал, при хоминге вставал и работал далее перпендикулярно другой оси.
У Вас изначально всё работает правильно.

Смотрите, какая ситуация: Два мотора едут в сторону датчиков, "Х" и "А", если первым приходит "Х", то все в порядке, датчик его тормознет, потом "А" отдельно дохомится и доедет до своего датчика, а если, в момент, когда они оба едут до датчиков и первым приезжает ось "А", то она не затормозит, так как не видит свой датчик.

Или же, придется вешать все датчики на один пин, тогда "А" и "Х" будут останавливаться. Но на мой взгляд это неправильно. Каждый раз, при хоминге, вне зависимости от того, есть перекос или нет, станок будет разбалтывать. Моторы будут доезжать до датчиков, останавливаться и окатываться на 5 миллиметров, а потом, ось "А" опять поедет на датчик, тем самым перекосив портал на 5 мм.(
Enot_1
Мастер
Сообщения: 1353
Зарегистрирован: 28 апр 2015, 00:12
Репутация: 240
Настоящее имя: Arkadiy
Откуда: Краснодар
Контактная информация:

Re: Синхронизация двух шаговых двигателей на одной оси MACH3

Сообщение Enot_1 »

Kinghandles писал(а):и первым приезжает ось "А", то она не затормозит, так как не видит свой датчик.
А вот это неправильно.
Настройки моторов на главной и подчинённой оси совпадают?
Проставьте требуемую последовательность хоминга осей в окне настройки баз и ограничений.
Проверьте срабатывание датчиков(металлическим предметом) и прихода сигналов в закладке диагностика. Соответствует ли выделенный пин на датчик расположению его на соответствующей оси - проделайте автонастройку датчиков в окне указания пинов(внизу этого окна есть меню для этой операции ) с помощью того же металлического предмета.
Аватара пользователя
vala
Почётный участник
Почётный участник
Сообщения: 490
Зарегистрирован: 08 окт 2013, 21:01
Репутация: 258
Откуда: Latvia
Контактная информация:

Re: Синхронизация двух шаговых двигателей на одной оси MACH3

Сообщение vala »

НОМЕ подчинённой оси должна сидеть на пине который больше ни где не за действован и всё у вас заработает.
У вас это не соблюдено.
Аватара пользователя
FLUKE
Мастер
Сообщения: 843
Зарегистрирован: 11 мар 2013, 21:18
Репутация: 187
Настоящее имя: Сергей
Откуда: Смоленск
Контактная информация:

Re: Синхронизация двух шаговых двигателей на одной оси MACH3

Сообщение FLUKE »

Kinghandles писал(а):что с этим делать
- пробовать g28.1
- пробовать переставить мач демо с оф сайта без кряков и русификаторов
- проверить другую версию плагина для платы
- пробовать http://www.cnc-club.ru/forum/viewtopic. ... 26#p364926
- искать косяк дальше, ибо лично у меня работает два варианта выравнивания
Аватара пользователя
vala
Почётный участник
Почётный участник
Сообщения: 490
Зарегистрирован: 08 окт 2013, 21:01
Репутация: 258
Откуда: Latvia
Контактная информация:

Re: Синхронизация двух шаговых двигателей на одной оси MACH3

Сообщение vala »

vala писал(а):НОМЕ подчинённой оси должна сидеть на пине который больше ни где не за действован и всё у вас заработает.
У вас это не соблюдено.
и удалите лимиты с оси А (подчинённой) - они вам погоду портят.
Аватара пользователя
Kinghandles
Новичок
Сообщения: 32
Зарегистрирован: 04 авг 2018, 21:23
Репутация: 1
Настоящее имя: Владимир
Откуда: Санкт- Петербург
Контактная информация:

Re: Синхронизация двух шаговых двигателей на одной оси MACH3

Сообщение Kinghandles »

vala писал(а):НОМЕ подчинённой оси должна сидеть на пине который больше ни где не за действован и всё у вас заработает.
У вас это не соблюдено.
Подскажите, а как Вы увидели, что у меня пин датчика подчиненной оси еще где то задействован ?. возможно, я что то упустил.
Пин Оси "А" висит на 14 пине. он, больше нигде не задействован
Ответить

Вернуться в «Windows / Mach»