нестандартная рабочая зона на ЕМС для робота

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
Аватара пользователя
Тима
Почётный участник
Почётный участник
Сообщения: 3162
Зарегистрирован: 01 мар 2012, 20:47
Репутация: 1089
Настоящее имя: Тимур
Откуда: КБР
Контактная информация:

Re: нестандартная рабочая зона на ЕМС для робота

Сообщение Тима »

поигрался с hal через виртуалбокс. Выглядит он так:

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

# Generated by stepconf 1.1 at Thu Mar  5 18:11:20 2015
# If you make changes to this file, they will be
# overwritten when you run stepconf again
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 pwmgen output_type=1

loadrt and2 count=1
loadrt wcomp count=2
loadrt oneshot count=1
loadrt message names=alarm messages="alarm"

addf parport.0.read base-thread
addf stepgen.make-pulses base-thread
addf pwmgen.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 pwmgen.update servo-thread

addf and2.0 servo-thread
addf wcomp.0 servo-thread
addf alarm servo-thread 

net spindle-cmd <= motion.spindle-speed-out => pwmgen.0.value
net spindle-on <= motion.spindle-on => pwmgen.0.enable
net spindle-pwm <= pwmgen.0.pwm
setp pwmgen.0.pwm-freq 100.0
setp pwmgen.0.scale 1166.66666667
setp pwmgen.0.offset 0.114285714286
setp pwmgen.0.dither-pwm true
net spindle-at-speed => motion.spindle-at-speed
net spindle-cw <= motion.spindle-forward

net estop-out => 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
net astep => parport.0.pin-08-out
setp parport.0.pin-08-out-reset 1
net adir => parport.0.pin-09-out
net spindle-cw => parport.0.pin-14-out
net spindle-pwm => parport.0.pin-16-out
net xenable => parport.0.pin-17-out

setp stepgen.0.position-scale [AXIS_0]SCALE
setp stepgen.0.steplen 1
setp stepgen.0.stepspace 0
setp stepgen.0.dirhold 35000
setp stepgen.0.dirsetup 35000
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 xpos axis.0.joint-pos-cmd => wcomp.0.in
setp wcomp.0.max 1000
setp wcomp.0.min 500

setp stepgen.1.position-scale [AXIS_1]SCALE
setp stepgen.1.steplen 1
setp stepgen.1.stepspace 0
setp stepgen.1.dirhold 35000
setp stepgen.1.dirsetup 35000
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

setp stepgen.2.position-scale [AXIS_2]SCALE
setp stepgen.2.steplen 1
setp stepgen.2.stepspace 0
setp stepgen.2.dirhold 35000
setp stepgen.2.dirsetup 35000
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 zpos axis.2.joint-pos-cmd => wcomp.1.in
setp wcomp.1.min -120

net xover and2.0.in0 <= wcomp.0.out
net zover and2.0.in1 <= wcomp.1.under
net tak and2.0.out => oneshot.0.in alarm.trigger
setp oneshot.0.width 0.5
setp alarm.edge 0
net robotalarm <= oneshot.0.out


net estop-out <= iocontrol.0.user-enable-out
net estop-out => 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
Но в итоге сообщение "alarm" выводится при включении ЕМС.
ffg.jpg (1897 просмотров) <a class='original' href='./download/file.php?id=44654&mode=view' target=_blank>Загрузить оригинал (139.03 КБ)</a>
Что не так?

Изменения были такие:

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

loadrt and2 count=1
loadrt wcomp count=2
loadrt oneshot count=1
loadrt message names=alarm messages="alarm"

addf and2.0 servo-thread
addf wcomp.0 servo-thread
addf alarm servo-thread 

net xpos axis.0.joint-pos-cmd => wcomp.0.in
setp wcomp.0.max 1000
setp wcomp.0.min 500
net zpos axis.2.joint-pos-cmd => wcomp.1.in
setp wcomp.1.min -120
net xover and2.0.in0 <= wcomp.0.out
net zover and2.0.in1 <= wcomp.1.under
net tak and2.0.out => oneshot.0.in alarm.trigger
setp oneshot.0.width 0.5
setp alarm.edge 0
net robotalarm <= oneshot.0.out
может надо командой addf добавить oneshot в поток реального времени?
И еще, куда надо добавлять компоненты, в base-thread или servo-thread ?
Дорогу осилит идущий!
Я все пойму, Вы только дайте денег!!!
Аватара пользователя
NightV
Почётный участник
Почётный участник
Сообщения: 6610
Зарегистрирован: 30 дек 2011, 09:14
Репутация: 2279
Настоящее имя: Владимир Айрапетян
Откуда: Israel
Контактная информация:

Re: нестандартная рабочая зона на ЕМС для робота

Сообщение NightV »

Тима писал(а):Вашей
эт ты зря ляпнул.... товарищь UAVpilot воспринимает это как обиду... ну и как все мы...
для новичка такое простительно..... но уж ТЫ то должен знать... :pssdoff:
Всё просто! если знаешь КАК!
Аватара пользователя
Тима
Почётный участник
Почётный участник
Сообщения: 3162
Зарегистрирован: 01 мар 2012, 20:47
Репутация: 1089
Настоящее имя: Тимур
Откуда: КБР
Контактная информация:

Re: нестандартная рабочая зона на ЕМС для робота

Сообщение Тима »

а что я не так сказал? Я ведь не прошу за меня сделать работу! Я прошу "направить в правильное русло и дать толчок". Сегодня лазел по докам на ЕМС, как англоязычным(через переводчик гугл), так и переведенным докам в вики. Но если что не понятно, мне спросить неукого, кроме как здесь. И без помощи форума разбираться буду очень долго и нудно.
Дорогу осилит идущий!
Я все пойму, Вы только дайте денег!!!
Аватара пользователя
torvn77
Мастер
Сообщения: 2442
Зарегистрирован: 02 июн 2012, 22:12
Репутация: 215
Откуда: Россия,Санкт-Петербург
Контактная информация:

Re: нестандартная рабочая зона на ЕМС для робота

Сообщение torvn77 »

Тима писал(а):И еще, куда надо добавлять компоненты, в base-thread или servo-thread ?
В servo,в base работает степген.
Хотя там куча "слоёв" логики,если поставить в base то решение об остановке будет принято раньше.
Значит,если мощность компьютера позволяет,то лучше в base.
Последний раз редактировалось torvn77 06 мар 2015, 01:20, всего редактировалось 1 раз.
Аватара пользователя
NightV
Почётный участник
Почётный участник
Сообщения: 6610
Зарегистрирован: 30 дек 2011, 09:14
Репутация: 2279
Настоящее имя: Владимир Айрапетян
Откуда: Israel
Контактная информация:

Re: нестандартная рабочая зона на ЕМС для робота

Сообщение NightV »

Тима, ты не понял... я не о том что обращаются, а о том КАК обращаются ;)
Nick давным давно поднимал эту тему Общение на ты #1
Всё просто! если знаешь КАК!
Аватара пользователя
Тима
Почётный участник
Почётный участник
Сообщения: 3162
Зарегистрирован: 01 мар 2012, 20:47
Репутация: 1089
Настоящее имя: Тимур
Откуда: КБР
Контактная информация:

Re: нестандартная рабочая зона на ЕМС для робота

Сообщение Тима »

NightV писал(а):
Тима, ты не понял... я не о том что обращаются, а о том КАК обращаются ;)
Nick давным давно поднимал эту тему Общение на ты #1
NightV, Ты тоже не понял меня. Говоря "Вашей", я имел в виду не только UAVpilot, а всех помогающих разобраться в данной теме участников форума.
Так что тут более уместно говорить не "как обращаться", а "ко скольки обращаться".
Последний раз редактировалось Тима 06 мар 2015, 01:44, всего редактировалось 1 раз.
Дорогу осилит идущий!
Я все пойму, Вы только дайте денег!!!
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: нестандартная рабочая зона на ЕМС для робота

Сообщение Serg »

Тима писал(а):может надо командой addf добавить oneshot в поток реального времени?
У любого компонента есть так называемая функция, которая собственно и производит все действия. Чтобы функция запускалась в работу её надо поместить в какой-либо поток.
Функции, помещённые в servo-thread выполняются раз в сервоцикл. base-thread выполняется гораздо чаще, но он нужен в основном для stepgen.
torvn77 писал(а):Значит,если мощность компьютера позволяет,то лучше в base.
Это абсолютно бессмысленно - входные данные поступают раз в сервоцикл, соотв. реально работать компонент будет тоже раз в сервоцикл, а все остальные вызовы будут в холостую.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
Тима
Почётный участник
Почётный участник
Сообщения: 3162
Зарегистрирован: 01 мар 2012, 20:47
Репутация: 1089
Настоящее имя: Тимур
Откуда: КБР
Контактная информация:

Re: нестандартная рабочая зона на ЕМС для робота

Сообщение Тима »

UAVpilot, а в чем может быть проблема, что сообщение об аварии выводится сразу после запуска ЕМС? Ведь условия вывода сообщений не выполнились...
Дорогу осилит идущий!
Я все пойму, Вы только дайте денег!!!
Аватара пользователя
Тима
Почётный участник
Почётный участник
Сообщения: 3162
Зарегистрирован: 01 мар 2012, 20:47
Репутация: 1089
Настоящее имя: Тимур
Откуда: КБР
Контактная информация:

Re: нестандартная рабочая зона на ЕМС для робота

Сообщение Тима »

Сейчас попробую добавить oneshot в поток.....
Дорогу осилит идущий!
Я все пойму, Вы только дайте денег!!!
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: нестандартная рабочая зона на ЕМС для робота

Сообщение Serg »

Ну так запусти Halshow и посмотри почему... :)
http://linuxcnc.org/docs/devel/html/hal/halshow.html
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
Тима
Почётный участник
Почётный участник
Сообщения: 3162
Зарегистрирован: 01 мар 2012, 20:47
Репутация: 1089
Настоящее имя: Тимур
Откуда: КБР
Контактная информация:

Re: нестандартная рабочая зона на ЕМС для робота

Сообщение Тима »

По оси Х условия срабатывают. По z нет.
Дорогу осилит идущий!
Я все пойму, Вы только дайте денег!!!
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: нестандартная рабочая зона на ЕМС для робота

Сообщение Serg »

За комплимент конечно спасибо, но нет, телепатически читать значения пинов и сигналов я пока не умею... ;)
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
Тима
Почётный участник
Почётный участник
Сообщения: 3162
Зарегистрирован: 01 мар 2012, 20:47
Репутация: 1089
Настоящее имя: Тимур
Откуда: КБР
Контактная информация:

Re: нестандартная рабочая зона на ЕМС для робота

Сообщение Тима »

смотрел состояние сигналов xover и zover. т.е. вывел на халшоу эти сигналы и начал гонять по оси x и z. В пределах от 500 до 1000 по Х пин xover включается. то же самое проделал с z - сигнал zover не включается.
вот уловия:

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

net xpos axis.0.joint-pos-cmd => wcomp.0.in
setp wcomp.0.max 1000
setp wcomp.0.min 500
net zpos axis.2.joint-pos-cmd => wcomp.1.in
setp wcomp.1.min -120
net xover and2.0.in0 <= wcomp.0.out
net zover and2.0.in1 <= wcomp.1.under
net tak and2.0.out => oneshot.0.in alarm.trigger
setp oneshot.0.width 0.5
setp alarm.edge 0
net robotalarm <= oneshot.0.out
Может дело в отрицательных значениях?
Дорогу осилит идущий!
Я все пойму, Вы только дайте денег!!!
Аватара пользователя
Тима
Почётный участник
Почётный участник
Сообщения: 3162
Зарегистрирован: 01 мар 2012, 20:47
Репутация: 1089
Настоящее имя: Тимур
Откуда: КБР
Контактная информация:

Re: нестандартная рабочая зона на ЕМС для робота

Сообщение Тима »

попробовал с положительными значениями...
hhh.jpg (1828 просмотров) <a class='original' href='./download/file.php?id=44683&mode=view' target=_blank>Загрузить оригинал (256.29 КБ)</a>
результат такой-же...
Дорогу осилит идущий!
Я все пойму, Вы только дайте денег!!!
Аватара пользователя
Тима
Почётный участник
Почётный участник
Сообщения: 3162
Зарегистрирован: 01 мар 2012, 20:47
Репутация: 1089
Настоящее имя: Тимур
Откуда: КБР
Контактная информация:

Re: нестандартная рабочая зона на ЕМС для робота

Сообщение Тима »

Разобрался... Забыл добавить в поток реального времени компонент по z. Добавил - заработало.
НО, работает немного не так, как хотелось бы... Т.е. заезжаешь в указанные пределы, сигналы загораются(два входа в and2 и выход), но сообщение не выводит. Выводит когда из этих пределов выезжаешь....
Буду разбираться дальше... :think:
Дорогу осилит идущий!
Я все пойму, Вы только дайте денег!!!
Аватара пользователя
Тима
Почётный участник
Почётный участник
Сообщения: 3162
Зарегистрирован: 01 мар 2012, 20:47
Репутация: 1089
Настоящее имя: Тимур
Откуда: КБР
Контактная информация:

Re: нестандартная рабочая зона на ЕМС для робота

Сообщение Тима »

С выводом сообщений разобрался...Вывод сообщений был привязан не к тому условию.
Теперь код выглядит так:

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

loadrt and2 count=1
loadrt wcomp count=2
loadrt oneshot count=1
loadrt message names=alarm messages="alarm"

addf and2.0 servo-thread
addf wcomp.0 servo-thread
addf wcomp.1 servo-thread
addf alarm servo-thread 
addf oneshot.0 servo-thread

net xpos axis.0.joint-pos-cmd => wcomp.0.in
setp wcomp.0.max 1000
setp wcomp.0.min 500
net zpos axis.2.joint-pos-cmd => wcomp.1.in
setp wcomp.1.min -120
net xover and2.0.in0 <= wcomp.0.out
net zover and2.0.in1 <= wcomp.1.under
net tak and2.0.out => oneshot.0.in
setp oneshot.0.width 0.5
setp alarm.edge 0
net robotalarm <= oneshot.0.out => alarm.trigger
Оооо :cheesy: а тут можно выводить сообщения на русском языке. Это ооочень хорошо!
Дорогу осилит идущий!
Я все пойму, Вы только дайте денег!!!
Аватара пользователя
Тима
Почётный участник
Почётный участник
Сообщения: 3162
Зарегистрирован: 01 мар 2012, 20:47
Репутация: 1089
Настоящее имя: Тимур
Откуда: КБР
Контактная информация:

Re: нестандартная рабочая зона на ЕМС для робота

Сообщение Тима »

Дальше на очереди блокировка движения осей в ненужные направления.
Дорогу осилит идущий!
Я все пойму, Вы только дайте денег!!!
Аватара пользователя
Тима
Почётный участник
Почётный участник
Сообщения: 3162
Зарегистрирован: 01 мар 2012, 20:47
Репутация: 1089
Настоящее имя: Тимур
Откуда: КБР
Контактная информация:

Re: нестандартная рабочая зона на ЕМС для робота

Сообщение Тима »

В доках нашел только это:
motion.enable (bit, in) Если этот бит устанавливается в FALSE, движение останавливается, станок переходит в состояние "machine off" и оператору станка показывается сообщение. Для нормального движения держите этот бит в TRUE.
Можно его использовать для решения моей задачи?
Дорогу осилит идущий!
Я все пойму, Вы только дайте денег!!!
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: нестандартная рабочая зона на ЕМС для робота

Сообщение Serg »

Этот пин тебе не нужен. Тебе нужно сделать так, чтобы estop срабатывал каждый раз при попытке поехать не в ту сторону.
Советую сначала всю логику работы прорисовать на бумажке...
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
Тима
Почётный участник
Почётный участник
Сообщения: 3162
Зарегистрирован: 01 мар 2012, 20:47
Репутация: 1089
Настоящее имя: Тимур
Откуда: КБР
Контактная информация:

Re: нестандартная рабочая зона на ЕМС для робота

Сообщение Тима »

UAVpilot писал(а):Тебе нужно сделать так, чтобы estop срабатывал каждый раз при попытке поехать не в ту сторону.
Это при помощи этой команды? http://linuxcnc.org/docs/devel/html/man ... tch.9.html
UAVpilot писал(а):Советую сначала всю логику работы прорисовать на бумажке...
Так я же рисовал... область работы робота с запрещенными, разрешенными и условно-разрешенными зонами. И описал при каких условиях что делать...
Дорогу осилит идущий!
Я все пойму, Вы только дайте денег!!!
Ответить

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