LinuxCNC актуальная инструкция выравнивания портала в 2020-2022г

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
a321
Мастер
Сообщения: 563
Зарегистрирован: 03 дек 2016, 00:30
Репутация: 65
Контактная информация:

LinuxCNC актуальная инструкция выравнивания портала в 2020-2022г

Сообщение a321 »

У всех, и у меня, и у Фрезеряги станки кривые. В большей или меньшей степени, но кривые. Идеальных станков не бывает. Но чудеса математики и LinuxCNC помогают с этим жить. На форуме есть опубликованные недоинструкции (в том смысле, что прочитав все темы -
http://www.cnc-club.ru/forum/viewtopic. ... 32#p320032
http://www.cnc-club.ru/forum/viewtopic. ... 909#p27459
http://www.cnc-club.ru/forum/viewtopic.php?f=15&t=521
http://www.cnc-club.ru/forum/viewtopic.php?f=15&t=20385)
можно вынести лишь то, что проблема решается, потому свой свежайший опыт публикую в виде инструкции, с уровнем описания, по возможности, для пользователей с самой начальной подготовкой.

Благодарности -
(для просмотра содержимого нажмите на ссылку)
MX_Master за разработку модуля (устаревшная версия которого и используется, Re: Программная коррекция кривизны портала #81)
любезному NKP за предоставление этого самого устаревшего, но рабочего модуля Re: Программная коррекция кривизны портала #91
sas_75 Re: Геометрическая задачка #10 за разрешение квадратурной формулой геометрической задачки (а ведь по началу не соглашался, что задача полностью определена)
Что, зачем и почему.
Я работаю с деревом на станке умеренного размера, метр на три. Иногда делаю детали с переворотом, т.е. двусторонние. Понятно, что когда режем вдоль или поперек волокон и так уже геометрия не одинаковая, а тут еще и ось У никогда не перпендикулярна оси Х, т.е. углы априори не прямые. Более того, на станках такого размера вдоль длинной оси ставятся два мотора, по одному с каждой стороны (для одномоторных станков вопрос выравнивания столь же актуален). Я использую реечную передачу (для ШВП все равно актуально). Если я настройками датчиков Home выравниваю портал, то у меня обостряется проблема люфтов Рейка\Шестерня (что свидетельствует о приличной геометрии станка). В моем случае по оси У и Z люфта считай что нет благодаря "избирательному переносу" (трибология) мелкодисперсной древесной пыли. А ось Х прикрыта. И по традициям лучших охотников есть желание одним выстрелом убить двух зайчиков - решить проблему люфта и геометрии. Решение - простое, надо создать при поиске Home принудительно неперпендикулярность Х и У и при выполнении программ это компенсировать. Принудительно нарушая перпендикулярность Х и У я создаю предварительное напряжение в портале (это известная технология предварительного напряжения, используемая считай что повсеместно) и благодаря этому левый мотор оси Х и правый всегда будут катать свои шестерни лишь по взаимнопротивоположной стороне рейки, тем самым автоматически выбирая люфты.

Задача решается в несколько этапов.

Этап -1 вычисление меры неперпендикулярности.

А как вычислить меру неперпендикулярности? - благодаря помощи sas_75 мы имеем простую формулу.

Методология такая - на станке любого размера надо разместить угольник поверочный, желательно класса 1 и максимально доступного размера, не битый (т.е. ребра без выщерблин) и чистый. Размещение вцелом почти произвольно - лежит и прижат, он НЕ должен контактировать с токопроводящими деталями станка. Хорошим вариантом будет размещение под углом 45% к оси Х. Зажав в шпиндель штифт (любимого размера) и подключив контакт Probe к угольнику ищем координаты 4 точек, на каждом ребре угольника по 2 точки (командами вида G38.2 X100 , где 100 - это потенциальная координата. в сторону которой станку следует ехть до контакта с угольником. Диаметр штифта значения не имеет. Поскольку у поверочного угольника угол прямой по четырем точкам мы можем вычислить угол неперпендикулярности оси Х и имеющейся не ортогональной У.
Для моего угольника я использую вот такую программку поиска точек контакта -
(для просмотра содержимого нажмите на ссылку)
(обмер угольника в целях проверки ровности портала)
port.ngc
(3.26 КБ) 338 скачиваний
- это программа обмера угольника, мой угольник 160*250. Вымерив кривизну и поправив командой ХАЛ кривизну в рабочем столе сделал паз, разместил в нем стальную пластину, подключил ее к пробе, измерил ее отклонени от перепендикуляра (сравнением показателя кривизны ДО коррекции из замеров угольник и из нижестледующей программы при корректоре внутри нее =0) и в дальнейшем после каждого хоминга вызываю следующую подпрограмму -
port2.ngc
(1.32 КБ) 338 скачиваний
которая выводит значение кривизны для команды
Файлик Портал содержит математику, она примитивна, она настолько примитивна, что ее может посчитать LinuxCNC и записать в файлик, которые потом может использовать скриптик для команды ниже. Для вычисления НЕОБХОДИМО И ДОСТАТОЧНО знать длину только четырех отрезков - дельт по Х и по кривой У (не ортогональной) между двумя точками касания к каждому ребру. Каждому лучше делать свой файлик.
На этом мы замерили геометрию и имеем значение для корректировки. Да, я знаю, что реально балка портала скорее сильно сдавленная S, а не прямая. Но в моих задачах покамест это не существенно.

Этап - 2. Внедрение функционала в LinuxCNC.

Для корректировки средствами LinuxCNC для начала нужно скомпилировать модуль, любезно предоставленный из своих личных архивов NKP (более свежий от автора модуля может некорректно обрабатывать значения коррекции свыше 0.5мм) - . Для компиляции открываем терминал и там -

sudo halcompile --install путь-к-файлу/relkins.c

При успешном выполнении последней строчкой будет сообщение о том, что скомпилированный модуль ядра скопирован в нужное место. Для пущей уверенности перезагрузитесь - чтобы быть уверенными, что собранный модуль ядра загрузился.
Затем нам надо в директории настроек станка открыть hal файл. Обычно это /home/user/linuxcnc/configs/имястанка/имястанка.hal
В этом файле надо в первых же строках -

loadrt trivkins
заменить на
#loadrt trivkins

и ниже вставить 2 строки -

loadrt relkins coordinates=XYZ adjust=X from=Y steps=2 step_size=1030 offset=-515
setp relkins.adjX.Y-515 0 (на самом деле эту строку лучше вписать позже, см. ниже)

Важно понимать значение всех параметров. Указывая -

coordinates=XYZ мы говорим об использовании (вообще) станком трех осей. Речь идет о двухмоторной реализации в LinuxCNC 2.7.15 + модуль выравнивания портала (для двух моторов без модуля используется LinuxCNC 2.8 и выше, у меня здесь опыта нет, но схема похожая и в этой строке указывают + допмотор)
adjust=X - что при коррекции неперпендикулярности мы будем корректировать положение Х (у меня Х >> У)
from=Y что корректируя Х мы будем вносить изменения в зависимости от положения У
steps=2 что будем использовать (в моем случае) только две точки для расчетов
step_size=1030 что между этими двумя точками столько мм
offset=-515 что первая точка там.
setp relkins.adjX.Y-515 0 -- что первую точку берем за ноль (если ошиблись с расчетами = программа не запустится, см. ниже)

Также важно понимать, что этот hal файл LinuxCNC считывает при загрузке программы, поэтому в него (я) НЕ записываю вторую точку коррекции, ее я передам программе после проверки геометрии. Первую тоже могу "потом", но экономя буковки хочу в терминале вводить только одну команду, потому в первой точке значение коррекции указываю как 0. Геометрию я вычисляю ДО коррекции (считая это правильным) и планирую это делать при каждом запуске станка (для этого с уже выверенной геометрией я сделал паз, разместил в нем специально кулпенный на Али нож от рубанка (100р?) дл 210мм и подключил его к пробе - теперь сделав замеры его угла к оси Х в дальнейшем буду не по угольнику, а по этой пластине вычислять поправки).

Теперь можно запустить LinuxCNC2.7.хх. Если вы ошиблись в настройках, программа может вылетать. Тогда удалите (временно) строчку -
setp relkins.adjX.Y-515 0

ВАЖНО - для LinuxCNC2.8.2 в августе 2022 все аналогично, но конфиги пправятся немного иначе, это здесь - viewtopic.php?p=634350#p634350

Для проверки того, что все идет как надо следует в терминале (без sudo, т.е. хватает прав юзера) ПРИ ЗАПУЩЕННОМ LinuxCNC выполнить -
halcmd show pin relkins

В ответ терминал расскажет, какие "пины" программа знает -

halcmd show pin relkins
Component Pins:
Owner Type Dir Value Name
6 float IN 0 relkins.adjX.Y-515
6 float IN 0 relkins.adjX.Y515

Я по первости не совладал с этими 515 (в первой строке указывал офсет 500, шаг 10030 и т.п., а программа создает пины исходя из заданного в первой строке и если ее ожидания не совпадут с последующими строками = аборт).

Этап - 3, применение.

Вот теперь мы можем замерить геометрию и вычислить необходимую величину коррекции в крайних точках. Сообщить эб этом программе (применить на лету) можно и нужно в терминале (бе судо и т.п.) -

halcmd setp relkins.adjX.Y-515 0
halcmd setp relkins.adjX.Y515 2.23545

Здесь важно не ошибиться со знаком этих корректирующих 2.23545 - ну да разберетесь на опыте.

Вы можете это сделать в любой момент, кроме всех тех моментов, когда станок двигается. Именно поэтому в главный конфиг я записал только 1 точку коррекции, для -515. Для второй я скомандую в терминале, это может сделать даже скрипт.

Для проверки работы можно скомандовать вместо 2.23545 например 50 и дав команду станку-

g1 F500 Yдругой_край

по его движению сразу понять, что станок движется и по У и при этом совершает компенсирующее движение по Х. в правильную ли сторону 9в смысле компенсации кривизны) движется и не напутали ли вы со знаками + и - у вводимых значений.

Надеюсь, что объяснил доступно и это будет полезно. Приступаем к Этапу - 4 = выпиваем и закусываем.
Вложения
портал.ods
(12.19 КБ) 332 скачивания
Последний раз редактировалось a321 06 авг 2022, 00:26, всего редактировалось 2 раза.
web123456
Кандидат
Сообщения: 50
Зарегистрирован: 16 май 2017, 12:34
Репутация: 0
Откуда: Тимашевск
Контактная информация:

Re: LinuxCNC актуальная инструкция выравнивания портала в 20

Сообщение web123456 »

здравствуйте ! подскажите чпу плазмы тоже подойдёт ? по оси Х стоит 2 мотора .
a321
Мастер
Сообщения: 563
Зарегистрирован: 03 дек 2016, 00:30
Репутация: 65
Контактная информация:

Re: LinuxCNC актуальная инструкция выравнивания портала в 20

Сообщение a321 »

Какую голову ставить на станок - плазму, струйную, термо-голову, лазер - значения не имеет. Я на днях поправлю немного первое сообщение - по результатам эксплуатации (в первую очередь программу обмера угольника - теперь обмеряю 15 раз и вывожу среднее значение).
Следует обратить внимание на цену деления (мотора) - минимальный импульс перемещения (угловой шаг) перевести в мм перемещения. В моем случае это примерно 0.003, чтобы не самообманываться точности измерений контактным щупом (еще +3 знака) и понимать соотношение сторон. Например, если станок шириной 1000мм, а угольник имеет сторону 100мм, то мы можем бороться за перекос на концах как 2*0,003*1000/10=0,06, для реализма при перевороте детали следует удвоить, т.е. 0.12мм. Не фонтан, но жить можно.
web123456
Кандидат
Сообщения: 50
Зарегистрирован: 16 май 2017, 12:34
Репутация: 0
Откуда: Тимашевск
Контактная информация:

Re: LinuxCNC актуальная инструкция выравнивания портала в 20

Сообщение web123456 »

Спасибо за инструкции . Если б ещё видео инструкции для особо одаренных . Подскажите Linuxcnc 2.9 эта инструкция актуальна .
a321
Мастер
Сообщения: 563
Зарегистрирован: 03 дек 2016, 00:30
Репутация: 65
Контактная информация:

Re: LinuxCNC актуальная инструкция выравнивания портала в 20

Сообщение a321 »

За 2.9 не отвечу. Там появляется в конфигах допраздел, связанный именно с моторами. Т.е. на странице 5-6 темы http://www.cnc-club.ru/forum/viewtopic. ... &start=100 приводятся корректировки hal файла. Но в любом случе -
а) методология измерения кривизны по небольшому угольнику
б) расчеты из п. а)
в) резон не вписывать в hal файл все точки коррекции
г) методология "применения на лету"

от версии LinuxCNC не зависят.
a321
Мастер
Сообщения: 563
Зарегистрирован: 03 дек 2016, 00:30
Репутация: 65
Контактная информация:

Re: LinuxCNC актуальная инструкция выравнивания портала в 2020-2022гг

Сообщение a321 »

Отвечу про LCNC в версиях 2.8 и выше - там всей этой мудрости не нужно. Прописываем два мотора на ось и в ini файле, в свойствах каждого мотора, указываем координаты Home датчика. Надо понимать, что эти координаты - вещь т.с. умозрительная, условная, вычисляемая. Т.е. для начала следует поставить одинаковые HOME_OFFSET, сделать хоминг, БОЛЕЕ САМИ ДАТЧИКИ не трогать, измерить меру неперпендикулярности viewtopic.php?f=152&t=28376&p=559316, вычислить поправку HOME_OFFSET, внести на эту поправку коррекцию HOME_OFFSET для ОДНОГО из моторов, ini сохранить, LCNC рестартовать и снова измерить неперпендикулярность.

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


#ось Х
	[AXIS_X]
	MAX_VELOCITY = 250.0
	MAX_ACCELERATION = 1500.0
	MIN_LIMIT = -1569.001
	MAX_LIMIT = 1569.0

#первый мотор оси Х
	[JOINT_0]
	TYPE = LINEAR
	HOME = -1569.0
	MIN_LIMIT = -1569.001
	MAX_LIMIT = 1569.0
	MAX_VELOCITY = 250.0
	MAX_ACCELERATION = 2000.0
	STEPGEN_MAXACCEL = 1875.0
	SCALE = 93.62055476
	FERROR = 1
	MIN_FERROR = .25
	HOME_OFFSET = -1570.2000000
	HOME_SEARCH_VEL = -30.000000
	HOME_LATCH_VEL = -0.5
	HOME_IGNORE_LIMITS = YES
	HOME_SEQUENCE = -2


#второй мотор оси Х
	[JOINT_1]
	TYPE = LINEAR
	HOME = -1569.0
	MIN_LIMIT = -1569.001
	MAX_LIMIT = 1569.0
	MAX_VELOCITY = 250.0
	MAX_ACCELERATION = 2000.0
	STEPGEN_MAXACCEL = 1875.0
	SCALE = 93.62055476
	FERROR = 1
	MIN_FERROR = .25
	HOME_OFFSET = -1569.1000000
	HOME_SEARCH_VEL = -30.000000
	HOME_LATCH_VEL = -0.5
	HOME_IGNORE_LIMITS = YES
	HOME_SEQUENCE = -2
a321
Мастер
Сообщения: 563
Зарегистрирован: 03 дек 2016, 00:30
Репутация: 65
Контактная информация:

Re: LinuxCNC актуальная инструкция выравнивания портала в 2020г

Сообщение a321 »

a321 писал(а): Отвечу про LCNC в версиях 2.8 и выше - там всей этой мудрости не нужно.
Сам себе возражу - может быть нужным. Например, выравниваени в нулевое отклонение перпендикулярности может приводить к излишней нагрузке на моторы и, кроме того, по полю станка это может требовать коррекции.
Ответить

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