Страница 12 из 14

Re: Полноценная стойка на стол плазменного раскроя на базе Е

Добавлено: 24 дек 2012, 20:24
Nick
С высотой, можно сделать так:

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

O#<find_metal> SUB
  G38.2 Z-10 (ищем метал)
  G92 Z0 (обнуление Z)
  M66 E1 L0  (смотрим, что на пине motion.analog-in-00, значение сохраняется в #5399)
  G0 Z[#5399] (едем на нужную высоту)
O#<find_metal> ENDSUB
В hal надо добавить

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

net pen-height => motion.analog-in-00
net pen-height <= сюда пин из gladevcp
Все :).
lobzik писал(а):Да и как мне добавлять строку перед каждым M03?
В какой CAM готовишь Gкод?

Re: Полноценная стойка на стол плазменного раскроя на базе Е

Добавлено: 24 дек 2012, 20:51
nkp
Nick писал(а):С высотой, можно сделать так:
Код: Выделить всё • Развернуть
O#<find_metal> SUB
G38.2 Z-10 (ищем метал)
G92 Z0 (обнуление Z)
M66 E1 L0 (смотрим, что на пине motion.analog-in-00, значение сохраняется в #5399)
G0 Z[#5399] (едем на нужную высоту)
O#<find_metal> ENDSUB
решетки вроде в коде лишние...

Re: Полноценная стойка на стол плазменного раскроя на базе Е

Добавлено: 24 дек 2012, 21:27
Nick
Вроде нет... ... хотя да - лишние! :)
Вот так правильно:

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

O<find_metal> SUB
  G38.2 Z-10 (ищем метал)
  G92 Z0 (обнуление Z)
  M66 E1 L0  (смотрим, что на пине motion.analog-in-00, значение сохраняется в #5399)
  G0 Z[#5399] (едем на нужную высоту)
O<find_metal> ENDSUB

Re: Полноценная стойка на стол плазменного раскроя на базе Е

Добавлено: 25 дек 2012, 09:37
lobzik
Nick писал(а): В какой CAM готовишь Gкод?
Пока пользовался мачем готовил в пронесте, а сейчас нужно наверное переходить на что-то под линукс. Может Gcode tools? Как там у вас разработка автораскладчика?

Re: Полноценная стойка на стол плазменного раскроя на базе Е

Добавлено: 25 дек 2012, 10:09
Nick
lobzik писал(а):Как там у вас разработка автораскладчика?
Пока подзависла...
Sheetcam пробовал? Вроде как он и под linux идет.
Кстати, можно попробовать pronest под wine запустить. (sudo apt-get install wine) и потом на файле инсталятора кликаешь правой кнопкой и открыть в wine.

Re: Полноценная стойка на стол плазменного раскроя на базе Е

Добавлено: 26 дек 2012, 12:37
lobzik
Попробовал установить код поиска металла, один раз сработал, а сейчас пишет: probe tripped during non-probe MDI command :wik: Подозреваю, что это дребег контакта между пробником и металлом. Как это можно исправить? Да, и еще значение подпрыжки не сохраняетя после перезагрузки ЕМС, неудобно...

Re: Полноценная стойка на стол плазменного раскроя на базе Е

Добавлено: 26 дек 2012, 16:05
Nick
Попробуй вот такое: http://www.linuxcnc.org/index.php/forum ... glish#5670

По поводу сохраненения значений: http://linuxcnc.org/docs/html/gui/glade ... p_shutdown

Re: Полноценная стойка на стол плазменного раскроя на базе Е

Добавлено: 27 дек 2012, 12:19
lobzik
По поводу дребезга все получилось, а вот по поводу сохранения значения ничего не понял. И еще вопрос по регулировке высоты по напряжению: как лучше сделать, читать напряжение по RS232, а потом сравнимать с заданным и регулировать высоту, или регулировать по дискретным сигналам UP и DOWN? И еще, как подключить компонент UPDOWN?

Re: Полноценная стойка на стол плазменного раскроя на базе Е

Добавлено: 27 дек 2012, 12:34
nkp
UPDOWN

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

loadrt updown 
addf updown.0 servo-thread
(для просмотра содержимого нажмите на ссылку)
Выделение(010).jpg (1973 просмотра) <a class='original' href='./download/file.php?id=10496&mode=view' target=_blank>Загрузить оригинал (189.72 КБ)</a>
Внизу описание компонентов

Re: Полноценная стойка на стол плазменного раскроя на базе Е

Добавлено: 27 дек 2012, 15:31
lobzik
А с какими пинами нужно связывать, чтоб этот компонент управлял осью Z?

Re: Полноценная стойка на стол плазменного раскроя на базе Е

Добавлено: 27 дек 2012, 15:58
Nick
Что-то не могу найти, где-то я в общих словах это уже описывал...

сигнал на который на пины приходит это постоянный сигнал или дискретный.
Т.е.:
1. пока на пине up висит 1 постоянно поднимаем
или
2. на пине up появилась 1 подняли на 0.1мм, потом ждем 0 и снова 1 для еще 0.1

Re: Полноценная стойка на стол плазменного раскроя на базе Е

Добавлено: 27 дек 2012, 16:10
lobzik
Пока на пине UP висит 1 поднимаем

Re: Полноценная стойка на стол плазменного раскроя на базе Е

Добавлено: 27 дек 2012, 18:29
Nick
примерно так:

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

# делаем пин который будет тикать раз в servo-thread, not раз в период будет менять свое значение.
loadrt not names=timer
addf timer servo-thread 
net timer <= timer.out => timer.in

# загружаем два and  - они будут в качестве масок для таймера. 
loadrt and2 names=and.up, and.down 
addf and.up servo-thread 
addf and.down servo-thread 

# загружаем updown
loadrt updown names=updown.thc 
addf updown.thc  servo-thread

# загружаем sum2
loadrt sum2 names=sum2.thc

# теперь на выходе and.up.out будут 10101010 только если на пине up есть 1. 
net timer => and.up.in0 
net up-pin => and.up.in1  
# подключаем пины updown.thc 
net andup <= and.up.out => updown.thc.countup

# тоже самое с down
net timer => and.down.in0 
net down-pin => and.down.in1  
# подключаем пины updown.thc 
net anddown <= and.down.out => updown.thc.countdown

# настраиваем updown максимум и минимум, помноженные на коэффициент суммы ниже
setp updown.thc.max 10000 
setp updown.thc.min -10000 
setp updown.thc.wrap 0

#теперь к сумме:
net updownd <= updown.thc.count => sum2.thc.in0
net z-cmd <= axis.2.motor-pos-cmd => sum2.thc.in1 
# множитель для thc (в среднем скорость будет 500 единиц в секунду, т.е. 0.001 = 0.5 мм/сек)
setp sum2.thc.gain0 0.001

net z-motor-cmd <= sum2.thc.out => stepgen.2.position-cmd
Вроде более менее все.
Останется убрать предыдущую строку с axis.2.motor-pos-cmd и добавить пины к up-pin и down-pin.

Re: Полноценная стойка на стол плазменного раскроя на базе Е

Добавлено: 10 янв 2013, 15:12
lobzik
Попробовал код, немного подправил, EMC загрузился, но не работает ось Z, Как только пытаюсь ей "пошевелить" выпадает ошибка: joint 2 following error

Re: Полноценная стойка на стол плазменного раскроя на базе Е

Добавлено: 10 янв 2013, 16:42
Nick
А ты с нее обратную связь не отключил? Покаж hal.

Re: Полноценная стойка на стол плазменного раскроя на базе Е

Добавлено: 10 янв 2013, 16:58
lobzik

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

# Include your customized HAL commands here

setp halui.jog-speed 300
 # the jogging from the buttons
net remote-jog-x-plus halui.jog.0.plus <= gladevcp.hal_button6
net remote-jog-x-minus halui.jog.0.minus <= gladevcp.hal_button4

net remote-jog-y-plus halui.jog.1.plus <= gladevcp.hal_button2
net remote-jog-y-minus halui.jog.1.minus <= gladevcp.hal_button8

net remote-jog-z-plus halui.jog.2.plus <= gladevcp.hal_button3
net remote-jog-z-minus halui.jog.2.minus <= gladevcp.hal_button9

#Пробник высотомер
net pen-height => motion.analog-in-00
net pen-height <= gladevcp.hal_spinbutton1-f



#Задержка антидребезг
unlinkp parport.0.pin-11-in-not
unlinkp motion.probe-input
net probe-filter => motion.probe-input
loadrt debounce cfg=1
addf debounce.0 base-thread
setp debounce.0.delay  100
net probe-raw parport.0.pin-11-in-not => debounce.0.0.in
net probe-filter <= debounce.0.0.out
net probe-filter => gladevcp.hal_led1

net u_thc => gladevcp.hal_spinbutton2-f
net u_thc => gladevcp.hal_meter1

#Компонент updown
# делаем пин который будет тикать раз в servo-thread, not раз в период будет менять свое значение.
loadrt not names=timer
addf timer servo-thread 
net timer <= timer.out => timer.in

# загружаем два and  - они будут в качестве масок для таймера. 
loadrt and2 names=and.up,and.down 
addf and.up servo-thread 
addf and.down servo-thread 

# загружаем updown
loadrt updown names=updown.thc 
addf updown.thc  servo-thread

# загружаем sum2
loadrt sum2 names=sum2.thc


# теперь на выходе and.up.out будут 10101010 только если на пине up есть 1. 
net timer => and.up.in0 
net up-pin => and.up.in1  
# подключаем пины updown.thc 
net andup <= and.up.out => updown.thc.countup

# тоже самое с down
net timer => and.down.in0 
net down-pin => and.down.in1  
# подключаем пины updown.thc 
net anddown <= and.down.out => updown.thc.countdown

# настраиваем updown максимум и минимум, помноженные на коэффициент суммы ниже
setp updown.thc.max 10000 
setp updown.thc.min -10000 
setp updown.thc.wrap 0
##########
unlinkp axis.2.motor-pos-cmd
unlinkp stepgen.2.position-cmd

#теперь к сумме:
net updownd  <=sum2.thc.in0  updown.thc.count  
net z-cmd <= axis.2.motor-pos-cmd => sum2.thc.in1 
# множитель для thc (в среднем скорость будет 500 единиц в секунду, т.е. 0.001 = 0.5 мм/сек)
setp sum2.thc.gain0 0.001

net z-motor-cmd <= sum2.thc.out => stepgen.2.position-cmd

net up-pin parport.0.pin-12-in-not
net down-pin parport.0.pin-13-in-not
Вот он.

Re: Полноценная стойка на стол плазменного раскроя на базе Е

Добавлено: 10 янв 2013, 17:50
Nick
И основной еще давай!
В двух словах: надо отключить feedback оси Z от stepgen и выдавать на него тот же z-cmd. Это не очень хорошо, т.к. мы реально не знаем куда может уехать ось.

Или можно сделать так: если знаем пределы до которых должен работать THC, скажем +-5см, то просто поставь в ini в [AXIS_2] FERROR = 50 и все.

Re: Полноценная стойка на стол плазменного раскроя на базе Е

Добавлено: 11 янв 2013, 10:59
lobzik
Вот основной HAL

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

# Создан stepconf в Wed Dec 19 16:38:53 2012
# Все изменения в этом файле будут перезаписаны
# при следующем запуске 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

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
net spindle-cmd <= motion.spindle-speed-out
net spindle-cw <= motion.spindle-forward

net probe-in => motion.probe-input


net xstep => parport.0.pin-02-out
setp parport.0.pin-02-out-reset 1
setp parport.0.pin-03-out-invert 1
net xdir => parport.0.pin-03-out
net ystep => parport.0.pin-04-out
setp parport.0.pin-04-out-reset 1
setp parport.0.pin-05-out-invert 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 estop-out => parport.0.pin-14-out
setp parport.0.pin-16-out-invert 1
net spindle-cw => parport.0.pin-16-out
setp parport.0.pin-17-out-invert 1
net spindle-cw => parport.0.pin-17-out


net all-home <= parport.0.pin-10-in
net probe-in <= parport.0.pin-11-in-not


setp stepgen.0.position-scale [AXIS_0]SCALE
setp stepgen.0.steplen 1
setp stepgen.0.stepspace 0
setp stepgen.0.dirhold 43000
setp stepgen.0.dirsetup 43000
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-home => axis.0.home-sw-in

setp stepgen.1.position-scale [AXIS_1]SCALE
setp stepgen.1.steplen 1
setp stepgen.1.stepspace 0
setp stepgen.1.dirhold 43000
setp stepgen.1.dirsetup 43000
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-home => axis.1.home-sw-in

setp stepgen.2.position-scale [AXIS_2]SCALE
setp stepgen.2.steplen 1
setp stepgen.2.stepspace 0
setp stepgen.2.dirhold 43000
setp stepgen.2.dirsetup 43000
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-home => axis.2.home-sw-in

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

Re: Полноценная стойка на стол плазменного раскроя на базе Е

Добавлено: 11 янв 2013, 12:19
Nick
Значит, либо вот эту строчки добавить:

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

unlinkp axis.2.motor-pos-fb
net z-cmd => axis.2.motor-pos-fb
Но, лучше наверное FFERROR для оси Z увеличить. Так на экране будет показываться реальная координата оси и вообще лучше будет....

Re: Полноценная стойка на стол плазменного раскроя на базе Е

Добавлено: 11 янв 2013, 14:04
lobzik
Ничего не получилось, при ручном управлении положение оси на экране меняется, двигатель не крутится :(