В этой статье поделюсь удобным методом и программами к нему
для
ручной смены инструмента c автоматическим измерением длины на фрезерном станке под linuxcnc(ver.2.6 и выше).
Цель метода: автоматизировать все действия при ручной смене инструмента по максимуму так, чтобы руками осталось лишь вынуть-старую-вставить-новую фрезу.
Особенности:
- основан на 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 для начала выставить на максимальную верхнюю позицию, чтоб не зацепить чего)
Результат измерения появится в поле Tool Setter Height.
6. Едем к поверхности заготовки (вручную, остановимся 3-4 мм от поверхности) и жмем эту кнопку
Результат измерения появится в поле 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 переедет в точку смены инструмента, покажет сообщение сменить на такой-то инструмент (даже комметарий из таблицы для этого инструмента покажет
), дождется нажатия Ok, далее сам измерит новый инструмент и продолжит выполнение программы.
Если на пути в точку смены есть препятствие (тиски и т. п.), нужно самостоятельно "усложнить" путь к месту смены инструмента в файле manual_change.ngc, а именно добавить после 21 и 61 строк доп. точку в маршруте:
Смену инструмента в своей разрабатываемой g-code программе прописывать так
Важно! В таблице инструментов надо чтобы все отступы по X и по Y для всех используемых в Auto Tool Measurement инструментов были = 0.
Важно! Рекомендуется в начале программы вставить смену инструмента, даже если он тот же.
Важно! Логика метода не самая простая для понимания,
здесь полезное пояснение логики привязок.
Исходники здесь
Обновленная версия
P.S.S. С ноября 2018г. весь код приложения auto_tool_measurement был включен в состав
Probe Screen V2 (секция Remap M6). Развитие продолжено в составе Probe Screen V2.