Страница 1 из 2

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

Добавлено: 30 янв 2016, 16:53
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

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

Добавлено: 30 янв 2016, 17:02
torvn77
Screenshot-sys.matheight_abs.ngc - AXIS 2.7.3 on mill-suda-8070st-5i25-7i76-logitech_gamepad.png (5746 просмотров) <a class='original' href='./download/file.php?id=70220&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

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

Добавлено: 06 фев 2016, 13:34
ridirt
в качестве материала что использовалось? Люминь?

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

Добавлено: 06 фев 2016, 16:39
torvn77
Нет, скорее дюраль.
Но в данном случае конкретная конструкция датчика не важна, так как смысл в публикации управляющей суброутины,
А датчиком может быть всё что попадёт под руку.

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

Добавлено: 07 фев 2016, 02:27
ashe
Не могли бы вы внятно и с расстановкой объяснить, как это использовать? Сори как бы это выразиться- совсем далёкий я от линукса, и пошаговая инструкция думаю помогла бы. С электроникой дружу, но этого мало. Собрал станок - и понимаю , что я уперся... Работает прога, работает станок, но уже хочется большего, более того уже есть необходимость ...

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

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

Устанавливать её надо так.
Вот вы сделали конфиг LinuxCNC с демонстрациооной PyVCP панелью и поместили на рабочий стол соответствующий ярлык.
Если запустить текстовый редактор и открыть в нём ярлык, что я обычно делаю методом буксирования ярлыка на окно редактора то видно будет следующее.
Screenshot-axis.desktop (~-Desktop) - pluma.png (5591 просмотр) <a class='original' href='./download/file.php?id=71026&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, чтобы избежать неопределённости лучше вставлять в конец.

Вроде ничего не забыл, если что не ясно спрашивайте.

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

Добавлено: 10 фев 2016, 01:48
ashe
Спасибо, почти разобрались. Есть еще проблемка указывает по Z отъезд на 15 мм после определения датчиком, а по факту около 3_х мм. Но буду разбираться дальше.

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

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

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

[MATERIAL_HEIGHT_PROBE]
SENSOR_HEIGHT = 15.0
А так после окончания измерения он едет на самый верх:
(Пока находимся в машинной системе координат поднимаемся на самый верх)
G0 Z[#<_ini[AXIS_2]MAX_LIMIT>]]

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

Добавлено: 10 фев 2016, 11:43
ashe
То я вчера ночью протупил за высоту щупа.... Сегодня с утра понял.

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

Добавлено: 10 фев 2016, 14:34
Predator
ashe писал(а):То я вчера ночью протупил за высоту щупа.... Сегодня с утра понял.
Ну так не зря же поговорка существует: Утро вечера мудреннее! ;)

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

Добавлено: 13 фев 2016, 03:40
ashe
Нашел интересную програмку FlatCam называется. Надеюсь вопрос по теме? Так вот генерит она G-код, на который ругается LinuxCNC- а именно: Файл закончился без знака процента или конца программы. Файл прилагаю. Посмотреть его в онлайн симуляторе можно тут: http://chilipeppr.com/tinyg . % вставил- заработало, мож кому пригодится.

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

Добавлено: 13 фев 2016, 11:46
ashe
Обучалка на русском: https://www.youtube.com/watch?v=VlmkTB33sD4&app=desktop

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

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

По самому же вопросу я скажу что конечно G-code можно выполнить и без процента или или иного явного указания окончания работы программы.
Но только если вы так случайно запустите порченную программу, ну например переносили её на убитой флешке то результат может выйти очень весёлый.
По этому это требование у LinuxCNC разумное, хотя в принципе для каждой программы ещё надо было бы и хэшсумму требовать,
чтобы иметь гарантию сохранности не только конца, но и всего содержимого в целом.

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

Добавлено: 13 фев 2016, 14:55
ashe
Да, а слона то я и не увидел... Ну надеюсь никто не обидется, ведь в этой программе как-то попроще на мой взгляд.Я на форуме недавно, и станок только собрал, учусь,так что не пинайте сильно.

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

Добавлено: 16 май 2016, 10:06
ashe
Вопрос по определению длины инструмента. По какой-то причине при касании датчика на большей скорости станок останавливается и выводит ошибку. Это происходит в половине случаев. У меня входной порт подтянут резиком к +5 , может нужен триггер на входе? Не подскажите в чем может быть проблема?

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

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

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

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


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

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

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

если подключать к 12в ( у меня 28в источник ) надо делать какой то буфер.
А как у вас сделано ? И глюков таких нет?

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

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

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

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

(DEBUG, Z=#<_z> , motion.probe-input = #<_hal[motion.probe-input]>)

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

Добавлено: 16 май 2016, 13:30
torvn77
Глянул в мануальник, G38.4/5 работают на разрыв контакта. ( 23. G38.n Straight Probe)
У вас там точно нет оксидного слоя?
Заготовка хорошо закреплена?

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

Добавлено: 16 май 2016, 13:46
ashe
закреплена хорошо, оксида нет, а вот что замкнут - так и есть