Контактный сканер с помощью EMC2
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: Контактный сканер с помощью EMC2
Что-то я не понимаю... почему halsampler обращается к дескриптору а не к файлу, в разных запусках?
Re: Контактный сканер с помощью EMC2
Запуск то самплера один...
Он не переоткрывает файл в середине пути, как запустили так и висит с одним и тем же дескриптором.
Хочется уметь делать несколько сканов с одного запуска.
Он не переоткрывает файл в середине пути, как запустили так и висит с одним и тем же дескриптором.
Хочется уметь делать несколько сканов с одного запуска.
root, доделай конвертацию! 
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: Контактный сканер с помощью EMC2
Теперь понял
! Тогда все правильно!
-
gendos
- Мастер
- Сообщения: 1117
- Зарегистрирован: 06 июл 2011, 15:26
- Репутация: 81
- Настоящее имя: Геннадий
- Откуда: Ростов-на-дону
- Контактная информация:
Re: Контактный сканер с помощью EMC2
Всем добрый день.
Доделал макет сканера.Получил первый скан колодки .Теперь нужна помощь в настройке 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 находится на оси вращения ,туда ролик не может подьехать.
Доделал макет сканера.Получил первый скан колодки .Теперь нужна помощь в настройке 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
В принципе правильно сделал. Как вариант можно было вместо этого поставить очень большой Ferror.gendos писал(а):при этом не стали отображаться координаты y на дисплее.
показания с энкодера в файл записываются в файл нормально.
Но хотелось бы все сделать правильно
Можешь обнулять о какую-нибудь заранее известную железяку. И просто выставлять не 0 на оси, а другое значение. Или потом добавить нужное значение про обработке данных .gendos писал(а):И еще Как выставлять 0 энкодера, 0 находится на оси вращения ,туда ролик не может подьехать.
Кстати, как ты сканируешь, через halsampler или через probe-in?
-
gendos
- Мастер
- Сообщения: 1117
- Зарегистрирован: 06 июл 2011, 15:26
- Репутация: 81
- Настоящее имя: Геннадий
- Откуда: Ростов-на-дону
- Контактная информация:
Re: Контактный сканер с помощью EMC2
Сканирую через 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 не ставится ,как поставить большое значение?
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
С координатами X A понятно а как задать отступ у энкодера?
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: Контактный сканер с помощью EMC2
А как ты делаешь хоуминг этой оси?gendos писал(а):С координатами X A понятно а как задать отступ у энкодера?
В hal файлеgendos писал(а):в Pncconf Ferror больше 10 не ставится ,как поставить большое значение?
Я тут вот о чем подумал... может сделать такой сканер через 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-
gendos
- Мастер
- Сообщения: 1117
- Зарегистрирован: 06 июл 2011, 15:26
- Репутация: 81
- Настоящее имя: Геннадий
- Откуда: Ростов-на-дону
- Контактная информация:
Re: Контактный сканер с помощью EMC2
Обязательно нужно попробовать,только если я правильно понял,вместо колеса надо ставить пробник
и тогда нужен привод по Y ? а у меня его нет ось Y возвращает пружина.
Если влезет винт трапеции под ось Y то проверю,но это займет некоторое время
и тогда нужен привод по Y ? а у меня его нет ось Y возвращает пружина.
Если влезет винт трапеции под ось Y то проверю,но это займет некоторое время
-
gendos
- Мастер
- Сообщения: 1117
- Зарегистрирован: 06 июл 2011, 15:26
- Репутация: 81
- Настоящее имя: Геннадий
- Откуда: Ростов-на-дону
- Контактная информация:
Re: Контактный сканер с помощью EMC2
Nick писал(а):А как ты делаешь хоуминг этой оси?gendos писал(а):С координатами X A понятно а как задать отступ у энкодера?gendos писал(а):в Pncconf Ferror больше 10 не ставится ,как поставить большое значение?
Хоуминг всех осей делаю нажав кнопку принять начала
и энкодер обнуляется а нужно чтоб на нем был отступ
Если задаю отступ оси Y на энкодере всеравно ноль
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: Контактный сканер с помощью EMC2
Не, вся суть в том, что пробник мы не используем, мы используем тот же энкодер, основное отличие, в том, что мы можем указывать в какое время снимать показатель... Это позволит получить более ровную сетку. Минусом будет - LinuxCNC будет тормозить оси чтобы снять показания, но принципе это не сильно замедлит сканирование.gendos писал(а):Обязательно нужно попробовать,только если я правильно понял,вместо колеса надо ставить пробник
и тогда нужен привод по Y ? а у меня его нет ось Y возвращает пружина.
Если влезет винт трапеции под ось Y то проверю,но это займет некоторое время
О, кстати, можно же и без 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)
Код: Выделить всё
(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)
Кстати по приведенным выше способам можно корректировать значение Y прямо в Gкоде.gendos писал(а):Если задаю отступ оси Y на энкодере всеравно ноль
И почему мне это раньше в голову не пришло
-
gendos
- Мастер
- Сообщения: 1117
- Зарегистрирован: 06 июл 2011, 15:26
- Репутация: 81
- Настоящее имя: Геннадий
- Откуда: Ростов-на-дону
- Контактная информация:
Re: Контактный сканер с помощью EMC2
не пойму куда мне это все вписывать ,в g-код или в hal
И еще
Ты заметил что у меня mesa 7i43?
Это имеет зачение?
И еще
Ты заметил что у меня mesa 7i43?
Это имеет зачение?
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: Контактный сканер с помощью EMC2
Не, значения не имеет 
Это чистый Gкод.
Для первого вообще ничго не надо, только настроенная ось Y. Можно просто запускать.
Для второго - надо выход энкодера завести на пин аналогового входа, т.е.:
Это чистый Gкод.
Для первого вообще ничго не надо, только настроенная ось Y. Можно просто запускать.
Для второго - надо выход энкодера завести на пин аналогового входа, т.е.:
Код: Выделить всё
net motion-ai <= hm2_7i43.0.encoder.03.position => motion.analog-in-00
-
gendos
- Мастер
- Сообщения: 1117
- Зарегистрирован: 06 июл 2011, 15:26
- Репутация: 81
- Настоящее имя: Геннадий
- Откуда: Ростов-на-дону
- Контактная информация:
Re: Контактный сканер с помощью EMC2
А привод оси Y мне нужен?
-
gendos
- Мастер
- Сообщения: 1117
- Зарегистрирован: 06 июл 2011, 15:26
- Репутация: 81
- Настоящее имя: Геннадий
- Откуда: Ростов-на-дону
- Контактная информация:
Re: Контактный сканер с помощью EMC2
Пробовал два варианта не один не запускается.
Уточняю свои исходные данные.
Добавил в hal Ferror 1000 ,убрал закоментированную строку появились данные энкодера на дисплее
Ось Х вдоль вращающейся оси А
ось Z не использую
Ось Y толкает ролик подключен только энкодер,линейное движение преобразуется с помощью тросика,
вращая вал энкодера.
Запускаю g код ограничил расстояние сканирования 10 мм шаг 5мм(для экономии времени)
%
G0 X0 a1 z0
S3500 m3
G1 X10 a[[10-0]/5*360] F5000
M5
%
Все работает.
Запускаю два твоих варианта G кода - ругается(что пишет напишу вечером ,убегаю на работу)
Уточняю свои исходные данные.
Добавил в 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
Оказывается все выражения надо в квадратные скобки брать
, вот так работает:
Код: Выделить всё
(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
А где там координата А ,вижу только Z, у меня ее нет.
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: Контактный сканер с помощью EMC2
Ну значит вместо Z - А пиши
. Или вместо X-A, вместо Z-X, от этого будет зависеть как он будет сканировать по "строкам" или по "столбцам".
-
gendos
- Мастер
- Сообщения: 1117
- Зарегистрирован: 06 июл 2011, 15:26
- Репутация: 81
- Настоящее имя: Геннадий
- Откуда: Ростов-на-дону
- Контактная информация:
Re: Контактный сканер с помощью EMC2
Запустил,данных с энкодера нет (Y одни ноли)
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: Контактный сканер с помощью EMC2
Значит делаем по второму варианту - делаем
И
Код: Выделить всё
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