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

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

Добавлено: 27 янв 2013, 14:09
lobzik
Вобщем с горем пополам получилось перенести ЕМС 2 с макета на плазму, установил sheetcam, вырезал даже несколько деталей. Всем кто помогал огромное спасибо!!! Только вот качество реза конкретно ухудшилось :(
1. Из-за большого разгона-торможения плазма резак при смене направления движения замедляет скорость и прожигает больше металла. В маче была функция constant velociti, которая включала режим постоянной скорости, и резак проходил углы >90 с постоянной скоростью. Может можно зделать что-то подобное в ЕМС?
2. В углах плазмотрон клюет в метал, связано это опять же с замедлением движения, в маче с этим боролся отключением регулировки высоты, если ускорение больше 0
3. После переноса станка в другое место цеха появились люфты в осях, довольно заметные. Есть ли в ЕМС функция компенсации люфтов?

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

Добавлено: 29 янв 2013, 15:36
Nick
lobzik писал(а):1. Из-за большого разгона-торможения плазма резак при смене направления движения замедляет скорость и прожигает больше металла. В маче была функция constant velociti, которая включала режим постоянной скорости, и резак проходил углы >90 с постоянной скоростью. Может можно зделать что-то подобное в ЕМС?
Это все делается в Gкоде - режим G64: FAQ по Gcode, примеры #1
lobzik писал(а):2. В углах плазмотрон клюет в метал, связано это опять же с замедлением движения, в маче с этим боролся отключением регулировки высоты, если ускорение больше 0
Надо также? Сделаем :)
Вообще можно например поднимать плазматрон на маленьких скоростях.
В плазме мощность как-то можно регулировать?
lobzik писал(а):3. После переноса станка в другое место цеха появились люфты в осях, довольно заметные. Есть ли в ЕМС функция компенсации люфтов?
Да, есть. В ini в каждой оси можно написать backlash = значение люфта.
EMC2 Integrators Manual Перевод на русский язык #17

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

Добавлено: 25 ноя 2013, 22:36
yugles
Добрый вечер.
Установил конфигурацию такую, как в последних сообщениях.
THC работает, но мне необходимо сделать задержку включения THC на 0,5 - 2 секунды.
Нужно резать толстый металл. Вход с краю. Если не попасть очень точно на край металла,
отработка Up Down начинается раньше, чем резак начинает нормально резать.
И подпрыжка не отрабатывается при входе в середине листа - THC перехватывает управление
по Z сразу после включения плазмы.

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

Добавлено: 25 ноя 2013, 22:37
Nick
yugles писал(а):THC работает, но мне необходимо сделать задержку включения THC на 0,5 - 2 секунды.
Как выполнена компенсация? Есть ли отдельный пин ее включения?
Скорее всего надо делать через компонент timedelay http://linuxcnc.org/docs/2.5/html/man/m ... lay.9.html

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

Добавлено: 25 ноя 2013, 22:38
aftaev
yugles, на толстых металлах ТНС отключают вапЩе

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

Добавлено: 26 ноя 2013, 12:54
yugles
aftaev писал(а):на толстых металлах ТНС отключают вапЩе
При высоте реза над металлом 2-4 мм ТНС необходим. Идеально ровных листов наверно не бывает.
Отключать вручную не хочется. Деталей на листе может быть много.

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

Добавлено: 26 ноя 2013, 13:04
Nick
Скинь свои последние конфиги, посмотрим, как лучше сделать.

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

Добавлено: 26 ноя 2013, 13:09
yugles
Nick писал(а):Как выполнена компенсация? Есть ли отдельный пин ее включения?
Все, как несколькими постами выше.
Вот HAL

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

setp halui.jog-speed 3000
 # the jogging from the buttons
net remote-jog-x-plus halui.jog.0.plus <= gladevcp.hal_button1
net remote-jog-x-minus halui.jog.0.minus <= gladevcp.hal_button2

net remote-jog-y-plus halui.jog.1.plus <= gladevcp.hal_button3
net remote-jog-y-minus halui.jog.1.minus <= gladevcp.hal_button4

net remote-jog-z-plus halui.jog.2.plus <= gladevcp.hal_button5
net remote-jog-z-minus halui.jog.2.minus <= gladevcp.hal_button6

#Задержка антидребезг
unlinkp parport.0.pin-10-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-10-in-not => debounce.0.0.in
net probe-filter <= debounce.0.0.out
net probe-filter => gladevcp.hal_led1

#Компонент 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
addf sum2.thc  servo-thread


# теперь на выходе 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
unlinkp axis.2.motor-pos-fb
net z-cmd => axis.2.motor-pos-fb
loadrt conv_s32_float names=conv_s32_float.updown,conv_s32_float.mod
addf conv_s32_float.updown servo-thread

#теперь к сумме:
net conv-in => conv_s32_float.updown.in <= updown.thc.count
net conv-out => conv_s32_float.updown.out <= sum2.thc.in0

net z-cmd <= axis.2.motor-pos-cmd => sum2.thc.in1 
# множитель для thc (в среднем скорость будет 500 единиц в секунду, т.е. 0.001 = 2.5 мм/сек)
setp sum2.thc.gain0 0.002
#изменил - было = 0.002

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 
net up-pin => gladevcp.Led-MoveUp
net down-pin => gladevcp.Led-MoveDown

#ArcOk

net wait <= parport.0.pin-15-in 
net wait => motion.digital-in-00
net Arc-ok => gladevcp.Led-ArcOk

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

Добавлено: 26 ноя 2013, 13:15
yugles
Вся папка

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

Добавлено: 26 ноя 2013, 13:17
Nick
А нам совсем отключать, или просто команды игнорировать?
Просто может получиться так, что после вух секунд он потом резко куда-то рванет...

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

Добавлено: 26 ноя 2013, 13:30
yugles
Nick писал(а):А нам совсем отключать...
Я думаю игнорировать команды некоторое время.
Насчет "резко рванет" нужно пробовать. И добавить паузу (или стоп) выполнения программы
при касании металла датчиком probe.

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

Добавлено: 26 ноя 2013, 13:33
yugles
Забыл прикрепить файл постпроцессора для SheetCam

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

Добавлено: 26 ноя 2013, 13:38
yugles
Постпроцессор

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

Добавлено: 26 ноя 2013, 15:23
Nick
yugles писал(а):И добавить паузу (или стоп) выполнения программы
Хмм... можно на авост вставать... или делать feed hold... Или feedhold+отруб плазмы. Что лучше?

С задержкой должно быть примерно так:

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

setp halui.jog-speed 3000
 # the jogging from the buttons
net remote-jog-x-plus halui.jog.0.plus <= gladevcp.hal_button1
net remote-jog-x-minus halui.jog.0.minus <= gladevcp.hal_button2

net remote-jog-y-plus halui.jog.1.plus <= gladevcp.hal_button3
net remote-jog-y-minus halui.jog.1.minus <= gladevcp.hal_button4

net remote-jog-z-plus halui.jog.2.plus <= gladevcp.hal_button5
net remote-jog-z-minus halui.jog.2.minus <= gladevcp.hal_button6

#Задержка антидребезг
unlinkp parport.0.pin-10-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-10-in-not => debounce.0.0.in
net probe-filter <= debounce.0.0.out
net probe-filter => gladevcp.hal_led1

# загружаем timedelay для задержки включения thc
loadrt timedelay names=timedelay.thc
addf timedelay.thc servo-thread
# время до включения 1 сек
setp timedelay.thc.on-delay 1.0
setp timedelay.thc.off-delay 0
net [сюда сигнал включения плазмы] => timedelay.thc.in 

#Компонент 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,and.timer-mask 
addf and.timer-mask servo-thread
addf and.up servo-thread 
addf and.down servo-thread 

net timer => and.timer-mask.in0
net thc-delay <= timedelay.thc.in => and.timer-mask.in1
net timer-masked <= and.timer-mask.out

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

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


# теперь на выходе and.up.out будут 10101010 только если на пине up есть 1. 
net timer-masked => and.up.in0 

net up-pin => and.up.in1  
# подключаем пины updown.thc 
net andup <= and.up.out => updown.thc.countup

# тоже самое с down
net timer-masked => 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
unlinkp axis.2.motor-pos-fb
net z-cmd => axis.2.motor-pos-fb
loadrt conv_s32_float names=conv_s32_float.updown,conv_s32_float.mod
addf conv_s32_float.updown servo-thread

#теперь к сумме:
net conv-in => conv_s32_float.updown.in <= updown.thc.count
net conv-out => conv_s32_float.updown.out <= sum2.thc.in0

net z-cmd <= axis.2.motor-pos-cmd => sum2.thc.in1 
# множитель для thc (в среднем скорость будет 500 единиц в секунду, т.е. 0.001 = 2.5 мм/сек)
setp sum2.thc.gain0 0.002
#изменил - было = 0.002

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 
net up-pin => gladevcp.Led-MoveUp
net down-pin => gladevcp.Led-MoveDown

#ArcOk

net wait <= parport.0.pin-15-in 
net wait => motion.digital-in-00
net Arc-ok => gladevcp.Led-ArcOk
Что добавилось:
(сюда не забыть написать имя сигнала!)
Это компонент который добавляет задержку к сигналу включения плазмы, т.е. 1 на его выходе появится на 1 сек позже, чем включится плазма

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

# загружаем timedelay для задержки включения thc
loadrt timedelay names=timedelay.thc
addf timedelay.thc servo-thread
# время до включения 1 сек
setp timedelay.thc.on-delay 1.0
setp timedelay.thc.off-delay 0
net [сюда сигнал включения плазмы] => timedelay.thc.in 
Потом мы делаем and выхода этого компонента и нашего timer, т.е. когда на timedelay.out 0 - мы не считаем thc.
Изменились эти строки:

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

loadrt and2 names=and.up,and.down,and.timer-mask 
addf and.timer-mask servo-thread
И вот эти:

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

net timer => and.timer-mask.in0
net thc-delay <= timedelay.thc.in => and.timer-mask.in1
net timer-masked <= and.timer-mask.out
также потом заменили timer на timer-masked:

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

net timer-masked => and.up.in0 

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

Добавлено: 26 ноя 2013, 15:33
yugles
Спасибо Nick за быстрый ответ.
Буду пробовать.

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

Добавлено: 26 ноя 2013, 15:41
Nick
Там только проверить надо, наверняка у меня куча ошибок, как обычно... :freak: