Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
Serg
Мастер
Сообщения: 21923 Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5182
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:
Сообщение
Serg » 08 ноя 2014, 19:16
michael-yurov писал(а): Только вот преобразователь там всего на 1 Вт, и учитывая, что он нагружен еще другими датчиками - стоит сначала прикинуть, какой ток будет кушать схемка с триггером.
При питании от 24В схема потребляет 4 мА в деж. режиме и 7 мА в сработавшем состоянии.
michael-yurov писал(а): А, вообще, зачем она? Реально есть проблема с дребезгом?
Реально есть.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
solanto
Почётный участник
Сообщения: 963 Зарегистрирован: 02 апр 2014, 09:10
Репутация: 94
Настоящее имя: Александр
Откуда: Карачаево-Черкесская республика, г.Черкесск
Контактная информация:
Сообщение
solanto » 09 ноя 2014, 08:08
michael-yurov писал(а): А, вообще, зачем она? Реально есть проблема с дребезгом?
В MACH3 это незаметно, а вот EMC это очень мешает. Если с концевиками всё более менее работает и дребезг отсутствует, то с таблеткой просто так не получится работать, тут либо программно бороться, либо аппаратно, либо всё вместе.
solanto
Почётный участник
Сообщения: 963 Зарегистрирован: 02 апр 2014, 09:10
Репутация: 94
Настоящее имя: Александр
Откуда: Карачаево-Черкесская республика, г.Черкесск
Контактная информация:
Сообщение
solanto » 09 ноя 2014, 08:39
verser писал(а): solanto писал(а): Так что мне прописать в hal?
Я уже склоняюсь к ликвидации дребезга с помощью конденсатора и резистора, либо с помощью тригера Шмита (если он поможет канечно)
Программный способ антидребезга вполне работает.
Вот как у меня прописано в файл мой-станок.hal
в начале файла вставляем
Код: Выделить всё
# add debounce component after all loadrt
loadrt debounce cfg=1
# set delay (number of iterations of base thread )
setp debounce.0.delay 100
# add debounce to thread
addf debounce.0 base-thread
а в серединке (где пины параллельного порта присоединяются) вставляем
Код: Выделить всё
# put debounce between parport input pins and probe signals
net probe-in motion.probe-input
net debounce-probe-in debounce.0.0.in <= parport.1.pin-13-in
net probe-in debounce.0.0.out
Не получилось. Вот что выдаёт при запуске.
Код: Выделить всё
Print file information:
RUN_IN_PLACE=no
LINUXCNC_DIR=
LINUXCNC_BIN_DIR=/usr/bin
LINUXCNC_TCL_DIR=/usr/lib/tcltk/linuxcnc
LINUXCNC_SCRIPT_DIR=
LINUXCNC_RTLIB_DIR=/usr/realtime-2.6.32-122-rtai/modules/linuxcnc
LINUXCNC_CONFIG_DIR=
LINUXCNC_LANG_DIR=/usr/share/linuxcnc/tcl/msgs
INIVAR=inivar
HALCMD=halcmd
LINUXCNC_EMCSH=/usr/bin/wish8.5
LINUXCNC - 2.5.4
Machine configuration directory is '/home/cnc/linuxcnc/configs/CNC_4444'
Machine configuration file is 'CNC_4444.ini'
INIFILE=/home/cnc/linuxcnc/configs/CNC_4444/CNC_4444.ini
PARAMETER_FILE=linuxcnc.var
TASK=milltask
HALUI=halui
DISPLAY=axis
Starting LinuxCNC...
Starting LinuxCNC server program: linuxcncsvr
Loading Real Time OS, RTAPI, and HAL_LIB modules
Starting LinuxCNC IO program: io
Starting HAL User Interface program: halui
Shutting down and cleaning up LinuxCNC...
Killing task linuxcncsvr, PID=3326
Removing HAL_LIB, RTAPI, and Real Time OS modules
Removing NML shared memory segments
Cleanup done
Debug file information:
Can not find -sec MOT -var MOT -num 1
Can not find -sec IO -var IO -num 1
Can not find -sec LINUXCNC -var NML_FILE -num 1
Can not find -sec EMC -var NML_FILE -num 1
CNC_4444.hal:57: Pin 'parport.1.pin-15-in' does not exist
3326
PID TTY STAT TIME COMMAND
Stopping realtime threads
Unloading hal components
Kernel message information:
[ 2968.604843] I-pipe: Domain RTAI registered.
[ 2968.604862] RTAI[hal]: <3.8.1> mounted over IPIPE-NOTHREADS 2.6-03.
[ 2968.604870] RTAI[hal]: compiled with gcc version 4.4.3 (Ubuntu 4.4.3-4ubuntu5) .
[ 2968.604929] RTAI[hal]: mounted (IPIPE-NOTHREADS, IMMEDIATE (INTERNAL IRQs DISPATCHED), ISOL_CPUS_MASK: 0).
[ 2968.604936] PIPELINE layers:
[ 2968.604943] fb774e20 9ac15d93 RTAI 200
[ 2968.604951] c085cb20 0 Linux 100
[ 2968.657351] RTAI[malloc]: global heap size = 2097152 bytes, <BSD>.
[ 2968.658216] RTAI[sched]: IMMEDIATE, MP, USER/KERNEL SPACE: <with RTAI OWN KTASKs>, kstacks pool size = 524288 bytes.
[ 2968.658234] RTAI[sched]: hard timer type/freq = APIC/10405239(Hz); default timing: periodic; linear timed lists.
[ 2968.658245] RTAI[sched]: Linux timer freq = 250 (Hz), TimeBase freq = 1664981000 hz.
[ 2968.658253] RTAI[sched]: timer setup = 999 ns, resched latency = 2944 ns.
[ 2968.658426] RTAI[usi]: enabled.
[ 2968.780680] RTAI[math]: loaded.
[ 2968.919658] config string '0x378 out '
[ 2969.736744] RTAI[math]: unloaded.
[ 2969.808134] SCHED releases registered named ALIEN RTGLBH
[ 2969.836993] RTAI[malloc]: unloaded.
[ 2969.936031] RTAI[sched]: unloaded (forced hard/soft/hard transitions: traps 0, syscalls 0).
[ 2969.941267] I-pipe: Domain RTAI unregistered.
[ 2969.941337] RTAI[hal]: unmounted.
solanto
Почётный участник
Сообщения: 963 Зарегистрирован: 02 апр 2014, 09:10
Репутация: 94
Настоящее имя: Александр
Откуда: Карачаево-Черкесская республика, г.Черкесск
Контактная информация:
Сообщение
solanto » 09 ноя 2014, 08:41
Меняю это:
Код: Выделить всё
net debounce-probe-in debounce.0.0.in <= parport.1.pin-15-in
На это:
Код: Выделить всё
net debounce-probe-in debounce.0.0.in <= parport.0.pin-15-in
Выдаёт это:
Код: Выделить всё
Print file information:
RUN_IN_PLACE=no
LINUXCNC_DIR=
LINUXCNC_BIN_DIR=/usr/bin
LINUXCNC_TCL_DIR=/usr/lib/tcltk/linuxcnc
LINUXCNC_SCRIPT_DIR=
LINUXCNC_RTLIB_DIR=/usr/realtime-2.6.32-122-rtai/modules/linuxcnc
LINUXCNC_CONFIG_DIR=
LINUXCNC_LANG_DIR=/usr/share/linuxcnc/tcl/msgs
INIVAR=inivar
HALCMD=halcmd
LINUXCNC_EMCSH=/usr/bin/wish8.5
LINUXCNC - 2.5.4
Machine configuration directory is '/home/cnc/linuxcnc/configs/CNC_4444'
Machine configuration file is 'CNC_4444.ini'
INIFILE=/home/cnc/linuxcnc/configs/CNC_4444/CNC_4444.ini
PARAMETER_FILE=linuxcnc.var
TASK=milltask
HALUI=halui
DISPLAY=axis
Starting LinuxCNC...
Starting LinuxCNC server program: linuxcncsvr
Loading Real Time OS, RTAPI, and HAL_LIB modules
Starting LinuxCNC IO program: io
Starting HAL User Interface program: halui
Shutting down and cleaning up LinuxCNC...
Killing task linuxcncsvr, PID=3527
Removing HAL_LIB, RTAPI, and Real Time OS modules
Removing NML shared memory segments
Cleanup done
Debug file information:
Can not find -sec MOT -var MOT -num 1
Can not find -sec IO -var IO -num 1
Can not find -sec LINUXCNC -var NML_FILE -num 1
Can not find -sec EMC -var NML_FILE -num 1
CNC_4444.hal:58: Signal 'probe-in' can not add OUT pin 'debounce.0.0.out', it already has OUT pin 'parport.0.pin-15-in-not'
3527
PID TTY STAT TIME COMMAND
Stopping realtime threads
Unloading hal components
Kernel message information:
[ 3113.974239] I-pipe: Domain RTAI registered.
[ 3113.974260] RTAI[hal]: <3.8.1> mounted over IPIPE-NOTHREADS 2.6-03.
[ 3113.974268] RTAI[hal]: compiled with gcc version 4.4.3 (Ubuntu 4.4.3-4ubuntu5) .
[ 3113.974330] RTAI[hal]: mounted (IPIPE-NOTHREADS, IMMEDIATE (INTERNAL IRQs DISPATCHED), ISOL_CPUS_MASK: 0).
[ 3113.974337] PIPELINE layers:
[ 3113.974345] fbe00e20 9ac15d93 RTAI 200
[ 3113.974353] c085cb20 0 Linux 100
[ 3114.026569] RTAI[malloc]: global heap size = 2097152 bytes, <BSD>.
[ 3114.026925] RTAI[sched]: IMMEDIATE, MP, USER/KERNEL SPACE: <with RTAI OWN KTASKs>, kstacks pool size = 524288 bytes.
[ 3114.026937] RTAI[sched]: hard timer type/freq = APIC/10405239(Hz); default timing: periodic; linear timed lists.
[ 3114.026945] RTAI[sched]: Linux timer freq = 250 (Hz), TimeBase freq = 1664981000 hz.
[ 3114.026951] RTAI[sched]: timer setup = 999 ns, resched latency = 2944 ns.
[ 3114.028068] RTAI[usi]: enabled.
[ 3114.142201] RTAI[math]: loaded.
[ 3114.280388] config string '0x378 out '
[ 3115.061955] RTAI[math]: unloaded.
[ 3115.149906] SCHED releases registered named ALIEN RTGLBH
[ 3115.180963] RTAI[malloc]: unloaded.
[ 3115.280034] RTAI[sched]: unloaded (forced hard/soft/hard transitions: traps 0, syscalls 0).
[ 3115.285290] I-pipe: Domain RTAI unregistered.
[ 3115.285365] RTAI[hal]: unmounted.
verser
Мастер
Сообщения: 1897 Зарегистрирован: 21 июл 2013, 22:28
Репутация: 1282
Настоящее имя: Сергей
Откуда: Тбилиси
Контактная информация:
Сообщение
verser » 09 ноя 2014, 09:00
Покажи последний вариант своего CNC_4444.hal файла.
solanto
Почётный участник
Сообщения: 963 Зарегистрирован: 02 апр 2014, 09:10
Репутация: 94
Настоящее имя: Александр
Откуда: Карачаево-Черкесская республика, г.Черкесск
Контактная информация:
Сообщение
solanto » 09 ноя 2014, 09:02
Вот:
Код: Выделить всё
# Создан stepconf в Thu Nov 6 19:52:52 2014
# Все изменения в этом файле будут перезаписаны
# при следующем запуске stepconf
loadrt trivkins
loadrt [EMCMOT]EMCMOT base_period_nsec=[EMCMOT]BASE_PERIOD servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[TRAJ]AXES
loadrt probe_parport
loadrt hal_parport cfg="0x378 out "
setp parport.0.reset-time 5000
loadrt stepgen step_type=0,0,0
loadrt lut5
# add debounce component after all loadrt
loadrt debounce cfg=1
# set delay (number of iterations of base thread )
setp debounce.0.delay 100
# add debounce to thread
addf debounce.0 base-thread
addf parport.0.read base-thread
addf stepgen.make-pulses base-thread
addf parport.0.write base-thread
addf parport.0.reset base-thread
addf stepgen.capture-position servo-thread
addf motion-command-handler servo-thread
addf motion-controller servo-thread
addf stepgen.update-freq servo-thread
addf lut5.0 servo-thread
net spindle-cmd <= motion.spindle-speed-out
net spindle-at-speed => motion.spindle-at-speed
net spindle-on <= motion.spindle-on
net spindle-cw <= motion.spindle-forward
net probe-in => motion.probe-input
setp parport.0.pin-01-out-invert 1
net xenable => parport.0.pin-01-out
net xstep => parport.0.pin-02-out
setp parport.0.pin-02-out-reset 1
net xdir => parport.0.pin-03-out
net ystep => parport.0.pin-04-out
setp parport.0.pin-04-out-reset 1
net ydir => parport.0.pin-05-out
net zstep => parport.0.pin-06-out
setp parport.0.pin-06-out-reset 1
net zdir => parport.0.pin-07-out
setp parport.0.pin-16-out-invert 1
net spindle-on => parport.0.pin-16-out
setp parport.0.pin-17-out-invert 1
net spindle-cw => parport.0.pin-17-out
net estop-ext <= parport.0.pin-10-in
net all-limit-home <= parport.0.pin-11-in-not
net probe-in <= parport.0.pin-15-in-not
# put debounce between parport input pins and probe signals
net probe-in motion.probe-input
net debounce-probe-in debounce.0.0.in <= parport.0.pin-15-in
net probe-in debounce.0.0.out
setp lut5.0.function 0x10000
net all-limit-home => lut5.0.in-4
net all-limit <= lut5.0.out
net homing-x <= axis.0.homing => lut5.0.in-0
net homing-y <= axis.1.homing => lut5.0.in-1
net homing-z <= axis.2.homing => lut5.0.in-2
setp stepgen.0.position-scale [AXIS_0]SCALE
setp stepgen.0.steplen 1
setp stepgen.0.stepspace 0
setp stepgen.0.dirhold 40000
setp stepgen.0.dirsetup 40000
setp stepgen.0.maxaccel [AXIS_0]STEPGEN_MAXACCEL
net xpos-cmd axis.0.motor-pos-cmd => stepgen.0.position-cmd
net xpos-fb stepgen.0.position-fb => axis.0.motor-pos-fb
net xstep <= stepgen.0.step
net xdir <= stepgen.0.dir
net xenable axis.0.amp-enable-out => stepgen.0.enable
net all-limit-home => axis.0.home-sw-in
net all-limit => axis.0.neg-lim-sw-in
net all-limit => axis.0.pos-lim-sw-in
setp stepgen.1.position-scale [AXIS_1]SCALE
setp stepgen.1.steplen 1
setp stepgen.1.stepspace 0
setp stepgen.1.dirhold 40000
setp stepgen.1.dirsetup 40000
setp stepgen.1.maxaccel [AXIS_1]STEPGEN_MAXACCEL
net ypos-cmd axis.1.motor-pos-cmd => stepgen.1.position-cmd
net ypos-fb stepgen.1.position-fb => axis.1.motor-pos-fb
net ystep <= stepgen.1.step
net ydir <= stepgen.1.dir
net yenable axis.1.amp-enable-out => stepgen.1.enable
net all-limit-home => axis.1.home-sw-in
net all-limit => axis.1.neg-lim-sw-in
net all-limit => axis.1.pos-lim-sw-in
setp stepgen.2.position-scale [AXIS_2]SCALE
setp stepgen.2.steplen 1
setp stepgen.2.stepspace 0
setp stepgen.2.dirhold 40000
setp stepgen.2.dirsetup 40000
setp stepgen.2.maxaccel [AXIS_2]STEPGEN_MAXACCEL
net zpos-cmd axis.2.motor-pos-cmd => stepgen.2.position-cmd
net zpos-fb stepgen.2.position-fb => axis.2.motor-pos-fb
net zstep <= stepgen.2.step
net zdir <= stepgen.2.dir
net zenable axis.2.amp-enable-out => stepgen.2.enable
net all-limit-home => axis.2.home-sw-in
net all-limit => axis.2.neg-lim-sw-in
net all-limit => axis.2.pos-lim-sw-in
net estop-out <= iocontrol.0.user-enable-out
net estop-ext => iocontrol.0.emc-enable-in
loadusr -W hal_manualtoolchange
net tool-change iocontrol.0.tool-change => hal_manualtoolchange.change
net tool-changed iocontrol.0.tool-changed <= hal_manualtoolchange.changed
net tool-number iocontrol.0.tool-prep-number => hal_manualtoolchange.number
net tool-prepare-loopback iocontrol.0.tool-prepare => iocontrol.0.tool-prepared
verser
Мастер
Сообщения: 1897 Зарегистрирован: 21 июл 2013, 22:28
Репутация: 1282
Настоящее имя: Сергей
Откуда: Тбилиси
Контактная информация:
Сообщение
verser » 09 ноя 2014, 09:06
В этом месте
Код: Выделить всё
# put debounce between parport input pins and probe signals
net probe-in motion.probe-input
net debounce-probe-in debounce.0.0.in <= parport.0.pin-15-in
net probe-in debounce.0.0.out
убери строчку
net probe-in motion.probe-input
т.к. она уже есть у тебя выше
verser
Мастер
Сообщения: 1897 Зарегистрирован: 21 июл 2013, 22:28
Репутация: 1282
Настоящее имя: Сергей
Откуда: Тбилиси
Контактная информация:
Сообщение
verser » 09 ноя 2014, 09:09
Еще вижу одну ошибку:
Закомментируй 54-ю строчку
# net probe-in <= parport.0.pin-15-in-not
solanto
Почётный участник
Сообщения: 963 Зарегистрирован: 02 апр 2014, 09:10
Репутация: 94
Настоящее имя: Александр
Откуда: Карачаево-Черкесская республика, г.Черкесск
Контактная информация:
Сообщение
solanto » 09 ноя 2014, 09:29
solanto
Почётный участник
Сообщения: 963 Зарегистрирован: 02 апр 2014, 09:10
Репутация: 94
Настоящее имя: Александр
Откуда: Карачаево-Черкесская республика, г.Черкесск
Контактная информация:
Сообщение
solanto » 09 ноя 2014, 09:32
Сергей Саныч писал(а): Но если ты в следующую версию прошивки введешь фильтр (алгоритм можно подсмотреть в LCNC, он очень простой), будет очень не вредная "фича"
Я даже согласен отправить платку на перепрошивку.
michael-yurov
Почётный участник
Сообщения: 11671 Зарегистрирован: 26 июл 2012, 00:10
Репутация: 4668
Настоящее имя: Михаил Львович
Откуда: Новоуральск
Контактная информация:
Сообщение
michael-yurov » 09 ноя 2014, 10:04
solanto писал(а): Сергей Саныч писал(а): Но если ты в следующую версию прошивки введешь фильтр (алгоритм можно подсмотреть в LCNC, он очень простой), будет очень не вредная "фича"
Я даже согласен отправить платку на перепрошивку.
Нет, так не получится.
Если и буду делать подавление - то на микросхеме логики, или банально, добавлю RC фильтр.
Т.е. нужно делать плату по другому.
Я только не пойму - откуда у проблемы ноги растут?
Опускаешься до срабатывания. Проскочил сигнал - все, стоп! Поднимаешься на некоторую высоту. Как здесь дребезг может помешать?
Serg
Мастер
Сообщения: 21923 Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5182
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:
Сообщение
Serg » 09 ноя 2014, 10:31
michael-yurov писал(а): Опускаешься до срабатывания. Проскочил сигнал - все, стоп!
... G38 закончилась, пока датчик "нажат" от той-же вибрации происходят замыкания/размыкания - LinuxCNC ругается на срабатывания датчка при неактивной G38.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
michael-yurov
Почётный участник
Сообщения: 11671 Зарегистрирован: 26 июл 2012, 00:10
Репутация: 4668
Настоящее имя: Михаил Львович
Откуда: Новоуральск
Контактная информация:
Сообщение
michael-yurov » 09 ноя 2014, 12:05
UAVpilot писал(а): LinuxCNC ругается на срабатывания датчка при неактивной G38.
А почему ему не наплевать на сигнал от датчика при неактивной G38?
Это не лечится?
PKM
Почётный участник
Сообщения: 4263 Зарегистрирован: 31 мар 2011, 18:11
Репутация: 705
Настоящее имя: Андрей
Откуда: Украина
Контактная информация:
Сообщение
PKM » 09 ноя 2014, 12:11
Думает, что проблема - наткнулись на заготовку щупом, надо срочно остановиться.
solanto
Почётный участник
Сообщения: 963 Зарегистрирован: 02 апр 2014, 09:10
Репутация: 94
Настоящее имя: Александр
Откуда: Карачаево-Черкесская республика, г.Черкесск
Контактная информация:
Сообщение
solanto » 09 ноя 2014, 18:14
Тут вопрос у меня возник. А как, вернее где выставить толщину таблетки?
NightV
Почётный участник
Сообщения: 6602 Зарегистрирован: 30 дек 2011, 09:14
Репутация: 2279
Настоящее имя: Владимир Айрапетян
Откуда: Israel
Контактная информация:
Сообщение
NightV » 09 ноя 2014, 18:24
solanto писал(а): А как, вернее где выставить толщину таблетки?
G90 G10 L20 P0 Z0 (сдесь говорим системе что вот ее ноль, НО вместо Z0 впиши высоту таблетки, например Z-10)
Всё просто! если знаешь КАК !
solanto
Почётный участник
Сообщения: 963 Зарегистрирован: 02 апр 2014, 09:10
Репутация: 94
Настоящее имя: Александр
Откуда: Карачаево-Черкесская республика, г.Черкесск
Контактная информация:
Сообщение
solanto » 09 ноя 2014, 18:45
Спасибо. Выставил. Теперь погружается в заготовку.
Serg
Мастер
Сообщения: 21923 Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5182
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:
Сообщение
Serg » 09 ноя 2014, 19:12
Координаты команды "G10 L20 P0 Z0" указывают текущую позицию относительно выбранной системы координат. Посему для Z надо указать высоту таблетки в виде положительного значения.
P.S. G90/G91 никак не влияет на эту команду.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Сергей Саныч
Мастер
Сообщения: 9116 Зарегистрирован: 30 май 2012, 14:20
Репутация: 2858
Откуда: Тюмень
Контактная информация:
Сообщение
Сергей Саныч » 09 ноя 2014, 19:16
NightV писал(а): НО вместо Z0 впиши высоту таблетки, например Z-10
Не минус, а плюс. Таблетка-то на заготовке стоит.
Чудес не бывает. Бывают фокусы.
solanto
Почётный участник
Сообщения: 963 Зарегистрирован: 02 апр 2014, 09:10
Репутация: 94
Настоящее имя: Александр
Откуда: Карачаево-Черкесская республика, г.Черкесск
Контактная информация:
Сообщение
solanto » 10 ноя 2014, 13:54
Я что то вспомнить не могу что я поставил. Вечером напишу. Но точно помню, что получилось только со второго раза.