Контактный сканер с помощью EMC2

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

Re: Контактный сканер с помощью EMC2

Сообщение Nick »

Что-то я не понимаю... почему halsampler обращается к дескриптору а не к файлу, в разных запусках?
psha
Опытный
Сообщения: 147
Зарегистрирован: 28 фев 2011, 11:11
Репутация: 1
Контактная информация:

Re: Контактный сканер с помощью EMC2

Сообщение psha »

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

Re: Контактный сканер с помощью EMC2

Сообщение Nick »

Теперь понял :)! Тогда все правильно!
gendos
Мастер
Сообщения: 1117
Зарегистрирован: 06 июл 2011, 15:26
Репутация: 81
Настоящее имя: Геннадий
Откуда: Ростов-на-дону
Контактная информация:

Re: Контактный сканер с помощью EMC2

Сообщение gendos »

Всем добрый день.
Доделал макет сканера.Получил первый скан колодки .Теперь нужна помощь в настройке hal и ini
файлов.Вот видео чтоб было лучше понятно .И скан файл.
https://www.youtube.com/watch?v=c_KsyHu8w4Q
Вопросов очень много,еще не все в голове улеглось.
Вот еще hal
Первое что хотелось бы изменить это
В hal энкодер присоединил оси y , делал через Pncconf
в результате если двигать энкодер,так как ось y неподвижна emc
вылетает в ошибку. Поборол это закоментировав в hal

setp hm2_7i43.0.encoder.03.counter-mode 0
setp hm2_7i43.0.encoder.03.filter 1
setp hm2_7i43.0.encoder.03.index-invert 0
setp hm2_7i43.0.encoder.03.index-mask 0
setp hm2_7i43.0.encoder.03.index-mask-invert 0
setp hm2_7i43.0.encoder.03.scale [AXIS_1]ENCODER_SCALE

net y-pos-fb <= hm2_7i43.0.encoder.03.position
net y-vel-fb <= hm2_7i43.0.encoder.03.velocity
#net y-pos-fb => axis.1.motor-pos-fb
net y-index-enable axis.1.index-enable <=> hm2_7i43.0.encoder.03.index-enable
net y-pos-rawcounts <= hm2_7i43.0.encoder.03.rawcounts


при этом не стали отображаться координаты y на дисплее.
показания с энкодера в файл записываются в файл нормально.
Но хотелось бы все сделать правильно
И еще Как выставлять 0 энкодера, 0 находится на оси вращения ,туда ролик не может подьехать.
Вложения
колодка.tar.gz
(2.21 МБ) 1101 скачивание
сканирование.AVI.tar.gz
(7.8 МБ) 1163 скачивания
сканер.hal
(8.09 КБ) 1107 скачиваний
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Контактный сканер с помощью EMC2

Сообщение Nick »

gendos писал(а):при этом не стали отображаться координаты y на дисплее.
показания с энкодера в файл записываются в файл нормально.
Но хотелось бы все сделать правильно
В принципе правильно сделал. Как вариант можно было вместо этого поставить очень большой Ferror.
gendos писал(а):И еще Как выставлять 0 энкодера, 0 находится на оси вращения ,туда ролик не может подьехать.
Можешь обнулять о какую-нибудь заранее известную железяку. И просто выставлять не 0 на оси, а другое значение. Или потом добавить нужное значение про обработке данных .

Кстати, как ты сканируешь, через halsampler или через probe-in?
gendos
Мастер
Сообщения: 1117
Зарегистрирован: 06 июл 2011, 15:26
Репутация: 81
Настоящее имя: Геннадий
Откуда: Ростов-на-дону
Контактная информация:

Re: Контактный сканер с помощью EMC2

Сообщение gendos »

Сканирую через halsampler добавил в hal

loadrt sampler depth=1000 cfg="FFF"
addf sampler.0 servo-thread

#net xpos-cmd axis.0.motor-pos-cmd <= stepgen.0.position-cmd => sampler.0.pin.0
net xpos-cmd axis.0.motor-pos-cmd <= hm2_7i43.0.stepgen.00.position-cmd => sampler.0.pin.0
net apos-cmd axis.3.motor-pos-cmd <= hm2_7i43.0.stepgen.02.position-cmd => sampler.0.pin.1
#net ypos-cmd axis.1.motor-pos-cmd => sampler.0.pin.2
net y-pos-fb => sampler.0.pin.2



net spindle-enable <= motion.spindle-on => sampler.0.enable
loadusr halsampler filename


в Pncconf Ferror больше 10 не ставится ,как поставить большое значение?
gendos
Мастер
Сообщения: 1117
Зарегистрирован: 06 июл 2011, 15:26
Репутация: 81
Настоящее имя: Геннадий
Откуда: Ростов-на-дону
Контактная информация:

Re: Контактный сканер с помощью EMC2

Сообщение gendos »

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

Re: Контактный сканер с помощью EMC2

Сообщение Nick »

gendos писал(а):С координатами X A понятно а как задать отступ у энкодера?
А как ты делаешь хоуминг этой оси?
gendos писал(а):в Pncconf Ferror больше 10 не ставится ,как поставить большое значение?
В hal файле ;). Правда в pncconf это не перенесется.


Я тут вот о чем подумал... может сделать такой сканер через probe? Заводим пин motion.digital-out-NN на motion.probe-input. И пишем Gкод:

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

#<x0> = 0 
#<w> = 0 
#<y0> = 0 
#<h> = 0 

#<stepx> = 1
#<stepy> = 1

#<x> = #<x0>
O<scanx> WHILE #<x> LT [#<x0>+#<w>]
	G0 X#<x>
	#<y> = #<y0>
	O<scany> WHILE #<y> LT [#<y0>+#<h>]
		G0 Z#<y>
		M62 P0 (включаем 1 на пробу при следующем движении)
		G38.2 Y-1000 F.001 (делаем пробу)
		M65 P0 (выключаем пробу)
		#<y> = #<y>+#<stepy>
	O<scany> ENDWHILE
	#<x> = #<x>+#<stepx>	
O<scanx> ENDWHILE
Интересно такая связка M62 и G38.2 сработает или нет?
gendos
Мастер
Сообщения: 1117
Зарегистрирован: 06 июл 2011, 15:26
Репутация: 81
Настоящее имя: Геннадий
Откуда: Ростов-на-дону
Контактная информация:

Re: Контактный сканер с помощью EMC2

Сообщение gendos »

Обязательно нужно попробовать,только если я правильно понял,вместо колеса надо ставить пробник
и тогда нужен привод по Y ? а у меня его нет ось Y возвращает пружина.
Если влезет винт трапеции под ось Y то проверю,но это займет некоторое время
gendos
Мастер
Сообщения: 1117
Зарегистрирован: 06 июл 2011, 15:26
Репутация: 81
Настоящее имя: Геннадий
Откуда: Ростов-на-дону
Контактная информация:

Re: Контактный сканер с помощью EMC2

Сообщение gendos »

Nick писал(а):
gendos писал(а):С координатами X A понятно а как задать отступ у энкодера?
А как ты делаешь хоуминг этой оси?
gendos писал(а):в Pncconf Ferror больше 10 не ставится ,как поставить большое значение?


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

Re: Контактный сканер с помощью EMC2

Сообщение Nick »

gendos писал(а):Обязательно нужно попробовать,только если я правильно понял,вместо колеса надо ставить пробник
и тогда нужен привод по Y ? а у меня его нет ось Y возвращает пружина.
Если влезет винт трапеции под ось Y то проверю,но это займет некоторое время
Не, вся суть в том, что пробник мы не используем, мы используем тот же энкодер, основное отличие, в том, что мы можем указывать в какое время снимать показатель... Это позволит получить более ровную сетку. Минусом будет - LinuxCNC будет тормозить оси чтобы снять показания, но принципе это не сильно замедлит сканирование.

О, кстати, можно же и без probe все сделать...
Вот так:

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

(LOGOPEN,filename.txt)
#<x0> = 0 
#<w> = 0 
#<y0> = 0 
#<h> = 0 

#<stepx> = 1
#<stepy> = 1

#<x> = #<x0>
O<scanx> WHILE #<x> LT [#<x0>+#<w>]
   G0 X#<x>
   #<y> = #<y0>
   O<scany> WHILE #<y> LT [#<y0>+#<h>]
      G0 Z#<y>
      (LOG, X#5420	Y#5421	Z#5422)
      (В параметрах 5420-5428 храняться текущие координаты по XYZABCUVW)
      #<y> = #<y>+#<stepy>
   O<scany> ENDWHILE
   #<x> = #<x>+#<stepx>   
O<scanx> ENDWHILE
(LOGCLOSE)
Возможно, что в параметрах 5420-5428 будут зраниться запрошенные координаты осей, а не реальные, полученные от обратной связи. В этом случае можно завести обратную связь энкодера на пин motion.analog-in-NN и брать его значение через M66, т.е. вот так.

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

(LOGOPEN,filename.txt)
#<x0> = 0 
#<w> = 0 
#<y0> = 0 
#<h> = 0 

#<stepx> = 1
#<stepy> = 1

#<x> = #<x0>
O<scanx> WHILE #<x> LT [#<x0>+#<w>]
   G0 X#<x>
   #<y> = #<y0>
   O<scany> WHILE #<y> LT [#<y0>+#<h>]
      G0 Z#<y>
      M66 E0 L0 (снимаем показания энкодера в параметр #5399)
      (LOG, X#5420	Y#5399	Z#5422)
      #<y> = #<y>+#<stepy>
   O<scany> ENDWHILE
   #<x> = #<x>+#<stepx>   
O<scanx> ENDWHILE
(LOGCLOSE)
gendos писал(а):Если задаю отступ оси Y на энкодере всеравно ноль
Кстати по приведенным выше способам можно корректировать значение Y прямо в Gкоде.
И почему мне это раньше в голову не пришло :roll:
gendos
Мастер
Сообщения: 1117
Зарегистрирован: 06 июл 2011, 15:26
Репутация: 81
Настоящее имя: Геннадий
Откуда: Ростов-на-дону
Контактная информация:

Re: Контактный сканер с помощью EMC2

Сообщение gendos »

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

Re: Контактный сканер с помощью EMC2

Сообщение Nick »

Не, значения не имеет :)
Это чистый Gкод.
Для первого вообще ничго не надо, только настроенная ось Y. Можно просто запускать.
Для второго - надо выход энкодера завести на пин аналогового входа, т.е.:

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

net motion-ai <= hm2_7i43.0.encoder.03.position => motion.analog-in-00
gendos
Мастер
Сообщения: 1117
Зарегистрирован: 06 июл 2011, 15:26
Репутация: 81
Настоящее имя: Геннадий
Откуда: Ростов-на-дону
Контактная информация:

Re: Контактный сканер с помощью EMC2

Сообщение gendos »

А привод оси Y мне нужен?
gendos
Мастер
Сообщения: 1117
Зарегистрирован: 06 июл 2011, 15:26
Репутация: 81
Настоящее имя: Геннадий
Откуда: Ростов-на-дону
Контактная информация:

Re: Контактный сканер с помощью EMC2

Сообщение gendos »

Пробовал два варианта не один не запускается.
Уточняю свои исходные данные.
Добавил в hal Ferror 1000 ,убрал закоментированную строку появились данные энкодера на дисплее
Ось Х вдоль вращающейся оси А
ось Z не использую
Ось Y толкает ролик подключен только энкодер,линейное движение преобразуется с помощью тросика,
вращая вал энкодера.
Запускаю g код ограничил расстояние сканирования 10 мм шаг 5мм(для экономии времени)
%
G0 X0 a1 z0
S3500 m3
G1 X10 a[[10-0]/5*360] F5000
M5
%
Все работает.
Запускаю два твоих варианта G кода - ругается(что пишет напишу вечером ,убегаю на работу)
Последний раз редактировалось gendos 10 янв 2013, 17:52, всего редактировалось 1 раз.
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Контактный сканер с помощью EMC2

Сообщение Nick »

Оказывается все выражения надо в квадратные скобки брать :freak:, вот так работает:

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

(LOGOPEN,filename.txt)
#<x0> = 0 
#<w> = 10 
#<y0> = 0 
#<h> = 10 

#<stepx> = 1
#<stepy> = 1

#<x> = #<x0>
O<scanx> WHILE [#<x> LT [#<x0> + #<w>]]
   G0 X#<x>
   #<y> = #<y0>
   O<scany> WHILE [#<y> LT [#<y0> + #<h>]]
      G0 Z#<y>
      (LOG, X#5420   Y#5421   Z#5422)
      (В параметрах 5420-5428 храняться текущие координаты по XYZABCUVW)
      #<y> = [#<y> + #<stepy>]
   O<scany> ENDWHILE
   #<x> = [#<x> + #<stepx>]
O<scanx> ENDWHILE
(LOGCLOSE)
M02
gendos
Мастер
Сообщения: 1117
Зарегистрирован: 06 июл 2011, 15:26
Репутация: 81
Настоящее имя: Геннадий
Откуда: Ростов-на-дону
Контактная информация:

Re: Контактный сканер с помощью EMC2

Сообщение gendos »

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

Re: Контактный сканер с помощью EMC2

Сообщение Nick »

Ну значит вместо Z - А пиши :). Или вместо X-A, вместо Z-X, от этого будет зависеть как он будет сканировать по "строкам" или по "столбцам".
gendos
Мастер
Сообщения: 1117
Зарегистрирован: 06 июл 2011, 15:26
Репутация: 81
Настоящее имя: Геннадий
Откуда: Ростов-на-дону
Контактная информация:

Re: Контактный сканер с помощью EMC2

Сообщение gendos »

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

Re: Контактный сканер с помощью EMC2

Сообщение Nick »

Значит делаем по второму варианту - делаем

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

net motion-ai <= hm2_7i43.0.encoder.03.position => motion.analog-in-00
И

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

(LOGOPEN,filename.txt)
#<x0> = 0 
#<w> = 10 
#<y0> = 0 
#<h> = 10 

#<stepx> = 1
#<stepy> = 1

#<x> = #<x0>
O<scanx> WHILE [#<x> LT [#<x0> + #<w>]]
   G0 X#<x>
   #<y> = #<y0>
   O<scany> WHILE [#<y> LT [#<y0> + #<h>]]
      G0 Z#<y>
      M66 E0 L0 (снимаем показания энкодера в параметр #5399)
      (LOG, X#5420   Y#5399   Z#5422)
      (В параметрах 5420-5428 храняться текущие координаты по XYZABCUVW)
      #<y> = [#<y> + #<stepy>]
   O<scany> ENDWHILE
   #<x> = [#<x> + #<stepx>]
O<scanx> ENDWHILE
(LOGCLOSE)
M02
Ответить

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