Synchronizacia vretena
Napsal: 21. 8. 2020, 3:25
Zdravim, mam problem so synchr. vretena. Celkovo to funguje vyborne, zavit je presny, signaly index-enable a spindle-in-speed taktiez funguju, ale toto plati iba pri zavite na jeden krat. Ak chcem zavit spravit na 2 a viac krat tak mam problem so signalom index-enable a to preto, lebo enkoder z vretena mam externe upevneny (nie je to enkoder zo serva) a ten mam sprevodovany 1:4. A tu je problem. Vreteno zacne rezat druhy uber zo zavitu ale kedze mam enkoder sprevodovany 1:4 tak necaka na jednu otacku vretena ale otacku enkodera a druhy uber je uz mimo. Takze pocas jednej otacky vretena mam 4 krat signal index-enable
Vie niekto poradit ako na to?
HAL
loadrt trivkins
loadrt [EMCMOT]EMCMOT servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[TRAJ]AXES num_dio=22
loadrt hostmot2
loadrt hm2_pci config=" num_encoders=1 num_pwmgens=1 num_stepgens=6 sserial_port_0=0xxxxxxx "
setp hm2_5i25.0.watchdog.timeout_ns 10000000
loadrt abs names=abs.spindle
loadrt lowpass names=lowpass.spindle,lowpass_velocity
loadrt classicladder_rt numPhysInputs=15 numPhysOutputs=15 numS32in=10 numS32out=10 numFloatIn=10 numFloatOut=10
loadrt pid names=pid.x,pid.z,spindle-pid
loadrt encoder names=encspin_0
loadrt limit2 names=limit_speed
setp limit_speed.maxv 5000.0
addf hm2_5i25.0.read servo-thread
addf motion-command-handler servo-thread
addf motion-controller servo-thread
addf abs.spindle servo-thread
addf lowpass.spindle servo-thread
addf hm2_5i25.0.write servo-thread
addf spindle-pid.do-pid-calcs servo-thread
addf limit_speed servo-thread
#*******************
# SPINDLE S
#*******************
# Step Gen signals/setup
setp hm2_5i25.0.stepgen.03.dirsetup [SPINDLE_9]DIRSETUP
setp hm2_5i25.0.stepgen.03.dirhold [SPINDLE_9]DIRHOLD
setp hm2_5i25.0.stepgen.03.steplen [SPINDLE_9]STEPLEN
setp hm2_5i25.0.stepgen.03.stepspace [SPINDLE_9]STEPSPACE
setp hm2_5i25.0.stepgen.03.position-scale [SPINDLE_9]STEP_SCALE
setp hm2_5i25.0.stepgen.03.step_type 0
setp hm2_5i25.0.stepgen.03.control-type 1
setp hm2_5i25.0.stepgen.03.maxaccel [SPINDLE_9]MAX_ACCELERATION
setp hm2_5i25.0.stepgen.03.maxvel [SPINDLE_9]MAX_VELOCITY
net machine-is-enabled => hm2_5i25.0.stepgen.03.enable
net spindle-vel-cmd-rps => hm2_5i25.0.stepgen.03.velocity-cmd
# ---setup spindle control signals---
net spindle-vel-cmd-rps <= motion.spindle-speed-out-rps
net spindle-speed-cmd motion.spindle-speed-out => limit_speed.in
setp limit_speed.maxv 2300.0
net spindle-on <= motion.spindle-on
net spindle-cw <= motion.spindle-forward
net spindle-ccw <= motion.spindle-reverse
net spindle-brake <= motion.spindle-brake
net spindle-at-speed => motion.spindle-at-speed
net spindle-pos hm2_5i25.0.encoder.00.position => motion.spindle-revs
#riadenie resetovania snímača synchronizácia výstupu ovládačov pohybu
net spindle-index-enable motion.spindle-index-enable <=> hm2_5i25.0.encoder.00.index-enable
#net spindle-index-enable motion.spindle-index-enable <=> encspin_0.index-enable
# ---Encoder feedback signals/setup---
setp hm2_5i25.0.encoder.00.counter-mode 0
setp hm2_5i25.0.encoder.00.filter 1
setp hm2_5i25.0.encoder.00.index-invert 0
setp hm2_5i25.0.encoder.00.index-mask 0
setp hm2_5i25.0.encoder.00.index-mask-invert 0
setp hm2_5i25.0.encoder.00.scale [SPINDLE_9]ENCODER_SCALE
net spindle-phase-a encspin_0.phase-A <= hm2_5i25.0.encoder.00.input-a
net spindle-phase-b encspin_0.phase-B <= hm2_5i25.0.encoder.00.input-b
net spindle-index encspin_0.phase-Z <= hm2_5i25.0.encoder.00.input-index
#net spindle-index encspin_0.phase-Z <= hm2_5i25.0.7i76.0.0.input-20
loadrt scale names=scale_to_rpm
net spindle-rps-raw hm2_5i25.0.encoder.00.velocity lowpass_velocity.in
net spindle-rps-filtered lowpass_velocity.out scale_to_rpm.in motion.spindle-speed-in
net spindle-rpm-filtered scale_to_rpm.out
setp scale_to_rpm.gain 60
setp lowpass_velocity.gain .07
addf lowpass_velocity servo-thread
addf scale_to_rpm servo-thread
loadrt near names=near_speed
addf near_speed servo-thread
setp near_speed.scale 1.05
setp near_speed.difference 1
net spindle-speed-cmd => near_speed.in1
net spindle-rpm-filtered => near_speed.in2
net spindle-at-speed near_speed.out motion.spindle-at-speed
sets spindle-at-speed true
addf encoder.capture-position servo-thread
addf encoder.update-counters servo-thread
Vie niekto poradit ako na to?
HAL
loadrt trivkins
loadrt [EMCMOT]EMCMOT servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[TRAJ]AXES num_dio=22
loadrt hostmot2
loadrt hm2_pci config=" num_encoders=1 num_pwmgens=1 num_stepgens=6 sserial_port_0=0xxxxxxx "
setp hm2_5i25.0.watchdog.timeout_ns 10000000
loadrt abs names=abs.spindle
loadrt lowpass names=lowpass.spindle,lowpass_velocity
loadrt classicladder_rt numPhysInputs=15 numPhysOutputs=15 numS32in=10 numS32out=10 numFloatIn=10 numFloatOut=10
loadrt pid names=pid.x,pid.z,spindle-pid
loadrt encoder names=encspin_0
loadrt limit2 names=limit_speed
setp limit_speed.maxv 5000.0
addf hm2_5i25.0.read servo-thread
addf motion-command-handler servo-thread
addf motion-controller servo-thread
addf abs.spindle servo-thread
addf lowpass.spindle servo-thread
addf hm2_5i25.0.write servo-thread
addf spindle-pid.do-pid-calcs servo-thread
addf limit_speed servo-thread
#*******************
# SPINDLE S
#*******************
# Step Gen signals/setup
setp hm2_5i25.0.stepgen.03.dirsetup [SPINDLE_9]DIRSETUP
setp hm2_5i25.0.stepgen.03.dirhold [SPINDLE_9]DIRHOLD
setp hm2_5i25.0.stepgen.03.steplen [SPINDLE_9]STEPLEN
setp hm2_5i25.0.stepgen.03.stepspace [SPINDLE_9]STEPSPACE
setp hm2_5i25.0.stepgen.03.position-scale [SPINDLE_9]STEP_SCALE
setp hm2_5i25.0.stepgen.03.step_type 0
setp hm2_5i25.0.stepgen.03.control-type 1
setp hm2_5i25.0.stepgen.03.maxaccel [SPINDLE_9]MAX_ACCELERATION
setp hm2_5i25.0.stepgen.03.maxvel [SPINDLE_9]MAX_VELOCITY
net machine-is-enabled => hm2_5i25.0.stepgen.03.enable
net spindle-vel-cmd-rps => hm2_5i25.0.stepgen.03.velocity-cmd
# ---setup spindle control signals---
net spindle-vel-cmd-rps <= motion.spindle-speed-out-rps
net spindle-speed-cmd motion.spindle-speed-out => limit_speed.in
setp limit_speed.maxv 2300.0
net spindle-on <= motion.spindle-on
net spindle-cw <= motion.spindle-forward
net spindle-ccw <= motion.spindle-reverse
net spindle-brake <= motion.spindle-brake
net spindle-at-speed => motion.spindle-at-speed
net spindle-pos hm2_5i25.0.encoder.00.position => motion.spindle-revs
#riadenie resetovania snímača synchronizácia výstupu ovládačov pohybu
net spindle-index-enable motion.spindle-index-enable <=> hm2_5i25.0.encoder.00.index-enable
#net spindle-index-enable motion.spindle-index-enable <=> encspin_0.index-enable
# ---Encoder feedback signals/setup---
setp hm2_5i25.0.encoder.00.counter-mode 0
setp hm2_5i25.0.encoder.00.filter 1
setp hm2_5i25.0.encoder.00.index-invert 0
setp hm2_5i25.0.encoder.00.index-mask 0
setp hm2_5i25.0.encoder.00.index-mask-invert 0
setp hm2_5i25.0.encoder.00.scale [SPINDLE_9]ENCODER_SCALE
net spindle-phase-a encspin_0.phase-A <= hm2_5i25.0.encoder.00.input-a
net spindle-phase-b encspin_0.phase-B <= hm2_5i25.0.encoder.00.input-b
net spindle-index encspin_0.phase-Z <= hm2_5i25.0.encoder.00.input-index
#net spindle-index encspin_0.phase-Z <= hm2_5i25.0.7i76.0.0.input-20
loadrt scale names=scale_to_rpm
net spindle-rps-raw hm2_5i25.0.encoder.00.velocity lowpass_velocity.in
net spindle-rps-filtered lowpass_velocity.out scale_to_rpm.in motion.spindle-speed-in
net spindle-rpm-filtered scale_to_rpm.out
setp scale_to_rpm.gain 60
setp lowpass_velocity.gain .07
addf lowpass_velocity servo-thread
addf scale_to_rpm servo-thread
loadrt near names=near_speed
addf near_speed servo-thread
setp near_speed.scale 1.05
setp near_speed.difference 1
net spindle-speed-cmd => near_speed.in1
net spindle-rpm-filtered => near_speed.in2
net spindle-at-speed near_speed.out motion.spindle-at-speed
sets spindle-at-speed true
addf encoder.capture-position servo-thread
addf encoder.update-counters servo-thread