ppmc_motion.hal - Ratary encoders
# HAL config file for Pico Systems UPC board
#
# 10-20-2011 added # Manual tool change
# connect position feedback signals to encoders
linksp Xpos-fb <= ppmc.0.encoder.00.position
linksp Ypos-fb <= ppmc.0.encoder.01.position
linksp Zpos-fb <= ppmc.0.encoder.02.position
# steal encoder input for pendant
#linksp Apos-fb <= ppmc.0.encoder.03.position
# get feedback scaling from ini file
setp ppmc.0.encoder.00.scale [AXIS_0]INPUT_SCALE
setp ppmc.0.encoder.01.scale [AXIS_1]INPUT_SCALE
setp ppmc.0.encoder.02.scale [AXIS_2]INPUT_SCALE
setp ppmc.0.encoder.03.scale [AXIS_3]INPUT_SCALE
#setp ppmc.0.encoder.04.scale 324 # for spindle axis, 81 tooth gear sensor in quadrature
# get DAC scaling from ini file
setp ppmc.0.DAC.00.scale [AXIS_0]OUTPUT_SCALE
setp ppmc.0.DAC.01.scale [AXIS_1]OUTPUT_SCALE
setp ppmc.0.DAC.02.scale [AXIS_2]OUTPUT_SCALE
#setp ppmc.0.DAC.03.scale [AXIS_3]OUTPUT_SCALE Spindle speed output
# connect PID output signals to step generators
linksp Xoutput => ppmc.0.DAC.00.value
linksp Youtput => ppmc.0.DAC.01.value
linksp Zoutput => ppmc.0.DAC.02.value
# linksp Aoutput => ppmc.0.DAC.03.value
# add a couple of tuning test links
# if these are useful will want to add them to the other axes as well
# or make these setup with the tuning script
linkps ddt.0.in Xoutput
linkps ddt.1.in Xpos-fb
newsig spindle-sync bit
newsig spindle-index-en bit
#linksp spindle-index-en => ppmc.0.encoder.04.index-enable
# hook up motion controller's sync output
linkps motion.spindle-index-enable => spindle-index-en
# report rev count to motion controller
newsig spindle-pos float
#linkps ppmc.0.encoder.04.position => spindle-pos
linksp spindle-pos => motion.spindle-revs
# set up 4th DAC generator as a spindle speed control
newsig spindle-speed float
newsig spindle-DAC-cmd float
newsig spindle-DAC-filt float
newsig spindle-DAC-abs float
linkps motion.spindle-speed-out => spindle-speed
linksp spindle-speed => mult2.1.in0
setp mult2.1.in1 0.002457
linkps mult2.1.out => spindle-DAC-cmd
linksp spindle-DAC-cmd => lowpass.0.in
linkps lowpass.0.out => spindle-DAC-filt
setp lowpass.0.gain 0.005
linksp spindle-DAC-filt => abs.0.in
linksp spindle-DAC-abs => abs.0.out
linksp spindle-DAC-abs => ppmc.0.DAC.03.value
# spindle speed display
addf lowpass.1 servo-thread
#net spinraw ppmc.0.encoder.04.delta conv-s32-float.0.in
net spinfloat conv-s32-float.0.out mult2.0.in0
setp mult2.0.in1 185.185185 # (60/encoder count/rev)
net rawSpindleRPM mult2.0.out => lowpass.1.in
setp lowpass.1.gain 0.02
newsig SpindleRPM float
linkps lowpass.1.out => SpindleRPM
# Manual tool change
loadusr -W hal_manualtoolchange
net tool-change iocontrol.0.tool-change => hal_manualtoolchange.change
net tool-changed iocontrol.0.tool-changed <= hal_manualtoolchange.changed
net tool-number iocontrol.0.tool-prep-number => hal_manualtoolchange.number
net tool-prepare-loopback iocontrol.0.tool-prepare => iocontrol.0.tool-prepared