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

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

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

Сообщение Nick »

Ок, давай теперь сформулируем как ему это реализовать.

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

loadrt sampler depth=1000   cfg="FFF"
addf sampler.0 servothread

net Xpos => sampler.0.pin.0
net Apos => sampler.0.pin.1 
net encoder.0.position => sampler.0.pin.2

net  motion.spindle-on => sampler.0.enable 
# Это чтобы самплер можно было включить и выключить Gкодом.

loadusr -w halsampler  filename
# Как правильно написать вписать имя файла?

Нужно что-то еще или этого хватит?
По идее, надо бы кнопочку, чтобы encoder обнулять.

А и сам Gкод... По идее он должен быть совсем простой:

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

(Параметры)
#<xstart> = 0
#<xend> = 100
#<xstep> = 0.1
#<speed> = 10

(идем в 0)
G0 X#<xstart> A0

(Включаем шпиндель/sampler)
M3

Идем по спиральке: 
G1 X<#xend> A[[#<xend>-#<xstart>]/#<xstep>] F#<speed> 

(Выключаем шпиндель/sampler)
M5

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

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

Сообщение psha »

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

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

Сообщение Nick »

Там же всего две координаты, причем одна поворотная, как будет задаваться F в этом случае?
psha
Опытный
Сообщения: 147
Зарегистрирован: 28 фев 2011, 11:11
Репутация: 1
Контактная информация:

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

Сообщение psha »

Не знаю :)
А нельзя тут использовать какой-нибудь код для нарезки резьбы?
root, доделай конвертацию! :)
psha
Опытный
Сообщения: 147
Зарегистрирован: 28 фев 2011, 11:11
Репутация: 1
Контактная информация:

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

Сообщение psha »

Знаю, подсказали:
http://www.linuxcnc.org/docs/devel/html ... :Feed-Rate
Это скорость линейного перемещения по X. A будет вращаться так, чтоб держать правильное соотношение
root, доделай конвертацию! :)
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

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

Сообщение Nick »

Отлично! Тогда конечный Gкод будет выглядеть так:

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

(Параметры)
#<xstart> = 0
#<xend> = 100
#<xstep> = 0.1

#<dots_per_round> = 1000 
(точек за 1 оборот)
#<speed> = [#<xstep>*#<dots_per_round>/1000]
(скорость рассчитана на то, что sampler работает 1000 раз в секунду)

(идем в 0)
G0 X#<xstart> A0

(Включаем шпиндель/sampler)
M3

(Идем по спиральке. Ось A в градусах) 
G1 X<#xend> A[[#<xend>-#<xstart>]/#<xstep>*360] F#<speed> 


(Выключаем шпиндель/sampler)
M5
Осталось придумать кнопку на сброс энкодера и можно запускать :).
gendos
Мастер
Сообщения: 1117
Зарегистрирован: 06 июл 2011, 15:26
Репутация: 81
Настоящее имя: Геннадий
Откуда: Ростов-на-дону
Контактная информация:

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

Сообщение gendos »

А как быть с размерами контактного ролика?
диаметр равен 82 мм
радиус закругленной части 16мм
В программе Easylast3D 2.5 можно выбирать разный инструмент, она работает в режиме сканера и может писать путь фрезы для фрезера.
Аватара пользователя
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 »

Мне кажется диаметр ролика не должен влиять,
а будет влиять только радиус.
буду экспериментировать с диаметром 82мм, а радиусом 1мм,а там видно будет.
Аватара пользователя
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 »

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

loadrt sampler depth=1000   cfg="FFF"
addf sampler.0 servothread

net Xpos => sampler.0.pin.0
net Apos => sampler.0.pin.1 
net encoder.0.position => sampler.0.pin.2

net  motion.spindle-on => sampler.0.enable 
# Это чтобы самплер можно было включить и выключить Gкодом.

loadusr -w halsampler  filename
# Как правильно написать вписать имя файла?
Добрый день.
Буду пытаться реализоват то что вы мне подсказали.
Пока один вопрос ,куда мне все это сохранить?
Поставил EMC2 версия 2.4.3
Сохранил в .hal --- при запуске EMC2 ругается
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

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

Сообщение Nick »

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

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

Сообщение gendos »

Nick писал(а):Что конкретно говорит? скопируй сюда в тэг code.
Print file information:
RUN_IN_PLACE=no
EMC2_DIR=
EMC2_BIN_DIR=/usr/bin
EMC2_TCL_DIR=/usr/share/emc/tcl
EMC2_SCRIPT_DIR=
EMC2_RTLIB_DIR=/usr/realtime-2.6.32-122-rtai/modules/emc2
EMC2_CONFIG_DIR=
EMC2_LANG_DIR=/usr/share/emc/tcl/msgs
INIVAR=inivar
HALCMD=halcmd
EMC2_EMCSH=/usr/bin/wish8.5
EMC2 - 2.4.3
Machine configuration directory is '/home/gena/emc2/configs/мой-станок'
Machine configuration file is 'мой-станок.ini'
INIFILE=/home/gena/emc2/configs/мой-станок/мой-станок.ini
PARAMETER_FILE=emc.var
EMCMOT=motmod
EMCIO=io
TASK=milltask
HALUI=
DISPLAY=mini
NML_FILE=
Starting EMC2...
Starting EMC2 server program: emcsvr
Loading Real Time OS, RTAPI, and HAL_LIB modules
Starting EMC2 IO program: io
Shutting down and cleaning up EMC2...
Killing task emcsvr, PID=6660
Removing HAL_LIB, RTAPI, and Real Time OS modules
Removing NML shared memory segments
Cleanup done

Debug file information:
HAL: ERROR: thread 'servothread' not found
мой-станок.hal:117: addf failed
6660
PID TTY STAT TIME COMMAND
Stopping realtime threads
Unloading hal components

Kernel message information:
[ 9416.280931] I-pipe: Domain RTAI registered.
[ 9416.280940] RTAI[hal]: <3.8.1> mounted over IPIPE-NOTHREADS 2.6-03.
[ 9416.280943] RTAI[hal]: compiled with gcc version 4.4.3 (Ubuntu 4.4.3-4ubuntu5) .
[ 9416.280988] RTAI[hal]: mounted (IPIPE-NOTHREADS, IMMEDIATE (INTERNAL IRQs DISPATCHED), ISOL_CPUS_MASK: 0).
[ 9416.280992] PIPELINE layers:
[ 9416.280996] fcf35e20 9ac15d93 RTAI 200
[ 9416.280999] c085cb20 0 Linux 100
[ 9416.305935] RTAI[malloc]: global heap size = 2097152 bytes, <BSD>.
[ 9416.306095] RTAI[sched]: IMMEDIATE, MP, USER/KERNEL SPACE: <with RTAI OWN KTASKs>, kstacks pool size = 524288 bytes.
[ 9416.306104] RTAI[sched]: hard timer type/freq = APIC/12499938(Hz); default timing: periodic; linear timed lists.
[ 9416.306109] RTAI[sched]: Linux timer freq = 250 (Hz), TimeBase freq = 1599981000 hz.
[ 9416.306112] RTAI[sched]: timer setup = 999 ns, resched latency = 2944 ns.
[ 9416.306206] RTAI[usi]: enabled.
[ 9416.376299] RTAI[math]: loaded.
[ 9416.447976] config string '0x378 out '
[ 9417.056055] RTAI[math]: unloaded.
[ 9417.100859] SCHED releases registered named ALIEN RTGLBH
[ 9417.136391] RTAI[malloc]: unloaded.
[ 9417.232151] RTAI[sched]: unloaded (forced hard/soft/hard transitions: traps 0, syscalls 0).
[ 9417.236432] I-pipe: Domain RTAI unregistered.
[ 9417.236480] RTAI[hal]: unmounted.
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

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

Сообщение Nick »

gendos писал(а):HAL: ERROR: thread 'servothread' not found
Поменяй addf sampler.0 servothread
на
addf sampler.0 servo-thread
gendos
Мастер
Сообщения: 1117
Зарегистрирован: 06 июл 2011, 15:26
Репутация: 81
Настоящее имя: Геннадий
Откуда: Ростов-на-дону
Контактная информация:

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

Сообщение gendos »

Nick писал(а):
gendos писал(а):HAL: ERROR: thread 'servothread' not found
Поменяй addf sampler.0 servothread
на
addf sampler.0 servo-thread


Debug file information:
мой-станок.hal:123: Signal name 'motion.spindle-on' must not be the same as a pin. Did you omit the signal name?
1585
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

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

Сообщение Nick »

net motion.spindle-on => sampler.0.enable
поменяй на:
net spindle-enable <= motion.spindle-on => sampler.0.enable
хммм... мне казалось, что имя сигнала не обязательно, оказывается я был не прав...
gendos
Мастер
Сообщения: 1117
Зарегистрирован: 06 июл 2011, 15:26
Репутация: 81
Настоящее имя: Геннадий
Откуда: Ростов-на-дону
Контактная информация:

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

Сообщение gendos »

Nick писал(а):net motion.spindle-on => sampler.0.enable
поменяй на:
net spindle-enable <= motion.spindle-on => sampler.0.enable
хммм... мне казалось, что имя сигнала не обязательно, оказывается я был не прав...

поменял,запустил emc2 , появилась в нижнем правом углу подсказка про смену инструмента и все...
подождал 5 минут заускаю снова emc2 пишет
emc2 is still running. Restart it?
нажимаю да, выдает
Debug file information:
мой-станок.hal:125: program 'halsampler' failed, returned 1
Stopping realtime threads
Unloading hal components
ERROR: Module hal_lib does not exist in /proc/modules
ERROR: Module rtapi does not exist in /proc/modules
ERROR: Module rtai_math does not exist in /proc/modules
ERROR: Module rtai_sem does not exist in /proc/modules
ERROR: Module rtai_fifos does not exist in /proc/modules
ERROR: Removing 'rtai_sched': Device or resource busy
ERROR: Module rtai_hal is in use by rtai_sched
psha
Опытный
Сообщения: 147
Зарегистрирован: 28 фев 2011, 11:11
Репутация: 1
Контактная информация:

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

Сообщение psha »

В строке

loadusr -w halsampler filename

-w означает что надо дождаться выполнения команды.
В итоге он при загрузке будет вечно ждать, пока halsampler выйдет.
Надо оставить просто 'loadusr halsampler filename' ибо заранее узнать имя его компоненты не получится

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

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

Сообщение gendos »

Запустил такой G код
%
G0 X0 a1 z0
m3
G1 X10 a[[10-0]/1*360] F500
M5
%
файл filename пустой,добавил S3500
G0 X0 a1 z0
S3500 m3
G1 X10 a[[10-0]/1*360] F500
M5
в файле filename одни 0000000

изменил в 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 apos-cmd axis.3.motor-pos-cmd <= stepgen.3.position-cmd => sampler.0.pin.1
net encoder.0.position => sampler.0.pin.2

net spindle-enable <= motion.spindle-on => sampler.0.enable
loadusr halsampler filename
в файле filename-
0.000083 1.029868 0.000000
0.000100 1.036120 0.000000
0.000119 1.042966 0.000000
0.000140 1.050409 0.000000
0.000162 1.058446 0.000000
.....................
7.923219 2852.566491 0.000000
7.924215 2852.925001 0.000000
7.925211 2853.283512 0.000000
7.926207 2853.642023 0.000000
7.927203 2854.000534 0.000000

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

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

Сообщение Nick »

gendos писал(а):Только как сделать чтоб координата А менялась только от 0 до 360 градусов и как это все перевести в нормальные координаты
чтобы менялась только от 0 до 360 нужно взять остаток от деления на 360. В случае с hal, наверняка есть такой компонент. Чтобы перевести в нормальные координаты нужно сделать описанное выше преобразование. Хотя, возможно это будет проще сделать через отдельный пост-просцессор, чтобы не напрягать emc2 вычислениями с плавающей запятой.
Ответить

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