Поиск нуля кольцом

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
Urx
Кандидат
Сообщения: 56
Зарегистрирован: 27 июл 2013, 23:20
Репутация: 1
Контактная информация:

Поиск нуля кольцом

Сообщение Urx »

Здравствуйте! В общем, эту штуку сделали в Маче макросами, вот видео. Хочу сделать в LinuxCNC.
https://www.youtube.com/watch?v=bCeQ0WlSXmc
Преимущество, имхо в том, что точность в 2 раза выше обычного метода с простым касанием.
Конструкцию думаю делать такой: серебряное кольцо 925 пробы, тонкий короткий щуп из того же материала. Серебро - так как усилие контакта небольшое по сравнению с парой медь-фреза, и его возникающие в эксплуатации окислы имеют такую же проводимость как и металл.
Взять пружинку, которая всё время возвращается в одно и то же положение. Ну и сплав пружины чтоб от температуры окружающего воздуха не зависел. Во время измерения ее освобождать вниз, а во время резки отгибать вверх.
Пружина жестко продолжается планкой, её длина будет превышать длину инструмента на ширину кольца+некоторое расстояние. Для удобства, так как пружина с планкой громоздкая, её можно разместить снизу, на заготовке, а маленькое кольцо приклеить сверху около фрезера. По периметру кольца 3 лазерных указки, для предварительного ручного центрирования. Кольцо припаяно к серебряной пластинке, которая служит "нулем" по Z.

Вот набросал алгоритм:
-1. Устанавливаем вручную щуп внутри кольца. Делаем как обычно хоминг, но в пределах стенок кольца, далее запускаем нижеследующий код.
0. Переходим на относительные координаты.
1. Едем по Z, до касания с потолком датчика.
2. Едем обратно, 2мм.
3. Обнуляем переменные.
4. Едем по Y вперед, отмеряем расстояние, заносим в переменную R1, до касания с датчиком - стенками кольца.
5. На малой скорости – уточняем.
6. Едем расстояние R1, в обратном направлении.
7. Едем назад по Y, отмеряем расстояние, заносим в переменную R2, до касания с датчиком – стенками кольца.
8. На малой скорости – уточняем.
9. R3=(R1+R2)/2-0.5D, где 0.5D – половина диаметра щупа.
10. Едем вперед на расстояние R3.
11. То же самое но по оси X.
12. Поднимаемся по Z, чтобы освободить щуп из кольца.
13. Делаем программное смещение.
14. Переходим на абсолютные координаты.

Я понимаю, что всё можно сделать с помощью О-кодов. У меня вопрос к уважаемым знатокам, как мне отловить в цикле событие – щуп сконтачил с кольцом. Желательно, чтобы щуп электрически был соединен с лимитом, так как один из лимитов у меня на станке – HOME, и таким образом его можно будет использовать и для хоминга вручную.
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2858
Откуда: Тюмень
Контактная информация:

Re: Поиск нуля кольцом

Сообщение Сергей Саныч »

Urx писал(а):как мне отловить в цикле событие – щуп сконтачил с кольцом.
Его нет необходимости ловить в цикле - в LCNC есть G38.
Чудес не бывает. Бывают фокусы.
Urx
Кандидат
Сообщения: 56
Зарегистрирован: 27 июл 2013, 23:20
Репутация: 1
Контактная информация:

Re: Поиск нуля кольцом

Сообщение Urx »

А G38 только с probe работает? А с Home? Просто не хочется всякий раз перетыкать штепсель датчика из home в probe, забуду и будет неприятность.
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2858
Откуда: Тюмень
Контактная информация:

Re: Поиск нуля кольцом

Сообщение Сергей Саныч »

Urx писал(а):А G38 только с probe работает? А с Home?
Куда подключишь (на уровне hal), с тем и будет работать. Нет препятствий подключить к одному источнику сигнала два входа, конечно, если Home не используется как аппаратный лимит.
Чудес не бывает. Бывают фокусы.
Аватара пользователя
solo
Мастер
Сообщения: 1374
Зарегистрирован: 20 окт 2011, 18:39
Репутация: 272
Настоящее имя: Юрий Соловьев
Откуда: Украина Харьков
Контактная информация:

Re: Поиск нуля кольцом

Сообщение solo »

Классная идея хом выполнять кольцом. тогда получается вообще датчики нома не нужны если допустим кольцо закрепить стационарно на столе.
А можно один и тот же вывод ЛПТ порта использовать как пробе и Хом.
Urx писал(а):9. R3=(R1+R2)/2-0.5D, где 0.5D – половина диаметра щупа.
Мне кажется что можно после этой операции достаточно переместиться в относительной системе координат в реверсом направлении после последней пробы на расстояние R3=(R1+R2)/2 без учета диаметра инструмента.
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Поиск нуля кольцом

Сообщение Nick »

Погоди, так что ты хочешь таким образом делать, искать параметры инструмента, или нули станка?
Urx
Кандидат
Сообщения: 56
Зарегистрирован: 27 июл 2013, 23:20
Репутация: 1
Контактная информация:

Re: Поиск нуля кольцом

Сообщение Urx »

Вот написал код, сегодня проверил, ругается на строку с ROUND, типа не понимает выражение.

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

#<CurX> = #5420
#<CurY> = #5421
#<CurZ> = #5422

;0. Переходим на относительные координаты.
G91

;1. Едем по Z, до касания с потолком датчика.
G38.2 Z-20 F10
G38.4 Z3 F1
G92 Z[0-2]

;2. Едем обратно, 2мм.
G0 Z2

;3. Обнуляем переменные.
#<R1>=0
#<R2>=0
#<R3>=0

;4. Едем по Y вперед, отмеряем расстояние, заносим в переменную R1, до касания с ;датчиком - стенками кольца.
;5. На малой скорости – уточняем.
G92 Y[0]
G38.2 Y20 F10
G38.4 Y-3 F1
#<R1>=#<CurY>

;6. Едем расстояние R1, в обратном направлении.
G0 Y-#<R1>

;7. Едем назад по Y, отмеряем расстояние, заносим в переменную R2, до касания с ;датчиком – стенками кольца.
;8. На малой скорости – уточняем.
G92 Y[0]
G38.2 Y-20 F10
G38.4 Y3 F1
#<R2>=#<CurY>

;9. R3=(R1+R2)/2-0.5D, где 0.5D – половина диаметра щупа.
#<R3>= ROUND[(#<R1>+#<R2>)/2]-1
;10. Едем вперед на расстояние R3.
G92 Y[0]
G0 Y#<R3>
G92 Y[0]

;11. То же самое но по оси X.
#<R1>=0
#<R2>=0
#<R3>=0
G92 X [0]
G38.2 X 20 F10
G38.4 X -3 F1
#<R1>=#<CurX>
G0 X-#<R1>
G92 X[0]
G38.2 X-20 F10
G38.4 X3 F1
#<R2>=#<CurX>
#<R3>= ROUND[(#<R1>+#<R2>)/2]-1
G92 X[0]
G0 X#<R3>
G92 X[0]

;12. Поднимаемся по Z, чтобы освободить щуп из кольца.
G0 Z5

;14. Переходим на абсолютные координаты.
G90
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: Поиск нуля кольцом

Сообщение nkp »

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

#<CurX> = #5420
#<CurY> = #5421
#<CurZ> = #5422

;0. Переходим на относительные координаты.
G91

;1. Едем по Z, до касания с потолком датчика.
G38.2 Z-20 F10
G38.4 Z3 F1
G92 Z[0-2]

;2. Едем обратно, 2мм.
G0 Z2

;3. Обнуляем переменные.
#<R1>=0
#<R2>=0
#<R3>=0

;4. Едем по Y вперед, отмеряем расстояние, заносим в переменную R1, до касания с ;датчиком - стенками кольца.
;5. На малой скорости – уточняем.
G92 Y[0]
G38.2 Y20 F10
G38.4 Y-3 F1
#<R1>=#<CurY>

;6. Едем расстояние R1, в обратном направлении.
G0 Y-#<R1>

;7. Едем назад по Y, отмеряем расстояние, заносим в переменную R2, до касания с ;датчиком – стенками кольца.
;8. На малой скорости – уточняем.
G92 Y[0]
G38.2 Y-20 F10
G38.4 Y3 F1
#<R2>=#<CurY>

;9. R3=(R1+R2)/2-0.5D, где 0.5D – половина диаметра щупа.
#<R3> = ROUND[[[#<R1> + #<R2>]/2] - 1]
;10. Едем вперед на расстояние R3.
G92 Y[0]
G0 Y#<R3>
G92 Y[0]

;11. То же самое но по оси X.
#<R1>=0
#<R2>=0
#<R3>=0
G92 X [0]
G38.2 X 20 F10
G38.4 X -3 F1
#<R1>=#<CurX>
G0 X-#<R1>
G92 X[0]
G38.2 X-20 F10
G38.4 X3 F1
#<R2>=#<CurX>
#<R3>= ROUND[[[#<R1>+#<R2>]/2]-1]
G92 X[0]
G0 X#<R3>
G92 X[0]

;12. Поднимаемся по Z, чтобы освободить щуп из кольца.
G0 Z5

;14. Переходим на абсолютные координаты.
G90
m2
зы совсем не вникал в содержание - смотрел только синтаксис...
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: Поиск нуля кольцом

Сообщение nkp »

не прослеживая алгоритм , я мог не правильно расставить скобки...
поправь , если что...
Urx
Кандидат
Сообщения: 56
Зарегистрирован: 27 июл 2013, 23:20
Репутация: 1
Контактная информация:

Re: Поиск нуля кольцом

Сообщение Urx »

Спасибо, nkp! Проверил - больше не ругается, а скобки я расставлю как надо.
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Поиск нуля кольцом

Сообщение Nick »

nkp +1!
На всякий случай, все математические выражения должны быть в []. Т.е. не
#1 = 2 + 3
а
#1 = [2 + 3]
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Поиск нуля кольцом

Сообщение Nick »

;9. R3=(R1+R2)/2-0.5D, где 0.5D – половина диаметра щупа.
#<R3> = ROUND[[[#<R1> + #<R2>]/2] - 1]
;10. Едем вперед на расстояние R3.
G92 Y[0]
G0 Y#<R3>
G92 Y[0]
Если R3 это центр кольца, то надо просто [[#<R1> + #<R2>]/2]... И кстати, зачем в измерениях ROUND?
Аватара пользователя
Serb01
Опытный
Сообщения: 107
Зарегистрирован: 04 июн 2012, 09:58
Репутация: 17
Настоящее имя: Сергей Беседин
Откуда: Новокузнецк
Контактная информация:

Re: Поиск нуля кольцом

Сообщение Serb01 »

Urx писал(а):Взять пружинку, которая всё время возвращается в одно и то же положение. Ну и сплав пружины чтоб от температуры окружающего воздуха не зависел. Во время измерения ее освобождать вниз, а во время резки отгибать вверх.
Пружина жестко продолжается планкой, её длина будет превышать длину инструмента на ширину кольца+некоторое расстояние. Для удобства, так как пружина с планкой громоздкая, её можно разместить снизу, на заготовке, а маленькое кольцо приклеить сверху около фрезера. По периметру кольца 3 лазерных указки, для предварительного ручного центрирования. Кольцо припаяно к серебряной пластинке, которая служит "нулем" по Z.
Стабильности не будет. Всё должно быть жестко. Примерно так.
Вложения
schup.jpg (2498 просмотров) <a class='original' href='./download/file.php?id=28952&mode=view' target=_blank>Загрузить оригинал (31.54 КБ)</a>
Значительно проще быть чуточку внимательней, чем долгое время пускать деньги на ветер
Urx
Кандидат
Сообщения: 56
Зарегистрирован: 27 июл 2013, 23:20
Репутация: 1
Контактная информация:

Re: Поиск нуля кольцом

Сообщение Urx »

Сегодня после долгих и упорных испытаний, в том числе станка и датчика на прочность, получил работающий код:

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

#<CurX> = #5420
#<CurY> = #5421
#<CurZ> = #5422

;0. Переходим на относительные координаты.
G91

;1. Едем по Z, до касания с потолком датчика.
G38.2 Z-20 F100
G38.4 Z3 F10
G92 Z[0-2]

;2. Едем обратно, 2мм.
G0 Z2

;3. Обнуляем переменные.
#<R1>=0
#<R2>=0
#<R3>=0

;4. Едем по Y вперед, отмеряем расстояние, заносим в переменную R1, до касания с ;датчиком - стенками кольца.
;5. На малой скорости – уточняем.
G92 Y[0]
G38.2 Y20 F100
G38.4 Y-3 F10
#<CurY> = #5421
#<R1>=ABS[#<CurY>]
(DEBUG, "R1y ", #<R1>)

;6. Едем расстояние R1, в обратном направлении.
G0 Y-#<R1>

;7. Едем назад по Y, отмеряем расстояние, заносим в переменную R2, до касания с ;датчиком – стенками кольца.
;8. На малой скорости – уточняем.
G92 Y[0]
G38.2 Y-20 F100
G38.4 Y3 F10
#<CurY> = #5421
#<R2>=ABS[#<CurY>]
(DEBUG, "R2y ", #<R2>)

;9. R3=(R1+R2)/2-0.5D, где 0.5D – половина диаметра щупа.
#<R3> = [[#<R1> + #<R2>]/2]
(DEBUG, "R3y ", #<R3>)
;10. Едем вперед на расстояние R3.
G92 Y[0]
G0 Y#<R3>
G92 Y[0]

;11. То же самое но по оси X.
#<R1>=0
#<R2>=0
#<R3>=0
G92 X [0]
G38.2 X 20 F100
G38.4 X -3 F10
#<CurX> = #5420
#<R1>=ABS[#<CurX>]
(DEBUG, "R1x ", #<R1>)
G0 X-#<R1>
G92 X[0]
G38.2 X-20 F100
G38.4 X3 F10
#<CurX> = #5420
#<R2>=ABS[#<CurX>]
(DEBUG, "R2x ", #<R2>)
#<R3>= [[#<R1> + #<R2>]/2]
(DEBUG, "R3x ", #<R3>)
G92 X[0]
G0 X#<R3>
G92 X[0]

;12. Поднимаемся по Z, чтобы освободить щуп из кольца.
G0 Z15

;14. Переходим на абсолютные координаты.
G90
(DEBUG, "X ", #5420)
(DEBUG, "Y ", #5421)
(DEBUG, "Z ", #5422)
m2
Следующим усовершенствованием будет избавление от периодического перетыкивания датчика с HOME на PROBE, сдуру бывает забываешь перетыкнуть и хорошо еще что прога останавливается, или гибкость станка не позволяет сразу поломать фрезу или дорогостоящий датчик. Так как кольцо я использую еще и для начального хоминга. Задействую выход который включает пылесос, этот выход не использую все равно, он будет релюшкой переключать датчик с PROBE на HOME в программе. Еще второе усовершенствование - эта прога будет запускаться при старте Axes вместо рисующей надпись "LinuxCNC". Ну и смещение сделаю нормальное, чтобы ноль был не в центре кольца а там где он должен быть, в начале работы.
Urx
Кандидат
Сообщения: 56
Зарегистрирован: 27 июл 2013, 23:20
Репутация: 1
Контактная информация:

Re: Поиск нуля кольцом

Сообщение Urx »

Nick писал(а):
;9. R3=(R1+R2)/2-0.5D, где 0.5D – половина диаметра щупа.
#<R3> = ROUND[[[#<R1> + #<R2>]/2] - 1]
;10. Едем вперед на расстояние R3.
G92 Y[0]
G0 Y#<R3>
G92 Y[0]
Если R3 это центр кольца, то надо просто [[#<R1> + #<R2>]/2]... И кстати, зачем в измерениях ROUND?
Да, абсолютно не нужен, я уже дошел до этой истины практическим путем.
Urx
Кандидат
Сообщения: 56
Зарегистрирован: 27 июл 2013, 23:20
Репутация: 1
Контактная информация:

Re: Поиск нуля кольцом

Сообщение Urx »

Serb01 писал(а):
Urx писал(а):Взять пружинку, которая всё время возвращается в одно и то же положение. Ну и сплав пружины чтоб от температуры окружающего воздуха не зависел. Во время измерения ее освобождать вниз, а во время резки отгибать вверх.
Пружина жестко продолжается планкой, её длина будет превышать длину инструмента на ширину кольца+некоторое расстояние. Для удобства, так как пружина с планкой громоздкая, её можно разместить снизу, на заготовке, а маленькое кольцо приклеить сверху около фрезера. По периметру кольца 3 лазерных указки, для предварительного ручного центрирования. Кольцо припаяно к серебряной пластинке, которая служит "нулем" по Z.
Стабильности не будет. Всё должно быть жестко. Примерно так.
Да, только я собрал свой пружинящий щуп, как понял его минусы, и ставить не стал. Использую фрезу в качестве щупа. Интересная у вас конструкция. Это дело надо устанавливать в патрон вместо фрезы?
Аватара пользователя
Serb01
Опытный
Сообщения: 107
Зарегистрирован: 04 июн 2012, 09:58
Репутация: 17
Настоящее имя: Сергей Беседин
Откуда: Новокузнецк
Контактная информация:

Re: Поиск нуля кольцом

Сообщение Serb01 »

Да, вставляется в цангу.
Значительно проще быть чуточку внимательней, чем долгое время пускать деньги на ветер
Urx
Кандидат
Сообщения: 56
Зарегистрирован: 27 июл 2013, 23:20
Репутация: 1
Контактная информация:

Re: Поиск нуля кольцом

Сообщение Urx »

А как выбрать другой код который запускается при запуске Axes? Тот который рисует "LinuxCNC". Или может быть этот файл можно как то отредактировать чтобы вставить свой код - поиск нуля кольцом?
Аватара пользователя
Serb01
Опытный
Сообщения: 107
Зарегистрирован: 04 июн 2012, 09:58
Репутация: 17
Настоящее имя: Сергей Беседин
Откуда: Новокузнецк
Контактная информация:

Re: Поиск нуля кольцом

Сообщение Serb01 »

Nick перевёл руководсво EMC2 Integrators Manual Перевод на русский язык http://cnc-club.ru/forum/viewtopic.php?f=15&t=150#p1496
В ini файле в разделе DISPLAY строка

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

OPEN_FILE = /full/path/to/file.ngc
файл который будет загружен при старте AXIS. Используйте пустую строку "" и никакого файла не будет загружено.
Значительно проще быть чуточку внимательней, чем долгое время пускать деньги на ветер
Urx
Кандидат
Сообщения: 56
Зарегистрирован: 27 июл 2013, 23:20
Репутация: 1
Контактная информация:

Re: Поиск нуля кольцом

Сообщение Urx »

Serb01 писал(а):Nick перевёл руководсво EMC2 Integrators Manual Перевод на русский язык http://cnc-club.ru/forum/viewtopic.php?f=15&t=150#p1496
В ini файле в разделе DISPLAY строка

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

OPEN_FILE = /full/path/to/file.ngc
файл который будет загружен при старте AXIS. Используйте пустую строку "" и никакого файла не будет загружено.
Большое спасибо вам и Nick-у.
Ответить

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