Список скриптов/макросов для Mach
-
- Новичок
- Сообщения: 12
- Зарегистрирован: 05 сен 2017, 20:11
- Репутация: 0
- Настоящее имя: Игорь
- Контактная информация:
Re: Список скриптов/макросов для Mach
поменять не проблема, я не понял зачем менять на 1200 когда это системная функция и можно взять значение как системной функции... или нельзя?
-
- Кандидат
- Сообщения: 64
- Зарегистрирован: 03 ноя 2013, 22:28
- Репутация: 32
- Откуда: Брест
- Контактная информация:
Re: Список скриптов/макросов для Mach
Разработчики Mach3 оставили для вас эти три окошка, чтобы вы могли использовать их по своему усмотрению. Но логично было-бы создать своё новое окно для хранения номера инструмента.gennadiy писал(а):OEMDRO коды пользователя могут быть в диапазоне 1000...2254
- Вложения
-
- Снимок.PNG (10.09 КБ) 5798 просмотров
-
- Новичок
- Сообщения: 12
- Зарегистрирован: 05 сен 2017, 20:11
- Репутация: 0
- Настоящее имя: Игорь
- Контактная информация:
Re: Список скриптов/макросов для Mach
поменять не проблема, я не понял зачем менять на 1200 когда это системная функция и можно взять значение как системной функции... или нельзя?
-
- Новичок
- Сообщения: 12
- Зарегистрирован: 05 сен 2017, 20:11
- Репутация: 0
- Настоящее имя: Игорь
- Контактная информация:
Re: Список скриптов/макросов для Mach
добрый день
короче почти день настраивал скрипт, в итоге всё работает на железе...
получилось так
Sub Main
OldTool = GetOEMDRO (1500) 'Tool In spindle DRO You must add this to your settings screen
x = GetToolChangeStart (0)
y = GetToolChangeStart (1)
z = GetToolChangeStart (2)
a = GetToolChangeStart (3)
b = GetToolChangeStart (4)
c = GetToolChangeStart (5)
Tool = GetSelectedTool ()
'MsgBox("Tool:"&tool)
NewTool = tool
'Макрос для автоматической смены инструмента с учётом его длины
MaxToolNum = 9 'Максимальное число инструментов
ToolDown = -100 'Высота для захвата и выпуска инструмента
ToolUp = -80 'Высота переезда между инструментами
If NewTool = OldTool Then
Exit Sub
End If
While NewTool > MaxToolNum 'Проверка номера инструмента
NewTool = Question ("Введите номер другого инструмента:") 'Если номер неверный, выдаём сообщение
Wend
'Сброс старого инструмента
Code "G00 G53 Z" & ToolUp 'Подъём по Z на высоту переезда между инструментами
While IsMoving() 'Ожидаем завершения переезда
Sleep 100 'Пауза 0,1 сек.
Wend
Call MovePos(OldTool) 'Вызов поиска координат старого инструмента
Code "G53 Y" & GetOEMDRO (84) -100
Code "G53 Z" & ToolDown 'Опускание по Z на высоту для захвата и выпуска инструмента
Sleep 500 'Ожидаем 0,5 сек.
While IsMoving() 'Ожидаем завершения переезда
Sleep 1000 'Пауза 1 сек.
Code "G53 G1 F1000 Y" & GetOEMDRO (84) +100
While IsMoving() 'Ожидаем завершения переезда
Sleep 1000 'Пауза 1 сек.
Wend
ActivateSignal (Output1) 'Управление клапаном для выпуска инструмента
Sleep 1000 'Пауза для надёжного выпуск инструмента
Wend
'SystemWaitFor 'Дождаться сработки концевого выключателя
'Захват нового инструмента
Code "G53 G0 Z" & ToolUp 'Подъём по Z на высоту переезда между инструментами
While IsMoving() 'Ожидаем завершения переезда
Sleep 100 'Пауза 0,1 сек.
Wend
If NewTool = 0 Then 'Если новый инструмента - 0, то ничего не делаем
DeActivateSignal (Output1) 'Управление клапаном для захвата инструмента
Call SetUserDRO (1500,NewTool)
SetCurrentTool(NewTool)
Exit Sub 'Старый инструмент возвращается на место (сделано в предыдущем блоке)
End If
Call MovePos(NewTool) 'Вызов поиска координат нового инструмента
Code "G53 G1 F1000 Z" & ToolDown 'Опускание по Z на высоту для захвата и выпуска инструмента
ActivateSignal (Output2) 'Управление клапаном продувки
Sleep 1000 'Ожидаем 0,5 сек.
While IsMoving() 'Ожидаем завершения переезда
DeActivateSignal (Output2) 'Управление клапаном продувки
Sleep 1000 'Ожидаем 0,5 сек.
Wend
DeActivateSignal (Output1) 'Управление клапаном для захвата инструмента
Sleep 1000 'Пауза 1 сек. для надёжного для захвата инструмента
Code "G53 G1 F1000 Y" & GetOEMDRO (84) -100
While IsMoving() 'Ожидаем завершения переезда
Wend
Code "G53 G0 Z" & ToolUp 'Подъём по Z на высоту переезда между инструментами
Call SetUserDRO (1500,NewTool)
SetCurrentTool(NewTool)
End Sub
'Определение координат инструмента
Sub MovePos(ByVal ToolNumber As Integer)
Select Case ToolNumber 'Находим координаты инструмента
Case Is = 1 'Инструмент №1
Xpos = -400 'Значение по X
YPos =1000 'Значение по Y
Case Is = 2 'Инструмент №2
Xpos = -300 'Значение по X
YPos = 1000 'Значение по Y
Case Is = 3 'Инструмент №3
Xpos = -200 'Значение по X
YPos = 1000 'Значение по Y
Case Is = 4 'Инструмент №4
Xpos = -100 'Значение по X
YPos = 1000 'Значение по Y
Case Is = 5 'Инструмент №5
Xpos = 0 'Значение по X
YPos = 1000 'Значение по Y
Case Is = 6 'Инструмент №6
Xpos = 100 'Значение по X
YPos = 1000 'Значение по Y
Case Is = 7 'Инструмент №7
Xpos = 200 'Значение по X
YPos = 1000 'Значение по Y
Case Is = 8 'Инструмент №8
Xpos = 300 'Значение по X
YPos = 1000 'Значение по Y
Case Is = 9 'Инструмент №9
Xpos = 400 'Значение по X
YPos = 1000 'Значение по Y
End Select
Code "G53 G00 X" & XPos & "Y" & YPos 'Переезд к инструменту
While IsMoving() 'Ожидаем завершения переезда
Sleep 100 'Пауза 0,1 сек.
Wend
End Sub
всё работает, только один момент, станок сначала едет на y1000 потом сразу на 900 ну и дальше всё нормально...
как убрать лишний переезд?
короче почти день настраивал скрипт, в итоге всё работает на железе...
получилось так
Sub Main
OldTool = GetOEMDRO (1500) 'Tool In spindle DRO You must add this to your settings screen
x = GetToolChangeStart (0)
y = GetToolChangeStart (1)
z = GetToolChangeStart (2)
a = GetToolChangeStart (3)
b = GetToolChangeStart (4)
c = GetToolChangeStart (5)
Tool = GetSelectedTool ()
'MsgBox("Tool:"&tool)
NewTool = tool
'Макрос для автоматической смены инструмента с учётом его длины
MaxToolNum = 9 'Максимальное число инструментов
ToolDown = -100 'Высота для захвата и выпуска инструмента
ToolUp = -80 'Высота переезда между инструментами
If NewTool = OldTool Then
Exit Sub
End If
While NewTool > MaxToolNum 'Проверка номера инструмента
NewTool = Question ("Введите номер другого инструмента:") 'Если номер неверный, выдаём сообщение
Wend
'Сброс старого инструмента
Code "G00 G53 Z" & ToolUp 'Подъём по Z на высоту переезда между инструментами
While IsMoving() 'Ожидаем завершения переезда
Sleep 100 'Пауза 0,1 сек.
Wend
Call MovePos(OldTool) 'Вызов поиска координат старого инструмента
Code "G53 Y" & GetOEMDRO (84) -100
Code "G53 Z" & ToolDown 'Опускание по Z на высоту для захвата и выпуска инструмента
Sleep 500 'Ожидаем 0,5 сек.
While IsMoving() 'Ожидаем завершения переезда
Sleep 1000 'Пауза 1 сек.
Code "G53 G1 F1000 Y" & GetOEMDRO (84) +100
While IsMoving() 'Ожидаем завершения переезда
Sleep 1000 'Пауза 1 сек.
Wend
ActivateSignal (Output1) 'Управление клапаном для выпуска инструмента
Sleep 1000 'Пауза для надёжного выпуск инструмента
Wend
'SystemWaitFor 'Дождаться сработки концевого выключателя
'Захват нового инструмента
Code "G53 G0 Z" & ToolUp 'Подъём по Z на высоту переезда между инструментами
While IsMoving() 'Ожидаем завершения переезда
Sleep 100 'Пауза 0,1 сек.
Wend
If NewTool = 0 Then 'Если новый инструмента - 0, то ничего не делаем
DeActivateSignal (Output1) 'Управление клапаном для захвата инструмента
Call SetUserDRO (1500,NewTool)
SetCurrentTool(NewTool)
Exit Sub 'Старый инструмент возвращается на место (сделано в предыдущем блоке)
End If
Call MovePos(NewTool) 'Вызов поиска координат нового инструмента
Code "G53 G1 F1000 Z" & ToolDown 'Опускание по Z на высоту для захвата и выпуска инструмента
ActivateSignal (Output2) 'Управление клапаном продувки
Sleep 1000 'Ожидаем 0,5 сек.
While IsMoving() 'Ожидаем завершения переезда
DeActivateSignal (Output2) 'Управление клапаном продувки
Sleep 1000 'Ожидаем 0,5 сек.
Wend
DeActivateSignal (Output1) 'Управление клапаном для захвата инструмента
Sleep 1000 'Пауза 1 сек. для надёжного для захвата инструмента
Code "G53 G1 F1000 Y" & GetOEMDRO (84) -100
While IsMoving() 'Ожидаем завершения переезда
Wend
Code "G53 G0 Z" & ToolUp 'Подъём по Z на высоту переезда между инструментами
Call SetUserDRO (1500,NewTool)
SetCurrentTool(NewTool)
End Sub
'Определение координат инструмента
Sub MovePos(ByVal ToolNumber As Integer)
Select Case ToolNumber 'Находим координаты инструмента
Case Is = 1 'Инструмент №1
Xpos = -400 'Значение по X
YPos =1000 'Значение по Y
Case Is = 2 'Инструмент №2
Xpos = -300 'Значение по X
YPos = 1000 'Значение по Y
Case Is = 3 'Инструмент №3
Xpos = -200 'Значение по X
YPos = 1000 'Значение по Y
Case Is = 4 'Инструмент №4
Xpos = -100 'Значение по X
YPos = 1000 'Значение по Y
Case Is = 5 'Инструмент №5
Xpos = 0 'Значение по X
YPos = 1000 'Значение по Y
Case Is = 6 'Инструмент №6
Xpos = 100 'Значение по X
YPos = 1000 'Значение по Y
Case Is = 7 'Инструмент №7
Xpos = 200 'Значение по X
YPos = 1000 'Значение по Y
Case Is = 8 'Инструмент №8
Xpos = 300 'Значение по X
YPos = 1000 'Значение по Y
Case Is = 9 'Инструмент №9
Xpos = 400 'Значение по X
YPos = 1000 'Значение по Y
End Select
Code "G53 G00 X" & XPos & "Y" & YPos 'Переезд к инструменту
While IsMoving() 'Ожидаем завершения переезда
Sleep 100 'Пауза 0,1 сек.
Wend
End Sub
всё работает, только один момент, станок сначала едет на y1000 потом сразу на 900 ну и дальше всё нормально...
как убрать лишний переезд?
-
- Новичок
- Сообщения: 12
- Зарегистрирован: 05 сен 2017, 20:11
- Репутация: 0
- Настоящее имя: Игорь
- Контактная информация:
Re: Список скриптов/макросов для Mach
хотя вру... ещё надо подключить датчик наличия инструмента и задействовать "SystemWaitFor"
-
- Новичок
- Сообщения: 12
- Зарегистрирован: 05 сен 2017, 20:11
- Репутация: 0
- Настоящее имя: Игорь
- Контактная информация:
Re: Список скриптов/макросов для Mach
gennadiy добрый день
подскажите как реализовать проверку наличия инструмента в шпинделе? с "SystemWaitFor" не получается, так как датчик срабатывает когда цанги уже нет, а если вдруг не сработал захват то шпиндель будет подниматься с цангой и сломает вилку...
подскажите как реализовать проверку наличия инструмента в шпинделе? с "SystemWaitFor" не получается, так как датчик срабатывает когда цанги уже нет, а если вдруг не сработал захват то шпиндель будет подниматься с цангой и сломает вилку...
-
- Кандидат
- Сообщения: 64
- Зарегистрирован: 03 ноя 2013, 22:28
- Репутация: 32
- Откуда: Брест
- Контактная информация:
Re: Список скриптов/макросов для Mach
А если вместо функции "SystemWaitFor" использовать функцию "IsActive" для INPUT #... сигнала с датчика?
-
- Новичок
- Сообщения: 12
- Зарегистрирован: 05 сен 2017, 20:11
- Репутация: 0
- Настоящее имя: Игорь
- Контактная информация:
Re: Список скриптов/макросов для Mach
нет, просто чтобы датчик сработал, надо чтобы цанга немного вышла... я уже думаю вилки на пружины ставить
а как "IsActive" использовать?
а как "IsActive" использовать?
-
- Новичок
- Сообщения: 12
- Зарегистрирован: 05 сен 2017, 20:11
- Репутация: 0
- Настоящее имя: Игорь
- Контактная информация:
Re: Список скриптов/макросов для Mach
всё таки я его победил...
сделал так:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ActivateSignal (Output2) 'Управление клапаном для выпуска инструмента
Sleep 1000 'Пауза для надёжного выпуск инструмента
Wend
Code "G53 Z" & GetOEMDRO (85) +0.5
If IsActive(INPUT1) Then
Exit Sub
End If
'Захват нового инструмента
Code "G53 G0 Z" & ToolUp 'Подъём по Z на высоту переезда между инструментами
While IsMoving() 'Ожидаем завершения переезда
Sleep 100 'Пауза 0,1 сек.
Wend
~~~~~~~~~~~~~~~~
и т.д.
пробовал отключал воздух, всё работает как надо
спасибо за наводку...
сделал так:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ActivateSignal (Output2) 'Управление клапаном для выпуска инструмента
Sleep 1000 'Пауза для надёжного выпуск инструмента
Wend
Code "G53 Z" & GetOEMDRO (85) +0.5
If IsActive(INPUT1) Then
Exit Sub
End If
'Захват нового инструмента
Code "G53 G0 Z" & ToolUp 'Подъём по Z на высоту переезда между инструментами
While IsMoving() 'Ожидаем завершения переезда
Sleep 100 'Пауза 0,1 сек.
Wend
~~~~~~~~~~~~~~~~
и т.д.
пробовал отключал воздух, всё работает как надо
спасибо за наводку...
- verser
- Мастер
- Сообщения: 1895
- Зарегистрирован: 21 июл 2013, 22:28
- Репутация: 1282
- Настоящее имя: Сергей
- Откуда: Тбилиси
- Контактная информация:
Re: Список скриптов/макросов для Mach
Вопрос к знатокам скриптов.
Есть ли встроенная возможность в mach3 прервать перемещение (типа G0 или G1), если сработал Probe input ?
Есть ли встроенная возможность в mach3 прервать перемещение (типа G0 или G1), если сработал Probe input ?
-
- Кандидат
- Сообщения: 64
- Зарегистрирован: 03 ноя 2013, 22:28
- Репутация: 32
- Откуда: Брест
- Контактная информация:
Re: Список скриптов/макросов для Mach
С помощью 'Macropump' или 'Brain Control' нажать, например, кнопку 'Stop'. Должно работать.
- Kachik
- Мастер
- Сообщения: 1410
- Зарегистрирован: 13 янв 2017, 16:22
- Репутация: 308
- Настоящее имя: Сергей
- Откуда: Питер
- Контактная информация:
Re: Список скриптов/макросов для Mach
Подключите probe к любому датчику хом или лимит...verser писал(а):Вопрос к знатокам скриптов.
Есть ли встроенная возможность в mach3 прервать перемещение (типа G0 или G1), если сработал Probe input ?
- verser
- Мастер
- Сообщения: 1895
- Зарегистрирован: 21 июл 2013, 22:28
- Репутация: 1282
- Настоящее имя: Сергей
- Откуда: Тбилиси
- Контактная информация:
Re: Список скриптов/макросов для Mach
А можно ли остановится не в reset, а скриптом прервать выполнение движения и ругнуться, но чтобы можно было без reset отъехать от препятствия и продолжать работу?
Пока что, как вариант, видится перемещаться командой G31, она точно остановится если будет наезд .
Странно, что в Mach3 перемещение в режимах MDI и Manual не прерывается при сработке probe, это ж опасно!
Пока что, как вариант, видится перемещаться командой G31, она точно остановится если будет наезд .
Странно, что в Mach3 перемещение в режимах MDI и Manual не прерывается при сработке probe, это ж опасно!
-
- Зачётный участник
- Сообщения: 34042
- Зарегистрирован: 04 апр 2010, 19:22
- Репутация: 6192
- Откуда: Казахстан.
- Контактная информация:
Re: Список скриптов/макросов для Mach
Больше датчиков купятverser писал(а):Странно, что в Mach3 перемещение в режимах MDI и Manual не прерывается при сработке probe, это ж опасно!
У меня мож старая версия Lcnc, в ручных переездах при срабатывании Probe ось останавливается и выскакивает ошибка, а вот если в MDI G0 или G1 не остановиться
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
-
- Кандидат
- Сообщения: 64
- Зарегистрирован: 03 ноя 2013, 22:28
- Репутация: 32
- Откуда: Брест
- Контактная информация:
Re: Список скриптов/макросов для Mach
verser, я сделал через 'Macropump':
сделал через 'Brain Control':
Останавлевает при срабатывании 'Probe' перемещения G31, G0, G1 как в MDI, так и в Manual (при ручных перемещениях), а так же при запуске программы.
P.S. Способ с
Код: Выделить всё
if GetOemLED (825) Then
DoOemButton (1003) 'Stop
End If
P.S. Способ с
у меня не работает.Kachik писал(а):Подключите probe к любому датчику хом или лимит...
-
- Новичок
- Сообщения: 22
- Зарегистрирован: 01 фев 2018, 22:14
- Репутация: 0
- Настоящее имя: Иван
- Контактная информация:
Re: Список скриптов/макросов для Mach
Ссылка со скриптами из первого поста чего-то не работает. Пишет "Page not found"
-
- Кандидат
- Сообщения: 50
- Зарегистрирован: 05 сен 2013, 11:35
- Репутация: 25
- Контактная информация:
Re: Список скриптов/макросов для Mach
Подскажите, пожалуйста, как отредактировать скрипт поиска нуля Z для использования с повороткой?
Пытался сделать на базе скрипта со скринсета Михаила, но что-то метод тыка подводит.
Нужно, чтоб после касания поднимался на 65мм от найденого нуля и обнулялся (или чтоб при касании z=-65)
Заранее спасибо. upd Спасибо inFamous. Просто толщину пластины указать -50 (при имеющейся 15мм)
Пытался сделать на базе скрипта со скринсета Михаила, но что-то метод тыка подводит.
Нужно, чтоб после касания поднимался на 65мм от найденого нуля и обнулялся (или чтоб при касании z=-65)
Заранее спасибо. upd Спасибо inFamous. Просто толщину пластины указать -50 (при имеющейся 15мм)
- Kachik
- Мастер
- Сообщения: 1410
- Зарегистрирован: 13 янв 2017, 16:22
- Репутация: 308
- Настоящее имя: Сергей
- Откуда: Питер
- Контактная информация:
Re: Список скриптов/макросов для Mach
А я не морочусь, подвожу шпиндель сбоку от заготовки. Обнуляюсь в стол и после в окошко Z ввожу -35.125 (высоту 0я в поворотке с минусом). В принципе ни разу не напрягает. Иначе надо разные скрипты на 3 и на 4 оси...
-
- Кандидат
- Сообщения: 50
- Зарегистрирован: 05 сен 2013, 11:35
- Репутация: 25
- Контактная информация:
Re: Список скриптов/макросов для Mach
Всё же, как по мне, лучше максимально автоматизировать. И телодвижений меньше и возможности ошибиться. Просто сделал 2 кнопки, одна - ноль на столе, вторая - в центре поворотки.
-
- Новичок
- Сообщения: 6
- Зарегистрирован: 12 июн 2018, 15:50
- Репутация: 0
- Настоящее имя: Евгений
- Контактная информация:
Re: Список скриптов/макросов для Mach
Всем доброго дня!
Я занимаюсь плазменной резкой. При поиске металла через команду G31 я заметил, что при срабатывании концевика Probe ось Z останавливается очень медленно, будто значение ускорения уменьшилось в 10 раз.
При скорости перемещения 1000 мм/мин (которая относительно низкая) после срабатывания Probe резак опускается ещё на 6мм вниз.
Пришлось изменить конструкцию оси Z, чтобы резак не вдавливало в металл.
Никаких настроек в MACH я не нашел, которые на это значение ускорения влияло. Поэтому подумал заменить команду G31 на простой макрос, который бы опускал ось Z до момента срабатывания сигнала, к примеру, OUTPUT#1 и останавливал Z уже с ускорением указанным в настройках Motor Tuning.
К сожалению, я не смог написать этот скрипт.
Сможет ли кто-то в этом помочь?
Замена команды G31 на такой макрос сократила бы время на поиск металла, а при выполнении работы с большим количеством проколов это очень сильно сократит время всей работы.
Я занимаюсь плазменной резкой. При поиске металла через команду G31 я заметил, что при срабатывании концевика Probe ось Z останавливается очень медленно, будто значение ускорения уменьшилось в 10 раз.
При скорости перемещения 1000 мм/мин (которая относительно низкая) после срабатывания Probe резак опускается ещё на 6мм вниз.
Пришлось изменить конструкцию оси Z, чтобы резак не вдавливало в металл.
Никаких настроек в MACH я не нашел, которые на это значение ускорения влияло. Поэтому подумал заменить команду G31 на простой макрос, который бы опускал ось Z до момента срабатывания сигнала, к примеру, OUTPUT#1 и останавливал Z уже с ускорением указанным в настройках Motor Tuning.
К сожалению, я не смог написать этот скрипт.
Сможет ли кто-то в этом помочь?
Замена команды G31 на такой макрос сократила бы время на поиск металла, а при выполнении работы с большим количеством проколов это очень сильно сократит время всей работы.