#******************* # SPINDLE S #******************* setp pid.s.Pgain [SPINDLE_9]P setp pid.s.Igain [SPINDLE_9]I setp pid.s.Dgain [SPINDLE_9]D setp pid.s.bias [SPINDLE_9]BIAS setp pid.s.FF0 [SPINDLE_9]FF0 setp pid.s.FF1 [SPINDLE_9]FF1 setp pid.s.FF2 [SPINDLE_9]FF2 setp pid.s.deadband [SPINDLE_9]DEADBAND #setp pid.s.maxoutput [SPINDLE_9]MAX_OUTPUT setp pid.s.error-previous-target true net spindle-index-enable <=> pid.s.index-enable net spindle-enable => pid.s.enable net spindle-vel-cmd-rpm => pid.s.command net spindle-vel-fb-rpm => pid.s.feedback net spindle-output <= pid.s.output # ---PWM Generator signals/setup--- setp hm2_5i24.0.pwmgen.04.output-type 1 setp hm2_5i24.0.gpio.043.invert_output true setp hm2_5i24.0.pwmgen.04.scale [SPINDLE_9]OUTPUT_SCALE net spindle-output => hm2_5i24.0.pwmgen.04.value net spindle-enable => hm2_5i24.0.pwmgen.04.enable # ---Encoder feedback signals/setup--- setp hm2_5i24.0.encoder.04.counter-mode 0 setp hm2_5i24.0.encoder.04.filter 1 setp hm2_5i24.0.encoder.04.index-invert 0 setp hm2_5i24.0.encoder.04.index-mask 0 setp hm2_5i24.0.encoder.04.index-mask-invert 0 setp hm2_5i24.0.encoder.04.scale [SPINDLE_9]ENCODER_SCALE # connect the HAL encoder inputs to the real encoder. net spindle-phase-a <= hm2_5i24.0.encoder.04.input-a net spindle-phase-b <= hm2_5i24.0.encoder.04.input-b net spindle-revs <= hm2_5i24.0.encoder.04.position net spindle-vel-fb-rps <= hm2_5i24.0.encoder.04.velocity #net spindle-index-enable <=> hm2_5i24.0.encoder.04.index-enable # ---setup spindle control signals--- net spindle-vel-cmd-rps <= motion.spindle-speed-out-rps net spindle-vel-cmd-rps-abs <= motion.spindle-speed-out-rps-abs net spindle-vel-cmd-rpm <= motion.spindle-speed-out net spindle-vel-cmd-rpm-abs <= motion.spindle-speed-out-abs net spindle-enable <= motion.spindle-on net spindle-cw <= motion.spindle-forward net spindle-ccw <= motion.spindle-reverse net spindle-brake <= motion.spindle-brake net spindle-revs => motion.spindle-revs net spindle-at-speed => motion.spindle-at-speed net spindle-vel-fb-rps => motion.spindle-speed-in net spindle-index-enable <=> motion.spindle-index-enable # ---Setup spindle at speed signals--- net spindle-vel-cmd-rps => near.0.in1 net spindle-vel-fb => near.0.in2 net spindle-at-speed <= near.0.out setp near.0.scale 1.000000 setp near.0.difference 3.333333 # Use ACTUAL spindle velocity from spindle encoder # spindle-velocity bounces around so we filter it with lowpass # spindle-velocity is signed so we use absolute component to remove sign # ACTUAL velocity is in RPS not RPM so we scale it. #setp scale.spindle.gain 60 #setp lowpass.spindle.gain 1.000000 #net spindle-vel-fb => lowpass.spindle.in #net spindle-fb-filtered-rps lowpass.spindle.out => abs.spindle.in #net spindle-fb-filtered-abs-rps abs.spindle.out => scale.spindle.in #net spindle-fb-filtered-abs-rpm scale.spindle.out