Страница 5 из 11

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

Добавлено: 05 мар 2015, 23:18
Тима
поигрался с 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 (1904 просмотра) <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 ?

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

Добавлено: 06 мар 2015, 00:18
NightV
Тима писал(а):Вашей
эт ты зря ляпнул.... товарищь UAVpilot воспринимает это как обиду... ну и как все мы...
для новичка такое простительно..... но уж ТЫ то должен знать... :pssdoff:

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

Добавлено: 06 мар 2015, 00:39
Тима
а что я не так сказал? Я ведь не прошу за меня сделать работу! Я прошу "направить в правильное русло и дать толчок". Сегодня лазел по докам на ЕМС, как англоязычным(через переводчик гугл), так и переведенным докам в вики. Но если что не понятно, мне спросить неукого, кроме как здесь. И без помощи форума разбираться буду очень долго и нудно.

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

Добавлено: 06 мар 2015, 01:12
torvn77
Тима писал(а):И еще, куда надо добавлять компоненты, в base-thread или servo-thread ?
В servo,в base работает степген.
Хотя там куча "слоёв" логики,если поставить в base то решение об остановке будет принято раньше.
Значит,если мощность компьютера позволяет,то лучше в base.

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

Добавлено: 06 мар 2015, 01:20
NightV
Тима, ты не понял... я не о том что обращаются, а о том КАК обращаются ;)
Nick давным давно поднимал эту тему Общение на ты #1

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

Добавлено: 06 мар 2015, 01:34
Тима
NightV писал(а):
Тима, ты не понял... я не о том что обращаются, а о том КАК обращаются ;)
Nick давным давно поднимал эту тему Общение на ты #1
NightV, Ты тоже не понял меня. Говоря "Вашей", я имел в виду не только UAVpilot, а всех помогающих разобраться в данной теме участников форума.
Так что тут более уместно говорить не "как обращаться", а "ко скольки обращаться".

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

Добавлено: 06 мар 2015, 01:36
Serg
Тима писал(а):может надо командой addf добавить oneshot в поток реального времени?
У любого компонента есть так называемая функция, которая собственно и производит все действия. Чтобы функция запускалась в работу её надо поместить в какой-либо поток.
Функции, помещённые в servo-thread выполняются раз в сервоцикл. base-thread выполняется гораздо чаще, но он нужен в основном для stepgen.
torvn77 писал(а):Значит,если мощность компьютера позволяет,то лучше в base.
Это абсолютно бессмысленно - входные данные поступают раз в сервоцикл, соотв. реально работать компонент будет тоже раз в сервоцикл, а все остальные вызовы будут в холостую.

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

Добавлено: 06 мар 2015, 01:44
Тима
UAVpilot, а в чем может быть проблема, что сообщение об аварии выводится сразу после запуска ЕМС? Ведь условия вывода сообщений не выполнились...

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

Добавлено: 06 мар 2015, 01:47
Тима
Сейчас попробую добавить oneshot в поток.....

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

Добавлено: 06 мар 2015, 01:51
Serg
Ну так запусти Halshow и посмотри почему... :)
http://linuxcnc.org/docs/devel/html/hal/halshow.html

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

Добавлено: 06 мар 2015, 02:18
Тима
По оси Х условия срабатывают. По z нет.

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

Добавлено: 06 мар 2015, 08:15
Serg
За комплимент конечно спасибо, но нет, телепатически читать значения пинов и сигналов я пока не умею... ;)

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

Добавлено: 06 мар 2015, 08:41
Тима
смотрел состояние сигналов 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
Может дело в отрицательных значениях?

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

Добавлено: 06 мар 2015, 09:08
Тима
попробовал с положительными значениями...
hhh.jpg (1835 просмотров) <a class='original' href='./download/file.php?id=44683&mode=view' target=_blank>Загрузить оригинал (256.29 КБ)</a>
результат такой-же...

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

Добавлено: 06 мар 2015, 09:21
Тима
Разобрался... Забыл добавить в поток реального времени компонент по z. Добавил - заработало.
НО, работает немного не так, как хотелось бы... Т.е. заезжаешь в указанные пределы, сигналы загораются(два входа в and2 и выход), но сообщение не выводит. Выводит когда из этих пределов выезжаешь....
Буду разбираться дальше... :think:

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

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

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

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: а тут можно выводить сообщения на русском языке. Это ооочень хорошо!

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

Добавлено: 06 мар 2015, 10:35
Тима
Дальше на очереди блокировка движения осей в ненужные направления.

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

Добавлено: 06 мар 2015, 12:39
Тима
В доках нашел только это:
motion.enable (bit, in) Если этот бит устанавливается в FALSE, движение останавливается, станок переходит в состояние "machine off" и оператору станка показывается сообщение. Для нормального движения держите этот бит в TRUE.
Можно его использовать для решения моей задачи?

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

Добавлено: 06 мар 2015, 12:52
Serg
Этот пин тебе не нужен. Тебе нужно сделать так, чтобы estop срабатывал каждый раз при попытке поехать не в ту сторону.
Советую сначала всю логику работы прорисовать на бумажке...

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

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