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

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
Аватара пользователя
Alexsh
Опытный
Сообщения: 100
Зарегистрирован: 25 дек 2015, 22:28
Репутация: 15
Настоящее имя: Алексей
Контактная информация:

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

Сообщение Alexsh »

Предлагаю следующий алгоритм:
создаем пустой файлик (к примеру tool_sensor_location.xyz)
В окошке ручной смены инструмента создаем пунктик "датчик зафиксирован"
Если файлик пуст, галочка снимается автоматом (можно эту функцию и не делать)

Механизм работы со стационарным датчиком:
при первой инициализации датчика, галочка в пунктике "датчик зафиксирован" снята т.к. файлик пуст, устанавливаем инструмент в ручном режиме в позицию расположения датчика и жмем кнопочку Probe tool setter. Полученные координаты сохраняются в файлик и автоматически устанавливается галочка в вышеописанном пунктике. Далее координаты берутся из этого файлика пока галочка не будет снята вручную.

Механизм работы с мобильным датчиком:
все как в первом пункте, только когда меняем расположение датчика, снимаем галочку и пошагово как в первом пункте. Только файлик уже не бывает пуст - данные в нем переписываются после нажатия Probe tool setter и устанавливается галочка.

В случае со стационарным датчиком, координаты вписать в файлик можно заранее, как мы сейчас и делаем, только в .ini файле. После чего пользоваться как и сейчас. Можно даже ключик в файлик поместить, который будет блокировать снятие галочки, если датчик стационарный (на всякий случай)
Последний раз редактировалось Alexsh 29 дек 2015, 15:00, всего редактировалось 4 раза.
Аватара пользователя
verser
Мастер
Сообщения: 1903
Зарегистрирован: 21 июл 2013, 22:28
Репутация: 1282
Настоящее имя: Сергей
Откуда: Тбилиси
Контактная информация:

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

Сообщение verser »

Alexsh писал(а):Предлагаю следующий алгоритм:...
Мысли неплохие. Добро пожаловать на форум :) .
Аватара пользователя
Predator
Мастер
Сообщения: 9583
Зарегистрирован: 18 июл 2013, 18:26
Репутация: 2531
Контактная информация:

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

Сообщение Predator »

Alexsh писал(а):Далее координаты берутся из этого файлика пока галочка не будет снята вручную
Да, только после снятия галочки, файлик заодно нужно опустошить ;)
Аватара пользователя
Alexsh
Опытный
Сообщения: 100
Зарегистрирован: 25 дек 2015, 22:28
Репутация: 15
Настоящее имя: Алексей
Контактная информация:

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

Сообщение Alexsh »

Predator писал(а):
Alexsh писал(а):Далее координаты берутся из этого файлика пока галочка не будет снята вручную
Да, только после снятия галочки, файлик заодно нужно опустошить ;)
Не обязательно, его можно переписать новыми данными нажатием кнопочки Probe tool setter. А автоматическое снятие и установка галочки может происходить после обращения к файлу, а именно чтения данных, которое, в свою очередь, должно происходить после их обновления, перед замером инструмента и при запуске LinuxCNC.
Я подправил алгоритм выше, что бы было понятнее.
verser писал(а):Мысли неплохие. Добро пожаловать на форум :)
К сожалению в питоне я полнй ноль, как впрочем и G кодах пока еще.
А за приглашение спасибо!
pkasy
Мастер
Сообщения: 1139
Зарегистрирован: 15 мар 2013, 09:39
Репутация: 45
Откуда: Владивосток

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

Сообщение pkasy »

привет.
помогите найти ошибку при использовании данного модуля.
делаю серию измерений по высоте.
12:30:02 Probe Down Z=-4.5309
12:29:30 Probe Down Z=-0.0150
12:28:43 Probe Down Z=-0.0130
12:28:18 Probe Down Z=-4.1871
12:28:01 Probe Down Z=-0.0210
12:27:23 Probe Down Z=-0.0025
Датчик все время поднимается/опускается одинаково.

При измерениях центра, ситуация похожая - то правильно, то ошибка примерно на 5 мм.

Куда рыть? ЧЯДНТ?
pkasy
Мастер
Сообщения: 1139
Зарегистрирован: 15 мар 2013, 09:39
Репутация: 45
Откуда: Владивосток

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

Сообщение pkasy »

продолжение.
обнуляю Z, а в ответ все равно
12:39:58 Probe Down Z=-4.5044
12:38:55 Probe Down Z=-4.5044
12:38:40 Probe Down Z=-4.5024
12:37:59 Probe Down Z=-4.5314
12:37:45 Probe Down Z=-4.5049
12:37:29 Probe Down Z=-4.5079
12:37:14 Probe Down Z=-4.5289
12:30:02 Probe Down Z=-4.5309
несколько раз обнулил. должно показывать 0 плюс/минус. все равно пишет -4,5. галочку автоноль ставил, снимал - результат один.
Аватара пользователя
Alexsh
Опытный
Сообщения: 100
Зарегистрирован: 25 дек 2015, 22:28
Репутация: 15
Настоящее имя: Алексей
Контактная информация:

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

Сообщение Alexsh »

А где обнуляешь?
Попробуй задать нулевой отступ в панели ручного управления
pkasy
Мастер
Сообщения: 1139
Зарегистрирован: 15 мар 2013, 09:39
Репутация: 45
Откуда: Владивосток

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

Сообщение pkasy »

ну, вручную. ставлю 0 или 4.5 ( высота подъема ).
тут такая история. находишься в экране аксиса - одно число.
переключил окна на разные программы, вернулся в экран, нажал на замер - другая.
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

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

Сообщение Nick »

Alexsh писал(а):Если Home будет за пределами лимита, выскочит ошибка во время выполнения хомления - превышен лимит.. можно только внутрь. Я делал разницу до 0.1 , а точность моих Home дачиков 0.03 и все равно ошибка иногда выскакивает. В описанном мной варианте лчения ошибку не наблюдал.
Не выскочит, если:
датчик ставим в -1,
HOME = 0.0 - The position that the joint will go to upon completion of the homing sequence.
HOME_OFFSET = -1.0 - The axis position of the home switch or index pulse, in machine units. When the home point is found during the homing process, this is the position that is assigned to that point. When sharing home and limit switches and using a home sequence that will leave the home/limit switch in the toggled state the home offset can be used define the home switch position to be other than 0 if your HOME position is desired to be 0.
HOME_IGNORE_LIMITS = YES - When you use the limit switch as a home switch and the limit switch this should be set to YES. When set to YES the limit switch for this axis is ignored when homing. You must configure your homing so that at the end of your home move the home/limit switch is not in the toggled state you will get a limit switch error after the home move.
Аватара пользователя
Alexsh
Опытный
Сообщения: 100
Зарегистрирован: 25 дек 2015, 22:28
Репутация: 15
Настоящее имя: Алексей
Контактная информация:

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

Сообщение Alexsh »

Мужики подскажите где в программе заложить толщину датчика высоты заготовки (толщина текстолитовой пластинки) что бы автоматом учитывалась?
Аватара пользователя
verser
Мастер
Сообщения: 1903
Зарегистрирован: 21 июл 2013, 22:28
Репутация: 1282
Настоящее имя: Сергей
Откуда: Тбилиси
Контактная информация:

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

Сообщение verser »

Alexsh писал(а):Мужики подскажите где в программе заложить толщину датчика высоты заготовки (толщина текстолитовой пластинки) что бы автоматом учитывалась?
В файле python/auto_tool_measurement.py

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

    def clicked_btn_probe_workpiece(self, data = None):
        # Start probe_down.ngc
        self.command.mode( linuxcnc.MODE_MDI )
        self.command.wait_complete()
        self.command.mdi( "O<block_down> call" )
        self.stat.poll()
        while self.stat.exec_state == 7 or self.stat.exec_state == 3 :
            self.command.wait_complete()
            self.stat.poll()
        self.command.wait_complete()
        a=self.stat.probed_position
        self.spbtn_block_height.set_value( float(a[2]) - [color=#BF4000]толщина пластинки мм[/color])
        self.command.mode( linuxcnc.MODE_MANUAL )
        self.command.wait_complete()
Это чтобы учитывать толщину пластинки при привязке к заготовке.

Еще, если используется эта пластинка в самом начале при привязке к базе, то в том же файле

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

    def clicked_btn_probe_tool_setter(self, data = None):
        # Start probe_down.ngc
        self.command.mode( linuxcnc.MODE_MDI )
        self.command.wait_complete()
        self.command.mdi( "O<probe_down> call" )
        self.stat.poll()
        while self.stat.exec_state == 7 or self.stat.exec_state == 3 :
            self.command.wait_complete()
            self.stat.poll()
        self.command.wait_complete()
        a=self.stat.probed_position
        self.spbtn_probe_height.set_value( float(a[2])  - [color=#BF4000]толщина пластинки мм[/color])
        self.command.mode( linuxcnc.MODE_MANUAL )
        self.command.wait_complete()
Аватара пользователя
Alexsh
Опытный
Сообщения: 100
Зарегистрирован: 25 дек 2015, 22:28
Репутация: 15
Настоящее имя: Алексей
Контактная информация:

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

Сообщение Alexsh »

Поигрался немного этими параметрами.. Не соображу как правильно задать...
К примеру высота датчика-измерителя инструмента 14мм, а толщина пластинки, которая на заготовку кладется - 1 мм.
Аватара пользователя
verser
Мастер
Сообщения: 1903
Зарегистрирован: 21 июл 2013, 22:28
Репутация: 1282
Настоящее имя: Сергей
Откуда: Тбилиси
Контактная информация:

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

Сообщение verser »

Alexsh писал(а):Поигрался немного этими параметрами.. Не соображу как правильно задать...
К примеру высота датчика-измерителя инструмента 14мм, а толщина пластинки, которая на заготовку кладется - 1 мм.
Пластинка кладется на заготовку - это понятно, а вот на "датчик-измеритель инструмента" она кладётся или нет?
Аватара пользователя
Alexsh
Опытный
Сообщения: 100
Зарегистрирован: 25 дек 2015, 22:28
Репутация: 15
Настоящее имя: Алексей
Контактная информация:

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

Сообщение Alexsh »

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

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

Сообщение verser »

Alexsh писал(а): К примеру высота датчика-измерителя инструмента 14мм, а толщина пластинки, которая на заготовку кладется - 1 мм.
Тогда надо, чтобы в поле Block Height записалось 14-1 = 13 мм. А, чтоб руками всякий раз не прописывать, внести корректировку в файл python/auto_tool_measurement.py(выделил корректировку красным)

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

    def clicked_btn_probe_workpiece(self, data = None):
        # Start probe_down.ngc
        self.command.mode( linuxcnc.MODE_MDI )
        self.command.wait_complete()
        self.command.mdi( "O<block_down> call" )
        self.stat.poll()
        while self.stat.exec_state == 7 or self.stat.exec_state == 3 :
            self.command.wait_complete()
            self.stat.poll()
        self.command.wait_complete()
        a=self.stat.probed_position
        self.spbtn_block_height.set_value( float(a[2]) [color=#BF4000]-1[/color])
        self.command.mode( linuxcnc.MODE_MANUAL )
        self.command.wait_complete()
Аватара пользователя
Alexsh
Опытный
Сообщения: 100
Зарегистрирован: 25 дек 2015, 22:28
Репутация: 15
Настоящее имя: Алексей
Контактная информация:

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

Сообщение Alexsh »

Имеем:
1. Высота стационарного измерителя инструмента от уровня стола - 14мм
2. Датчик (пластинка) замера высоты заготовки (кладется на заготовку), толщиной - 1мм

Нужно задать ноль на уровне поверхности заготовки с учетом толщины пластинки 1мм.
Сначала касаемся фрезой измерителя длины инструмента . После замера длины подводим к заготовке и касаемся инструментом пластинки. В настоящее время поверхность пластинки устанавливаем как 0мм, но нужно получить значение +1мм.
verser писал(а):Тогда надо, чтобы в поле Block Height записалось 14-1 = 13 мм.
Для чего из 14мм вычитать 1мм?
Честно говоря вообще не понятно почему Block Height (Высота датчика), мы же замеряем условную длину инструмента? И если я правильно понял алгоритм работы, то на какой высоте изначально расположен этот датчик не имеет значения, а полученное при этом измерении значение, после смены инструмента, изменится и это изменение будет использоваться для компенсации?
Аватара пользователя
verser
Мастер
Сообщения: 1903
Зарегистрирован: 21 июл 2013, 22:28
Репутация: 1282
Настоящее имя: Сергей
Откуда: Тбилиси
Контактная информация:

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

Сообщение verser »

Alexsh писал(а):Имеем:
1. Высота стационарного измерителя инструмента от уровня стола - 14мм
2. Датчик (пластинка) замера высоты заготовки (кладется на заготовку), толщиной - 1мм

Нужно задать ноль на уровне поверхности заготовки с учетом толщины пластинки 1мм.
Сначала касаемся фрезой измерителя длины инструмента . После замера длины подводим к заготовке и касаемся инструментом пластинки. В настоящее время поверхность пластинки устанавливаем как 0мм, но нужно получить значение +1мм.
До этого места все рассуждения верны.
verser писал(а):Тогда надо, чтобы в поле Block Height записалось 14-1 = 13 мм.
Alexsh писал(а):Для чего из 14мм вычитать 1мм?
Не из 14мм. Мои извинения. Правильно так "Тогда надо, чтобы в поле Block Height записался результат измерения поверхности заготовки минус 1 мм".
Каждая следующая смена инструмента будет после обмера на датчике вот так менять запись в таблице для текущего инструмента

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

G10 L1 P#<tool> Z[#<touch_result> - #<_hal[auto_tool_measurement.probeheight]> + #<_hal[auto_tool_measurement.blockheight]>]
G43
Аватара пользователя
Alexsh
Опытный
Сообщения: 100
Зарегистрирован: 25 дек 2015, 22:28
Репутация: 15
Настоящее имя: Алексей
Контактная информация:

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

Сообщение Alexsh »

То есть мы прописываем толщину пластины 1мм таким вот образом:

self.spbtn_block_height.set_value( float(a[2])-1)

и это будет компенсация на толщину заготовки.
На наши 14мм забиваем т.к. высота того датчика не меняется, а меняется только длина фрезы и ничего исправлять по этому поводу не нужно?

И попутно еще вопросик:
verser писал(а):Смену инструмента в своей разрабатываемой g-code программе прописывать так
Код: Выделить всё • Развернуть

M6 Tx
G43 Hx

Важно! В таблице инструментов надо чтобы все отступы по X и по Y для всех используемых в Auto Tool Measurement инструментов были = 0.
Важно! Рекомендуется в начале программы вставить смену инструмента, даже если он тот же.
Подскажите строчки, которые нужно вставить в постпроцессор арткам, что бы эти условия выполнялись.
Благодарю!
Аватара пользователя
verser
Мастер
Сообщения: 1903
Зарегистрирован: 21 июл 2013, 22:28
Репутация: 1282
Настоящее имя: Сергей
Откуда: Тбилиси
Контактная информация:

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

Сообщение verser »

Alexsh писал(а):То есть мы прописываем толщину пластины 1мм таким вот образом:
self.spbtn_block_height.set_value( float(a[2])-1)
и это будет компенсация на толщину заготовки.
Да, такое исправление позволит при замере поверхности заготовки автоматически игнорировать подложенную 1мм текстолитовую пластинку.
Alexsh писал(а):На наши 14мм забиваем т.к. высота того датчика не меняется, а меняется только длина фрезы и ничего исправлять по этому поводу не нужно?
Так точно, больше никакие исправления не нужны.
Alexsh писал(а):И попутно еще вопросик:
verser писал(а):Смену инструмента в своей разрабатываемой g-code программе прописывать так
Код: Выделить всё • Развернуть

M6 Tx
G43 Hx

Важно! В таблице инструментов надо чтобы все отступы по X и по Y для всех используемых в Auto Tool Measurement инструментов были = 0.
Важно! Рекомендуется в начале программы вставить смену инструмента, даже если он тот же.
Подскажите строчки, которые нужно вставить в постпроцессор арткам, что бы эти условия выполнялись.
Благодарю!
Прошу извинить, я с Арткамом не работаю. Парни, подскажите, кто знает!
Аватара пользователя
Alexsh
Опытный
Сообщения: 100
Зарегистрирован: 25 дек 2015, 22:28
Репутация: 15
Настоящее имя: Алексей
Контактная информация:

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

Сообщение Alexsh »

Спасибо!

Значит поковырялся я чуток и сбацал вот такой постпроцессор для арткам:
LinuxCNC_mm_ATC.rar
(624 байт) 269 скачиваний
Может кто подскажет что в нем изменить, добавить, оптимизировать для резьбы рельефа? (Станок фрезерно гравировальный 3 оси)

Значит с какими неприятностями столкнулся:
Замеряем фрезу, находим 0 заготовки, запускаем программу:
333.rar
(195 байт) 444 скачивания
Почему-то появляется сообщение дескать ось Z превышает лимиты (хотя запаса там огого..) ну да ладно жмем продолжить не смотря на это..
Каретка прет в позицию смены инструмента, но он у нас уже установлен и измерен! Не красиво получается - лишняя операция
"меняем" фрезу, жмем ОК - порталл прет на датчик замера длины инструмента... Опять лишнее телодвижение.
Далее на безопасной высоте порталл прет к месту работы..тра ля ля... настало время сменить инструмент...
Дальше все штатно но не дай бог случиться дребезгу контакта датчика, как возникает катастрофа ввиде сообщения:
"G38.2 move finished withaut making contact", после чего не понятно как действовать. Да и в случае этой ошибки все подвисает довольно таки на длительное время.
Ответить

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