Смена инструмента через вызов подпрограммы

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
a321
Мастер
Сообщения: 563
Зарегистрирован: 03 дек 2016, 00:30
Репутация: 65
Контактная информация:

Смена инструмента через вызов подпрограммы

Сообщение a321 »

Коллеги, достаточно долго и стабильно меняю вручную инструмент МЕЖДУ программами ручным вызовом подпрограммы, вот так -

o<smaena> call

Шпиндель поднимается до максимума, есдет у нужное место, замирает там в паузе до смены фрезы, едет в ПЕРВОМ месте на приличной скорости для грубого касания мягкой точки контакта, поднимается вверх, отъезжает немного вбок и затем медленно, командой

G38.3 F4 Z[#<_z> - 3]

нащупывает точное место, записывает сколько-то раз координату касания и завершает все это командой

G10 L2 P0 Z[#10 - #<_z0>]


где #<_z0> - высота срабатывания датчика, а #10 - измеренная машинная координата без всяких смещений.

Однако при вызове этой подпрограммы непосредственно из реальной программы обработки получается очевидное - складываются все попытки g38.3 и в итоге LCNC считает, что мы уходим "за пределы станка" и программа не запускается.

Вопрос - как бы это обойти? Вики по полуавтоматической смене viewtopic.php?f=15&t=7941 читал, но вижу регулярное "не работает" и, кроме того, там решение с одной точкой касания.
Аватара пользователя
xenon-alien
Почётный участник
Почётный участник
Сообщения: 4506
Зарегистрирован: 01 янв 2013, 13:13
Репутация: 920
Настоящее имя: Daniel
Откуда: Закарпатская обл. Украина
Контактная информация:

Re: Смена инструмента через вызов подпрограммы

Сообщение xenon-alien »

a321 писал(а): Вики по полуавтоматической смене viewtopic.php?f=15&t=7941 читал, но вижу регулярное "не работает" и, кроме того, там решение с одной точкой касания.
Я на 5-ти осевой поставил и там вызов инструмента m6 tx всё работает, только там чуток нужно разобраться, как выставляться по заготовке, потом всё делает само. Проверял одной и той же фрезой и в пределах повторяемости датчика алгоритм работает, как и задумано. Ожидает смену, потом едет измерять и дальше в путь.
По этому не понятно зачем ещё какую-то подпрограмму вызывать. Само подымается в заданные машинные координаты и выезжает для удобства смены по ХУ.
a321
Мастер
Сообщения: 563
Зарегистрирован: 03 дек 2016, 00:30
Репутация: 65
Контактная информация:

Re: Смена инструмента через вызов подпрограммы

Сообщение a321 »

xenon-alien писал(а): Я на 5-ти осевой поставил и там вызов инструмента m6 tx всё работает,
Сделайте пожалуйста одолжение, подбробную инстуркцию? viewtopic.php?f=15&t=7941 - мне не нужна еще одна панель, мне нужна только обработка кода М6
Аватара пользователя
xenon-alien
Почётный участник
Почётный участник
Сообщения: 4506
Зарегистрирован: 01 янв 2013, 13:13
Репутация: 920
Настоящее имя: Daniel
Откуда: Закарпатская обл. Украина
Контактная информация:

Re: Смена инструмента через вызов подпрограммы

Сообщение xenon-alien »

a321 писал(а): 04 мар 2023, 18:31
xenon-alien писал(а): Я на 5-ти осевой поставил и там вызов инструмента m6 tx всё работает,
Сделайте пожалуйста одолжение, подбробную инстуркцию? viewtopic.php?f=15&t=7941 - мне не нужна еще одна панель, мне нужна только обработка кода М6
Я сам только по инструкции умею работать (и то с трудом), так что вам самим нужно разобраться, как оно работает и как лишнее убрать.
Мне лично ещё одна вкладка не мешает. (и я загружаю вкладку отдельным окном, да и центро-искатель без проблем можно использовать)
Аватара пользователя
vitzin
Мастер
Сообщения: 410
Зарегистрирован: 27 фев 2020, 14:16
Репутация: 55
Настоящее имя: viktor vizin
Контактная информация:

Re: Смена инструмента через вызов подпрограммы

Сообщение vitzin »

Здравствуйте всё,
Есть видео,Talla на yutubе,
Работает 100 процентов,
Может это для вас?
Маленькая программа,ремап M6,.
https://youtu.be/FbozaAuel2A
Аватара пользователя
vitzin
Мастер
Сообщения: 410
Зарегистрирован: 27 фев 2020, 14:16
Репутация: 55
Настоящее имя: viktor vizin
Контактная информация:

Re: Смена инструмента через вызов подпрограммы

Сообщение vitzin »

У него много видосов,спец немецкий по Линуксу,
По его видео прикрутил себе Штурвал,промер инструмента,нарезание
Резьбы мечиком.
a321
Мастер
Сообщения: 563
Зарегистрирован: 03 дек 2016, 00:30
Репутация: 65
Контактная информация:

Re: Смена инструмента через вызов подпрограммы

Сообщение a321 »

vitzin писал(а): Здравствуйте всё,
Есть видео,Talla на yutubе,
Работает 100 процентов,
Может это для вас?
Да, пооже, спасибо за наводку. Но как-то неразумно со стоп-кадра экрана тексты в конфиги набирать. Там целый тред комментов, а текстов макроса и конфига не увидел. Коли реазовали, поделитесь пожалуйста?
steals_y2k
Мастер
Сообщения: 938
Зарегистрирован: 29 окт 2017, 14:08
Репутация: 60
Настоящее имя: Makc
Откуда: Ярославль
Контактная информация:

Re: Смена инструмента через вызов подпрограммы

Сообщение steals_y2k »

a321 писал(а): Там целый тред комментов, а текстов макроса и конфига не увидел. Коли реазовали, поделитесь пожалуйста?
вот же совсем человек думать не желает...
(для просмотра содержимого нажмите на ссылку)
o</home/cnc/linuxcnc/m/_tc> sub
o404404 IF [#<_selected_tool> NE #<_current_tool> ]
G90 G54 G21 G17 G61


M5
G04 P4
G49 G40
G53 G0 Z0
O119 IF [ #<_current_tool> EQ 1 ]
..переезжаем в координаты смены и сбрасываем инструмент
O119 ENDIF

..
..
..
O118 IF [ #<_selected_tool> EQ 2 ]
..переезжаем в координаты нового инструмента и захватываем его
O118 ENDIF

M61Q#<_selected_tool>
#5451 = #<_selected_tool>

G53 G0 Z0
G53 G0 Y380
G53 G0 X[#5181]
G90
o404404 ENDIF

o</home/cnc/linuxcnc/m/_tc> endsub
M2
Аватара пользователя
vitzin
Мастер
Сообщения: 410
Зарегистрирован: 27 фев 2020, 14:16
Репутация: 55
Настоящее имя: viktor vizin
Контактная информация:

Re: Смена инструмента через вызов подпрограммы

Сообщение vitzin »

a321 писал(а): Да, пооже, спасибо за наводку. Но как-то неразумно со стоп-кадра экрана тексты в конфиги набирать. Там целый тред комментов, а текстов макроса и конфига не увидел. Коли реазовали, поделитесь пожалуйста?
К сожалению не могу выложить конфигурации,
живу уже почти год у родителей,а фрезерный находится у бывшей в
подвале,возможности перетащить всё к родителям нет.
Вот нашёл в немецком форуме

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

o<messen> sub
#1700=150 (Wechsel X Position)
#1701=0 (Wechsel Y Position)
#1702=-1 (Wechsel Z Position Wert ist absolut vom Maschinennullpunk)

#1800=-20 (Position sicheres Z)
#1801=320 (Position Taster X)
#1802=27 (Position Taster Y)

#1900=#<_coord_system> (NP merken nur G54 bis G59)

o500 if [#<_current_tool> EQ #<_selected_tool>]
;(debug, Tool bereits in der Spindel)
o500 else
M5
G54
G90 G0

G53 Z#1702 (Wechsel Z Position)
G53 X#1700 Y#1701 (Wechsel XY Position)
M6 T#<_selected_tool>

G53 X#1801 Y#1802 (Taster Position)
G53 Z#1800 (Sichere Z Position)

G43.1 Z0 (TLO reset)
G91
G38.2 Z-50 F350 (messen grob)
G1 Z5.0 F500 (frei fahren)
G38.2 Z-10 F50 (messen fein)
#2000=[#5063+#5223] (Tastpunkt+NP Verschiebung)
#2001=[#2000-#2002+#2003](Neu - diff + alt)
#2002=[#2000] (Tastpunkt alt merken)
#2003=[#2001] (Offset alt merken)
G1 Z5.0 F500 (frei fahren)
G90 G0

G43.1 Z#2001 (TLO set)
G53 Z#1800 (Sichere Z Position)
G53 Z#1702 (Wechsel Z Position)

;(debug, Differenz ist: #2001)

(NP wiederhestellen nur G54 bis G59)
o100 if[#1900 EQ 540]
G54
o100 endif
o101 if[#1900 EQ 550]
G55
o101 endif
o102 if[#1900 EQ 560]
G56
o102 endif
o103 if[#1900 EQ 570]
G57
o103 endif
o104 if[#1900 EQ 580]
G58
o104 endif

o500 endif


o<messen> endsub
M2
А это в ини

RS274NGC]
PARAMETER_FILE = linuxcnc.var
FEATURES=30
REMAP=M6 modalgroup=6 ngc=messen
SUBROUTINE_PATH = macros
a321
Мастер
Сообщения: 563
Зарегистрирован: 03 дек 2016, 00:30
Репутация: 65
Контактная информация:

Re: Смена инструмента через вызов подпрограммы

Сообщение a321 »

Пошел по этому пути. Запускаю (симуляция) и выижу, что аксис отрисовывает ход инструмента в процессе поиска датчика. И "вычисляет" его уход за пределы станка.
Поясню суть вопроса - мы командой вида G91 G38.2 Z-120 F250 даем станку команду - иди ка ты на минус 120 до контакта с датчиком. Т.е. реальный ход идет до контакта с датчиком. А он наступает раньше этих -120. Программа же заранее об этом не знает, и складывает все такие перемещения и получает уход за границы, которого реально не происходит.

часть кода выглядит странно -

#2000=[#5063+#5223] (Tastpunkt+NP Verschiebung)
#2001=[#2000-#2002+#2003](Neu - diff + alt)
#2002=[#2000] (Tastpunkt alt merken)
#2003=[#2001] (Offset alt merken)

#2002 и #2003 используются до их вычисления. Объявлены как "запомнить на будущее", но ведь в общей логике интерпретатора ПРИ каждом вызове этой подпрограммы они становятся нулевыми.
Вложения
Снимок экрана от 2023-03-06 23-35-53.jpg (3162 просмотра) <a class='original' href='./download/file.php?id=206935&sid=186af25232b55f2ee0e6ef2369a87e82&mode=view' target=_blank>Загрузить оригинал (28.2 КБ)</a>
steals_y2k
Мастер
Сообщения: 938
Зарегистрирован: 29 окт 2017, 14:08
Репутация: 60
Настоящее имя: Makc
Откуда: Ярославль
Контактная информация:

Re: Смена инструмента через вызов подпрограммы

Сообщение steals_y2k »

можно "запомнить на будущее", использовав глобальные переменные, а не локальные.
либо вообще пины создать.
a321 писал(а): Т.е. реальный ход идет до контакта с датчиком. А он наступает раньше этих -120. Программа же заранее об этом не знает, и складывает все такие перемещения и получает уход за границы, которого реально не происходит.
значит, надо искать поменьше, не 120.
medossa
Опытный
Сообщения: 163
Зарегистрирован: 20 ноя 2012, 08:38
Репутация: 3
Настоящее имя: Евгений
Откуда: Протвино
Контактная информация:

Re: Смена инструмента через вызов подпрограммы

Сообщение medossa »

Кто-нибудь может поделиться рабочим макросом remap m6? не совсем понимаю что такое #2000 и подобные значения. Смотрел экран Auto Tool Measurement, но он излишен. Либо подскажите по параметрам, т.к. здесь моя голова лопнула)):
#2000=[#5063+#5223] (Tastpunkt+NP Verschiebung)
#2001=[#2000-#2002+#2003](Neu - diff + alt)
#2002=[#2000] (Tastpunkt alt merken)
#2003=[#2001] (Offset alt merken)
alex_sar
Мастер
Сообщения: 1675
Зарегистрирован: 28 авг 2018, 17:13
Репутация: 278
Настоящее имя: Алексей
Контактная информация:

Re: Смена инструмента через вызов подпрограммы

Сообщение alex_sar »

#2000 - #2003 это просто локальные переменные, где-то дальше используются в коде

#5063 #5223 это глобальные переменные выставляемые линуксцнц. список здесь - http://linuxcnc.org/docs/html/gcode/ove ... parameters
alex_sar
Мастер
Сообщения: 1675
Зарегистрирован: 28 авг 2018, 17:13
Репутация: 278
Настоящее имя: Алексей
Контактная информация:

Re: Смена инструмента через вызов подпрограммы

Сообщение alex_sar »

Если без remap, то у меня вот так вот сделано. по кнопке вызывается.

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

o<probez> sub
   G90 G17 G21 G40 G49 G80 G94
   M5

   ( first touch - 60m/min from 150 to 800 min-1 )
   ( second touch - 800 rev/min Feed 4mm/min )
   ( first F = 0.12 × rev/min )

   #<tcx>=-193
   #<tcy>=83.5

   (shift to tool diam)
   #<tcx> = [ #<tcx> + #5410 / 2 ]
 
   G28.1
   #<xx> = #5161
   #<yy> = #5162
   #<zz> = #5163
   #<speed> = 300
   #<feed0> = [ 0.12 * #<speed> ] 
   #<feed0> = 150

   #<spindle_probez> = -280.350 (spindle end touching toolsensor abs Z) 
   #<spindle_to_table> = -349.163 (spindle end touching table abs Z)
   #<toolsetter_heigth> = 68.813 (from ts to table)


   o3300 if [#5409 GT 0 ]  (if current tool W is set > 0, do not start turning!)
	#<speed> = 0
   o3300 endif

	
   #<dx> = [ #<tcx> - #<xx> ]
   #<dy> = [ #<tcy> - #<yy> ]
   #<distance> = [ SQRT[ #<dx>*#<dx>+#<dy>*#<dy> ]]
   (LOG,distance #<distance> #<dx> #<dy>)
   
    o3001 if [#<_current_tool> LE 0 ]
        (MSG, no tool selected, select a tool first)
        o<probez> return 
    o3001 endif

    M64 P0 (enable tool sensor)

    o3002 if [#<distance> GT 30 ]
       (safe go to toolsetter)
       G53 G0 Z-10 ( safe z )
       G53 G0 X[#<tcx>] Y[#<tcy>]  ( toolprobe xy)
       G53 G1 Z-150 F400 ( fast up )
    o3002 else 
      (TOOL near toolsetter)
       G53 G0 X[#<tcx>] Y[#<tcy>]  ( toolprobe xy)
    o3002 endif

    M4 S[#<speed>]
    G91 G38.3 Z-155 F[#<feed0>] ( probe )
    G90

    o3010 if [#5070 NE 1]
        (MSG, no touch for touch sensor on try 1)
        M65 P0 (disable tool sensor)
	M5
        o<probez> return 
    o3010 endif

    M65 P0 (disable sensor)
    G91 G1 Z0.5 F120
    M64 P0 (enable sensor)
    G91 G38.3 Z-1 F4
    G90

    o3020 if [#5070 NE 1]
        (MSG, no touch for touch sensor on try 2)] 
        M65 P0 (disable tool sensor)
	M5
        o<probez> return 
    o3020 endif

    G28.1 ( stores the current absolute position into parameters 5161-5166 )
    #<zz> = #5163 ( absolute Z )
    G10 L1 P#<_current_tool> Z[ #<zz> - #<spindle_probez> ]
    G43

    M65 P0 (disable tool sensor)
 
    G91 G1 Z10 F300
    G90

    M5

    o<probez> return 

o<probez> endsub

(o<probez> call)

M2
проверяет, если инструмент рядом с датчиком инструмента, то не делает лишних движений по Z
выставляет смещение текущего инструмента.
steals_y2k
Мастер
Сообщения: 938
Зарегистрирован: 29 окт 2017, 14:08
Репутация: 60
Настоящее имя: Makc
Откуда: Ярославль
Контактная информация:

Re: Смена инструмента через вызов подпрограммы

Сообщение steals_y2k »

я выше делился)
но это же думать надо..
medossa
Опытный
Сообщения: 163
Зарегистрирован: 20 ноя 2012, 08:38
Репутация: 3
Настоящее имя: Евгений
Откуда: Протвино
Контактная информация:

Re: Смена инструмента через вызов подпрограммы

Сообщение medossa »

alex_sar писал(а): это глобальные переменные выставляемые линуксцнц
Ок, спасибо.
medossa
Опытный
Сообщения: 163
Зарегистрирован: 20 ноя 2012, 08:38
Репутация: 3
Настоящее имя: Евгений
Откуда: Протвино
Контактная информация:

Re: Смена инструмента через вызов подпрограммы

Сообщение medossa »

steals_y2k писал(а): но это же думать надо..
Вот и думаю) Со стороны смотришь, вроде всё понятно, начинаешь что-то реально делать... всё, приплыли.
ex71
Мастер
Сообщения: 697
Зарегистрирован: 18 май 2019, 13:23
Репутация: 96
Настоящее имя: Андрей
Контактная информация:

Re: Смена инструмента через вызов подпрограммы

Сообщение ex71 »

есть тема "смена инструмента на токарном" - я там писал инструкцию о ремапе с внешним скриптом.
a321
Мастер
Сообщения: 563
Зарегистрирован: 03 дек 2016, 00:30
Репутация: 65
Контактная информация:

Re: Смена инструмента через вызов подпрограммы

Сообщение a321 »

Пришел к выводу, что это вредно. Т.е. сделал, отладил и не использую. И вот почему - в кустарных условиях бывает так, что по какой-либо причине выполнение кода обмера инструмента прерывается ошибкой. В моих условиях без использования высокоточных промышленно выпускаемых датчиков это так. Код же М6 выставляется в теле программы и в случае аборта надо "все проходить с нуля" либо по горячим следам редактировать код программы. Если же каждому инструменту задавать в программе код через IF или делать отдельные программы на каждый инструмент, то нет разницы, М6 или вызов отдельной подпрограммы вручную (как это делаю я).
steals_y2k
Мастер
Сообщения: 938
Зарегистрирован: 29 окт 2017, 14:08
Репутация: 60
Настоящее имя: Makc
Откуда: Ярославль
Контактная информация:

Re: Смена инструмента через вызов подпрограммы

Сообщение steals_y2k »

ремапить можно не только м6☺️
Ответить

Вернуться в «LinuxCNC»