Скрипты для поиска базы и выравнивания портала.

Mach, популярные и не очень CAD, CAM. Обсуждение и разработка программ для управления станками.
1Doc1
Опытный
Сообщения: 162
Зарегистрирован: 01 янв 2014, 20:04
Репутация: 96
Откуда: Подольск
Контактная информация:

Скрипты для поиска базы и выравнивания портала.

Сообщение 1Doc1 »

Добрый день!
Коллеги, прошу Вашей помощи в написании нескольких макросов / скриптов для Mach3.
На текущий момент занимаюсь модернизацией своего станка, который описывал в этой теме: http://www.cnc-club.ru/forum/viewtopic. ... 57#p510957
Сейчас возникли потребности в организации поиска базы двух осей Z, поиска базы по меткам OZ энкодеров, выравнивании портала по меткам Z энкодеров.

Задача №1
Требуется при нажатии кнопки "Ref All Home" реализовать поочередный поиск HOME на оси Z1, затем Z2 (или наоборот) и далее Y и X.
На текущий момент по умолчанию работает ось Z1, а Z2 стоит в удержании, при активации сигнала OUTPUT 5 состояние осей инвертируется - Z1 стоит в удержании, Z2 работает. Концевики HOME обоих осей соединены параллельно и дают сигнал на вход Z Home.

Задача №2
Требуется организовать точный поиск базы на каждой оси путем применения сигнала от нулейвой метки (Z) энкодера.
Предполагаю получить такой алгоритм работы: при поиске базы ось едет в направлении "-" до срабатывания концевика, затем едет в "+" до срабатывания выхода OZ энкодера двигателя, эту точку считать базой. Выход OZ возможно завести на входы Input 1-4 и/или OEM Trig.

Задача №3
Выравнивание портала по меткам OZ. Предполагается что изначально механическим путем будет настроено положение основной оси (Y) и подчиненной оси (B) таким образом, что при положении обоих двигателей осей в положении OZ портал будет стоять в правильном положении т.е. ось Y будет перпендикулярна оси X. Предполагаю следующий алгоритм работы: при поиске базы основная и подчиненная ось едут в направлении "-", при срабатывании OZ той или другой оси соответствующая ось останавливается, оставшаяся продолжает движения до срабатывания ее метки OZ, далее обе оси синхронно едут в направлении "-" до срабатывания любого из концевиков Limit Y- или Limit B- (при необходимости их можно запараллелить и завести только на один вход, например на Limit Y-). Затем, как и в предыдущей задаче, обе оси едут в направлении "+" до срабатывания сигнала OZ и останавливаются; это положение и будет Y Home.

Задача №4
Если в G-коде присутствует команда смены инструмента на любой номер, кроме "20" вся система должна работать в обычном режиме. Если стоит команда смены инструмента на номер "20", то необходимо сместить рабочие координаты осей X и Y на величину расстояний между центрами осей шпинделей, расположенных на каретках Z1 и Z2. Вижу реализацию этого путем перехода в другую систему координат. Затем необходимо запомнить положение оси Z1 и поднять ее максимально вверх, активировать ось Z2 и привести ее в положение в котором находилась Z1 до подъема. В случае если текущим инструментом является инструмент с номером "20" и следует команда смены инструмента на другой номер, то выполнить аналогичные действия наоборот: перейти в другую систему координат, запомнить положение Z2, поднять Z2 максимально вверх, активировать Z1, отправить Z1 в положении в котором находилась Z2 до подъема.

В написании скриптов / макросов я не силен... совсем не силен, поэтому прошу тапками не кидаться. Буду благодарен если подскажите где посмотреть подобные примеры.
1Doc1
Опытный
Сообщения: 162
Зарегистрирован: 01 янв 2014, 20:04
Репутация: 96
Откуда: Подольск
Контактная информация:

Re: Скрипты для поиска базы и выравнивания портала.

Сообщение 1Doc1 »

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

Re: Скрипты для поиска базы и выравнивания портала.

Сообщение FLUKE »

Делать выравнивание с метками через скрипт - плохая идея (плюс, на сколько помню, в мач3 нельзя подвинуть подчинённую ось отдельно от ведущей).
Если ты на ESS, можно почитать это - https://warp9td.com/index.php/faq/faq-mach3#Homing
Я не стал заморачиваться. У меня портал с рабочей зоной 1500. Я выравниваю тупо об два концевика.
1Doc1
Опытный
Сообщения: 162
Зарегистрирован: 01 янв 2014, 20:04
Репутация: 96
Откуда: Подольск
Контактная информация:

Re: Скрипты для поиска базы и выравнивания портала.

Сообщение 1Doc1 »

FLUKE писал(а):Делать выравнивание с метками через скрипт - плохая идея
Не стал сразу отвечать, долго думал, но так и не понял что плохого в этой идее. С одной стороны я конечно понимаю, что данную процедуру (выравнивание по меткам) лучше и правильнее реализовать аппаратным способом, но штатным функционалом имеющегося оборудования сделать это не представляется возможным, с другой стороны почему бы не видоизменить алгоритм работы программной части, например скриптами.
FLUKE писал(а): в мач3 нельзя подвинуть подчинённую ось отдельно от ведущей
Подчиненная отдельно от ведущей двигается без проблем, а вот наоборот - ведущую без подчиненной подвинуть так и не смог. Предполагаю, что все же решение этой проблемы есть, мач же при обнулении двигает оси отдельно.
Евжений
Мастер
Сообщения: 1094
Зарегистрирован: 05 апр 2016, 20:18
Репутация: 125
Настоящее имя: Жэзэрэл
Откуда: Там, сям.
Контактная информация:

Re: Скрипты для поиска базы и выравнивания портала.

Сообщение Евжений »

1Doc1 писал(а):где посмотреть подобные примеры
Ну прям готовые хз, а так вот мануал.
Mach3_V3.x_Macro_Prog_Ref.pdf
(330.87 КБ) 763 скачивания
1Doc1 писал(а):Задача №1
Требуется при нажатии кнопки "Ref All Home" реализовать поочередный поиск HOME на оси Z1, затем Z2 (или наоборот) и далее Y и X.
На текущий момент по умолчанию работает ось Z1, а Z2 стоит в удержании, при активации сигнала OUTPUT 5 состояние осей инвертируется - Z1 стоит в удержании, Z2 работает. Концевики HOME обоих осей соединены параллельно и дают сигнал на вход Z Home.
В маче выбираете пункт edit button script, замигает кнопка ref all home. Тыкаете на неё. Откроется окно с текстом. Там будет скрипт поиска нуля всех осей по очереди. Нужно между этими home(22) и пр добавить ActivateOutput(OUTPUT3). Что-то такое.
1Doc1 писал(а):Задача №2
Требуется организовать точный поиск базы на каждой оси путем применения сигнала от нулейвой метки (Z) энкодера.
Предполагаю получить такой алгоритм работы: при поиске базы ось едет в направлении "-" до срабатывания концевика, затем едет в "+" до срабатывания выхода OZ энкодера двигателя, эту точку считать базой. Выход OZ возможно завести на входы Input 1-4 и/или OEM Trig.
По тому же принципу. Сначала ось полностью хомится по концевому датчику, затем переключаемся на другой датчик, т е на метку в энкодере, ActivateOutput(OUTPUT3), и ещё раз полностью хомится.
1Doc1 писал(а):Задача №3
Выравнивание портала по меткам OZ. Предполагается что изначально механическим путем будет настроено положение основной оси (Y) и подчиненной оси (B) таким образом, что при положении обоих двигателей осей в положении OZ портал будет стоять в правильном положении т.е. ось Y будет перпендикулярна оси X. Предполагаю следующий алгоритм работы: при поиске базы основная и подчиненная ось едут в направлении "-", при срабатывании OZ той или другой оси соответствующая ось останавливается, оставшаяся продолжает движения до срабатывания ее метки OZ, далее обе оси синхронно едут в направлении "-" до срабатывания любого из концевиков Limit Y- или Limit B- (при необходимости их можно запараллелить и завести только на один вход, например на Limit Y-). Затем, как и в предыдущей задаче, обе оси едут в направлении "+" до срабатывания сигнала OZ и останавливаются; это положение и будет Y Home.
Также как в предыдущем варианте.
1Doc1 писал(а):Задача №4
Если в G-коде присутствует команда смены инструмента на любой номер, кроме "20" вся система должна работать в обычном режиме. Если стоит команда смены инструмента на номер "20", то необходимо сместить рабочие координаты осей X и Y на величину расстояний между центрами осей шпинделей, расположенных на каретках Z1 и Z2. Вижу реализацию этого путем перехода в другую систему координат. Затем необходимо запомнить положение оси Z1 и поднять ее максимально вверх, активировать ось Z2 и привести ее в положение в котором находилась Z1 до подъема. В случае если текущим инструментом является инструмент с номером "20" и следует команда смены инструмента на другой номер, то выполнить аналогичные действия наоборот: перейти в другую систему координат, запомнить положение Z2, поднять Z2 максимально вверх, активировать Z1, отправить Z1 в положении в котором находилась Z2 до подъема.
Условия через if и else нужно шаманить. Запоминать положение можно из окон dro, номера в мануале.
Номер 20 это и Z1 и Z2? Насколько я понимаю, тут не может быть две оси, будут два инструмента.
1Doc1
Опытный
Сообщения: 162
Зарегистрирован: 01 янв 2014, 20:04
Репутация: 96
Откуда: Подольск
Контактная информация:

Re: Скрипты для поиска базы и выравнивания портала.

Сообщение 1Doc1 »

Евжений писал(а):Ну прям готовые хз, а так вот мануал.
Mach3_V3.x_Macro_Prog_Ref.pdf
Спасибо, этот мануал уже смотрел, но справится с поставленной задачей пока так и не смог.
Евжений писал(а):В маче выбираете пункт edit button script, замигает кнопка ref all home. Тыкаете на неё. Откроется окно с текстом. Там будет скрипт поиска нуля всех осей по очереди. Нужно между этими home(22) и пр добавить ActivateOutput(OUTPUT3). Что-то такое.
Спасибо, с этим также уже разобрался, но получил больше вопросов чем ответов.
Стандартный код, который скрывается под кнопкой "Ref All Home":
DoButton( 24 )
DoButton( 23 )
DoButton( 22 )
DoButton( 25 )

DoOEMButton(133)
DoOEMButton(134)
DoOEMButton(135)
Сразу возникает вопрос где посмотреть номера кнопок Button и OEMButton. Также возникает вопрос как отредактировать те кнопки, которые не мигают при выборе "Edit Button Script" ? Например на 7м экране стандартного скринсета кнопки Ref X, Ref Y и т.д.
Евжений писал(а):Сначала ось полностью хомится по концевому датчику, затем переключаемся на другой датчик, т е на метку в энкодере, ActivateOutput(OUTPUT3), и ещё раз полностью хомится
Я так понимаю предполагается переключение датчиков через реле и подача сигнала на один и тот-же вход. Как мне кажется это не самое лучшее решение, т.к. теоретически могжно получить ложные срабатывания, вызванные дребезгом контактов. Именно по этому хотелось бы использовать дополнительные входы.
Евжений писал(а):Условия через if и else нужно шаманить
Именно так. Прежде чем шаманить пытаюсь понять все остальные принципы управления, а с этим пока туго...
Евжений писал(а):Номер 20 это и Z1 и Z2? Насколько я понимаю, тут не может быть две оси, будут два инструмента
Номер написал условно, т.е. подразумевается что все номера инструментов используются для оси Z1, кроме номера "20" - он будет использоваться для оси Z2. Для мача обе физические оси являются одной осью. На данный момент я их переключаю путем использования отдельных выходов, которые активируют INHP на сервах. Пока только вручную через М-код - вместе с выбором активной оси Z у меня также выбирается шпиндель: 1й или 2й и разрешение подачи воздуха на шпиндель 1. Я предполагаю что через If / else можно написать условие при котором в случае выбора определенного номера инструмента будет производиться смена системы координат. Например отвести под определенный номер инструмента свою систему координат (например G59), взять текущие значения и прибавить/отнять фиксированные известные значения X и Y и записать результат в СК G59, затем активировать G59, при обратной смене менять СК обратно, соответственно потребуется запоминать номер предыдущей СК.
Евжений
Мастер
Сообщения: 1094
Зарегистрирован: 05 апр 2016, 20:18
Репутация: 125
Настоящее имя: Жэзэрэл
Откуда: Там, сям.
Контактная информация:

Re: Скрипты для поиска базы и выравнивания портала.

Сообщение Евжений »

1Doc1 писал(а):где посмотреть номера кнопок Button и OEMButton
В мануале в прикреплённом, в самом низу.
1Doc1 писал(а):как отредактировать те кнопки, которые не мигают
Их нельзя отредактировать. Можно их удалить, и вместо них создать свою. Это всё можно сделать в редакторе скринсетов.
MachScreenV1.62.rar
(6.23 МБ) 447 скачиваний
1Doc1 писал(а):Я так понимаю предполагается переключение датчиков через реле и подача сигнала на один и тот-же вход. Как мне кажется это не самое лучшее решение, т.к. теоретически могжно получить ложные срабатывания, вызванные дребезгом контактов. Именно по этому хотелось бы использовать дополнительные входы.
Транзисторами можно.
1Doc1 писал(а):Номер написал условно, т.е....
Можно, экспериментировать надо. Ничего космического вроде нет.
Аватара пользователя
PLOT
Мастер
Сообщения: 302
Зарегистрирован: 24 июн 2019, 16:09
Репутация: 68
Настоящее имя: Семен
Откуда: Москва

Re: Скрипты для поиска базы и выравнивания портала.

Сообщение PLOT »

1Doc1, если нужна помощь - свяжитесь в личке, поможем!
Подписывайтесь на канал YouTube Game Of CNC
А это сайтик сбаценный на тильде, с информацией о нас и нашей работе - заходите
msl272
Кандидат
Сообщения: 56
Зарегистрирован: 20 янв 2017, 13:23
Репутация: 39
Настоящее имя: Вячеслав
Контактная информация:

Re: Скрипты для поиска базы и выравнивания портала.

Сообщение msl272 »

Выше было написано, что подчиненную ось без проблем можно сдвинуть от основной.
Какими командами это можно сделать?
Ответить

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