Что я еще не знал о LinuxCNC, что нам еще предстоит сделать

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел

Сообщение Nick »

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

Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел

Сообщение torvn77 »

Появилась идея,в своё время T-Rex мне написал,что в про станках не только смену инструмента,но и его объмер предпочитают прятать
в один вызываемый M6 макрос.

И вот у меня появилась мысль,а что если в компонент manualtoolchange добавить пины для запуска автоматического измерения
компенсации длинны и радиуса отдельно по пину на то и другое?
Ну и входные пины для подтверждения удачности изменений.
Параметры датчика измерений задавать в ini ,а сами макросы оформить как суброутинусы запускаемые через [HALUI]MDI_COMMAND
Хотя может лучше сделать отдельные строки конфигурации.
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел

Сообщение Serg »

Так можно просто всё засунуть в M6 без всяких MDI_COMMAND.
Хотя я предпочитаю обмер после смены делать в самой УП с помощью постпроцессора, ибо иногда после смены инструмента нельзя ехать к датчику.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел

Сообщение Nick »

интересно, а если у нас большой обрабатывающий центр, в котором в шпиндель могут вставлять как фрезу, так и токарный резец, как их одной командой обмерять?
Или банально не резец, а вставляем щуп для обмера детали?

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

Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел

Сообщение torvn77 »

В таком центре manualtoolchange использоваться не будет.

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

Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел

Сообщение torvn77 »

На вкладке preview оболочки Axis среди процего вы сделали отображение оффсетов G54-G59.3
Только вот выбор офсета для отображения сделан через команды G10 присвоения значения офсету.
Предлагаю отображать в окне не последний присвоеный офсет,а текущий активный.
Ну а чтобы не терять удобства ручного изменения офсета через кнопку "Touch Off",
сделать либо показ значения офсета в этом диалоговом окне,
либо добавить переключение отображаемого офсета как часть функции этого окна,
либо дополнительно сделать независимый диалог выбора отображаемого офсета,


Оказывается показ оффсетов G54-G59.3 не меняется только при вызове из консоли MDI,
при вызове из суброутинуса меняется как надо.(LinuxCNC 2.7)
В общем пост можно переместить в тему для багов: Сбор багов LinuxCNC ( багтрекер bug bugtracker баг )
Последний раз редактировалось torvn77 03 авг 2014, 11:05, всего редактировалось 3 раза.
Аватара пользователя
torvn77
Мастер
Сообщения: 2442
Зарегистрирован: 02 июн 2012, 22:12
Репутация: 215
Откуда: Россия,Санкт-Петербург
Контактная информация:

Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел

Сообщение torvn77 »

И ещё хорошо бы в команду хала show добавить опцию для выбора столбца,по которому будет осуществлятся сортировка.
А то не удобно,надо отсортировать по DIR,а первыми идут столбцы owner и type.
Может просто выбранный опцией столбец выводить впервую очередь.
или сделать иначе,сделать опции показа которые будут определять,какие следует выводить столбцы и в какой последовательности их рапологать.
Последний раз редактировалось torvn77 03 авг 2014, 11:02, всего редактировалось 1 раз.
Аватара пользователя
torvn77
Мастер
Сообщения: 2442
Зарегистрирован: 02 июн 2012, 22:12
Репутация: 215
Откуда: Россия,Санкт-Петербург
Контактная информация:

Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел

Сообщение torvn77 »

MDI_COMMAND = G53 G0 X0 Y0 Z0 - An MDI command can be executed by using halui.mdi-command-00. Increment the number for each command listed in the [HALUI] section.
Можно сделать явную привязку вызываемой MDI комманды к пину halui ?
А то получается что если вставить команду среди написанных,то нумарация изменится и соответствие других команд пинам изменится.
Может лучше вообще сделать явное присвоение имени халуевскому пину?
Например так:
MDI_COMMAND = rapid_move_absl.in G53 G0 X0 Y0 Z0
Должен создать пин halui.rapid_move_absl.in
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел

Сообщение Nick »

torvn77 писал(а):И ещё хорошо бы в команду хала show добавить опцию для выбора столбца,по которому будет осуществлятся сортировка.
А то не удобно,надо отсортировать по DIR,а первыми идут столбцы owner и type.
Может просто выбранный опцией столбец выводить впервую очередь.
или сделать иначе,сделать опции показа которые будут определять,какие следует выводить столбцы и в какой последовательности их рапологать.
Для таких вещей обычно используются внешние утилиты - grep sort и прочее. Если тебе нужны пины типа dir - выводи

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

halcmd show | grep dir
Не стоит перегружать простую утилиту всякими лишними сортировками.

ЗЫ также рекомендую посмотреть на watch, например:

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

watch "halcmd show pin | grep dir"
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел

Сообщение Nick »

torvn77 писал(а):Можно сделать явную привязку вызываемой MDI комманды к пину halui ?
А то получается что если вставить команду среди написанных,то нумарация изменится и соответствие других команд пинам изменится.
Может лучше вообще сделать явное присвоение имени халуевскому пину?
Например так:
MDI_COMMAND = rapid_move_absl.in G53 G0 X0 Y0 Z0
Должен создать пин halui.rapid_move_absl.in
Мне это тоже не очень нравится.
Но, вопервых, не надо вставлять строчки в середине! Зачем?
Есть другая проблема - когда просто копируешь конфиги...
Надо посмотреть, как это исправить в halui, НО в любом случае должна быть обратная совместимость с предыдущими версиями!
Аватара пользователя
torvn77
Мастер
Сообщения: 2442
Зарегистрирован: 02 июн 2012, 22:12
Репутация: 215
Откуда: Россия,Санкт-Петербург
Контактная информация:

Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел

Сообщение torvn77 »

Может проще тогда ничего не исправлять а просто сделать рядом ещё один исправленный?
Тогда можно будет и дополнительные фичи придумать,например пины,которые будут отображаться в MDI команду как переменные?или наоборот из команды в хал.
Или если MDI команда является вызовом суброутинусовой УП то ещё и добавить константы для неизменяемых праметров этой программы,
Ну примерно как то так:

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

[MDI COMMAND]
[subsection cod]
M6T[#<mdi_pin.tool_number>]
F#<probe_speed>
G38.2 Z[#<probe_sensor_z-coordinate>]
#<probe_result> = #5063
#<probe_status> = #5070
[subsection cod end]
pin in       s32  mdi_pin.tool_number
pin out     u32  probe_result
pin out     bit   probe_status
pin const u32  probe_sensor_z-coordinate [AXIS_3]MIN_LIMIT
pin const u32  probe_speed 120
[MDI COMMAND END]
Причём констану и пин можно легко превращать друг в друга простой заменой in/out на const
И может просто сделать отдельный от halui модуль?
Аватара пользователя
torvn77
Мастер
Сообщения: 2442
Зарегистрирован: 02 июн 2012, 22:12
Репутация: 215
Откуда: Россия,Санкт-Петербург
Контактная информация:

Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел

Сообщение torvn77 »

А лучше для каждого пина сделать свою субсекцию,:

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

[subsection pin]
mane = mdi_pin.pin_name
dimension = s32,u32,bit...
type = out,in,const
threads = base-thread ;имя потока,в который следует добавить пин
autoclear ; сбрасывать пин при повторном обращений/активации через пин запуска 
reset_time = 42 ;сбрасывать пин в дефолтное состояние после истечения 42 циклов потока,это надо например если надо чтобы подача сигнала была эквивалентна нажатию на кнопку
[subsection pin end]
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел

Сообщение Nick »

Как-то слишком сложно...
Надо посмотреть, какой стандарт многострочных данных поддерживается в этом ini, есть например такой:

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

a=asd
multiline = line1
  line2 
  line3
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел

Сообщение Serg »

Подпрограммы-то чем не угодили?..
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел

Сообщение Nick »

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

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

Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел

Сообщение torvn77 »

После перехода на Precise и подключения всего и вся как то получилось,что вместо версии 2.6 установилась версия 2.7
А сделано у меня так:

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

				<vbox>
					<hbox>
						<button>
							<halpin>"measurement_tool_length_on.out"</halpin>
							<text>" ON "</text> 
						</button>
						<button>
							<halpin>"measurement_tool_length_off.out"</halpin>
							<text>" OFF "</text> 
						</button>
					</hbox>
				</vbox>

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

net measurement_tool_length_on  halui.mdi-command-00       <= pyvcp.measurement_tool_length_on.out
net measurement_tool_length_off halui.mdi-command-01       <= pyvcp.measurement_tool_length_off.out
net measurement_tool_radius_on  halui.mdi-command-02       <= pyvcp.measurement_tool_radius_on.out
net measurement_tool_radius_off halui.mdi-command-03       <= pyvcp.measurement_tool_radius_off.out

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

HALUI = halui
[HALUI]
MDI_COMMAND = O<measurement_tool_length> call
MDI_COMMAND = G49
MDI_COMMAND = O<measurement_tool_radius> call
MDI_COMMAND = G40
MDI_COMMAND = O<material_height_measurement> call
MDI_COMMAND = G54 G10 L2 P1 Z0
#
MDI_COMMAND = G54 G10 L20 P1 X0
MDI_COMMAND = G54 G10 L20 P1 Y0
MDI_COMMAND = G54 G10 L20 P1 Z0
MDI_COMMAND = G54 G10 L20 P1 A0

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

O<measurement_tool_length> sub
#<length_sensor_position_x> = 8.0
#<length_sensor_position_y> = 35.0
#<length_sensor_position_z> = -105.0

#<_machine_min_z-axis> = -110.0
#<_machine_max_z-axis> = 0.0

#<probe_search_feed> = 360 (80~120 mm/min)
#<probe_latch_feed> = 120

(--------Строка начальной инициализации машины ------------ )
G17 G21 M9 G61.1 
(--------Установка режимов ??? перемещений )
G90 G91.1 
(--------Отключение оффсетов )
#<g92_offset_status> = #5210
#<selected_coordinate_system> = #5220

G40 G49 G92.2
(--Установка и переход в машинную систему координат )
G10 L2 P9 X0Y0Z0
G59.3
(------Расположение инструмента в первоначальную позицию измерения длинны )
G0 Z[#<_machine_max_z-axis>]
G0 X[#<length_sensor_position_x>] Y[#<length_sensor_position_y>]
(------- Обмер инструмента собственно )
(------- Длинна инструмента измеряется относительно смещения по Z в G54 )
F[#<probe_search_feed>]
G38.3 Z[#<length_sensor_position_z>]
G38.5 Z[#<_machine_max_z-axis>]
F[#<probe_latch_feed>]
G38.3 Z[#<length_sensor_position_z>]
#<probe_bottom> = #5063
G38.5 Z[#<_machine_max_z-axis>]
#<probe_top> = #5063
(------- Вычисление компенсации длинны инструмента )
#<tool_length_comp> = [[#<probe_bottom>+[[#<probe_top>-#<probe_bottom>]/2]]-#<length_sensor_position_z>]
(DEBUG,Null Z-Axis = #<tool_length_comp>)
(------- Подъём на самый верх )
G0 Z[#<_machine_max_z-axis>]
(------- Включение компенсации на длинну )
G43.1 Z[#<tool_length_comp>]
(----- Востановление прежней системы координат )
O102 if [ #<selected_coordinate_system> eq 1 ]
G54
(DEBUG,G54)
O102 elseif [ #<selected_coordinate_system> eq 2 ]
G55
(DEBUG,G55)
O102 elseif [ #<selected_coordinate_system> eq 3 ]
(DEBUG,G56)
G56
O102 elseif [ #<selected_coordinate_system> eq 4 ]
(DEBUG,G57)
G57
O102 elseif [ #<selected_coordinate_system> eq 5 ]
(DEBUG,G58)
G58
O102 elseif [ #<selected_coordinate_system> eq 6 ]
(DEBUG,G59)
G59
O102 elseif [ #<selected_coordinate_system> eq 7 ]
(DEBUG,G59.1)
G59.1
O102 elseif [ #<selected_coordinate_system> eq 8 ]
(DEBUG,G59.2)
G59.2
O102 elseif [ #<selected_coordinate_system> eq 9 ]
(DEBUG,Error! Preselected G59.3 !)
G54
M02
O102 else
(DEBUG,Uncnown coordinate system number)
M02
O102 endif
(Включение оффсета )
(G92.3 )
(DEBUG,Normal End)
O<measurement_tool_length> endsub
O<measurement_tool_length> call
M02
Пока в разработке,но работает стабильно
Аватара пользователя
torvn77
Мастер
Сообщения: 2442
Зарегистрирован: 02 июн 2012, 22:12
Репутация: 215
Откуда: Россия,Санкт-Петербург
Контактная информация:

Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел

Сообщение torvn77 »

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

Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел

Сообщение torvn77 »

Nick писал(а):Как-то слишком сложно...
Почему?
Как раз всё просто.
Главная секция описания отдельной мди команды начало [MDI COMMAND] - конец [MDI COMMAND END]
далее следует опция с именем этой команды по которой вызывается пин для её вызова
Всё что заключено между [subsection cod] и [subsection cod end] есть исполняемый Гкод
Всё что заключено между [subsection pin] и [subsection pin end] суть описание одного отдельного пина и его поведения.
Причём одна строка - один параметр.

а у вас спазу мудрить нужно,число строк считать ...
При том что по уму всё равно все эти настройки надо закладывать и делать.
Во вторых я предлагаю не переделывать перегруженный пинами halui,а оставить его как legacy и сделать отдельный компонент,
который будет заниматься только этим и при этом уметь это делать хорошо(прицип unix-way одна программа - одна выполняемая функция.)

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

Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел

Сообщение torvn77 »

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

Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел

Сообщение verser »

А почему именно верхние и нижние лимиты перемещений станка, а не десятки других параметров из .ini и .hal файлов?
Подсказка-ответ http://cnc-club.ru/forum/viewtopic.php? ... 77#p126339
Ответить

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