Страница 16 из 39

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

Добавлено: 21 июл 2014, 09:50
Nick
Да, есть такое.... как решить пока не знаю...

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

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

И вот у меня появилась мысль,а что если в компонент manualtoolchange добавить пины для запуска автоматического измерения
компенсации длинны и радиуса отдельно по пину на то и другое?
Ну и входные пины для подтверждения удачности изменений.
Параметры датчика измерений задавать в ini ,а сами макросы оформить как суброутинусы запускаемые через [HALUI]MDI_COMMAND
Хотя может лучше сделать отдельные строки конфигурации.

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

Добавлено: 29 июл 2014, 00:51
Serg
Так можно просто всё засунуть в M6 без всяких MDI_COMMAND.
Хотя я предпочитаю обмер после смены делать в самой УП с помощью постпроцессора, ибо иногда после смены инструмента нельзя ехать к датчику.

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

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

Имхо действительно лучше отдельно обмерять инструмент.
Делаешь подпрограмму по обмерке с параметрами приблизительного диаметра и длинны и вызываешь ее когда надо. В итоге получаешь +1 строчку...

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

Добавлено: 29 июл 2014, 12:24
torvn77
В таком центре manualtoolchange использоваться не будет.

Мне тут пришла в головы мысль,что хорошо бы добавить axis пины для задания и запуска автосмены инструмента с PyVCP GladeVCP панелей.

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

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


Оказывается показ оффсетов G54-G59.3 не меняется только при вызове из консоли MDI,
при вызове из суброутинуса меняется как надо.(LinuxCNC 2.7)
В общем пост можно переместить в тему для багов: Сбор багов LinuxCNC ( багтрекер bug bugtracker баг )

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

Добавлено: 02 авг 2014, 14:34
torvn77
И ещё хорошо бы в команду хала show добавить опцию для выбора столбца,по которому будет осуществлятся сортировка.
А то не удобно,надо отсортировать по DIR,а первыми идут столбцы owner и type.
Может просто выбранный опцией столбец выводить впервую очередь.
или сделать иначе,сделать опции показа которые будут определять,какие следует выводить столбцы и в какой последовательности их рапологать.

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

Добавлено: 03 авг 2014, 11:02
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

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

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

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

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

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

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

watch "halcmd show pin | grep dir"

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

Добавлено: 04 авг 2014, 10:14
Nick
torvn77 писал(а):Можно сделать явную привязку вызываемой MDI комманды к пину halui ?
А то получается что если вставить команду среди написанных,то нумарация изменится и соответствие других команд пинам изменится.
Может лучше вообще сделать явное присвоение имени халуевскому пину?
Например так:
MDI_COMMAND = rapid_move_absl.in G53 G0 X0 Y0 Z0
Должен создать пин halui.rapid_move_absl.in
Мне это тоже не очень нравится.
Но, вопервых, не надо вставлять строчки в середине! Зачем?
Есть другая проблема - когда просто копируешь конфиги...
Надо посмотреть, как это исправить в halui, НО в любом случае должна быть обратная совместимость с предыдущими версиями!

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

Добавлено: 04 авг 2014, 11:25
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 модуль?

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

Добавлено: 05 авг 2014, 16:11
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]

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

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

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

a=asd
multiline = line1
  line2 
  line3

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

Добавлено: 05 авг 2014, 17:59
Serg
Подпрограммы-то чем не угодили?..

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

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

Подпрограммы - хорошо, но так наверное больше гибкости, хотя там halui на сях написан - там жесткое ограничение на размер строки. Ну в принципе можно и через подпрограммы... Честно говоря, мне больше всего не нравится автонумерация команд в зависимости от положения в ini файле.

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

Добавлено: 05 авг 2014, 19:28
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
Пока в разработке,но работает стабильно

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

Добавлено: 05 авг 2014, 19:32
torvn77
А так за образец конфигурационного файла я предлагаю взять /etc/X11/xorg.conf

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

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

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

У меня есть знакомый программист,вроде как не прочь что то покодить,
Если он накодит рабочий код:вы его примете в проект или скажете "не нужно"?

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

Добавлено: 09 авг 2014, 18:12
torvn77
Хорошо бы в "Predefined Named Parameters" добавить переменные верхние и нижние лимиты перемещений станка.

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

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