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

Re: emc2 и со2 лазер

Добавлено: 28 янв 2014, 23:09
nkp
gendos писал(а):И вот это не пойму чтобы можно было отключать - надо еще один or2 и на него вывести выход toggle и motion.digital-out-XX
(для просмотра содержимого нажмите на ссылку)

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

# Создан stepconf в Wed Oct  9 22:06:44 2013
# Все изменения в этом файле будут перезаписаны
# при следующем запуске stepconf
loadrt core_xy_kins
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 3500
loadrt stepgen step_type=0,0,0
loadrt abs count=1
loadrt pwmgen output_type=1
loadrt scale names=scale.spindle

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 scale.spindle servo-thread
addf pwmgen.update servo-thread
addf abs.0 servo-thread

#==================================================
        loadrt wcomp
    loadrt integ
    loadrt toggle
    loadrt edge
    
    loadrt or2 
    addf or2.0 servo-thread 
     
    addf wcomp.0 servo-thread
    addf integ.0 servo-thread
    addf toggle.0 servo-thread
    addf edge.0 servo-thread

    net current-vel integ.0.in
    net res integ.0.reset wcomp.0.over  edge.0.in 
    net ss  integ.0.out wcomp.0.in
    setp wcomp.0.max 1
    net e_out edge.0.out  toggle.0.in
    setp edge.0.out-width-ns 50
    
loadrt and2
addf and2.0 servo-thread

net spindle-cmd <= motion.spindle-speed-out 
    net spindle-cmd => scale.spindle.in

    net current-vel <= motion.current-vel
    net current-vel => scale.spindle.gain

    net spindle-cmd-out <= scale.spindle.out
    net spindle-cmd-out => pwmgen.0.value




net spindle-on <= motion.spindle-on => and2.0.in0
net enbl   and2.0.out  pwmgen.0.enable
net s_out toggle.0.out or2.0.in1 
net or_out or2.0.out  and2.0.in1
net digital_out motion.digital-out-00 or2.0.in0
#-----------------------------------------------------------
net spindle-pwm <= pwmgen.0.pwm

setp pwmgen.0.pwm-freq 1000
setp pwmgen.0.scale 10000000
setp pwmgen.0.offset 0.01

#setp pwmgen.0.pwm-freq 100.0
#setp pwmgen.0.scale 701666.6666667
#setp pwmgen.0.offset 0.01
setp pwmgen.0.dither-pwm true
net spindle-cw <= motion.spindle-forward
#net probe-in => motion.probe-input

net estop-out => parport.0.pin-01-out
setp parport.0.pin-02-out-invert 1
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
setp parport.0.pin-04-out-invert 1
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
setp parport.0.pin-06-out-invert 1
net zstep => parport.0.pin-06-out
setp parport.0.pin-06-out-reset 1
setp parport.0.pin-07-out-invert 1
net zdir => parport.0.pin-07-out
setp parport.0.pin-14-out-invert 1
net spindle-cw => parport.0.pin-14-out
setp parport.0.pin-16-out-invert 1
net spindle-pwm => parport.0.pin-16-out


setp parport.0.pin-17-out-invert 1
#net xenable => parport.0.pin-17-out



#net probe-in <= parport.0.pin-10-in











net probe parport.0.pin-10-in-not => motion.probe-input
net probe-in <= parport.0.pin-10-in


net all-limit <= parport.0.pin-11-in-not
net home-z <= parport.0.pin-12-in-not






setp stepgen.1.position-scale [AXIS_0]SCALE
setp stepgen.1.steplen 1
setp stepgen.1.stepspace 0
setp stepgen.1.dirhold 10200
setp stepgen.1.dirsetup 10200
setp stepgen.1.maxaccel [AXIS_0]STEPGEN_MAXACCEL
net xpos-cmd axis.0.motor-pos-cmd => stepgen.1.position-cmd
net xpos-fb stepgen.1.position-fb => axis.0.motor-pos-fb
net xstep <= stepgen.1.step
net xdir <= stepgen.1.dir
net xenable axis.0.amp-enable-out => stepgen.1.enable
net all-limit => axis.1.neg-lim-sw-in
net all-limit => axis.1.pos-lim-sw-in



setp stepgen.0.position-scale [AXIS_1]SCALE
setp stepgen.0.steplen 1
setp stepgen.0.stepspace 0
setp stepgen.0.dirhold 10200
setp stepgen.0.dirsetup 10200
setp stepgen.0.maxaccel [AXIS_1]STEPGEN_MAXACCEL
net ypos-cmd axis.1.motor-pos-cmd => stepgen.0.position-cmd
net ypos-fb stepgen.0.position-fb => axis.1.motor-pos-fb
net ystep <= stepgen.0.step
net ydir <= stepgen.0.dir
net yenable axis.1.amp-enable-out => stepgen.0.enable

net all-limit => axis.0.neg-lim-sw-in
net all-limit => axis.0.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 10200
setp stepgen.2.dirsetup 10200
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 home-z => 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-out => iocontrol.0.emc-enable-in
















net tool-number <= iocontrol.0.tool-prep-number
net tool-change-loopback iocontrol.0.tool-change => iocontrol.0.tool-changed
net tool-prepare-loopback iocontrol.0.tool-prepare => iocontrol.0.tool-prepared
пробовать вкл M64 P0
выкл M65 P0

Re: emc2 и со2 лазер

Добавлено: 28 янв 2014, 23:33
gendos
nkp писал(а):пробовать вкл G64 P0
выкл G65 P0
Пишет использован неизвестный G код

Re: emc2 и со2 лазер

Добавлено: 28 янв 2014, 23:36
nkp
позновато уже :oops:
M64P0
M65 P0
========
подправлю вверху...

Re: emc2 и со2 лазер

Добавлено: 29 янв 2014, 12:19
gendos
В Ростове завалило все снегом , не смог сегодня добраться на работу, так как проверить на лазере не могу
хотел заняться настройкой EMC2.
Хочу добавить на панель индикаторов на которые вывести данные например с spindle-cmd-out ,
current-vel ,мощность лазера и другие какие могут понадобиться при работе и настройке
Индикаторы типа таких как на фото, или другие.
Как это можно сделать ?

Re: emc2 и со2 лазер

Добавлено: 29 янв 2014, 13:35
Nick
0. Устанавливаешь Glade (sudo apt-get install glade)
1. создаешь панель в GladeVCP
2. привязываешь пины в custom_postgui.hal
(http://linuxcnc.org/docs/html/gui/gladevcp.html)

Re: emc2 и со2 лазер

Добавлено: 29 янв 2014, 15:24
gendos
Nick писал(а):0. Устанавливаешь Glade (sudo apt-get install glade)
1. создаешь панель в GladeVCP
2. привязываешь пины в custom_postgui.hal
(http://linuxcnc.org/docs/html/gui/gladevcp.html)
Просмотрел.Понял что это для меня сложновато.
Я думал что можно взять за образец какую нибудь конфигурацию , выдернуть от туда индикатор и прописать
параметр который он может отображать и все.
Так что я думаю мне можно без этого обойтись.
А то меня уже время поджимает скоро лето людям нужна обувь с гравировкой и перфорацией.

Re: emc2 и со2 лазер

Добавлено: 29 янв 2014, 16:48
Nick
Да там просто все - рисуешь индикаторы, ставишь им всякие параметры и приписываешь пины и все.
Можно еще на pyvcp сделать - там проще
http://www.linuxcnc.org/docs/2.4/html/h ... tml#r1_6_4
Смотри пункт 1.6.4.5

Re: emc2 и со2 лазер

Добавлено: 29 янв 2014, 17:27
gendos
Вставил в custompanel.xml
<meter>
<halpin>"mymeter"</halpin>
<text>"cmd-out"</text>
<subtext>" "</subtext>
<size>250</size>
<min_>0</min_>
<max_>15.5</max_>
<majorscale>1</majorscale>
<minorscale>0.2</minorscale>
<region1>(14.5,15.5,"yellow")</region1>
<region2>(12,14.5,"green")</region2>
<region3>(0,12,"red")</region3>
</meter>
получил индикатор типа спидометра, как прописать в хал ,чтоб там отображалось например spindle-cmd-out
или ссылку как это сделать ,а то в английском трудно найти нужное место.

Re: emc2 и со2 лазер

Добавлено: 29 янв 2014, 18:34
Serg
Примерно так:
net spindle-cmd-out pyvcp.mymeter

Re: emc2 и со2 лазер

Добавлено: 29 янв 2014, 20:09
gendos
Удалил индикатор спидометр ,чтоб не усложнять для себя задачу.
Оставил один индикатор.
Понял что показания на него задаются такой строкой
net spindle-cmd => abs.0.in
net absolute-spindle-vel <= abs.0.out => pyvcp.spindle-speed
Могу ее изменять и он будет показывать разные сигналы.
Посоветуйте какие мне сигналы могут понадобиться при настройке лазера и как они
пишутся. Потом создам нужное количество индикаторов.

Re: emc2 и со2 лазер

Добавлено: 30 янв 2014, 17:19
gendos
nkp писал(а):пробовать вкл M64 P0
выкл M65 P0
Добрался сегодня до лазера , проверил все работает.
Получилось подобрать параметры
setp pwmgen.0.pwm-freq 10000
setp pwmgen.0.scale 100000
setp pwmgen.0.offset 0.034
Вот рабочий ХАЛ
Все устраивает ,так что теперь не нужно добавлять ни каких индикаторов.
Вся информация о мощности и типа линии будет в G коде.
Есть один небольшой недостаток, визуально на коже пунктир смотрится красивее если прожиг длиннее чем
пауза . Может есть возможность сделать паузу раза в два короче ?
Но и без этого я думаю на обуви будет неплохо смотреться пунктир. Спасибо .

Re: emc2 и со2 лазер

Добавлено: 30 янв 2014, 17:51
nkp
gendos писал(а):Может есть возможность сделать паузу раза в два короче ?
почему бы не попробовать :thinking:
подправим...

Re: emc2 и со2 лазер

Добавлено: 30 янв 2014, 18:43
nkp
попробуй :
(для просмотра содержимого нажмите на ссылку)

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

    # Создан stepconf в Wed Oct  9 22:06:44 2013
    # Все изменения в этом файле будут перезаписаны
    # при следующем запуске stepconf
    loadrt core_xy_kins
    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 3500
    loadrt stepgen step_type=0,0,0
    loadrt abs count=1
    loadrt pwmgen output_type=1
    loadrt scale names=scale.spindle

    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 scale.spindle servo-thread
    addf pwmgen.update servo-thread
    addf abs.0 servo-thread

    #==================================================
            loadrt wcomp
        loadrt integ
        loadrt toggle
        loadrt edge
        
        loadrt or2 
         
        loadrt mux2
        addf   mux2.0 servo-thread 
        setp mux2.0.in0 1.5  #длина стежка 
        setp mux2.0.in1 .75  #расстояние между стежками
        
        addf or2.0 servo-thread 
         
        addf wcomp.0 servo-thread
        addf integ.0 servo-thread
        addf toggle.0 servo-thread
        addf edge.0 servo-thread

        net current-vel integ.0.in
        net res integ.0.reset wcomp.0.over  edge.0.in 
        net ss  integ.0.out wcomp.0.in
        setp wcomp.0.max 1.5
        net e_out edge.0.out  toggle.0.in
        setp edge.0.out-width-ns 50
        
    loadrt and2
    addf and2.0 servo-thread

    net spindle-cmd <= motion.spindle-speed-out 
        net spindle-cmd => scale.spindle.in

        net current-vel <= motion.current-vel
        net current-vel => scale.spindle.gain

        net spindle-cmd-out <= scale.spindle.out
        net spindle-cmd-out => pwmgen.0.value

    net spindle-on <= motion.spindle-on => and2.0.in0
    net enbl   and2.0.out  pwmgen.0.enable
    net s_out toggle.0.out or2.0.in1 
    net or_out or2.0.out  and2.0.in1
    net digital_out motion.digital-out-00 or2.0.in0
    
    net s_out mux2.0.sel
    net l_step  wcomp.0.max  mux2.0.out
    #-----------------------------------------------------------
    net spindle-pwm <= pwmgen.0.pwm

    setp pwmgen.0.pwm-freq 10000
    setp pwmgen.0.scale 100000
    setp pwmgen.0.offset 0.034

    setp pwmgen.0.dither-pwm true
    net spindle-cw <= motion.spindle-forward
    #net probe-in => motion.probe-input

    net estop-out => parport.0.pin-01-out
    setp parport.0.pin-02-out-invert 1
    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
    setp parport.0.pin-04-out-invert 1
    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
    setp parport.0.pin-06-out-invert 1
    net zstep => parport.0.pin-06-out
    setp parport.0.pin-06-out-reset 1
    setp parport.0.pin-07-out-invert 1
    net zdir => parport.0.pin-07-out
    setp parport.0.pin-14-out-invert 1
    net spindle-cw => parport.0.pin-14-out
    setp parport.0.pin-16-out-invert 1
    net spindle-pwm => parport.0.pin-16-out


    setp parport.0.pin-17-out-invert 1
    #net xenable => parport.0.pin-17-out

    net probe parport.0.pin-10-in-not => motion.probe-input
    net probe-in <= parport.0.pin-10-in
    net all-limit <= parport.0.pin-11-in-not
    net home-z <= parport.0.pin-12-in-not

    setp stepgen.1.position-scale [AXIS_0]SCALE
    setp stepgen.1.steplen 1
    setp stepgen.1.stepspace 0
    setp stepgen.1.dirhold 10200
    setp stepgen.1.dirsetup 10200
    setp stepgen.1.maxaccel [AXIS_0]STEPGEN_MAXACCEL
    net xpos-cmd axis.0.motor-pos-cmd => stepgen.1.position-cmd
    net xpos-fb stepgen.1.position-fb => axis.0.motor-pos-fb
    net xstep <= stepgen.1.step
    net xdir <= stepgen.1.dir
    net xenable axis.0.amp-enable-out => stepgen.1.enable
    net all-limit => axis.1.neg-lim-sw-in
    net all-limit => axis.1.pos-lim-sw-in

    setp stepgen.0.position-scale [AXIS_1]SCALE
    setp stepgen.0.steplen 1
    setp stepgen.0.stepspace 0
    setp stepgen.0.dirhold 10200
    setp stepgen.0.dirsetup 10200
    setp stepgen.0.maxaccel [AXIS_1]STEPGEN_MAXACCEL
    net ypos-cmd axis.1.motor-pos-cmd => stepgen.0.position-cmd
    net ypos-fb stepgen.0.position-fb => axis.1.motor-pos-fb
    net ystep <= stepgen.0.step
    net ydir <= stepgen.0.dir
    net yenable axis.1.amp-enable-out => stepgen.0.enable

    net all-limit => axis.0.neg-lim-sw-in
    net all-limit => axis.0.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 10200
    setp stepgen.2.dirsetup 10200
    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 home-z => 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-out => iocontrol.0.emc-enable-in

    net tool-number <= iocontrol.0.tool-prep-number
    net tool-change-loopback iocontrol.0.tool-change => iocontrol.0.tool-changed
    net tool-prepare-loopback iocontrol.0.tool-prepare => iocontrol.0.tool-prepared

Re: emc2 и со2 лазер

Добавлено: 30 янв 2014, 19:16
gendos
Завтра на лазере попробую.

Re: emc2 и со2 лазер

Добавлено: 31 янв 2014, 09:21
Nick
О, через mux, интересненько, я до этого не сразу дошел! :good:
nkp писал(а):setp wcomp.0.max 1.5
Наверное вместо этого надо было написать:

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

net wcomp-max <= mux2.0.out => wcomp.0.max


--------
нашел, это уже есть :good:

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

    net s_out mux2.0.sel
    net l_step  wcomp.0.max  mux2.0.out

Re: emc2 и со2 лазер

Добавлено: 31 янв 2014, 18:45
gendos
Проверил , все работает , только длина стежка это расстояние между стежками, а расстояние между стежками это
длина стежка
setp mux2.0.in0 1.5 #длина стежка
setp mux2.0.in1 .75 #расстояние между стежками

Re: emc2 и со2 лазер

Добавлено: 31 янв 2014, 22:48
gendos
nkp писал(а):
gendos писал(а):что бы станок не запускался пока не найдены ноли.
как вариант в конец ж-кода поиска нулей дописывать строку:
M64 P00
а запускать станок через кнопку halui.machine.on , которая проверяет motion.digital-out-00
(пин motion.digital-out-00 делает активным команда M64 P00)
то есть , пока не выполнен наш ж-код до конца - halui.machine.on не может запуститьпрограмму
зы
но ручные режимы и mdi будут работать (что не есть хорошо)
наверно можно придумать более полное решение...
В другой теме я спрашивал как сделать чтоб G код файла гравировки не запускался пока не будет
выполнен G код поиска ноля.Реализовать не пробовал.Сейчас хочу вернуться к этому вопросу здесь.
Вот мой G код поиска ноля
G38.4 Y1000 F5000
G38.2 Y-1000 F150
G92 Y5
G0 Y0
g92 y60
G38.4 X-1000 F5000
G38.2 X1000 F150
G92 X-64.5
g0 x0y0
M30
Я могу туда добавить в конец M64 P00 , а что делать с "а запускать станок через кнопку halui.machine.on , которая проверяет motion.digital-out-00 "
И подходит ли этот метод в связи с последними изменениями в HAL ?

Re: emc2 и со2 лазер

Добавлено: 01 фев 2014, 21:30
nkp
наверно я думал тогда про запуск G-кода через пин halui.program.run :thinking:
у этого решения есть минусы (уже не раз с этим сталкивались)
после активации пина motion.digital-out-01 командой M64 P01 он остается True пока его не "выключить" M65P01 ...
получается , возможны различные ситуации,где наша система ограничения работать не будет(например после авост)
================

Re: emc2 и со2 лазер

Добавлено: 01 фев 2014, 21:42
gendos
Я хочу хоть как то застраховаться от того случая, когда оператор забудет запустить
G код поиска ноля и включит файл гравировки. Я не сделал конечных выключателей.
Лазер может с разгону удариться и собьется настройка зеркал.
Поэтому другими ситуациями когда ограничение не будет работать можно принебречь

Re: emc2 и со2 лазер

Добавлено: 01 фев 2014, 22:13
nkp
пока ничего лучшего не находится... ;)
(для просмотра содержимого нажмите на ссылку)
Выделение_026.png (2278 просмотров) <a class='original' href='./download/file.php?id=24237&mode=view' target=_blank>Загрузить оригинал (69.69 КБ)</a>
кнопкой "HOME" запускаем MDI-команду o<home1> call
для этого:
в ini добавляем

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

[HALUI]

MDI_COMMAND = o<home1>  call 
а в файл home1.ngc пишем наш код нахождения нулей:

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

o<home1> sub
G38.4 Y1000 F5000
G38.2 Y-1000 F150
G92 Y5
G0 Y0
g92 y60
G38.4 X-1000 F5000
G38.2 X1000 F150
G92 X-64.5
g0 x0y0
M64 P01
o<home1> endsub 
сам файл положить в папку с G-кодами
--------------
в ini в секции [HAL] должны быть строки:

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

[HAL]

HALUI = halui
POSTGUI_HALFILE  = postgui.hal
в postgui.hal:

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

net home1 halui.mdi-command-00 pyvcp.home1
#net p-start  halui.program.run pyvcp.p-start
net block-run axisui.block-run  motion.digital-out-01
postgui.hal конечно в папке конфига...
----------------
файл панельки:
5.xml
(353 байт) 782 скачивания
в ini (секция [DISPLAY]) добавляем :
PYVCP = 5.xml
+++++++++++
axis.rar
(27.16 КБ) 341 скачивание
в архиве файл axis
заменяем код в /usr/bin/axis