У всех, и у меня, и у Фрезеряги станки кривые. В большей или меньшей степени, но кривые. Идеальных станков не бывает. Но чудеса математики и 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)
можно вынести лишь то, что проблема решается, потому свой свежайший опыт публикую в виде инструкции, с уровнем описания, по возможности, для пользователей с самой начальной подготовкой.
Благодарности -
Что, зачем и почему.
Я работаю с деревом на станке умеренного размера, метр на три. Иногда делаю детали с переворотом, т.е. двусторонние. Понятно, что когда режем вдоль или поперек волокон и так уже геометрия не одинаковая, а тут еще и ось У никогда не перпендикулярна оси Х, т.е. углы априори не прямые. Более того, на станках такого размера вдоль длинной оси ставятся два мотора, по одному с каждой стороны (для одномоторных станков вопрос выравнивания столь же актуален). Я использую реечную передачу (для ШВП все равно актуально). Если я настройками датчиков Home выравниваю портал, то у меня обостряется проблема люфтов Рейка\Шестерня (что свидетельствует о приличной геометрии станка). В моем случае по оси У и Z люфта считай что нет благодаря "избирательному переносу" (трибология) мелкодисперсной древесной пыли. А ось Х прикрыта. И по традициям лучших охотников есть желание одним выстрелом убить двух зайчиков - решить проблему люфта и геометрии. Решение - простое, надо создать при поиске Home принудительно неперпендикулярность Х и У и при выполнении программ это компенсировать. Принудительно нарушая перпендикулярность Х и У я создаю предварительное напряжение в портале (это известная технология предварительного напряжения, используемая считай что повсеместно) и благодаря этому левый мотор оси Х и правый всегда будут катать свои шестерни лишь по взаимнопротивоположной стороне рейки, тем самым автоматически выбирая люфты.
Задача решается в несколько этапов.
Этап -1 вычисление меры неперпендикулярности.
А как вычислить меру неперпендикулярности? - благодаря помощи sas_75 мы имеем простую формулу.
Методология такая - на станке любого размера надо разместить угольник поверочный, желательно класса 1 и максимально доступного размера, не битый (т.е. ребра без выщерблин) и чистый. Размещение вцелом почти произвольно - лежит и прижат, он НЕ должен контактировать с токопроводящими деталями станка. Хорошим вариантом будет размещение под углом 45% к оси Х. Зажав в шпиндель штифт (любимого размера) и подключив контакт Probe к угольнику ищем координаты 4 точек, на каждом ребре угольника по 2 точки (командами вида G38.2 X100 , где 100 - это потенциальная координата. в сторону которой станку следует ехть до контакта с угольником. Диаметр штифта значения не имеет. Поскольку у поверочного угольника угол прямой по четырем точкам мы можем вычислить угол неперпендикулярности оси Х и имеющейся не ортогональной У.
Для моего угольника я использую вот такую программку поиска точек контакта -
Файлик Портал содержит математику, она примитивна, она настолько примитивна, что ее может посчитать 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 = выпиваем и закусываем.
LinuxCNC актуальная инструкция выравнивания портала в 2020-2022г
LinuxCNC актуальная инструкция выравнивания портала в 2020-2022г
- Вложения
-
- портал.ods
- (12.19 КБ) 363 скачивания
Последний раз редактировалось a321 06 авг 2022, 00:26, всего редактировалось 2 раза.
-
web123456
- Кандидат
- Сообщения: 50
- Зарегистрирован: 16 май 2017, 12:34
- Репутация: 0
- Откуда: Тимашевск
- Контактная информация:
Re: LinuxCNC актуальная инструкция выравнивания портала в 20
здравствуйте ! подскажите чпу плазмы тоже подойдёт ? по оси Х стоит 2 мотора .
Re: LinuxCNC актуальная инструкция выравнивания портала в 20
Какую голову ставить на станок - плазму, струйную, термо-голову, лазер - значения не имеет. Я на днях поправлю немного первое сообщение - по результатам эксплуатации (в первую очередь программу обмера угольника - теперь обмеряю 15 раз и вывожу среднее значение).
Следует обратить внимание на цену деления (мотора) - минимальный импульс перемещения (угловой шаг) перевести в мм перемещения. В моем случае это примерно 0.003, чтобы не самообманываться точности измерений контактным щупом (еще +3 знака) и понимать соотношение сторон. Например, если станок шириной 1000мм, а угольник имеет сторону 100мм, то мы можем бороться за перекос на концах как 2*0,003*1000/10=0,06, для реализма при перевороте детали следует удвоить, т.е. 0.12мм. Не фонтан, но жить можно.
Следует обратить внимание на цену деления (мотора) - минимальный импульс перемещения (угловой шаг) перевести в мм перемещения. В моем случае это примерно 0.003, чтобы не самообманываться точности измерений контактным щупом (еще +3 знака) и понимать соотношение сторон. Например, если станок шириной 1000мм, а угольник имеет сторону 100мм, то мы можем бороться за перекос на концах как 2*0,003*1000/10=0,06, для реализма при перевороте детали следует удвоить, т.е. 0.12мм. Не фонтан, но жить можно.
-
web123456
- Кандидат
- Сообщения: 50
- Зарегистрирован: 16 май 2017, 12:34
- Репутация: 0
- Откуда: Тимашевск
- Контактная информация:
Re: LinuxCNC актуальная инструкция выравнивания портала в 20
Спасибо за инструкции . Если б ещё видео инструкции для особо одаренных . Подскажите Linuxcnc 2.9 эта инструкция актуальна .
Re: LinuxCNC актуальная инструкция выравнивания портала в 20
За 2.9 не отвечу. Там появляется в конфигах допраздел, связанный именно с моторами. Т.е. на странице 5-6 темы http://www.cnc-club.ru/forum/viewtopic. ... &start=100 приводятся корректировки hal файла. Но в любом случе -
а) методология измерения кривизны по небольшому угольнику
б) расчеты из п. а)
в) резон не вписывать в hal файл все точки коррекции
г) методология "применения на лету"
от версии LinuxCNC не зависят.
а) методология измерения кривизны по небольшому угольнику
б) расчеты из п. а)
в) резон не вписывать в hal файл все точки коррекции
г) методология "применения на лету"
от версии LinuxCNC не зависят.
Re: LinuxCNC актуальная инструкция выравнивания портала в 2020-2022гг
Отвечу про 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