Добро пожаловать на Форум по станкам с ЧПУ!

Коррекция кривизны станка в программе EMC2 [Решено]

Тема в разделе "Программы исполняющие G-код", создана пользователем PRO59, 28 сен 2017.

  1. PRO59

    PRO59 Active Member

    Регистрация:
    11 май 2012
    Сообщения:
    20.080
    Симпатии:
    0
    Какая именно кривизна? Не перпендикулярность, не равномерная подача осей, не ровные направляющие?
    Варианты есть разные...
     
  2. Alexis

    Alexis Active Member

    Регистрация:
    8 май 2012
    Сообщения:
    2.269
    Симпатии:
    0
    PRO59, кстати интересный вопрос, если знаешь по каждому методу, ткни пальцем куда копать
    зы косяков еще нет, но вдруг после сварки появятся
     
  3. Kord77

    Kord77 Member

    Регистрация:
    7 июн 2012
    Сообщения:
    60
    Симпатии:
    0
    Неперпендикулярность осей, провисание валов (направляющих). Здорово было бы, если есть возможность задать формулы для каждой оси.
     
  4. PRO59

    PRO59 Active Member

    Регистрация:
    11 май 2012
    Сообщения:
    20.080
    Симпатии:
    0
    Неперпендикулярность осей решается кинематикой, там как раз надо будет задать формулы для прямого и обратного преобразования.
    Провианте в принципе там же, но будет хитрее, надо будет массив с провисаиями и какую-нибудь интерполяцию. Хотя, а какое там провисание? Если оно тупо по "дуге" то может решится как и в прошлом случае.
    Неравномерно есть подачи и кривые направляющие - тоже лучше через кинематику сделать, но в зависимости от применений можно и другими компонентами. Мы делали компенсацию кривизны печатной платы для фрезеровки дорожек на питоне.

    +По люфтам есть два типа компенсаций - статическая компенсация и файл с вплоть до 256 разных значений для компенсации неравномерной выработки люфтов.

    Я думаю должна быть готовая кинематика для не перпендикулярных осей. Беглый просмотр результатов не дал, завтра посмотрю подробнее.

    ЗЫ писал с телефона - наверное очепяток просто тьма :)
     
  5. Kord77

    Kord77 Member

    Регистрация:
    7 июн 2012
    Сообщения:
    60
    Симпатии:
    0
    Уважаемый PRO59, спасибо за информацию!
    Могли бы Вы уточнить про какую кинематику Вы говорите? Это где-то в программе?
     
  6. uuu

    uuu Member

    Регистрация:
    11 май 2012
    Сообщения:
    175
    Симпатии:
    0
    Поймать на #linuxcnc человека с ником mk0 и пнуть его чтоб наконец описал как пользоваться модулем кинематики с коррекцией неперпендикулярных осей :)
    Или взять у меня отсюда http://uuu.org.ru/cgit/uuu/emc2.git/l ... vkins-comp и мучатся самому :)
     
  7. PRO59

    PRO59 Active Member

    Регистрация:
    11 май 2012
    Сообщения:
    20.080
    Симпатии:
    0
    На сколько я понял из беглого просмотра, genserkins это общая кинематика, в которой преобразование координат происходит с применением матрицы (точнее якобиана).
    Возможно ее можно использовать...

    Завтра попробую глянуть эти кинематики по подробнее. Если забуду напомните мне часа в 2 :)
     
  8. Kord77

    Kord77 Member

    Регистрация:
    7 июн 2012
    Сообщения:
    60
    Симпатии:
    0
    Ок, спасибо большое!
    Матрица значений это самое то, что нужно, ну или задание разницы кривой поверхности относительно плоскости формулами.
     
  9. PRO59

    PRO59 Active Member

    Регистрация:
    11 май 2012
    Сообщения:
    20.080
    Симпатии:
    0
    А чего там описывать, и так все понятно, кинематика позволяет управлять станком у которого ось Y не перпендикулярна оси X.

    Работать с ней так:
    качаем файлы, потом sudo comp install trivkins-comp.c
    Потом в hal
    loadrt trivkins-comp
    setp trivkins-comp.A 1.111
    setp trivkins-comp.B 1.222

    преобразование у нее такое:
    X = x + a*y
    Y = b*y

    А насколько у тебя кривые направляющие? Просто плавно гуляют по всей длинне? Или прогиб? И кстати гуляют они в одном направлении, или может быть так, что скажем Y гуляет сразу и по Z и по X?

    ЗЫ не перпендикулярность у тебя только X-Y или Z тоже криво стоит?
     
  10. Kord77

    Kord77 Member

    Регистрация:
    7 июн 2012
    Сообщения:
    60
    Симпатии:
    0
    Спасибо большое за решение по устранению неперпендикулярности! Пока что его не опробовал, но как будут результаты, отпишусь.
    Ось Z - не знаю как определить неперпендикулярность, да даже если и определю, то устранить ее, как предполагаю, можно только механически, не программно.
    Более всего меня провисания валов беспокоят.. На осях X и Y в качестве направляющих установлено по паре валов d20 длиной 1000 и 800 мм соответственно. Не думал, когда покупал этот диаметр, что нагрузка на валы будет такой, что они прогнутся. Прогиб миллиметра 3, при нагружении на середину. Плюс ко всему стол кривой :mad: . Короче выход из ситуации вижу в программной компенсации.
    Нашел на Вашем форуме тему "EMC2 и неровная поверхность гравировки " - подскажите, пожалуйста, probekins - это то, что мне нужно?
     
  11. PRO59

    PRO59 Active Member

    Регистрация:
    11 май 2012
    Сообщения:
    20.080
    Симпатии:
    0
    В принципе в этот trivkins-comp можно забить и кривую Z. Вообще можно все перемещения разложить на любой базис (т.е. по любым трем векторам), лишь бы вектора некомпланарные были. Самое хорошее, что в такой системе положение определятся однозначно, и не надо ничего придумывать. Можно просчитать матрицу перехода к новому базису, взять от нее обратную и переход из одной системы в другую будет выпоняться простым матричным умножением.
    Да :)... Это на фрезере?
    не мудрено при таких направляющих. Тебе надо либо как-то стол вывести и привязаться пробой к нему или как-то выправить направляющие, промерить кривизну стола и потом привязываться к нему.
    в принципе - да, это оно. К нему на выход еще присобачить неперпедникулярность осей...
     
  12. Kord77

    Kord77 Member

    Регистрация:
    7 июн 2012
    Сообщения:
    60
    Симпатии:
    0
    Ок, спасибо!
    Да это фрезерный станок.
    Проба нету, замерю поле XY вручную. А зачем выводить стол или выправлять направляющие? Пусть они так и будут кривыми, если внести корректировку высот в probekins, то он при изменении координат XY и неизменной Z, будет при перемещении поднимать/опускать шпиндель, а прога будет думать, что Z постоянна? Проблема только в том, что детали с разной площадью базы лягут на стол по разному, т.е. точками опоры будут наивысшие неровности стола на участке, который покрывает заготовка.. Т.е. лучше сканировать не стол, а заготовку и уже по ней вносить корректировки на ось Z. А есть ли недорогие контактные датчики, пригодные для измерения высоты неметаллических стола/заготовки в моем случае?
     
  13. PRO59

    PRO59 Active Member

    Регистрация:
    11 май 2012
    Сообщения:
    20.080
    Симпатии:
    0
    Вот поэтому я и предлагал вывести стол в 0. Или положить на него лист фанеры и пройтись по нему толстой фрезой.
    Сначала замерить прогиб направляющих. можно попробовать что-нибудь оптическое придумать или струну натянуть.

    Самое простое - кнопку в шпиндель зажимаешь и все :).
    ЗЫ
    http://www.chipmaker.ru/topic/61794/
     
  14. Kord77

    Kord77 Member

    Регистрация:
    7 июн 2012
    Сообщения:
    60
    Симпатии:
    0
    Ок, так и поступлю. Спасибо большое, PRO59!
     
  15. Kord77

    Kord77 Member

    Регистрация:
    7 июн 2012
    Сообщения:
    60
    Симпатии:
    0
    Уважаемый PRO59, подскажите, пожалуйста, какая структура у файла карты высот (filename.txt) получается при выполнении кода по этой инструкции: Re: EMC2 и неровная поверхность гравировки ?
    Проб пока не сделал, хочу вручную создать карту.
    И еще: у меня из входных сигналов 15 пин остался свободным, - чтобы отправить сигнал от проба на LPT, нужно просто замкнуть 15 пин на землю LPT? Никаких резисторов не надо? Т.е. к металлической пластинке припаять, допустим, GND от LPT, а на стержень - 15 пин LPT?
     
  16. PRO59

    PRO59 Active Member

    Регистрация:
    11 май 2012
    Сообщения:
    20.080
    Симпатии:
    0
    Там вроде в каждой строчке через пробел 9 координат осей = XYZABCUVW.
    В крайнем случае можно клавишу в PyVCP сделать, чтобы она motion.probe-in замыкала.
    Ага. Ну еще настроить чтобы это пин был подключен к probe-in
    Вроде как не надо, но я честно говоря в электронике мало чего понимаю.

    А какие у тебя по осям стоят передачи? Какие максимальные скорости? Честно говоря наш способ не самый true. У нас User-space компонент, который может лагать на больших скоростях, или, если ЦП перегрузится...
     
  17. Kord77

    Kord77 Member

    Регистрация:
    7 июн 2012
    Сообщения:
    60
    Симпатии:
    0
    Передачи шарико-винтовые. Скорости небольшие, максимум пару метров в минуту. А какой вариант будет более правильным? Как насчет Probekins, о котором упоминалось в начале темы "EMC2 и неровная поверхность гравировки" ? Почему Вы предпочли этому модулю вариант со скриптом?
    Я пробовал сделать компенсацию через скрипт, карта высот создается, но при нажатии на кнопку Reset и установке галочки Enable ничего не изменяется (все три красных индикатора так и остаются красными), заметил, что файл custom_postgui затирается, может быть в этом проблема? Т.е. я заливаю файл custom_postgui из архива в папку с конфигурацией, запускаю emc, делаю карту высот, открываю файл custom_postgui и вижу там две строчки комментариев и не более того. Оно так и должно быть? Спасибо!
     
  18. PRO59

    PRO59 Active Member

    Регистрация:
    11 май 2012
    Сообщения:
    20.080
    Симпатии:
    0
    Во первых, потому, что с ним не разобрались, во-вторых, хотелось попробовать сделать что-то на питоне, и в третьих потому, что надо было очень часто сканировать плату и это проще было выполнить через скрипт на питоне... Хотя наверное и с probekins получилось бы ...
    По идее для твоей задачи, лучше выбрать probekins - она более реалтаймовская и насколько я понимаю у тебя геометрия станка не меняется при переходе от детали к детали.

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

    Может ты просто выбрал какую-то конфигурацию, а LinuxCNC спросил, не хотите ли вы ее скопировать в домашнюю папку, ты сказал хочу и старая конфигурация стерлась...
     
  19. Kord77

    Kord77 Member

    Регистрация:
    7 июн 2012
    Сообщения:
    60
    Симпатии:
    0
    Да, скорее всего чего-то с конфигурацией намудрил, перезагрузил компьютер, запустил emc, панелька загрузилась тоже. Сделал карту высот через скрипт, нажал на кнопку reset, поставил галочку enable, два верхних индикатора зеленые, нижний "error" красный. Так и должно быть? Попробовал перемещать каретку по XY-координатам, но Z координата почему-то не корректируется..

    Начал ставить probekins. Поставил dev-версию linuxcnc, скомпилилировал probekins.ko, поставил на загрузку его вместо trivkins. Поставил easy_install, пробую "sudo easy_install matplotlib", но в ответ:
    Код:
    cnc@cnc-desktop:~$ sudo easy_install matplotlib
    Searching for matplotlib
    Best match: matplotlib 1.1.0
    Processing matplotlib-1.1.0-py2.6-linux-i686.egg
    matplotlib 1.1.0 is already the active version in easy-install.pth
    
    Using /usr/local/lib/python2.6/dist-packages/matplotlib-1.1.0-py2.6-linux-i686.egg
    Processing dependencies for matplotlib
    Finished processing dependencies for matplotlib
    
    Насколько понимаю, он уже установлен. Но когда пробую сделать stl: "probe2stl <filename.txt", то в ответ приходит "probe2stl: команда не найдена", то же самое с командой "stlcorr".
    Уважаемый PRO59, не подскажете, что нужно установить, чтобы работали эти probe2stl и stlcorr?
     
  20. PRO59

    PRO59 Active Member

    Регистрация:
    11 май 2012
    Сообщения:
    20.080
    Симпатии:
    0
    Хммм... не помню уже... завтра посмотрю
    В emc2 останется той же фактически motion = emc2 не будет знать что мы подправили координату. Попробуй положи на стол что-нибудь высокое, сделай карту заново, включи компенсацию и проедься над этим же местом на расстоянии 10мм и посмотри будет ли двигаться ось Z.

    Или посмотри тот пин, который непосредственно отвечает за положение оси - stepgen.2.position-cmd