EMC2 и неровная поверхность гравировки [РЕШЕНО]

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
Романов Семен
Почётный участник
Почётный участник
Сообщения: 646
Зарегистрирован: 23 янв 2012, 23:25
Репутация: -80
Откуда: Самара

Re: EMC2 и неровная поверхность гравировки

Сообщение Романов Семен »

Обязательно, никаких проблем, вот только разгребу работу так сказать...
2cme
Почётный участник
Почётный участник
Сообщения: 1043
Зарегистрирован: 24 янв 2012, 13:18
Репутация: -209

Re: EMC2 и неровная поверхность гравировки

Сообщение 2cme »

Nick писал(а):Семен, тут такая просьба...
Напиши инструкцию по настройке обработки по неровной поверхности. Сейчас времени мало, а народ уже просит :). Заодно напишешь человеческим языком, не как я :).
Я ее потом наверх темы перемещу ну и оформлю как надо.
to Nick, пожалуйста набросайте хотябы приблизительную инструкцию, а то в свете последних событий у Семена (Обязательно, никаких проблем, вот только разгребу работу так сказать...; время убивает работа =( не успеваю заниматься станком...; Проблема с осью Z) у него енто дело может затянуться на долгие... Заранее спасибо.

p.s. Хорошо что у Семена есть работа.
Романов Семен
Почётный участник
Почётный участник
Сообщения: 646
Зарегистрирован: 23 янв 2012, 23:25
Репутация: -80
Откуда: Самара

Re: EMC2 и неровная поверхность гравировки

Сообщение Романов Семен »

Интструкция в кратце такая:
Листаете эту тема из конца в начало, находите пост Ника, где полная конфигурация для моего станка.
Качаете.
Кидаете в папочку configs
Степконфигом создаете свою, настраиваете, чтобы с ней (вашей) станок работал.
Дальше, берете свою конфигурацию - и перекидываете из hal все что касается осей в ту что скачали (made by Nick) и из ini своего в ини скаченный переносите параметры осей.
Дальше запускаете с новоиспеченным вручную конфигом. и пробуете, если не получится что-то пишите сюда, постараюсь помочь (на тему подписан, это все прошел)

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

Re: EMC2 и неровная поверхность гравировки

Сообщение Nick »

Извиняюсь, что с инструкцией затянулось... Исправляемся :D!
Я слегка изменил файлы с настройками, может сходу не заработать, нужно протестировать на добровольцах :hehehe: (У меня с ейчас под рукой нет LinuxCNC).
Также нужны отзывы, опыт внедрения и работы, и фотографии :).

Как это работает

Суть компенсации, в том, что мы подменяем вывод на вывод на управляющий компонент оси, в простом случае на stepgen. Как это работает:
  • создаем карту высот обрабатываемой поверхности
  • по этой карте и текущей координатам x и y компонент compensation может вычислить необходимое отклонение
  • складываем полученное отклонение с запрошенным положением оси Z и подаем его на stepgen

Какие есть недостатки на данный момент

  • Мы обманываем LinuxCNC, чтобы не возникала ошибка joint following error мы подменяем обратную связь от компонента stepgen запрошенной координатой. Это может вызвать выезд за пределы осей :attention: !
  • Компонент compensation работает в userspace это означает, что его выполнение зависит от занятости компьютера и в случае большой нагрузки выполнение компенсации может запаздывать.

Установка

  1. Нужен рабочий конфиг для используемого станка, как его сделать можно посмотреть, например, здесь: Конфигурация EMC2 LinuxCNC #1.
  2. Скачиваем архив с файлом компонента. Компонент и все файлы из архива нужно сохранить в директорию с ваши конфигом.
    Файлы компоненты и дополнительные конфиги можно взять здесь: https://github.com/cnc-club/linuxcnc-engraving-comp
  3. Подменяем управление осью Z и добавляем новые функции, для этого в своем ini файле прописываем в раздел [HAL]:

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

    POSTGUI_HALFILE = custom_postgui.hal
  4. Включаем контрольную панель pyvcp, для этого в ini-файл в раздел [DISPLAY] нужно добавить

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

    PYVCP = compensation_pyvcp.xml
  5. Если ваш конфиг отличается от стандартного, возможно придется поменять строчки отвечающие за управление осью Z. В любом случае при возникновении ошибок или вопросов обращайтесь за помощью на форум :).
После проведения всех выше описанных операций после запуска LinuxCNC должна появиться дополнительная панель pyvcp, которая позволит управлять компенсацией и будет отображать ее состояние.

Работа

  1. Сначала надо создать карту высот. Для этого нужно выполнить следующий Gкод. Его можно просто вписывать в начало программы, тогда создание карты будет проходить автоматически.

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

    M64 P0  (это мы выключаем работу компенсатора)
    T1 M6 (выдаем запрос на установку щупа)
    #<h> = 90 
    #<w> = 90 
    #<x0> = 110
    #<y0> = 90
    #<step> = 20
    #<search_feed> = 100
    #<latch_feed> = 1
    #<safe_z> = 3
    #<search_z> = -3
    
    (PROBEOPEN filename.txt)
    
    G0 #<safe_z>
    #<y> = #<y0>
    o101 while [#<y> LT #<h>+#<y0>]
      #<x> = #<x0>
      o102 while [#<x> LT #<w>+#<x0>]
        G0 X#<x> Y#<y> 
        F[#<search_feed>]
        G38.3 [Z#<search_z>]
        F[#<latch_feed>]
        G38.5 [Z#<safe_z>]
    	G0 #<safe_z> 
        #<x> = [#<x>+#<step>]
      o102 endwhile
      #<y> = [#<y>+#<step>]
    o101 endwhile
    
    (PROBECLOSE)
    Усовершенствованный цикл сканирования см: EMC2 и неровная поверхность гравировки [РЕШЕНО] #470
  2. После этого нужно сказать компоненту compensation, чтобы он обновил свою карту высот, сделать это можно либо кнопкой reset на панели pyvcp, либо Gкодом:

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

    M65 P1 
    G4 P1
    M64 P1 (это мы скажем нашему скрипту обновить карту высот и компенсаций)
    G4 P4 (делаем паузу на 4 секунды, на всякий случай, чтобы скрипт успел отработать)
  3. После этого остается включить компенсацию и выполнить программу обработки, включение компенсации производится кнопкой enable на панели pyvcp или при помощи вот такого Gкода:

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

    M64 P0  (это мы включаем работу компенсатора)
Весь выше описанный Gкод можно объединить в один файл и просто добавлять в него код обработки:

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

M64 P0  (это мы выключаем работу компенсатора)
T1 M6 (выдаем запрос на установку щупа)
#<h> = 90 
#<w> = 90 
#<x0> = 110
#<y0> = 90
#<step> = 20
#<search_feed> = 100
#<latch_feed> = 1
#<safe_z> = 3
#<search_z> = -3

(PROBEOPEN filename.txt)

G0 #<safe_z>
#<y> = #<y0>
o101 while [#<y> LT #<h>+#<y0>]
  #<x> = #<x0>
  o102 while [#<x> LT #<w>+#<x0>]
    G0 X#<x> Y#<y> 
    F[#<search_feed>]
    G38.3 [Z#<search_z>]
    F[#<latch_feed>]
    G38.5 [Z#<safe_z>]
	G0 #<safe_z> 
    #<x> = [#<x>+#<step>]
  o102 endwhile
  #<y> = [#<y>+#<step>]
o101 endwhile

(PROBECLOSE)

M65 P1 
G4 P1
M64 P1 (это мы скажем нашему скрипту обновить карту высот и компенсаций)

G4 P4 (делаем паузу на 4 секунды, на всякий случай, чтобы скрипт успел отработать)
T2 M6 (Выдаем запрос на установку фрезы)
M64 P0  (это мы включаем работу компенсатора)


(***********************************) 
(Сюда твой Gкод для гравировки платы) 
(***********************************) 


M2 (end program)
#
Вложения
compnsation.tar.gz
(2.73 КБ) 1294 скачивания
2cme
Почётный участник
Почётный участник
Сообщения: 1043
Зарегистрирован: 24 янв 2012, 13:18
Репутация: -209

Re: EMC2 и неровная поверхность гравировки [РЕШЕНО]

Сообщение 2cme »

Благодарю Nick за труд.
Сейча повторяю по инструкции, ожидаю что получится (;
У меня такой вопрос-идея-просьба, возможно сделать следующием образом, чтобы избежать недостатков, перечисленных выше:
шаг 1сканировать поверхность по сетке, результат сохранить в файл;
шаг 2с помощью скрипта или прогаммного модуля преобразовать G-code, с учетом полученного результата в 1 шаге;
шаг 3 запустить преобразованный G-code.

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

Re: EMC2 и неровная поверхность гравировки [РЕШЕНО]

Сообщение Nick »

В Stepconf есть пин probe или прямая проба.
Или в hal :
net probe-in => motion.probe-input
net probe-in <= parport.0.pin-15-in-not
2cme писал(а):шаг 1сканировать поверхность по сетке, результат сохранить в файл;
шаг 2с помощью скрипта или прогаммного модуля преобразовать G-code, с учетом полученного результата в 1 шаге;
шаг 3 запустить преобразованный G-code.
Теоретически можно. Но будет не автоматически... и надо парсить Gкод, а это не просто особенно, если не известно на чем его делали. А тут все можно сделать на голом Gкоде, да еще и выполнять несколько раз автоматически, т.е. сделал 1 раз Gкод, потом поставил заготовку, нажал выполнить и "отсканировалось-включилась_компенсация-вырезалось", поменял заготовку и просто опять нажал выполнить и т.д.
2cme
Почётный участник
Почётный участник
Сообщения: 1043
Зарегистрирован: 24 янв 2012, 13:18
Репутация: -209

Re: EMC2 и неровная поверхность гравировки [РЕШЕНО]

Сообщение 2cme »

Делаю по инструкции.

После запуска ошибка:
Debug file information
custom_pustgui.hal:19: Pin 'axis.2.motor-pos-fb' was already linked to signal 'zpos-fb'

Настраивал через stepconfig:
2 step x
3 step y
4 step z
6 dir x
7 dir y
8 dir z
15 dig_in
Остальные указал "не подключено"

В hal добавил:
net probe-in => motion.probe-input
net probe-in <= parport.0.pin-15-in-not

Где ошибка?
Романов Семен
Почётный участник
Почётный участник
Сообщения: 646
Зарегистрирован: 23 янв 2012, 23:25
Репутация: -80
Откуда: Самара

Re: EMC2 и неровная поверхность гравировки [РЕШЕНО]

Сообщение Романов Семен »

Я сходу может и промохнусь, но, Nick, кажется мой hal мы расковыряли до дыр...
Там же подмену добавляли - а в инструкции ты ничего про это не указал...

2cme, выложи свой конфиг - я гляну... я конечно не Nick. но такое уже прошел - может что и увижу!
2cme
Почётный участник
Почётный участник
Сообщения: 1043
Зарегистрирован: 24 янв 2012, 13:18
Репутация: -209

Re: EMC2 и неровная поверхность гравировки [РЕШЕНО]

Сообщение 2cme »

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

Re: EMC2 и неровная поверхность гравировки [РЕШЕНО]

Сообщение Nick »

В custom_postgui.hal нужно добавить unlinkp axis.2.motor-pos-fb рядом с остальными unlinkp.
Романов Семен писал(а):Я сходу может и промохнусь, но, Nick, кажется мой hal мы расковыряли до дыр...Там же подмену добавляли - а в инструкции ты ничего про это не указал...
Это потому, что все это я постарался запихать в custom_postgui.hal ;) но как обычно все это с первого раза не получается :wik: .
2cme
Почётный участник
Почётный участник
Сообщения: 1043
Зарегистрирован: 24 янв 2012, 13:18
Репутация: -209

Re: EMC2 и неровная поверхность гравировки [РЕШЕНО]

Сообщение 2cme »

debug file information:
custom_postgui.hal:22: Pin 'sum2.0.in0' does not exist
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: EMC2 и неровная поверхность гравировки [РЕШЕНО]

Сообщение Nick »

вверху нужно добавить две строчки с объявлением sum2, чтобы стало так:
loadrt or2 count=2
loadrt sum2 count=1
loadusr -Wn compensation python compensation.py filename.txt

addf or2.0 servo-thread
addf or2.1 servo-thread
addf sum2.0 servo-thread
2cme
Почётный участник
Почётный участник
Сообщения: 1043
Зарегистрирован: 24 янв 2012, 13:18
Репутация: -209

Re: EMC2 и неровная поверхность гравировки [РЕШЕНО]

Сообщение 2cme »

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

Re: EMC2 и неровная поверхность гравировки [РЕШЕНО]

Сообщение Nick »

все там же custom_postgui.hal
2cme
Почётный участник
Почётный участник
Сообщения: 1043
Зарегистрирован: 24 янв 2012, 13:18
Репутация: -209

Re: EMC2 и неровная поверхность гравировки [РЕШЕНО]

Сообщение 2cme »

to Романов Семен
Я так понимаю что строчка POSTGUI_HALFILE = custom_postgui.hal в файле My.ini подтягивает файл custom_postgui.hal.

to Nick
Надо было добавить только две строчки
loadrt sum2 count=1
addf sum2.0 servo-thread

Но после такое сообщение Debug file information:
custom_postgui.hal:31: Pin 'pyvcp.enable' does not exist
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: EMC2 и неровная поверхность гравировки [РЕШЕНО]

Сообщение Nick »

О, в ini в раздел [DISPLAY] нужно добавить
PYVCP = comrensation_pyvcp.xml
2cme
Почётный участник
Почётный участник
Сообщения: 1043
Зарегистрирован: 24 янв 2012, 13:18
Репутация: -209

Re: EMC2 и неровная поверхность гравировки [РЕШЕНО]

Сообщение 2cme »

Debug file information:
Traceback (most recent call last):
File "/usr/bin/axis", line 3936, in <module>
vcpparse.create_vcp(f, comp)
File "debian/tmp/usr/lib/python2.6/dist-packages/vcpparse.py", line 177, in create_vcp
File "debian/tmp/usr/lib/python2.6/dist-packages/vcpparse.py", line 47, in read_file
File "/usr/lib/python2.6/xml/dom/minidom.py", line 1918, in parse
return expatbuilder.parse(file)
File "/usr/lib/python2.6/xml/dom/expatbuilder.py", line 922, in parse
fp = open(file, 'rb')
IOError: [Errno 2] No such file or directory: 'comrensation_pyvcp.xml'
15118
PID TTY STAT TIME COMMAND
15172
PID TTY STAT TIME COMMAND
Stopping realtime threads
Unloading hal components


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

Re: EMC2 и неровная поверхность гравировки [РЕШЕНО]

Сообщение Nick »

упс не comrensation_pyvcp.xml, а compensation_pyvcp.xml, архиве этот файл должен быть
Романов Семен
Почётный участник
Почётный участник
Сообщения: 646
Зарегистрирован: 23 янв 2012, 23:25
Репутация: -80
Откуда: Самара

Re: EMC2 и неровная поверхность гравировки [РЕШЕНО]

Сообщение Романов Семен »

Я конечно может тупо влезу в умный разговор, но:
не проще ли взять мой рабочий конфиг (выше Ник выкладывал)
И сконфигурировать в ним лишь оси (пины, скоростя и все) ?

Прошу прощения за вторжение - ушел дальше кабель чинить =)

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

Re: EMC2 и неровная поверхность гравировки [РЕШЕНО]

Сообщение Nick »

Так оно красивее будет, сейчас все отладим и исправим инструкцию, и не надо будет ничего менять ;).
Ответить

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