Страница 5 из 12
Re: Контактный сканер с помощью EMC2
Добавлено: 20 июл 2011, 14:51
Nick
Что-то я не понимаю... почему halsampler обращается к дескриптору а не к файлу, в разных запусках?
Re: Контактный сканер с помощью EMC2
Добавлено: 20 июл 2011, 15:30
psha
Запуск то самплера один...
Он не переоткрывает файл в середине пути, как запустили так и висит с одним и тем же дескриптором.
Хочется уметь делать несколько сканов с одного запуска.
Re: Контактный сканер с помощью EMC2
Добавлено: 20 июл 2011, 15:45
Nick
Теперь понял

! Тогда все правильно!
Re: Контактный сканер с помощью EMC2
Добавлено: 08 янв 2013, 14:56
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 находится на оси вращения ,туда ролик не может подьехать.
Re: Контактный сканер с помощью EMC2
Добавлено: 08 янв 2013, 20:10
Nick
gendos писал(а):при этом не стали отображаться координаты y на дисплее.
показания с энкодера в файл записываются в файл нормально.
Но хотелось бы все сделать правильно
В принципе правильно сделал. Как вариант можно было вместо этого поставить очень большой Ferror.
gendos писал(а):И еще Как выставлять 0 энкодера, 0 находится на оси вращения ,туда ролик не может подьехать.
Можешь обнулять о какую-нибудь заранее известную железяку. И просто выставлять не 0 на оси, а другое значение. Или потом добавить нужное значение про обработке данных .
Кстати, как ты сканируешь, через halsampler или через probe-in?
Re: Контактный сканер с помощью EMC2
Добавлено: 08 янв 2013, 20:35
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 не ставится ,как поставить большое значение?
Re: Контактный сканер с помощью EMC2
Добавлено: 08 янв 2013, 20:44
gendos
С координатами X A понятно а как задать отступ у энкодера?
Re: Контактный сканер с помощью EMC2
Добавлено: 09 янв 2013, 12:01
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 сработает или нет?
Re: Контактный сканер с помощью EMC2
Добавлено: 09 янв 2013, 20:47
gendos
Обязательно нужно попробовать,только если я правильно понял,вместо колеса надо ставить пробник
и тогда нужен привод по Y ? а у меня его нет ось Y возвращает пружина.
Если влезет винт трапеции под ось Y то проверю,но это займет некоторое время
Re: Контактный сканер с помощью EMC2
Добавлено: 09 янв 2013, 20:54
gendos
Nick писал(а):gendos писал(а):С координатами X A понятно а как задать отступ у энкодера?
А как ты делаешь хоуминг этой оси?
gendos писал(а):в Pncconf Ferror больше 10 не ставится ,как поставить большое значение?
Хоуминг всех осей делаю нажав кнопку принять начала
и энкодер обнуляется а нужно чтоб на нем был отступ
Если задаю отступ оси Y на энкодере всеравно ноль
Re: Контактный сканер с помощью EMC2
Добавлено: 09 янв 2013, 21:43
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коде.
И почему мне это раньше в голову не пришло

Re: Контактный сканер с помощью EMC2
Добавлено: 09 янв 2013, 22:21
gendos
не пойму куда мне это все вписывать ,в g-код или в hal
И еще
Ты заметил что у меня mesa 7i43?
Это имеет зачение?
Re: Контактный сканер с помощью EMC2
Добавлено: 09 янв 2013, 22:25
Nick
Не, значения не имеет

Это чистый Gкод.
Для первого вообще ничго не надо, только настроенная ось Y. Можно просто запускать.
Для второго - надо выход энкодера завести на пин аналогового входа, т.е.:
Код: Выделить всё
net motion-ai <= hm2_7i43.0.encoder.03.position => motion.analog-in-00
Re: Контактный сканер с помощью EMC2
Добавлено: 09 янв 2013, 22:30
gendos
А привод оси Y мне нужен?
Re: Контактный сканер с помощью EMC2
Добавлено: 10 янв 2013, 07:42
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 кода - ругается(что пишет напишу вечером ,убегаю на работу)
Re: Контактный сканер с помощью EMC2
Добавлено: 10 янв 2013, 10:34
Nick
Оказывается все выражения надо в квадратные скобки брать

, вот так работает:
Код: Выделить всё
(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
Re: Контактный сканер с помощью EMC2
Добавлено: 10 янв 2013, 18:32
gendos
А где там координата А ,вижу только Z, у меня ее нет.
Re: Контактный сканер с помощью EMC2
Добавлено: 10 янв 2013, 19:14
Nick
Ну значит вместо Z - А пиши

. Или вместо X-A, вместо Z-X, от этого будет зависеть как он будет сканировать по "строкам" или по "столбцам".
Re: Контактный сканер с помощью EMC2
Добавлено: 10 янв 2013, 20:14
gendos
Запустил,данных с энкодера нет (Y одни ноли)
Re: Контактный сканер с помощью EMC2
Добавлено: 10 янв 2013, 21:24
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