Мои вспомогательные утилиты.

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
Аватара пользователя
torvn77
Мастер
Сообщения: 2442
Зарегистрирован: 02 июн 2012, 22:12
Репутация: 215
Откуда: Россия,Санкт-Петербург
Контактная информация:

Мои вспомогательные утилиты.

Сообщение torvn77 »

пока пусто

Прототип утилиты для автоматического сверления отверстий, там надо только ввод параметров сверления из основной программы доделать и убрать тестирующий код.
Когда доделаю до конца перепощу в тему.

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

#<_safe_height> = 4

O<drill> sub

#<back_height> = #<_z>
#<safe_height> = #<_safe_height>
#<f_drill> = 120
#<s_drill> = 6000
#<f_down> = 400
#<z_drill_start> = 0
#<z_drill_step> = 5 
#<z_drill_intent> = -25
#<cleaning_height> = 0
#<cleaning_pause> = 1

O<if_01> if [[ #<_rpm> LT #<s_drill> ] OR [ #<_spindle_on> NE 1 ]]; then
M03 S#<s_drill>
G04 P8
O<if_01> elseif [[ #<_rpm> GT #<s_drill> ] AND [ #<_spindle_on> EQ 1 ]]
M03 S#<s_drill>
G04 P3
O<if_01> elseif [[ #<_rpm> EQ #<s_drill> ] AND [ #<_spindle_on> EQ 1 ]]
(Do nothing)
M03 S#<s_drill>
O<if_01> else
(MSG, drill.ngc string 33 ERROR)
M02
O<if_01> endif

F0 G64
O<if_02> if [ #<_z> GT [#<z_drill_start> + 1] ]; then 
G0 Z[#<z_drill_start> + 1]
O<if_02> endif

#<next_z> = [#<z_drill_start> - #<z_drill_step>]
O<while_01> while [[ #<next_z> GT #<z_drill_intent> ] AND [  #<_z> GT #<z_drill_intent>  ]]
F#<f_drill>
G01 Z#<next_z>

G00 Z#<cleaning_height>
G04 P#<cleaning_pause>

O<while_01_if_01> if [ #<_z> GT [#<z_drill_start>] ]; then 
G0 Z[#<z_drill_start>]
O<while_01_if_01> endif

F#<f_down>
G01 Z [#<z_drill_start> - #<z_drill_step>+1]

O<while_01_if_03> if [ #<_z> GT #<next_z> +1 ]; then 
G00 Z[#<next_z>+1]
O<while_01_if_03> endif

#<next_z> = [#<next_z> - #<z_drill_step>]
O<while_01> endwhile

F#<f_drill>
G01 Z#<z_drill_intent>
G00 Z#<back_height>

O<drill> endsub

G53 G0 Z0
G0 X0.0      Y62.15
O<drill> call  
G0 Z#<_safe_height>


G0 X53.8235  Y-31.0750
O<drill> call 


G0 X-53.8235 Y-31.0750
O<drill> call

G53 G0 Z0
G0 X0Y0

M02
Последний раз редактировалось torvn77 24 май 2017, 17:55, всего редактировалось 1 раз.
Аватара пользователя
torvn77
Мастер
Сообщения: 2442
Зарегистрирован: 02 июн 2012, 22:12
Репутация: 215
Откуда: Россия,Санкт-Петербург
Контактная информация:

Утилита для помещения нуля на поверхность материала

Сообщение torvn77 »

Screenshot-sys.matheight_abs.ngc - AXIS 2.7.3 on mill-suda-8070st-5i25-7i76-logitech_gamepad.png (5464 просмотра) <a class='original' href='./download/file.php?id=70220&sid=79337e8f6e00224c715db8c658bb7d43&mode=view' target=_blank>Загрузить оригинал (130.25 КБ)</a>
ngc

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

O<sys.matheight_abs> sub
G17 G21 G40 G49 G90 G92.1 G94 

(-------------------------------------------------------------------------)

(Linuxcnc не любит, когда вызывается код g5x переключающий на УЖЕ активную координатную систеу)
O<matheight_if110> if [#5220 EQ 1]
(DEBUG, исходная система G54 )
G59.3
O<matheight_if110> endif
(Совмещение по Z первой системы координат с машинной и переход в неё)
G10 L2 P1 Z0
G54

(-------------------------------------------------------------------------)

(Если для замера используется специальный инструмет, то делается проверка того что он выбран)
(O<matheight_120> if [ #<_current_tool> NE #<_ini[MATERIAL_HEIGHT_PROBE]SENSOR_TOOL_NUM>])
(D EBUG,Incorect tool, plase insert tool correct number T = [MATERIAL_HEIGHT_PROBE]SENSOR_TOOL_NUM)
(G54)
(M02)
(O<matheight_120> endif)

(-------------------------------------------------------------------------)

(DEBUG,Грубый поиск на "большой скорости")
F[#<_ini[MATERIAL_HEIGHT_PROBE]COARSE_FEED_SEARCH>]
G38.2 Z[#<_ini[AXIS_2]MIN_LIMIT>]
#<probe_bottom> = #5063
G38.4 Z[#<_ini[AXIS_2]MAX_LIMIT>]
#<probe_top> = #5063
(DEBUG,<c.probe_top> = #<probe_top> )
(DEBUG,<c.probe_bottom> = #<probe_bottom>)

#<probe_result> = [[#<probe_bottom>+#<probe_top>]/2]
(DEBUG,<c.probe_result> = #<probe_result>)

(-------------------------------------------------------------------------)

(DEBUG,Точный поиск на маленькой скорости)
F[#<_ini[MATERIAL_HEIGHT_PROBE]ACCURATE_FEED_SEARCH>]
G38.2 Z[#<_ini[AXIS_2]MIN_LIMIT>]
#<probe_bottom> = #5063
F[#<_ini[MATERIAL_HEIGHT_PROBE]ACCURATE_FEED_LATCH>]
G38.4 Z[#<_ini[AXIS_2]MAX_LIMIT>]
#<probe_top> = #5063
(DEBUG,<a.probe_top> = #<probe_top> )
(DEBUG,<a.probe_bottom> = #<probe_bottom>)

#<probe_result> = [[#<probe_bottom>+#<probe_top>]/2]
(DEBUG,<a.probe_result> = #<probe_result>)

(-------------------------------------------------------------------------)

(Пока находимся в машинной системе координат поднимаемся на самый верх)
G0 Z[#<_ini[AXIS_2]MAX_LIMIT>]

(-------------------------------------------------------------------------)
(Временный выход из G54 перед выполнением её настройки)
G59.3

(-------------------------------------------------------------------------)
(DEBUG,Вычитание из результата толщины инструмента)
#<coord_offset_z> = [#<probe_result> - #<_ini[MATERIAL_HEIGHT_PROBE]SENSOR_HEIGHT>]
(DEBUG,<_ini[MATERIAL_HEIGHT_PROBE]SENSOR_HEIGHT> = #<_ini[MATERIAL_HEIGHT_PROBE]SENSOR_HEIGHT>)
(DEBUG,<coord_offset_z> = #<coord_offset_z>)

(-------------------------------------------------------------------------)
(DEBUGE,Присвоение соответствующего офсета G54)
G10 L2 P1 Z[#<coord_offset_z>]

(-------------------------------------------------------------------------)
(возвращение в систему G54)
G54

(-------------------------------------------------------------------------)
(Опускание к ближайшему целому значению для удобства ручной корректировки результата)
G0 Z[FIX[#<_z>]]
O<sys.matheight_abs> endsub
M02
ini

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

[RS274NGC]
FEATURES = 14
[HALUI]
MDI_COMMAND = O<sys.matheight_abs> call
[MATERIAL_HEIGHT_PROBE]
COARSE_FEED_SEARCH = 60
ACCURATE_FEED_SEARCH = 16
ACCURATE_FEED_LATCH = 364
SENSOR_HEIGHT = 15.0
SENSOR_TOOL_NUM = 314
xml

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

				<button>
					<halpin>"measumerent_material_height.out"</halpin>
					<text>"Measumerent \nmaterial height"</text> 
				</button>
hal

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

net manual.measumerent_material_height halui.mdi-command-06
net manual.measumerent_material_height  pyvcp.measumerent_material_height.out
Вложения
sys.matheight_abs.ngc
(3.41 КБ) 1132 скачивания
Аватара пользователя
ridirt
Мастер
Сообщения: 684
Зарегистрирован: 24 июл 2013, 23:52
Репутация: 275
Настоящее имя: Живописцев Андрей Викторович
Откуда: Спб
Контактная информация:

Re: Мои вспомогательные утилиты.

Сообщение ridirt »

в качестве материала что использовалось? Люминь?
Аватара пользователя
torvn77
Мастер
Сообщения: 2442
Зарегистрирован: 02 июн 2012, 22:12
Репутация: 215
Откуда: Россия,Санкт-Петербург
Контактная информация:

Re: Мои вспомогательные утилиты.

Сообщение torvn77 »

Нет, скорее дюраль.
Но в данном случае конкретная конструкция датчика не важна, так как смысл в публикации управляющей суброутины,
А датчиком может быть всё что попадёт под руку.
ashe
Новичок
Сообщения: 23
Зарегистрирован: 27 окт 2015, 00:20
Репутация: 1
Настоящее имя: Дмитрий
Контактная информация:

Re: Мои вспомогательные утилиты.

Сообщение ashe »

Не могли бы вы внятно и с расстановкой объяснить, как это использовать? Сори как бы это выразиться- совсем далёкий я от линукса, и пошаговая инструкция думаю помогла бы. С электроникой дружу, но этого мало. Собрал станок - и понимаю , что я уперся... Работает прога, работает станок, но уже хочется большего, более того уже есть необходимость ...
Аватара пользователя
torvn77
Мастер
Сообщения: 2442
Зарегистрирован: 02 июн 2012, 22:12
Репутация: 215
Откуда: Россия,Санкт-Петербург
Контактная информация:

Re: Мои вспомогательные утилиты.

Сообщение torvn77 »

ashe писал(а):Не могли бы вы внятно и с расстановкой объяснить, как это использовать?
В общем виде пользоваться так же, как и с пультом: Кладёте контактный брусочек на нужное место стола или заготовки,
размещаете над ним инструмент и нажимаете на кнопку.
Я ещё аккуратно рукой придерживаю, но только так чтоб мне руку инструментом не прокололо.

Устанавливать её надо так.
Вот вы сделали конфиг LinuxCNC с демонстрациооной PyVCP панелью и поместили на рабочий стол соответствующий ярлык.
Если запустить текстовый редактор и открыть в нём ярлык, что я обычно делаю методом буксирования ярлыка на окно редактора то видно будет следующее.
Screenshot-axis.desktop (~-Desktop) - pluma.png (5309 просмотров) <a class='original' href='./download/file.php?id=71026&sid=79337e8f6e00224c715db8c658bb7d43&mode=view' target=_blank>Загрузить оригинал (34.4 КБ)</a>
Так вот, там есть параметр "Exec" в котором указана команда запуска LinuxCNC с аргументом в виде пути к основному ini файлу конфига.
Так вот, папка в которой лежит этот конфиг, является основной папкой, относительно которой в этом ini файле указываются относительные пути к другим файлам и папкам.
(Если путь начинается со знака "/" то он является абсолютным и отсчитывается от корня системы)

Так вот, открываете этот ini файл в текстовом редакторе и ищете секцию [RS274NGC] а в ней параметр SUBROUTINE_PATH
Выглядит это обычно так:
SUBROUTINE_PATH = NGC_Subroutines
Путь к папке относительный, значит открываем основную папку конфига(ту самую, в которой он лежит) находим там эту NGC_Subroutines открываем и
кладём в неё файл sys.matheight_abs.ngc содержащий суброутину собственно.
Затем ищем переходим к верхней или нижней части ini файла и копируем туда из коментария содержимое секции [MATERIAL_HEIGHT_PROBE]
[MATERIAL_HEIGHT_PROBE]
COARSE_FEED_SEARCH = 60
ACCURATE_FEED_SEARCH = 16
ACCURATE_FEED_LATCH = 364
SENSOR_HEIGHT = 15.0
SENSOR_TOOL_NUM = 314
Назначаете скорости поиска, толщину контактного бруска.
Код использующий номер инструмента в данный момент закомментирован и этот параметр на работу не влияет.
Остальные параметры из комментария помещаете в соответствующие секции.
Возвращаеся к основному ini файлу и смотрим на параметр PYVCP из секции [DISPLAY] , в нём указан путь к XML файлу с описание PyVCP панели.
Вставляете в этот файл содержимое из xml с описанием кнопки(button), куда именно вставлять разбирайтесь сами опытным путём.
Дальше переходим к секции {HAL] и смотрим содержимое параметра POSTGUI_HALFILE в котором указан путь к дополнительному файлу hal который выполняется после загрузки графического окружения программы.
В него надо вставить из коментария помещённое в часть hal, чтобы избежать неопределённости лучше вставлять в конец.

Вроде ничего не забыл, если что не ясно спрашивайте.
ashe
Новичок
Сообщения: 23
Зарегистрирован: 27 окт 2015, 00:20
Репутация: 1
Настоящее имя: Дмитрий
Контактная информация:

Re: Мои вспомогательные утилиты.

Сообщение ashe »

Спасибо, почти разобрались. Есть еще проблемка указывает по Z отъезд на 15 мм после определения датчиком, а по факту около 3_х мм. Но буду разбираться дальше.
Аватара пользователя
torvn77
Мастер
Сообщения: 2442
Зарегистрирован: 02 июн 2012, 22:12
Репутация: 215
Откуда: Россия,Санкт-Петербург
Контактная информация:

Re: Мои вспомогательные утилиты.

Сообщение torvn77 »

ashe писал(а): Есть еще проблемка указывает по Z отъезд на 15 мм после определения датчиком, а по факту около 3_х мм.
Это в том смысле, что у вас контактная пластина толщиной в три миллиметра?

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

[MATERIAL_HEIGHT_PROBE]
SENSOR_HEIGHT = 15.0
А так после окончания измерения он едет на самый верх:
(Пока находимся в машинной системе координат поднимаемся на самый верх)
G0 Z[#<_ini[AXIS_2]MAX_LIMIT>]]
ashe
Новичок
Сообщения: 23
Зарегистрирован: 27 окт 2015, 00:20
Репутация: 1
Настоящее имя: Дмитрий
Контактная информация:

Re: Мои вспомогательные утилиты.

Сообщение ashe »

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

Re: Мои вспомогательные утилиты.

Сообщение Predator »

ashe писал(а):То я вчера ночью протупил за высоту щупа.... Сегодня с утра понял.
Ну так не зря же поговорка существует: Утро вечера мудреннее! ;)
ashe
Новичок
Сообщения: 23
Зарегистрирован: 27 окт 2015, 00:20
Репутация: 1
Настоящее имя: Дмитрий
Контактная информация:

Re: Мои вспомогательные утилиты.

Сообщение ashe »

Нашел интересную програмку FlatCam называется. Надеюсь вопрос по теме? Так вот генерит она G-код, на который ругается LinuxCNC- а именно: Файл закончился без знака процента или конца программы. Файл прилагаю. Посмотреть его в онлайн симуляторе можно тут: http://chilipeppr.com/tinyg . % вставил- заработало, мож кому пригодится.
Вложения
Dj - CADCAM Bottom Copper1.txt
Г-код
(202.8 КБ) 1062 скачивания
ashe
Новичок
Сообщения: 23
Зарегистрирован: 27 окт 2015, 00:20
Репутация: 1
Настоящее имя: Дмитрий
Контактная информация:

Re: Мои вспомогательные утилиты.

Сообщение ashe »

Обучалка на русском: https://www.youtube.com/watch?v=VlmkTB33sD4&app=desktop
Аватара пользователя
torvn77
Мастер
Сообщения: 2442
Зарегистрирован: 02 июн 2012, 22:12
Репутация: 215
Откуда: Россия,Санкт-Петербург
Контактная информация:

Re: Мои вспомогательные утилиты.

Сообщение torvn77 »

ashe писал(а): Надеюсь вопрос по теме?
Да, вопрос не по теме, эта информация должна помещаться в специальный раздел форума CAM пакеты.
По этой же причине не на месте размещён и ролик, при чём на форуме есть тема посвящённая этому вопросу,
хотя и находится в разделе "Обработка материалов" Гравировка печатных плат в подробностях #1.
AndryBig наверно сейчас горькими слезами плачет, он старался, писал, а вы ничего не заметили.

По самому же вопросу я скажу что конечно G-code можно выполнить и без процента или или иного явного указания окончания работы программы.
Но только если вы так случайно запустите порченную программу, ну например переносили её на убитой флешке то результат может выйти очень весёлый.
По этому это требование у LinuxCNC разумное, хотя в принципе для каждой программы ещё надо было бы и хэшсумму требовать,
чтобы иметь гарантию сохранности не только конца, но и всего содержимого в целом.
Последний раз редактировалось torvn77 13 фев 2016, 18:47, всего редактировалось 1 раз.
ashe
Новичок
Сообщения: 23
Зарегистрирован: 27 окт 2015, 00:20
Репутация: 1
Настоящее имя: Дмитрий
Контактная информация:

Re: Мои вспомогательные утилиты.

Сообщение ashe »

Да, а слона то я и не увидел... Ну надеюсь никто не обидется, ведь в этой программе как-то попроще на мой взгляд.Я на форуме недавно, и станок только собрал, учусь,так что не пинайте сильно.
ashe
Новичок
Сообщения: 23
Зарегистрирован: 27 окт 2015, 00:20
Репутация: 1
Настоящее имя: Дмитрий
Контактная информация:

Re: Мои вспомогательные утилиты.

Сообщение ashe »

Вопрос по определению длины инструмента. По какой-то причине при касании датчика на большей скорости станок останавливается и выводит ошибку. Это происходит в половине случаев. У меня входной порт подтянут резиком к +5 , может нужен триггер на входе? Не подскажите в чем может быть проблема?
Аватара пользователя
torvn77
Мастер
Сообщения: 2442
Зарегистрирован: 02 июн 2012, 22:12
Репутация: 215
Откуда: Россия,Санкт-Петербург
Контактная информация:

Re: Мои вспомогательные утилиты.

Сообщение torvn77 »

А какая ошибка?
Напишите пожалуйста подробнее, потому что глюк может происходить не только в скрипте, но и в датчике или коды G38.x сами по себе могут глючить.
И ещё, напряжение +5V для работы на замыкание слишком маленькое, надо не меньше 12V,
иначе оксидный слой плохо пробивать будет.

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

Замер же высоты инструмента делается как разница высоты срабатывания датчика и некоего общего для разных инструментов числа,
которое вычитается из полученного замера с занесением результата в специальную таблицу, из которой он потом берётся специальными командами.
В отличии от моего скрипта такая компенсация не требует для своей работы изменения относительных координат, и они могут оставаться одними для всех инструментов.


Впрочем, всё это бывает важным не всегда и не у всех, так что люди обычно используют первый, не совсем правильный вариант.
ashe
Новичок
Сообщения: 23
Зарегистрирован: 27 окт 2015, 00:20
Репутация: 1
Настоящее имя: Дмитрий
Контактная информация:

Re: Мои вспомогательные утилиты.

Сообщение ashe »

Если по порядку:
1 компенсация толщины пробы указана 0 ( т.к. измеряю непосредственно на заготовке)
2 вход сейчас потянут к 5 вольтам 1 ком, дальше через резик и стабилитрон в лпт. нет буфера.
3 по окислам это немного не сюда, заготовка чистая (медь)
4 фото ошибки прилагаю.

если подключать к 12в ( у меня 28в источник ) надо делать какой то буфер.
А как у вас сделано ? И глюков таких нет?
Вложения
IMG_20160516_123640.jpg (4942 просмотра) <a class='original' href='./download/file.php?id=80219&sid=79337e8f6e00224c715db8c658bb7d43&mode=view' target=_blank>Загрузить оригинал (955.85 КБ)</a>
Аватара пользователя
torvn77
Мастер
Сообщения: 2442
Зарегистрирован: 02 июн 2012, 22:12
Репутация: 215
Откуда: Россия,Санкт-Петербург
Контактная информация:

Re: Мои вспомогательные утилиты.

Сообщение torvn77 »

Последнее в гугле переводиться как
Зонд уже ясно при запуске g38.4 / 5 ход
не знаю как это понять, контакт что-ли сохранился?
Попробуйте через halmetr как меняется пин motion.probe-input на который подаётся сигнал с пробника для G38.x

Вообще если есть место в котором происходит нечто не понятное, то его имеет смысл обложить отладочным кодом.

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

(DEBUG, Z=#<_z> , motion.probe-input = #<_hal[motion.probe-input]>)
Аватара пользователя
torvn77
Мастер
Сообщения: 2442
Зарегистрирован: 02 июн 2012, 22:12
Репутация: 215
Откуда: Россия,Санкт-Петербург
Контактная информация:

Re: Мои вспомогательные утилиты.

Сообщение torvn77 »

Глянул в мануальник, G38.4/5 работают на разрыв контакта. ( 23. G38.n Straight Probe)
У вас там точно нет оксидного слоя?
Заготовка хорошо закреплена?
ashe
Новичок
Сообщения: 23
Зарегистрирован: 27 окт 2015, 00:20
Репутация: 1
Настоящее имя: Дмитрий
Контактная информация:

Re: Мои вспомогательные утилиты.

Сообщение ashe »

закреплена хорошо, оксида нет, а вот что замкнут - так и есть
Ответить

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