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

Установка нуля по поверхности материала (Z -> 0) (CAD)

Добавлено: 26 сен 2015, 20:29
torvn77
Результата пока нет

Re: Установка нуля по поверхности материала (Z -> 0) (CAD)

Добавлено: 26 сен 2015, 20:38
shalek
torvn77 писал(а):Результата пока нет
Отсутствие результата уже результат. А надо чего?
Вот в SolidCam
Screenshot - 26.09.2015 , 20_43_11.png (3340 просмотров) <a class='original' href='./download/file.php?id=58875&mode=view' target=_blank>Загрузить оригинал (66.24 КБ)</a>
Screenshot - 26.09.2015 , 20_43_39.png (3340 просмотров) <a class='original' href='./download/file.php?id=58876&mode=view' target=_blank>Загрузить оригинал (305.1 КБ)</a>
Screenshot - 26.09.2015 , 20_46_32.png (3337 просмотров) <a class='original' href='./download/file.php?id=58879&mode=view' target=_blank>Загрузить оригинал (268.23 КБ)</a>
Screenshot - 26.09.2015 , 20_46_46.png (3337 просмотров) <a class='original' href='./download/file.php?id=58880&mode=view' target=_blank>Загрузить оригинал (314.41 КБ)</a>

Re: Установка нуля по поверхности материала (Z -> 0) (CAD)

Добавлено: 26 сен 2015, 20:55
torvn77
Ну ясно что в начале надо выключить компенсации и поставить те единицы измерения, которые используются в субпрограмме.
G21 G40 G49 G90 G94 G92.2
Потом по идее с помошью G38.x начать поиск поверхности материала.
И туть вот какая сложность, если в режиме движения по приращениям G91 задать приращение,
которое отправит ось за пределы рабочего пространства то программа будет прервана с сообщением об ошибке.
Ну да это не сложно поправить, расчитав нужную длинну прыжка.
G38.3 Z[#<_ini[AXIS_2]MIN_LIMIT> - #<_Z> - #5223]
Но помимо эстетической составляющей, так как из нолмера переменной #5223 не ясно, а что же это такое,
есть и практическое соображение, это офсет по Z для системы координат номер 1 (G54),
и будь выбрана другая система координат, расчитанная таким образом длинна прыжка будет не правильной.
Ни номерных переменных, ни именных для получения значения оффсета текущей системы координат нету.
Что делать, как писать программу, которая будет работоспособна при любой выбранной системе координат?

Re: Установка нуля по поверхности материала (Z -> 0) (CAD)

Добавлено: 26 сен 2015, 21:01
shalek
Я наверное помешал Вам размышлять самим с собою?
Больше не буду. :idiot:

Re: Установка нуля по поверхности материала (Z -> 0) (CAD)

Добавлено: 26 сен 2015, 21:43
Serg
torvn77 писал(а):Что делать, как писать программу, которая будет работоспособна при любой выбранной системе координат?
Я уже раз 5 тут постил такую... Или я обязан её и в эту тему запостить? :)

Re: Установка нуля по поверхности материала (Z -> 0) (CAD)

Добавлено: 26 сен 2015, 21:44
Predator
UAVpilot писал(а):Или я обязан её и в эту тему запостить?
А то как же, специально для torvn77 :hehehe:

Re: Установка нуля по поверхности материала (Z -> 0) (CAD)

Добавлено: 26 сен 2015, 21:48
torvn77
UAVpilot писал(а):Я уже раз 5 тут постил такую... Или я обязан её и в эту тему запостить? :)
Выход то я нашёл, написал я это к тому, что надо бы для большего удобства сделать соответствующие системные переменные.

Re: Установка нуля по поверхности материала (Z -> 0) (CAD)

Добавлено: 26 сен 2015, 21:52
torvn77
Да и свойства (MSG, хорошо бы довести до (DEBUG, а то механизмы это разные, а значения переменных в сообщения засовывать нужно.

Re: Установка нуля по поверхности материала (Z -> 0) (CAD)

Добавлено: 27 сен 2015, 02:02
torvn77
Ну вот прототип на критику, как тебе и хочется, сделан на приращениях

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

O<sys.matheight_rel> sub
M70
G21 G40 G49 G91 G94 G92.2

O<matheight_100> if [ #<_coord_system> EQ 540 ]
#<coord_system_offset_z> = #5223
O<matheight_100> elseif [ #<_coord_system> EQ 550 ]
#<coord_system_offset_z> = #5243
O<matheight_100> elseif [ #<_coord_system> EQ 560 ]
#<coord_system_offset_z> = #5263
O<matheight_100> elseif [ #<_coord_system> EQ 570 ]
#<coord_system_offset_z> = #5283
O<matheight_100> elseif [ #<_coord_system> EQ 580 ]
#<coord_system_offset_z> = #5303
O<matheight_100> elseif [ #<_coord_system> EQ 590 ]
#<coord_system_offset_z> = #5323
O<matheight_100> elseif [ #<_coord_system> EQ 591 ]
#<coord_system_offset_z> = #5343
O<matheight_100> elseif [ #<_coord_system> EQ 592 ]
#<coord_system_offset_z> = #5363
O<matheight_100> elseif [ #<_coord_system> EQ 593 ]
#<coord_system_offset_z> = #5383
O<matheight_100> else
(DEBUG,Programm stopping:uncnown coordinate system number)
M02
O<matheight_100> endif

O<matheight_120> if [ #<_current_tool> NE #<_ini[MATERIAL_HEIGHT_PROBE]SENSOR_TOOL_NUM>]
(DEBUG,Incorect tool, plase insert tool correct number [MATERIAL_HEIGHT_PROBE]SENSOR_TOOL_NUM)
(MSG,Default:314)
M02
O<matheight_120> endif

F[#<_ini[MATERIAL_HEIGHT_PROBE]COARSE_FEED_SEARCH>]
G38.3 Z[#<_ini[AXIS_2]MIN_LIMIT> - #<_z> -#<coord_system_offset_z>]
G38.5 Z[#<_ini[AXIS_2]MAX_LIMIT> - #<_z> -#<coord_system_offset_z>]
F[#<_ini[MATERIAL_HEIGHT_PROBE]ACCURATE_FEED_SEARCH>]
G38.3 Z[#<_ini[AXIS_2]MIN_LIMIT> - #<_z> -#<coord_system_offset_z>]
#<probe_bottom> = #5063
F[#<_ini[MATERIAL_HEIGHT_PROBE]ACCURATE_FEED_LATCH>]
G38.5 Z[#<_ini[AXIS_2]MAX_LIMIT> - #<_z> -#<coord_system_offset_z>]
#<probe_top> = #5063
(DEBUG,<probe_top> = #<probe_top> )
(DEBUG,<probe_bottom> = #<probe_bottom>)
#<probe_result> = [[[#<probe_bottom>+#<probe_top>]/2] + #<coord_system_offset_z>]

G0 Z[#<_ini[AXIS_2]MAX_LIMIT> - #<_z> - #<coord_system_offset_z>]
M72
G10 L2 P1 Z[#<probe_result> - #<_ini[MATERIAL_HEIGHT_PROBE]SENSOR_HEIGHT>]
O<sys.matheight_rel> endsub
M02
В ini надо добавить

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

[MATERIAL_HEIGHT_PROBE]
COARSE_FEED_SEARCH = 8192
ACCURATE_FEED_SEARCH = 16
ACCURATE_FEED_LATCH = 8192
SENSOR_HEIGHT = 15
SENSOR_TOOL_NUM = 314

Re: Установка нуля по поверхности материала (Z -> 0) (CAD)

Добавлено: 27 сен 2015, 02:06
torvn77
Но мне такой способ не нравится, всюду, даже в подсчёт результата надо пихать офсеты.
Всёж ноль это ноль, у него нулевая погрешность сложения и вычитания, да и умножение не менее определённое.
Самое не хорошее то, что значение результата G38.x даётся только относительно текущей координатной системы,
а в машинных координатах его прочитать нельзя, так как нет такой переменной.

Re: Установка нуля по поверхности материала (Z -> 0) (CAD)

Добавлено: 27 сен 2015, 14:39
torvn77
Ну эти приращения, программа с ними чуть что не так заканчивается с ощибкой выхода за пределы рабочего пространства,
да ещё и результат не всегда получается правильный, из-за чего всё равно приходится вставлять G10 L2
Если так, то в предположении что команды gcod'a в LinuxCNC выполняются коррктно её лучше переписать так:

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

O<sys.matheight_rel> sub
M70
G21 G40 G49 G90 G94 G92.2
G10 L2 P[#5220] Z0


O<matheight_120> if [ #<_current_tool> NE #<_ini[MATERIAL_HEIGHT_PROBE]SENSOR_TOOL_NUM>]
(DEBUG,Incorect tool, plase insert tool correct number [MATERIAL_HEIGHT_PROBE]SENSOR_TOOL_NUM)
(MSG,Default:314)
M02
O<matheight_120> endif

F[#<_ini[MATERIAL_HEIGHT_PROBE]COARSE_FEED_SEARCH>]
G38.3 Z[#<_ini[AXIS_2]MIN_LIMIT>]
G38.5 Z[#<_ini[AXIS_2]MAX_LIMIT>]
F[#<_ini[MATERIAL_HEIGHT_PROBE]ACCURATE_FEED_SEARCH>]
G38.3 Z[#<_ini[AXIS_2]MIN_LIMIT>]
#<probe_bottom> = #5063
F[#<_ini[MATERIAL_HEIGHT_PROBE]ACCURATE_FEED_LATCH>]
G38.5 Z[#<_ini[AXIS_2]MAX_LIMIT>]
#<probe_top> = #5063
(DEBUG,<probe_top> = #<probe_top> )
(DEBUG,<probe_bottom> = #<probe_bottom>)
#<probe_result> = [[#<probe_bottom>+#<probe_top>]/2]

G0 Z[#<_ini[AXIS_2]MAX_LIMIT>]
M72
G10 L2 P[#5220] Z[#<probe_result> - #<_ini[MATERIAL_HEIGHT_PROBE]SENSOR_HEIGHT>]
O<sys.matheight_rel> endsub
M02

Re: Установка нуля по поверхности материала (Z -> 0) (CAD)

Добавлено: 27 сен 2015, 17:13
Nick
А G53 с G38 не работает?

Re: Установка нуля по поверхности материала (Z -> 0) (CAD)

Добавлено: 27 сен 2015, 18:29
torvn77
Нет, не работает.
Причём как я понимаю в принципе, по идее.

А вообще Именно ради установки поверхности материала переключать системы координат не надо,
можно просто сбросить и так изменяемый оффсет по Z.