[WIKI] Ручная смена инструмента с автоизмерением длины.

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.

[WIKI] Ручная смена инструмента с автоизмерением длины.

Сообщение verser » 05 май 2015, 00:40

В этой статье поделюсь удобным методом и программами к нему
для ручной смены инструмента c автоматическим измерением длины на фрезерном станке под linuxcnc(ver.2.6 и выше).
[WIKI] Ручная смена инструмента с автоизмерением длины. auto_tool_measurement.jpg

Цель метода: автоматизировать все действия при ручной смене инструмента по максимуму так, чтобы руками осталось лишь вынуть-старую-вставить-новую фрезу.

Особенности:
- основан на remap M6, при обнаружении в тексте g-code "M6 Tx" (или при MDI команде M6 Tx) выполняется диалог для ручной смены и далее автоматом измерение с последующей записью отступа по Z в таблицу инструмента и автоматическое продолжение выполнения g-code,
- не нужен опорный (базовый) инструмент,
- настройки типа "раз-и-навсегда" делаются в .ini файле (позиция смены, позиция датчика Tool Setter, максимальное расстояние поиска Probe),
- настройки "по-ходу" делаются в GladeVCP панельке (поверхность заготовки, скорости поиска и уточнения).

Tребование: наличие двух датчиков - Probe и Tool setter.

Установка.
(для просмотра содержимого нажмите на ссылку)
1. Дополним свой .ini такими настройками
Код: Выделить всёРазвернуть
...
[DISPLAY]
# добавим GladeVCP панель в виде закладки рядом с  Preview/DRO:
EMBED_TAB_NAME=Auto Tool Measurement
EMBED_TAB_COMMAND=halcmd loadusr -Wn gladevcp gladevcp -c gladevcp  -u python/auto_tool_measurement.py -x {XID} auto_tool_measurement.glade

...
[RS274NGC]
# Возможность чтения INI и HAL переменных из gcode и др.
FEATURES=30

# Папка для подпрограмм
SUBROUTINE_PATH = macros
# подпрограмма вызывается при сбое во время выполнения remap M6 процедур
ON_ABORT_COMMAND=O <on_abort> call
# Remap M6
REMAP=M6   modalgroup=6  prolog=change_prolog   ngc=manual_change  epilog=change_epilog   
...
[TOOLSENSOR]
# Позиция X(abs),Y(abs) для Tool setter, позиция Z(abs), с которой стартует поиск
X = 10
Y = 10 
Z = 20
# Расстояние поиска в относительных единицах, должно быть отрицательным (поиск вниз).
MAXPROBE =  -20
...
[CHANGE_POSITION]
# Позиция смены инструмента. Всё в абсолютных координатах
X = 10
Y = 10
Z = 60
...
[PYTHON]
# Папка для пользовательских модулей
PATH_PREPEND = ./python
# Точка запуска remap процедур
TOPLEVEL = python/toplevel.py
...

P.S. Если нужно добавить еще приложение, например Probe Screen, то подключать его нужно уже без компонента "-c gladevcp ", так
Код: Выделить всёРазвернуть
EMBED_TAB_NAME=Probe Screen 
EMBED_TAB_COMMAND=gladevcp -u python/probe_screen.py -x {XID} probe_icons/probe_screen.glade

P.S.S. Если подключена ещё и панель для частотника, то вся группа прописывается так
Код: Выделить всёРазвернуть
GLADEVCP = -u spindle-vfd.py spindle-vfd-panel.glade 

EMBED_TAB_NAME=Auto Tool Measurement
EMBED_TAB_COMMAND=gladevcp -u python/auto_tool_measurement.py -x {XID} auto_tool_measurement.glade

EMBED_TAB_NAME=Probe Screen
EMBED_TAB_COMMAND=gladevcp -u python/probe_screen.py -x {XID} probe_icons/probe_screen.glade

2. Следующие файлы из архива поместить в:

вашу-папку-конфигурации/python
auto_tool_measurement.py
remap.py
stdglue.py
toplevel.py

вашу-папку-конфигурации/macros
manual_change.ngc
on_abort.ngc
probe_down.ngc
block_down.ngc

вашу-папку-конфигурации
auto_tool_measurement.glade
sketch_auto_tool_measurement.png

3. Дополнить в .hal строку для probe, если нет такой, (примерно так)
Код: Выделить всёРазвернуть
net probe  motion.probe-input <= parport.0.pin-15-in


4. удалить (или закомментировать) из всех .hal файлов строчки вида
Код: Выделить всёРазвернуть
loadusr -W hal_manualtoolchange
net tool-change iocontrol.0.tool-change => hal_manualtoolchange.change
net tool-changed iocontrol.0.tool-changed <= hal_manualtoolchange.changed
net tool-number iocontrol.0.tool-prep-number => hal_manualtoolchange.number
net tool-prepare-loopback iocontrol.0.tool-prepare => iocontrol.0.tool-prepared


5. custom-postgui.hal дополнить строками
Код: Выделить всёРазвернуть
# The next two lines are only needed if the pins had been connected before
unlinkp iocontrol.0.tool-change
unlinkp iocontrol.0.tool-changed

# link to auto_tool_measurement toolchange, so you get the advantage of tool description on change dialog
net tool-change            auto_tool_measurement.toolchange-change    <=   iocontrol.0.tool-change
net tool-changed           auto_tool_measurement.toolchange-changed   <=   iocontrol.0.tool-changed
net tool-prep-number       auto_tool_measurement.toolchange-number    <=   iocontrol.0.tool-prep-number
net tool-prep-loop         iocontrol.0.tool-prepare      <=   iocontrol.0.tool-prepared


Использование.

1. Запускаем linuxcnc.
2. Делаем Home.
3. Устанавливаем заготовку.
4. Устанавливаем Probe в шпиндель.
5. Вписываем желаемые скорости поиска и уточнения и делаем измерение высоты Tool Setter ( жмем на эту кнопку, подпрограмма знает куда ехать из настроек, которые сделаны в .ini, рекомендую [TOOLSENSOR] Z и [CHANGE_POSITION] Z для начала выставить на максимальную верхнюю позицию, чтоб не зацепить чего)
[WIKI] Ручная смена инструмента с автоизмерением длины. probe.jpg
Результат измерения появится в поле Tool Setter Height.
6. Едем к поверхности заготовки (вручную, остановимся 3-4 мм от поверхности) и жмем эту кнопку
[WIKI] Ручная смена инструмента с автоизмерением длины. block.jpg
Результат измерения появится в поле Block Height. Поверхность заготовки в g-code при таком Block Height будет лежать на Z=0, чтобы было по-другому, здесь к измеренному значению добавить(получим поверхность ниже нуля) или отнять(получим поверхность выше нуля) интересующее значение для поверхности и результат вручную ввести в поле Block Height, подтвердив Enter.
7. Задаем отступы для нулей заготовки по X и Y. Например,
-либо подводим этот же probe к предполагаемым нулям по XY вручную и вводим 0 в соотв.поле offsets и подтверждаем кнопками "set X" и "set Y",
-либо, для более точного выставления, переходим во вкладку Probe Screen и подходящим измерением выводим позицию в 0.( Убедитесь также, что XY(g92)=0 XY(tlo)=0).

Все. С этого места можно запускать g-code программу. При встрече M6 Tx linuxcnc переедет в точку смены инструмента, покажет сообщение сменить на такой-то инструмент (даже комметарий из таблицы для этого инструмента покажет :good: ), дождется нажатия Ok, далее сам измерит новый инструмент и продолжит выполнение программы.
Если на пути в точку смены есть препятствие (тиски и т. п.), нужно самостоятельно "усложнить" путь к месту смены инструмента в файле manual_change.ngc, а именно добавить после 21 и 61 строк доп. точку в маршруте:
Код: Выделить всёРазвернуть
G53 G0 X? Y?

Смену инструмента в своей разрабатываемой g-code программе прописывать так
Код: Выделить всёРазвернуть
M6 Tx
G43 Hx
Важно! В таблице инструментов надо чтобы все отступы по X и по Y для всех используемых в Auto Tool Measurement инструментов были = 0.
Важно! Рекомендуется в начале программы вставить смену инструмента, даже если он тот же.
Важно! Логика метода не самая простая для понимания, здесь полезное пояснение логики привязок.

Исходники здесь
auto_tool_measurement.tar.gz
update 19:50 06.05.2015
(28.44 Кб) Скачиваний: 1261

Обновленная версия
auto_tool_measurement.rar
update 28.12.2015
(29.64 Кб) Скачиваний: 692

P.S. Как расширить диапазон ввода probe_height и block_height (для просмотра содержимого нажмите на ссылку)
Нужно добавить 2 строчки в файле auto_tool_measurement.glade
1. После строк 6-7 с содержимым
Код: Выделить всёРазвернуть
  <object class="GtkAdjustment" id="adj_probe_height">
    <property name="upper">1000</property>
вставить
Код: Выделить всёРазвернуть
    <property name="lower">-1000</property>

2. После строк 13-14 с содержимым
Код: Выделить всёРазвернуть
  <object class="GtkAdjustment" id="adj_block_height">
    <property name="upper">1000</property>
вставить
Код: Выделить всёРазвернуть
    <property name="lower">-1000</property>

Вообще, при необходимости upper и lower можно заменить на удобные "под себя".

P.S.S. С ноября 2018г. весь код приложения auto_tool_measurement был включен в состав Probe Screen V2 (секция Remap M6). Развитие продолжено в составе Probe Screen V2.
Последний раз редактировалось verser 26 авг 2019, 19:11, всего редактировалось 77 раз(а).
Изображение- центроискатели
Аватара пользователя
verser
Мастер
 
Сообщения: 1771
Зарегистрирован: 21 июл 2013, 22:28
Откуда: Минск
Репутация: 1181
Медальки:
Настоящее имя: Сергей

Re: [WIKI] Быстрая ручная смена инструмента.

Сообщение UAVpilot » 05 май 2015, 01:40

verser писал(а):Probe velocitys

Это неправильно! 's' для множественного числа можно добавлять только после согласных (и то не всегда).
Для множественного числа надо писать "Probe velocities" - это будет грамматически правильно, но носитель языка скорее всего напишет просто "Probe velocity" т.к. тут, в заголовке, речь идёт не о каких-то конкретных скоростях.

verser писал(а):- настройки типа "раз-и-навсегда" делаются в .ini файле (позиция смены, позиция датчика Tool Setter, максимальное расстояние поиска Probe),

позиция смены обычно задаётся как предопределённая позиция для G30.
Максимальное расстояние поиска правильнее ограничить пределом станка по Z.

verser писал(а):д.б. равны X(abs),Y(abs) и Z(abs)

abs - это абсолютные координаты, G53? Непонятно зачем их где-то указывать, ведь LinuxCNC и так сама их знает?..
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
UAVpilot
Мастер
 
Сообщения: 20284
Зарегистрирован: 17 апр 2012, 14:58
Откуда: Москва
Репутация: 4854
Заслуга: c781c134843e0c1a3de9
Медальки:
Настоящее имя: Сергей

Re: [WIKI] Быстрая ручная смена инструмента.

Сообщение verser » 05 май 2015, 09:06

UAVpilot, спасибо за подсказки. Кое-что подправил.
Объем вновь написанного кода приличный, так что со временем "подшлифуется" :) .
Изображение- центроискатели
Аватара пользователя
verser
Мастер
 
Сообщения: 1771
Зарегистрирован: 21 июл 2013, 22:28
Откуда: Минск
Репутация: 1181
Медальки:
Настоящее имя: Сергей

Re: [WIKI] Быстрая ручная смена инструмента.

Сообщение verser » 05 май 2015, 09:44

Исходники обновлены (впредь буду отмечать время обновления архива ).
Изображение- центроискатели
Аватара пользователя
verser
Мастер
 
Сообщения: 1771
Зарегистрирован: 21 июл 2013, 22:28
Откуда: Минск
Репутация: 1181
Медальки:
Настоящее имя: Сергей

Re: [WIKI] Ручная смена инструмента с автоизмерением длины.

Сообщение verser » 05 май 2015, 20:38

Обнаружил у метода еще одно достоинство. В паузе перед очередной сменой инструмента (когда висит сообщение о смене) позволяется поднять-опустить в креплении шпиндель (если оч. длинная или оч. короткая фреза) и никаких перенастроек, можно продолжать резать :good: .
Изображение- центроискатели
Аватара пользователя
verser
Мастер
 
Сообщения: 1771
Зарегистрирован: 21 июл 2013, 22:28
Откуда: Минск
Репутация: 1181
Медальки:
Настоящее имя: Сергей

Re: [WIKI] Ручная смена инструмента с автоизмерением длины.

Сообщение verser » 06 май 2015, 15:42

Внес массу правок. Кто уже качал - возьмите свежую версию, сделал еще удобнее. Использование упростилось. Описание в шапке.
Изображение- центроискатели
Аватара пользователя
verser
Мастер
 
Сообщения: 1771
Зарегистрирован: 21 июл 2013, 22:28
Откуда: Минск
Репутация: 1181
Медальки:
Настоящее имя: Сергей

Re: [WIKI] Ручная смена инструмента с автоизмерением длины.

Сообщение nkp » 06 май 2015, 19:00

verser писал(а):Результат измерения появится в поле Tool Setter Height.

verser писал(а):Результат измерения появится в поле Block Height.

не успел вчера пожелать - сегодня уже есть :)
+1
nkp
Мастер
 
Сообщения: 8260
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1539
Медальки:

Re: [WIKI] Ручная смена инструмента с автоизмерением длины.

Сообщение verser » 06 май 2015, 21:06

nkp писал(а):не успел вчера пожелать - сегодня уже есть :)
+1

Приложение так понравилось самому, что подумываю перейти с gmoccapy на axis :hehehe: .
Изображение- центроискатели
Аватара пользователя
verser
Мастер
 
Сообщения: 1771
Зарегистрирован: 21 июл 2013, 22:28
Откуда: Минск
Репутация: 1181
Медальки:
Настоящее имя: Сергей

Re: [WIKI] Ручная смена инструмента с автоизмерением длины.

Сообщение Nick » 07 май 2015, 17:10

verser писал(а):настройки "по-ходу" делаются в GladeVCP панельке (поверхность заготовки, скорости поиска и уточнения).

Скорость поиска на ходу вроде не обязательно менять - можно в ini убрать.
Аватара пользователя
Nick
Мастер
 
Сообщения: 22527
Зарегистрирован: 23 ноя 2009, 16:45
Откуда: Gatchina, Saint-Petersburg distr., Russia
Репутация: 1577
Заслуга: Developer
Медальки:

Re: [WIKI] Ручная смена инструмента с автоизмерением длины.

Сообщение verser » 07 май 2015, 17:54

Nick писал(а):Скорость поиска на ходу вроде не обязательно менять - можно в ini убрать.

Я иногда меняю "повседневные" скорости на "сверхточные" для особо ответственных деталей, но они медленные, поэтому потом возвращаю обратно на "повседневные". Еще, все один раз введенные поля автоматически сохраняются в файле .pref, так что повторно их вводить при каждом входе уже нет необходимости.

Сегодня при тестировании автоизмерения выявил баги. Исправления к вечеру выложу.

P.S. Готово.
Изображение- центроискатели
Аватара пользователя
verser
Мастер
 
Сообщения: 1771
Зарегистрирован: 21 июл 2013, 22:28
Откуда: Минск
Репутация: 1181
Медальки:
Настоящее имя: Сергей

Re: [WIKI] Ручная смена инструмента с автоизмерением длины.

Сообщение elephant007 » 08 май 2015, 12:51

а без пробника это будет работать? если нули детали врукопашную выставить после хомления?
Аватара пользователя
elephant007
Мастер
 
Сообщения: 771
Зарегистрирован: 18 ноя 2012, 13:12
Откуда: Сибирь, Томск
Репутация: 292
Медальки:

Re: [WIKI] Ручная смена инструмента с автоизмерением длины.

Сообщение verser » 08 май 2015, 13:43

elephant007 писал(а):а без пробника это будет работать? если нули детали врукопашную выставить после хомления?
Будет работать. Руками выставлять offsets X,Y,(Z не надо, вместо него заполняется поле Block Height). Поле Probe Height, если установлен Tool setter, нормально отработает и с фрезой в шпинделе вместо пробника. Если и Tool setter отсутствует, тогда вроде как и смысла во всем этом нет :) .
Изображение- центроискатели
Аватара пользователя
verser
Мастер
 
Сообщения: 1771
Зарегистрирован: 21 июл 2013, 22:28
Откуда: Минск
Репутация: 1181
Медальки:
Настоящее имя: Сергей

Re: [WIKI] Ручная смена инструмента с автоизмерением длины.

Сообщение pkasy » 23 май 2015, 02:54

я поставил себе, но ни разу не запускал. может ли твой модуль влиять на Z при каждом запуске, если еще никаких действий в твоем экране не производилось?
почему -то сейчас при каждом запуски резки Z становится ниже. фрезу не меняю, установкой ноля не занимаюсь. но ниже идет и все тут.
есть какие-то действия, которые он выполняет при каждом запуске программы, если в тексте даже M6TN убрано?
не знаю просто, куда еще рыть.
pkasy
Мастер
 
Сообщения: 1139
Зарегистрирован: 15 мар 2013, 09:39
Откуда: Владивосток
Репутация: 45

Re: [WIKI] Ручная смена инструмента с автоизмерением длины.

Сообщение verser » 23 май 2015, 06:25

pkasy писал(а):я поставил себе, но ни разу не запускал. может ли твой модуль влиять на Z при каждом запуске, если еще никаких действий в твоем экране не производилось?
почему -то сейчас при каждом запуски резки Z становится ниже. фрезу не меняю, установкой ноля не занимаюсь. но ниже идет и все тут.
есть какие-то действия, которые он выполняет при каждом запуске программы, если в тексте даже M6TN убрано?
не знаю просто, куда еще рыть.

Отключи (закомментируй) Auto Tool Measurement в INI файле
(для просмотра содержимого нажмите на ссылку)
Код: Выделить всёРазвернуть
...
[DISPLAY]
# добавим GladeVCP панель в виде закладки рядом с  Preview/DRO:
#EMBED_TAB_NAME=Auto Tool Measurement
#EMBED_TAB_COMMAND=halcmd loadusr -Wn gladevcp gladevcp -c gladevcp  -u python/auto_tool_measurement.py -x {XID} auto_tool_measurement.glade

...
[RS274NGC]
# Возможность чтения INI и HAL переменных из gcode и др.
FEATURES=30

# Папка для подпрограмм
SUBROUTINE_PATH = your_subroutine_path
# подпрограмма вызывается при сбое во время выполнения remap M6 процедур
#ON_ABORT_COMMAND=O <on_abort> call
# Remap M6
#REMAP=M6   modalgroup=6  prolog=change_prolog   ngc=manual_change  epilog=change_epilog   
...
[TOOLSENSOR]
# Позиция X(abs),Y(abs) для Tool setter, позиция Z(abs), с которой стартует поиск
X = 10
Y = 10 
Z = 20
# скорость холостых перемещений
RAPID_FEED = 600
# Расстояние поиска в относительных единицах, должно быть отрицательным (поиск вниз).
MAXPROBE =  -20
...
[CHANGE_POSITION]
# Позиция смены инструмента. Всё в абсолютных координатах
X = 10
Y = 10
Z = 60
...
[PYTHON]
# Папка для пользовательских модулей
#PATH_PREPEND = ./python
# Точка запуска remap процедур
#TOPLEVEL = python/toplevel.py
...
тогда точно будет ясно, в нем ли причина.
Изображение- центроискатели
Аватара пользователя
verser
Мастер
 
Сообщения: 1771
Зарегистрирован: 21 июл 2013, 22:28
Откуда: Минск
Репутация: 1181
Медальки:
Настоящее имя: Сергей

Re: [WIKI] Ручная смена инструмента с автоизмерением длины.

Сообщение nkp » 23 май 2015, 14:25

настраивая probe (и не только) ,задавался вопросом(пытался понить логику автора))) - почему
можно смотреть активные коды только в окне mdi ??? (Axis естественно)
моя невнимательность требует этого списка на видном месте :freak:
надо бы вынести - но куда?
может между предпросмотром и окном gcode :thinking:
nkp
Мастер
 
Сообщения: 8260
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1539
Медальки:

Re: [WIKI] Ручная смена инструмента с автоизмерением длины.

Сообщение verser » 23 май 2015, 14:40

nkp писал(а):надо бы вынести - но куда?может между предпросмотром и окном gcode

Может, в панельку Manual control типа label организовать и к низу прижать, там куча пустого места. Заодно и другие полезные данные туда же, как в gmoccapy
Изображение- центроискатели
Аватара пользователя
verser
Мастер
 
Сообщения: 1771
Зарегистрирован: 21 июл 2013, 22:28
Откуда: Минск
Репутация: 1181
Медальки:
Настоящее имя: Сергей

Re: [WIKI] Ручная смена инструмента с автоизмерением длины.

Сообщение nkp » 23 май 2015, 15:07

verser писал(а):там куча пустого места.

по моему места там как раз маловато...
попробуй "всё" включить...
вот узенькая однорядка под preview - имхо - самое то...
надо пробовать несколько вариантов...
зы
и перейти сюда
nkp
Мастер
 
Сообщения: 8260
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1539
Медальки:

Re: [WIKI] Ручная смена инструмента с автоизмерением длины.

Сообщение Nick » 25 май 2015, 10:04

Есть такая штука - называется status bar, она как раз для этого задумывалась ;)
http://www.pygtk.org/docs/pygtk/class-gtkstatusbar.html
Можно в ней же и переключение некоторых режимов сделать... :roll:
Можно туда добавить строчку с жесткими размерами, в которую статично записать нужные Gкоды. Черный - активный, серый не активный. Или если есть выбор, например для системы координат, можно в фиксированном окне отображать активную систему.
Аватара пользователя
Nick
Мастер
 
Сообщения: 22527
Зарегистрирован: 23 ноя 2009, 16:45
Откуда: Gatchina, Saint-Petersburg distr., Russia
Репутация: 1577
Заслуга: Developer
Медальки:

Re: [WIKI] Ручная смена инструмента с автоизмерением длины.

Сообщение odekolon » 12 июн 2015, 22:20

сделал все по инструкции

получаю ощибку

где покопаться?
Вложения
[WIKI] Ручная смена инструмента с автоизмерением длины. error.png
"Капиталистом стать можно лишь тогда, когда обогатишь свою память знанием всех тех богатств, которые выработало человечество"
Аватара пользователя
odekolon
Мастер
 
Сообщения: 1036
Зарегистрирован: 05 ноя 2014, 14:53
Репутация: 323
Медальки:
Настоящее имя: Борис

Re: [WIKI] Ручная смена инструмента с автоизмерением длины.

Сообщение torvn77 » 12 июн 2015, 23:39

Пока только прочитал,но есть вот какая мысль:
verser писал(а): рекомендую [TOOLSENSOR] Z и [CHANGE_POSITION] Z для начала выставить на максимальную верхнюю позицию, чтоб не зацепить чего)

Надо сделать два датчика измерения длинны:грубый и точный.
Первое измерение делать на грубом с большой скоростью поиска,а сам датчик делать из пружины,
чтобы не ломать едущий на большой скорости инструмент.
Второе измерение делать на точном,но начинать с меньшей высоты (грубо то инструмент уже оценён) и
на не большой скорости для большей точности измерений.
Сам же датчик может быть просто куском железки с проводом.

И ещё,когда это в основной дистр LinuxCNC добавят?
Аватара пользователя
torvn77
Мастер
 
Сообщения: 2413
Зарегистрирован: 02 июн 2012, 22:12
Откуда: Санкт-Петербург
Репутация: 212
Медальки:

След.

Вернуться в LinuxCNC

Кто сейчас на конференции

Зарегистрированные пользователи: Argentum47, Atom42, Bing [Bot], Сергей Саныч, Enot_1, Google [Bot], Majestic-12 [Bot], michael-yurov, niksooon, P_M_Ch, Prav, vala, Yandex [bot], Чирков Сергей

Reputation System ©'