Скрипты для MACH3.
-
- Почётный участник
- Сообщения: 740
- Зарегистрирован: 19 апр 2014, 22:09
- Репутация: 697
- Откуда: Челябинск
- Контактная информация:
Re: Скрипты для MACH3.
Может найдется спец который подробно раскажет как работает SetDRO
Я начал было грешить на то что мачь "ломаный"
знать-бы точно
Я начал было грешить на то что мачь "ломаный"
знать-бы точно
Даешь коллективный разум !
- putman
- Мастер
- Сообщения: 925
- Зарегистрирован: 21 янв 2013, 09:49
- Репутация: 100
- Настоящее имя: Алексей
- Откуда: г. Долгопрудный
- Контактная информация:
Re: Скрипты для MACH3.
У меня лицензия, просто мы не шарим, а знатоки не хотят давать нам рыбу. Хотят что бы мы сами научились её ловить.
Понял ))))))
Команда Call SetDRO(0,0) выполняется не дождавшись пока щуп доедет.
Вставляю перед обнулением:
While IsMoving()
Wend ' дождаться конца движения
Теперь после остановки обнуляем.
P.S. Я программирую микроконтроллеры на ассемблере, там реально проще )))
Понял ))))))
Команда Call SetDRO(0,0) выполняется не дождавшись пока щуп доедет.
Вставляю перед обнулением:
While IsMoving()
Wend ' дождаться конца движения
Теперь после остановки обнуляем.
Код: Выделить всё
Code "G04 p0.25" ' пауза 0.5 с
Xnew = GetDRO(0) - 0.25
Code "G01 x"&Xnew
Xnew = (Xnew+0.25)/2
Code "G01 x"&Xnew
While IsMoving() <----------------------------
Wend ' дождаться конца движения <----------------------------
Call SetDRO(0,0) ' обнулить данные в окне X -=( 2 )=-
- Сергей Саныч
- Мастер
- Сообщения: 9116
- Зарегистрирован: 30 май 2012, 14:20
- Репутация: 2858
- Откуда: Тюмень
- Контактная информация:
Re: Скрипты для MACH3.
Это ж общепринятая форма для большинства языков. А ни с мачем, ни с вижуал бейсиком я сроду дела не имелputman писал(а):Что же Вы сразу не написали если знали.
Кстати, в чем там аргумент задается - в градусах или радианах - тоже не знаю.
Чудес не бывает. Бывают фокусы.
-
- Почётный участник
- Сообщения: 740
- Зарегистрирован: 19 апр 2014, 22:09
- Репутация: 697
- Откуда: Челябинск
- Контактная информация:
Re: Скрипты для MACH3.
А в какой точно момент начинается выполнение этой команды , одновременно с последней G0,G1,G31 ?putman писал(а):Команда Call SetDRO(0,0) выполняется не дождавшись пока щуп доедет
Даешь коллективный разум !
- putman
- Мастер
- Сообщения: 925
- Зарегистрирован: 21 янв 2013, 09:49
- Репутация: 100
- Настоящее имя: Алексей
- Откуда: г. Долгопрудный
- Контактная информация:
Re: Скрипты для MACH3.
В моём скрипте сразу после - Code "G01 x"&Xnew .konyshevk писал(а):А в какой точно момент начинается выполнение этой команды , одновременно с последней G0,G1,G31 ?putman писал(а):Команда Call SetDRO(0,0) выполняется не дождавшись пока щуп доедет
Как только движение пошло, сразу и выполняется.
-
- Почётный участник
- Сообщения: 740
- Зарегистрирован: 19 апр 2014, 22:09
- Репутация: 697
- Откуда: Челябинск
- Контактная информация:
Re: Скрипты для MACH3.
Это многое проясняет
А зачем писать Call SetDRO(0,0) ведь просто SetDRO(0,0) одинаково работает : первая цифра- куда , вторая - что записать 0 - обнулить
А зачем писать Call SetDRO(0,0) ведь просто SetDRO(0,0) одинаково работает : первая цифра- куда , вторая - что записать 0 - обнулить
Последний раз редактировалось konyshevk 12 дек 2014, 22:06, всего редактировалось 1 раз.
Даешь коллективный разум !
-
- Зачётный участник
- Сообщения: 34042
- Зарегистрирован: 04 апр 2010, 19:22
- Репутация: 6192
- Откуда: Казахстан.
- Контактная информация:
Re: Скрипты для MACH3.
забыл sleep(100) написатьputman писал(а):While IsMoving()
Wend ' дождаться конца движения
Код: Выделить всё
While (IsMoving())
sleep (100)
Wend
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
-
- Зачётный участник
- Сообщения: 34042
- Зарегистрирован: 04 апр 2010, 19:22
- Репутация: 6192
- Откуда: Казахстан.
- Контактная информация:
Re: Скрипты для MACH3.
Если нет в коде While (IsMoving()) ....konyshevk писал(а):А в какой точно момент начинается выполнение этой команды , одновременно с последней G0,G1,G31 ?
то фактически одновременно не дожидаясь выполнения Gcode
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
- putman
- Мастер
- Сообщения: 925
- Зарегистрирован: 21 янв 2013, 09:49
- Репутация: 100
- Настоящее имя: Алексей
- Откуда: г. Долгопрудный
- Контактная информация:
Re: Скрипты для MACH3.
Написал заново программу, без дурацких G91, G92.
Разобрался с тригонометрическими функциями.
Скрипт после работы поворачивает плоскость на угол нужный для правильной обработки детали.
Всем спасибо ! =)
Код:
Разобрался с тригонометрическими функциями.
Скрипт после работы поворачивает плоскость на угол нужный для правильной обработки детали.
Всем спасибо ! =)
Код:
Код: Выделить всё
Code "G31 Y-1000 F100" ' двигаться по -Y на 1м до касания щупом
While IsMoving()
Wend ' дождаться конца движения
SetDRO(1,0) ' обнулить данные в окне Y
Code "G04 p0.25" ' пауза 0.5 с
Code "G01 Y0.25" ' отъехать от стенки
Code "G04 p0.25" ' пауза 0.5 с
Code "G31 Y1000" ' двигаться по +Y на 1м до касания щупом
While IsMoving()
Wend ' дождаться конца движения
Code "G04 p0.25" ' пауза 0.5 с
Ynew = GetDRO(1) - 0.25
Code "G01 Y"&Ynew
Ynew = (Ynew+0.25)/2
Code "G01 Y"&Ynew
Code "G04 p0.25" ' пауза 0.5 с
While IsMoving()
sleep (100)
Wend ' дождаться конца движения
SetDRO(1, -9.1) ' Y первого калибровочного отверстия
'Установили нуль по Y.
Code "G04 p0.25" 'пауза 0.5 c
Code "G31 X-1000 F100" ' двигаться по -Х на 1м до касания щупом
While IsMoving()
sleep (100)
Wend ' дождаться конца движения
SetDRO(0,0) ' обнулить данные в окне X
Code "G04 p0.25" ' пауза 0.5 с
Code "G01 x0.25" ' отъехать от стенки
Code "G04 p0.25" ' пауза 0.5 с
Code "G31 X1000" ' двигаться по +-X на 1м до касания щупом
While IsMoving()
Wend ' дождаться конца движения
Code "G04 p0.25" ' пауза 0.5 с
Xnew = GetDRO(0) - 0.25
Code "G01 x"&Xnew
Xnew = (Xnew+0.25)/2
Code "G01 x"&Xnew
While IsMoving()
sleep (100)
Wend ' дождаться конца движения
SetDRO(0, 15.02) ' X первого калибровочного отверстия
'Установили предварительный нуль по Х.
Code "G00 Z3"
While IsMoving()
sleep (100)
Wend ' дождаться конца движения
Code "G0 X14.86 Y9.1"
While IsMoving()
sleep (100)
Wend ' дождаться конца движения
Code "G01 Z0 F50"
While IsMoving()
sleep (100)
Wend ' дождаться конца движения
'---------------------------------------------------------------------------------------------------
Code "G31 Y-1000 F100" ' двигаться по -Y на 1м до касания щупом
While IsMoving()
sleep (100)
Wend ' дождаться конца движения
Yknul = GetDRO(1)
Code "G04 p0.25" ' пауза 0.5 с
Code "G01 Y" & (Yknul + 0.25) ' отъехать от стенки
Code "G04 p0.25" ' пауза 0.5 с
Code "G31 Y1000" ' двигаться по +Y на 1м до касания щупом
While IsMoving()
sleep (100)
Wend ' дождаться конца движения
Code "G04 p0.25" ' пауза 0.5 с
Yotnul = GetDRO(1)
Code "G01 Y" & (Yotnul - 0.25) ' отъехать от стенки
Ynew = Yknul + ( (Yotnul - Yknul) / 2)
Code "G01 Y" & Ynew
Code "G04 p0.25" ' пауза 0.5 с
While IsMoving()
sleep (100)
Wend ' дождаться конца движения
'Установили смещение по Y для второго отверстия.
Code "G31 X-1000 F100" ' двигаться по -X на 1м до касания щупом
While IsMoving()
sleep (100)
Wend ' дождаться конца движения
Xknul = GetDRO(0)
Code "G04 p0.25" ' пауза 0.5 с
Code "G01 X" & (Xknul + 0.25) ' отъехать от стенки
Code "G04 p0.25" ' пауза 0.5 с
Code "G31 X1000" ' двигаться по +X на 1м до касания щупом
While IsMoving()
sleep (100)
Wend ' дождаться конца движения
Code "G04 p0.25" ' пауза 0.5 с
Xotnul = GetDRO(0)
Code "G01 X" & (Xotnul - 0.25) ' отъехать от стенки
Xnew = Xknul + ( (Xotnul - Xknul) / 2)
Code "G01 X" & Xnew
Code "G04 p0.25" ' пауза 0.5 с
While IsMoving()
sleep (100)
Wend ' дождаться конца движения
Установили смещение по Y для второго отверстия.
Code "G00 Z10"
While IsMoving()
sleep (100)
Wend ' дождаться конца движения
Xsm = 14.86 - Xnew
Del = Xsm / 18.2
Ug = Atn (Del) * 180 / 3.14
Code "G68 X0 Y0 R" & Ug
Code "G00 Z120 X130 Y0"
responde = MsgBox ("Cмещение = " & Xsm & ", A(tg) = " & Del & ", Угол = " & Ug)
-
- Почётный участник
- Сообщения: 740
- Зарегистрирован: 19 апр 2014, 22:09
- Репутация: 697
- Откуда: Челябинск
- Контактная информация:
Re: Скрипты для MACH3.
Вот то-же набросал простенький скрипт поворота координат XY по стенки детали .(это для того что-бы деталь с базовой плоскостью по Х не выставлять а координаты повернуть и
запускать программу) При выполнении скрипта привязка не сбивается .
начало
Попробуйте мож понравится !
запускать программу) При выполнении скрипта привязка не сбивается .
начало
- Code "G69"'Сброс прошлых поворотов координат
Code "G91"
Code "G1x3 f500" 'едим по Х на точку замера
Code "G31 Y-100 F500" ' двигаться по -Y на 100 мм. до касания щупом
While IsMoving()
Wend ' дождаться конца движения
a = GetDRO(1)' записываем показания Y в a
Code "G04 p0.2" ' пауза 0.2 с
Code "G01 Y2 f1000" ' отъехать от стенки
Code "G0 Y10"
Code "G90"
Code "G1 x-3 f500" 'едим по Х в минус на точку замера
Code "G91"
Code "G31 Y-100 F500" ' двигаться по -Y на 100 мм. до касания щупом
While IsMoving()
Wend ' дождаться конца движения
b = GetDRO(1)' записываем показания Y в В
Code "G04 p0.2" ' пауза 0.2 с
Code "G01 Y2 f1000" ' отъехать от стенки
Code "G0 Y10"
Code "G90"
Code "G0 x0"
c=(a-b)/6 ' разница катетов, 6- это расстояние между точками замера по Х (6мм)
e=a-b ' Cмещение по Y
Del = Int(c*1000 + 0.5)/1000 'уравнять до трех знаков после запятой
d = Atn (Del)* 180 / 3.1415926535897932384626433832795 ' вычисляем угол через арктангенс
Ug = Int(d*1000 + 0.5)/1000 'уравнять до трех знаков после запятой угол
Code "G68 X0 Y0 R" & Ug' поворачиваем плоскость X Y ну угол Ug
responde = MsgBox ("Cмещение = " & e & ", A(tg) = " & Del & ", Угол = " & Ug)
Попробуйте мож понравится !
Даешь коллективный разум !
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: Скрипты для MACH3.
А в маче нет поворота системы координат?
nkp как-то писал похожую утилиту для выставления для LinuxCNC. Там тоже делался замер по двум точкам, а потом:
G10 L2 X... Y... Z... R#<alpha>
( http://linuxcnc.org/docs/html/gcode/gco ... ec:G10-L2_ )
nkp как-то писал похожую утилиту для выставления для LinuxCNC. Там тоже делался замер по двум точкам, а потом:
G10 L2 X... Y... Z... R#<alpha>
( http://linuxcnc.org/docs/html/gcode/gco ... ec:G10-L2_ )
-
- Почётный участник
- Сообщения: 740
- Зарегистрирован: 19 апр 2014, 22:09
- Репутация: 697
- Откуда: Челябинск
- Контактная информация:
Re: Скрипты для MACH3.
G68 поворачивает ,а скрипт определяет на сколько повернуть. (встроенного в Мач скрипта я не видел)Nick писал(а):А в маче нет поворота системы координат?
Даешь коллективный разум !
- verser
- Мастер
- Сообщения: 1894
- Зарегистрирован: 21 июл 2013, 22:28
- Репутация: 1282
- Настоящее имя: Сергей
- Откуда: Тбилиси
- Контактная информация:
Re: Скрипты для MACH3.
Вот бы ссылочку от nkpNick писал(а):А в маче нет поворота системы координат?
nkp как-то писал похожую утилиту для выставления для LinuxCNC. Там тоже делался замер по двум точкам, а потом:
G10 L2 X... Y... Z... R#<alpha>
( http://linuxcnc.org/docs/html/gcode/gco ... ec:G10-L2_ )
-
- Новичок
- Сообщения: 3
- Зарегистрирован: 14 дек 2015, 11:37
- Репутация: 0
- Контактная информация:
Re: Скрипты для MACH3.
Подскажите как с помощью этой команды занести значение из окна Z или другого в окно H коррекции длины инструмента. Не могу понять как нумеруются эти окна.konyshevk писал(а):SetDRO(0,0) одинаково работает : первая цифра- куда , вторая - что записать
- kurtkobat
- Кандидат
- Сообщения: 89
- Зарегистрирован: 01 мар 2017, 20:52
- Репутация: 3
- Настоящее имя: Dmitriy
- Контактная информация:
Re: Скрипты для MACH3.
подскажите пожалуйста, в строке Call SetDRO(0,0) первый 0 это координата Х, а что обозначает второй 0?
Иногда в мозгах включается G04 Х500, но это нужда что бы сделать правильно
- FLUKE
- Мастер
- Сообщения: 843
- Зарегистрирован: 11 мар 2013, 21:18
- Репутация: 187
- Настоящее имя: Сергей
- Откуда: Смоленск
- Контактная информация:
Re: Скрипты для MACH3.
http://www.cnc-club.ru/forum/viewtopic. ... 84#p157884kurtkobat писал(а):подскажите пожалуйста, в строке Call SetDRO(0,0) первый 0 это координата Х, а что обозначает второй 0?
-
- Кандидат
- Сообщения: 50
- Зарегистрирован: 05 сен 2013, 11:35
- Репутация: 25
- Контактная информация:
Re: Скрипты для MACH3.
Форумчане, подскажите, пожалуйста. Пытаюсь собрать солянку из нескольких скриптов. Необходима такая последовательность. Движение в позицию датчика vers tsm->опускание до контакта с площадкой->отскок на 2 мм->поиск центра площадки->запись офсетов в поле координат.
Для поиска центра площадки использую скрипт из ProbeWizard, заменив переменные значения на свои фиксированные. Плюс дописал движение в позицию по Х,У. Далее отредактировал скрипт поиска Z от Михаила Юрова, добавив в него второй тач на низкой скорости. Отдельно эти скрипты работают, но когда вставляю поиск Z перед Dim FRate1, FRate2 - выдает ошибку. Возможно нужно какой-то разделитель между ними?
Для поиска центра площадки использую скрипт из ProbeWizard, заменив переменные значения на свои фиксированные. Плюс дописал движение в позицию по Х,У. Далее отредактировал скрипт поиска Z от Михаила Юрова, добавив в него второй тач на низкой скорости. Отдельно эти скрипты работают, но когда вставляю поиск Z перед Dim FRate1, FRate2 - выдает ошибку. Возможно нужно какой-то разделитель между ними?
-
- Новичок
- Сообщения: 22
- Зарегистрирован: 05 июн 2021, 08:03
- Репутация: 1
- Настоящее имя: Vladimir
- Контактная информация:
Re: Скрипты для MACH3.
Господа, здравствуйте) Помогите пожалуйста написать простой скрипт для mach3: Подняться по z до косания концевика, поехать в точку x1y1 в координатах станка, опускаться с фиксированной скоростью до косания датчика нуля по z, после косания подняться на 10 и опускаться с фиксированной скоростью до косания. Заранее спасибо)