Список скриптов/макросов для Mach

Mach, популярные и не очень CAD, CAM. Обсуждение и разработка программ для управления станками.
igor-div
Новичок
Сообщения: 12
Зарегистрирован: 05 сен 2017, 20:11
Репутация: 0
Настоящее имя: Игорь
Контактная информация:

Re: Список скриптов/макросов для Mach

Сообщение igor-div »

поменять не проблема, я не понял зачем менять на 1200 когда это системная функция и можно взять значение как системной функции... или нельзя?
gennadiy
Кандидат
Сообщения: 64
Зарегистрирован: 03 ноя 2013, 22:28
Репутация: 32
Откуда: Брест
Контактная информация:

Re: Список скриптов/макросов для Mach

Сообщение gennadiy »

gennadiy писал(а):OEMDRO коды пользователя могут быть в диапазоне 1000...2254
Разработчики Mach3 оставили для вас эти три окошка, чтобы вы могли использовать их по своему усмотрению. Но логично было-бы создать своё новое окно для хранения номера инструмента.
Вложения
Снимок.PNG
Снимок.PNG (10.09 КБ) 5798 просмотров
igor-div
Новичок
Сообщения: 12
Зарегистрирован: 05 сен 2017, 20:11
Репутация: 0
Настоящее имя: Игорь
Контактная информация:

Re: Список скриптов/макросов для Mach

Сообщение igor-div »

поменять не проблема, я не понял зачем менять на 1200 когда это системная функция и можно взять значение как системной функции... или нельзя?
igor-div
Новичок
Сообщения: 12
Зарегистрирован: 05 сен 2017, 20:11
Репутация: 0
Настоящее имя: Игорь
Контактная информация:

Re: Список скриптов/макросов для Mach

Сообщение igor-div »

добрый день
короче почти день настраивал скрипт, в итоге всё работает на железе...
получилось так

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 ну и дальше всё нормально...
как убрать лишний переезд?
igor-div
Новичок
Сообщения: 12
Зарегистрирован: 05 сен 2017, 20:11
Репутация: 0
Настоящее имя: Игорь
Контактная информация:

Re: Список скриптов/макросов для Mach

Сообщение igor-div »

хотя вру... ещё надо подключить датчик наличия инструмента и задействовать "SystemWaitFor"
igor-div
Новичок
Сообщения: 12
Зарегистрирован: 05 сен 2017, 20:11
Репутация: 0
Настоящее имя: Игорь
Контактная информация:

Re: Список скриптов/макросов для Mach

Сообщение igor-div »

gennadiy добрый день
подскажите как реализовать проверку наличия инструмента в шпинделе? с "SystemWaitFor" не получается, так как датчик срабатывает когда цанги уже нет, а если вдруг не сработал захват то шпиндель будет подниматься с цангой и сломает вилку...
gennadiy
Кандидат
Сообщения: 64
Зарегистрирован: 03 ноя 2013, 22:28
Репутация: 32
Откуда: Брест
Контактная информация:

Re: Список скриптов/макросов для Mach

Сообщение gennadiy »

А если вместо функции "SystemWaitFor" использовать функцию "IsActive" для INPUT #... сигнала с датчика?
igor-div
Новичок
Сообщения: 12
Зарегистрирован: 05 сен 2017, 20:11
Репутация: 0
Настоящее имя: Игорь
Контактная информация:

Re: Список скриптов/макросов для Mach

Сообщение igor-div »

нет, просто чтобы датчик сработал, надо чтобы цанга немного вышла... я уже думаю вилки на пружины ставить
а как "IsActive" использовать?
igor-div
Новичок
Сообщения: 12
Зарегистрирован: 05 сен 2017, 20:11
Репутация: 0
Настоящее имя: Игорь
Контактная информация:

Re: Список скриптов/макросов для Mach

Сообщение igor-div »

всё таки я его победил...
сделал так:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
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

Сообщение verser »

Вопрос к знатокам скриптов.
Есть ли встроенная возможность в mach3 прервать перемещение (типа G0 или G1), если сработал Probe input ?
gennadiy
Кандидат
Сообщения: 64
Зарегистрирован: 03 ноя 2013, 22:28
Репутация: 32
Откуда: Брест
Контактная информация:

Re: Список скриптов/макросов для Mach

Сообщение gennadiy »

С помощью 'Macropump' или 'Brain Control' нажать, например, кнопку 'Stop'. Должно работать.
Аватара пользователя
Kachik
Мастер
Сообщения: 1410
Зарегистрирован: 13 янв 2017, 16:22
Репутация: 308
Настоящее имя: Сергей
Откуда: Питер
Контактная информация:

Re: Список скриптов/макросов для Mach

Сообщение Kachik »

verser писал(а):Вопрос к знатокам скриптов.
Есть ли встроенная возможность в mach3 прервать перемещение (типа G0 или G1), если сработал Probe input ?
Подключите probe к любому датчику хом или лимит...
Аватара пользователя
verser
Мастер
Сообщения: 1895
Зарегистрирован: 21 июл 2013, 22:28
Репутация: 1282
Настоящее имя: Сергей
Откуда: Тбилиси
Контактная информация:

Re: Список скриптов/макросов для Mach

Сообщение verser »

А можно ли остановится не в reset, а скриптом прервать выполнение движения и ругнуться, но чтобы можно было без reset отъехать от препятствия и продолжать работу?
Пока что, как вариант, видится перемещаться командой G31, она точно остановится если будет наезд :) .
Странно, что в Mach3 перемещение в режимах MDI и Manual не прерывается при сработке probe, это ж опасно!
aftaev
Зачётный участник
Зачётный участник
Сообщения: 34042
Зарегистрирован: 04 апр 2010, 19:22
Репутация: 6192
Откуда: Казахстан.
Контактная информация:

Re: Список скриптов/макросов для Mach

Сообщение aftaev »

verser писал(а):Странно, что в Mach3 перемещение в режимах MDI и Manual не прерывается при сработке probe, это ж опасно!
Больше датчиков купят :)
У меня мож старая версия Lcnc, в ручных переездах при срабатывании Probe ось останавливается и выскакивает ошибка, а вот если в MDI G0 или G1 не остановиться ;)
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
gennadiy
Кандидат
Сообщения: 64
Зарегистрирован: 03 ноя 2013, 22:28
Репутация: 32
Откуда: Брест
Контактная информация:

Re: Список скриптов/макросов для Mach

Сообщение gennadiy »

verser, я сделал через 'Macropump':

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

if GetOemLED (825) Then
	DoOemButton (1003) 'Stop
End If
сделал через 'Brain Control':
brain.JPG (5463 просмотра) <a class='original' href='./download/file.php?id=134000&sid=9794749274502da8f4112c9c4c06c11e&mode=view' target=_blank>Загрузить оригинал (37.98 КБ)</a>
Останавлевает при срабатывании 'Probe' перемещения G31, G0, G1 как в MDI, так и в Manual (при ручных перемещениях), а так же при запуске программы.
P.S. Способ с
Kachik писал(а):Подключите probe к любому датчику хом или лимит...
у меня не работает.
IvanDeft
Новичок
Сообщения: 22
Зарегистрирован: 01 фев 2018, 22:14
Репутация: 0
Настоящее имя: Иван
Контактная информация:

Re: Список скриптов/макросов для Mach

Сообщение IvanDeft »

Ссылка со скриптами из первого поста чего-то не работает. Пишет "Page not found"
stiks
Кандидат
Сообщения: 50
Зарегистрирован: 05 сен 2013, 11:35
Репутация: 25
Контактная информация:

Re: Список скриптов/макросов для Mach

Сообщение stiks »

Подскажите, пожалуйста, как отредактировать скрипт поиска нуля Z для использования с повороткой?
Пытался сделать на базе скрипта со скринсета Михаила, но что-то метод тыка подводит.
Нужно, чтоб после касания поднимался на 65мм от найденого нуля и обнулялся (или чтоб при касании z=-65)
Заранее спасибо.
(для просмотра содержимого нажмите на ссылку)
Rem VBScript To probe In the z axis

DoOemButton(1003)

If GetOemLed (825) <> 0 Then 'Check to see if the probe is already grounded or faulty
Code "(Z-Plate is grounded, check connection and try again)" 'this goes in the status bar if aplicable
Else
'Code "G4 P1" 'Pause 1 seconds to give time to position probe plate
Sleep 100
PlateOffset = 1.4 '<--- !!!!!!!!!!!!!! Write here you plate thickness !!!!!!!!!!!!!!
CurrentFeed = GetOemDRO(818) 'Get the current feedrate to return to later
Code "F100" 'slow down feedrate to 4 ipm
Sleep 100

Rem Probe In the z direction
ZNew = GetDro(2) - 50 'probe move to current z - 50 mm
Code "G31Z" &ZNew
While IsMoving() 'wait for probe move to finish
Wend

'ZNew = GetVar(2002) 'read the touch point
'Code "G0 Z" &ZNew 'move back to hit point incase there was overshoot
'While IsMoving ()
'Wend

If PlateOffset <> 0 Then
Call SetDro (2, PlateOffset) 'set the Z axis DRO to plate thickness
'Code "G4 P1" 'Pause for Dro to update.
Sleep 500
ZNew = PlateOffset + 2 'ZNew = plate thickness + 2 mm
Sleep 100
'ZNew = 2 ' as variant. But ZNew coordinate should be more than a thickness of a plate
Code "G0 Z" &ZNew 'put the Z retract height you want here
Code "(Z axis is now zeroed)" 'puts this message in the status bar
End If

Sleep 100
Code "F" &CurrentFeed 'Returns to prior feed rate
End If
upd Спасибо inFamous. Просто толщину пластины указать -50 (при имеющейся 15мм)
Аватара пользователя
Kachik
Мастер
Сообщения: 1410
Зарегистрирован: 13 янв 2017, 16:22
Репутация: 308
Настоящее имя: Сергей
Откуда: Питер
Контактная информация:

Re: Список скриптов/макросов для Mach

Сообщение Kachik »

А я не морочусь, подвожу шпиндель сбоку от заготовки. Обнуляюсь в стол и после в окошко Z ввожу -35.125 (высоту 0я в поворотке с минусом). В принципе ни разу не напрягает. Иначе надо разные скрипты на 3 и на 4 оси...
stiks
Кандидат
Сообщения: 50
Зарегистрирован: 05 сен 2013, 11:35
Репутация: 25
Контактная информация:

Re: Список скриптов/макросов для Mach

Сообщение stiks »

Всё же, как по мне, лучше максимально автоматизировать. И телодвижений меньше и возможности ошибиться. Просто сделал 2 кнопки, одна - ноль на столе, вторая - в центре поворотки.
Вложения
Безымянный.JPG (4881 просмотр) <a class='original' href='./download/file.php?id=141088&sid=9794749274502da8f4112c9c4c06c11e&mode=view' target=_blank>Загрузить оригинал (131.54 КБ)</a>
Evghenii
Новичок
Сообщения: 6
Зарегистрирован: 12 июн 2018, 15:50
Репутация: 0
Настоящее имя: Евгений
Контактная информация:

Re: Список скриптов/макросов для Mach

Сообщение Evghenii »

Всем доброго дня!
Я занимаюсь плазменной резкой. При поиске металла через команду G31 я заметил, что при срабатывании концевика Probe ось Z останавливается очень медленно, будто значение ускорения уменьшилось в 10 раз.
При скорости перемещения 1000 мм/мин (которая относительно низкая) после срабатывания Probe резак опускается ещё на 6мм вниз.
Пришлось изменить конструкцию оси Z, чтобы резак не вдавливало в металл.
Никаких настроек в MACH я не нашел, которые на это значение ускорения влияло. Поэтому подумал заменить команду G31 на простой макрос, который бы опускал ось Z до момента срабатывания сигнала, к примеру, OUTPUT#1 и останавливал Z уже с ускорением указанным в настройках Motor Tuning.
К сожалению, я не смог написать этот скрипт.

Сможет ли кто-то в этом помочь?

Замена команды G31 на такой макрос сократила бы время на поиск металла, а при выполнении работы с большим количеством проколов это очень сильно сократит время всей работы.
Ответить

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