UAVpilot писал(а):Прикрутил бы свой BlackBox и сделал бы активацию пином,
Почитал что это такое, пока сложновато для меня. Пошел более простым, но муторным методом- стал отключать по 1 строчке в hal файле до устранения неисправности.
Вечером нашел такую.
atomichammer писал(а):Вот он и тупит как раз над этой строчкой F8000.
Так это "линейное" перемещение 4 оси. обороты задаются в конце строчкой m3S100 . но ты оказался прав
atomichammer писал(а): Частотник с обратной связью? Можно глянуть пин spindle-at-speed
Да. в качестве привода серва и энкодер с нее заведен в linuxcnc .
Снял видео ,там действительно оказалось подключенный пин spindle-at-speed к выходу таймера является причиной бага. Если его закоментировать - все работает отлично:
https://www.youtube.com/watch?v=3KirZBspMqg
На мой взгляд какая то логическая ошибка, ибо:
1. В коде нет синхронного перемещения со шпинделем. Тоесть включен он или нет не должно мешать перемещению осей.
2. Почему задержка включения этого сигнала может влиять на часть кода где вообще нет управлением шпинделем ?
3. Почему это же не мешает проходить программе в первый раз.
Задержка мне необходима, оттого вопрос. как это победить?
Прикладываю текст hal файла:
Код: Выделить всё
# прутковый автомат февраль 2019
loadrt trivkins
loadrt [EMCMOT]EMCMOT base_period_nsec=[EMCMOT]BASE_PERIOD servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[TRAJ]AXES
loadrt hal_parport cfg="0 out"
setp parport.0.reset-time 5000
loadrt stepgen step_type=0,0,0
loadrt encoder num_chan=1
loadrt scale count=1
loadrt lut5
loadrt pwmgen output_type=1
loadrt timedelay count=2
loadrt or2 count=1
addf parport.0.read base-thread
addf stepgen.make-pulses base-thread
addf encoder.update-counters 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 encoder.capture-position servo-thread
addf motion-command-handler servo-thread
addf motion-controller servo-thread
addf stepgen.update-freq servo-thread
addf lut5.0 servo-thread
addf pwmgen.update servo-thread
addf scale.0 servo-thread
addf timedelay.0 servo-thread
addf timedelay.1 servo-thread
addf or2.0 servo-thread
#----------- SPINDEL ----------------------------------
setp pwmgen.0.pwm-freq 100.0
setp pwmgen.0.scale 3687.5
setp pwmgen.0.offset 0.0864406779661
setp pwmgen.0.dither-pwm true
net spindle-cmd-rpm <= motion.spindle-speed-out
net spindle-cmd-rpm-abs <= motion.spindle-speed-out-abs
net spindle-cmd-rps <= motion.spindle-speed-out-rps
net spindle-cmd-rps-abs <= motion.spindle-speed-out-rps-abs
net spindle-cmd-rpm => pwmgen.0.value
net spindle-on <= motion.spindle-on => pwmgen.0.enable
net spindle-pwm <= pwmgen.0.pwm
net spindle-pwm => parport.0.pin-04-out
setp parport.0.pin-04-out-invert TRUE
#----- encoder spindle
net spindle-phase-a <= parport.0.pin-10-in
net spindle-phase-b <= parport.0.pin-11-in
net spindle-index <= parport.0.pin-12-in-not
net spindle-phase-a => encoder.0.phase-A
net spindle-phase-b => encoder.0.phase-B
net spindle-index => encoder.0.phase-Z
setp encoder.0.index-enable 1
setp encoder.0.counter-mode true
setp encoder.0.position-scale 40
net spindle-position encoder.0.position => motion.spindle-revs
net spindle-index-enable encoder.0.index-enable <=> motion.spindle-index-enable
net spindle-velocity-feedback-rps encoder.0.velocity => motion.spindle-speed-in
setp scale.0.gain 60
net spindle-velocity-feedback-rps => scale.0.in
net spindle-velocity-feedback-rpm <= scale.0.out
#------ Управление питанием сервы c задержкой по выключнию-----------
setp timedelay.0.on-delay 0
setp timedelay.0.off-delay 1.4
net spindle-on => timedelay.0.in
net spindle_timer timedelay.0.out => or2.0.in0
net servo_position_mode => or2.0.in1
net servo_on <= or2.0.out
setp parport.0.pin-16-out-invert 1
net servo_on => parport.0.pin-16-out
net servo_position_mode <= motion.digital-out-00
net servo_position_mode => parport.0.pin-03-out
#------- задержка установки сигнала spindle-at-speed
setp timedelay.1.on-delay 2
setp timedelay.1.off-delay 0
net spindle-on => timedelay.1.in
#net spindle-at-speed <= timedelay.1.out
net spindle-at-speed => motion.spindle-at-speed
#----- подач СОЖ----------
net coolant-mist <= iocontrol.0.coolant-mist
net coolant-flood <= iocontrol.0.coolant-flood
net coolant-flood => parport.0.pin-17-out
#--------------- Homing --------------------
net all-limit-home <= parport.0.pin-13-in
setp lut5.0.function 0x10000
net all-limit-home => lut5.0.in-4
net all-limit <= lut5.0.out
net homing-x <= axis.0.homing => lut5.0.in-0
net homing-z <= axis.2.homing => lut5.0.in-2
#------------------ ось X --------------------
net xenable => parport.0.pin-09-out
net xstep => parport.0.pin-02-out
setp parport.0.pin-02-out-reset 1
net xdir => parport.0.pin-14-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 all-limit-home => axis.0.home-sw-in
net all-limit => axis.0.neg-lim-sw-in
net all-limit => axis.0.pos-lim-sw-in
#----------------- ось Z --------------------
net zstep => parport.0.pin-07-out
setp parport.0.pin-07-out-reset 1
net zdir => parport.0.pin-08-out
setp stepgen.1.position-scale [AXIS_2]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_2]STEPGEN_MAXACCEL
net zpos-cmd axis.2.motor-pos-cmd => stepgen.1.position-cmd
net zpos-fb stepgen.1.position-fb => axis.2.motor-pos-fb
net zstep <= stepgen.1.step
net zdir <= stepgen.1.dir
net zenable axis.2.amp-enable-out => stepgen.1.enable
net all-limit-home => axis.2.home-sw-in
net all-limit => axis.2.neg-lim-sw-in
net all-limit => axis.2.pos-lim-sw-in
#----------------- ось C --------------------
net cdir => parport.0.pin-05-out
net cstep => parport.0.pin-06-out
setp parport.0.pin-06-out-reset 1
setp stepgen.2.position-scale [AXIS_5]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_5]STEPGEN_MAXACCEL
net cpos-cmd axis.5.motor-pos-cmd => stepgen.2.position-cmd
net cpos-fb stepgen.2.position-fb => axis.5.motor-pos-fb
net cstep <= stepgen.2.step
net cdir <= stepgen.2.dir
net cenable axis.5.amp-enable-out => stepgen.2.enable
net all-limit-home => axis.5.home-sw-in
net all-limit => axis.5.neg-lim-sw-in
net all-limit => axis.5.pos-lim-sw-in
#--------------- Стоп сигнал --------------------
net estop-out <= iocontrol.0.user-enable-out
net estop-out => iocontrol.0.emc-enable-in
#--------------- смена инструмента без потверждения--------------------
net tool-prep-loop iocontrol.0.tool-prepare iocontrol.0.tool-prepared
net tool-change-loop iocontrol.0.tool-change iocontrol.0.tool-changed