Master - Closed Loop Stepper with XHC-HB04 Jog Issue
- the_canuck
- Offline
- New Member
Less
More
- Posts: 5
- Thank you received: 0
15 Nov 2017 05:24 - 15 Nov 2017 05:26 #101817
by the_canuck
Master - Closed Loop Stepper with XHC-HB04 Jog Issue was created by the_canuck
I'm trying to convert over to 2.8 from 2.7.
I'm having issues with the XHC-HB04 pendant jogging after homed. I'm open to ideas of things to try
Before homed, Jog worked on y axis with single joint. Once homed and in teleop mode jog no longer works with the pendant. z-axis which is not closed loop stepper and has a single servo works just fine not homed or homed.
x-axis is a gantry with 2 servos hence the reason for the 2.8 upgrade. Previously I was slaving the 2 motors with one encoder. Worked okay but I have 2 encoders so 2.8 should improve things I hope as I can run them more independently.
I'm open to ideas as the pendant is a must have as my machine is to big to have to rely on the keyboard at the computer for jogging.
I'm running step/dir DMM-tech servos (which are tuned through the servo drivers and are not connected closed loop to Linuxcnc) through a 5i25 to the standard DMM-tech breakout board. I semi recently added magnetic linear encoders connected through 5i25 with 7i85 breakout. Mechanics are rotating nut ball screws on x and y and normal but high lead ball screw on z.
Here's the hal file:
Here's my ini:
Thanks
Andrew
I'm having issues with the XHC-HB04 pendant jogging after homed. I'm open to ideas of things to try
Before homed, Jog worked on y axis with single joint. Once homed and in teleop mode jog no longer works with the pendant. z-axis which is not closed loop stepper and has a single servo works just fine not homed or homed.
x-axis is a gantry with 2 servos hence the reason for the 2.8 upgrade. Previously I was slaving the 2 motors with one encoder. Worked okay but I have 2 encoders so 2.8 should improve things I hope as I can run them more independently.
I'm open to ideas as the pendant is a must have as my machine is to big to have to rely on the keyboard at the computer for jogging.
I'm running step/dir DMM-tech servos (which are tuned through the servo drivers and are not connected closed loop to Linuxcnc) through a 5i25 to the standard DMM-tech breakout board. I semi recently added magnetic linear encoders connected through 5i25 with 7i85 breakout. Mechanics are rotating nut ball screws on x and y and normal but high lead ball screw on z.
Here's the hal file:
loadrt [KINS]KINEMATICS
loadrt [EMCMOT]EMCMOT servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[KINS]JOINTS
loadrt hostmot2
loadrt hm2_pci config=" num_encoders=4 num_pwmgens=1 num_3pwmgens=0 num_stepgens=4 "
setp hm2_5i25.0.pwmgen.pwm_frequency 200
setp hm2_5i25.0.pwmgen.pdm_frequency 3500
setp hm2_5i25.0.watchdog.timeout_ns 10000000
loadrt abs names=abs.spindle
loadrt lowpass names=lowpass.spindle
loadrt charge_pump
loadrt pid names=pid.x,pid.x2,pid.y
addf charge-pump servo-thread
addf hm2_5i25.0.read servo-thread
addf motion-command-handler servo-thread
addf motion-controller servo-thread
addf pid.x.do-pid-calcs servo-thread
addf pid.x2.do-pid-calcs servo-thread
addf pid.y.do-pid-calcs servo-thread
addf abs.spindle servo-thread
addf lowpass.spindle servo-thread
addf hm2_5i25.0.write servo-thread
# external output signals
# --- MACHINE-IS-ENABLED ---
setp hm2_5i25.0.gpio.001.is_output true
net machine-is-enabled hm2_5i25.0.gpio.001.out
# --- SPINDLE-ON ---
setp hm2_5i25.0.gpio.005.is_output true
net spindle-on hm2_5i25.0.gpio.005.out
setp hm2_5i25.0.gpio.005.invert_output true
# --- CHARGE-PUMP ---
setp hm2_5i25.0.gpio.007.is_output true
net charge-pump hm2_5i25.0.gpio.007.out
# external input signals
# --- ESTOP-EXT ---
net estop-ext <= hm2_5i25.0.gpio.003.in_not
# --- HOME-X ---
net home-x <= hm2_5i25.0.gpio.013.in_not
# --- HOME-Y ---
net home-y <= hm2_5i25.0.gpio.014.in_not
# --- HOME-Z ---
net home-z <= hm2_5i25.0.gpio.015.in_not
#*******************
# AXIS X
#*******************
# Joint 0
setp pid.x.Pgain [JOINT_0]P
setp pid.x.Igain [JOINT_0]I
setp pid.x.Dgain [JOINT_0]D
setp pid.x.bias [JOINT_0]BIAS
setp pid.x.FF0 [JOINT_0]FF0
setp pid.x.FF1 [JOINT_0]FF1
setp pid.x.FF2 [JOINT_0]FF2
setp pid.x.deadband [JOINT_0]DEADBAND
setp pid.x.maxoutput [JOINT_0]MAX_OUTPUT
net x-index-enable <=> pid.x.index-enable
net x-enable => pid.x.enable
net x-output => pid.x.output
net x-pos-cmd => pid.x.command
net x-vel-fb => pid.x.feedback-deriv
net x-pos-fb => pid.x.feedback
# Step Gen signals/setup
setp hm2_5i25.0.stepgen.00.dirsetup [JOINT_0]DIRSETUP
setp hm2_5i25.0.stepgen.00.dirhold [JOINT_0]DIRHOLD
setp hm2_5i25.0.stepgen.00.steplen [JOINT_0]STEPLEN
setp hm2_5i25.0.stepgen.00.stepspace [JOINT_0]STEPSPACE
setp hm2_5i25.0.stepgen.00.position-scale [JOINT_0]STEP_SCALE
setp hm2_5i25.0.stepgen.00.step_type 0
# 0 - for open loop, 1 for pid
setp hm2_5i25.0.stepgen.00.control-type 1
setp hm2_5i25.0.stepgen.00.maxaccel [JOINT_0]STEPGEN_MAXACCEL
setp hm2_5i25.0.stepgen.00.maxvel [JOINT_0]STEPGEN_MAXVEL
# ---closedloop stepper signals---
net x-pos-cmd joint.0.motor-pos-cmd
net x-output => hm2_5i25.0.stepgen.00.velocity-cmd
net x-enable joint.0.amp-enable-out => hm2_5i25.0.stepgen.00.enable
# ---Encoder feedback signals/setup---
setp hm2_5i25.0.encoder.03.counter-mode 0
setp hm2_5i25.0.encoder.03.filter 1
setp hm2_5i25.0.encoder.03.index-invert 0
setp hm2_5i25.0.encoder.03.index-mask 0
setp hm2_5i25.0.encoder.03.index-mask-invert 0
setp hm2_5i25.0.encoder.03.scale [JOINT_0]ENCODER_SCALE
net x-pos-fb <= hm2_5i25.0.encoder.03.position
net x-vel-fb <= hm2_5i25.0.encoder.03.velocity
net x-pos-fb => joint.0.motor-pos-fb
net x-index-enable joint.0.index-enable <=> hm2_5i25.0.encoder.03.index-enable
net x-pos-rawcounts <= hm2_5i25.0.encoder.03.rawcounts
# ---setup home / limit switch signals---
net home-x => joint.0.home-sw-in
net x-neg-limit => joint.0.neg-lim-sw-in
net x-pos-limit => joint.0.pos-lim-sw-in
# Joint 3
setp pid.x2.Pgain [JOINT_3]P
setp pid.x2.Igain [JOINT_3]I
setp pid.x2.Dgain [JOINT_3]D
setp pid.x2.bias [JOINT_3]BIAS
setp pid.x2.FF0 [JOINT_3]FF0
setp pid.x2.FF1 [JOINT_3]FF1
setp pid.x2.FF2 [JOINT_3]FF2
setp pid.x2.deadband [JOINT_3]DEADBAND
setp pid.x2.maxoutput [JOINT_3]MAX_OUTPUT
net x2-index-enable <=> pid.x2.index-enable
net x2-enable => pid.x2.enable
net x2-output => pid.x2.output
net x2-pos-cmd => pid.x2.command
net x2-vel-fb => pid.x2.feedback-deriv
net x2-pos-fb => pid.x2.feedback
# Step Gen signals/setup
setp hm2_5i25.0.stepgen.03.dirsetup [JOINT_3]DIRSETUP
setp hm2_5i25.0.stepgen.03.dirhold [JOINT_3]DIRHOLD
setp hm2_5i25.0.stepgen.03.steplen [JOINT_3]STEPLEN
setp hm2_5i25.0.stepgen.03.stepspace [JOINT_3]STEPSPACE
setp hm2_5i25.0.stepgen.03.position-scale [JOINT_3]STEP_SCALE
setp hm2_5i25.0.stepgen.03.step_type 0
# 0 - for open loop, 1 for pid
setp hm2_5i25.0.stepgen.03.control-type 1
setp hm2_5i25.0.stepgen.03.maxaccel [JOINT_3]STEPGEN_MAXACCEL
setp hm2_5i25.0.stepgen.03.maxvel [JOINT_3]STEPGEN_MAXVEL
# ---closedloop stepper signals---
net x2-pos-cmd joint.3.motor-pos-cmd
net x2-output => hm2_5i25.0.stepgen.03.velocity-cmd
net x2-enable joint.3.amp-enable-out => hm2_5i25.0.stepgen.03.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 [JOINT_3]ENCODER_SCALE
net x2-pos-fb <= hm2_5i25.0.encoder.00.position
net x2-vel-fb <= hm2_5i25.0.encoder.00.velocity
net x2-pos-fb => joint.3.motor-pos-fb
net x2-index-enable joint.3.index-enable <=> hm2_5i25.0.encoder.00.index-enable
net x2-pos-rawcounts <= hm2_5i25.0.encoder.00.rawcounts
# ---setup home / limit switch signals---
net home-x => joint.3.home-sw-in
net x2-neg-limit => joint.3.neg-lim-sw-in
net x2-pos-limit => joint.3.pos-lim-sw-in
#*******************
# AXIS Y
#*******************
# Joint 1
setp pid.y.Pgain [JOINT_1]P
setp pid.y.Igain [JOINT_1]I
setp pid.y.Dgain [JOINT_1]D
setp pid.y.bias [JOINT_1]BIAS
setp pid.y.FF0 [JOINT_1]FF0
setp pid.y.FF1 [JOINT_1]FF1
setp pid.y.FF2 [JOINT_1]FF2
setp pid.y.deadband [JOINT_1]DEADBAND
setp pid.y.maxoutput [JOINT_1]MAX_OUTPUT
net y-index-enable <=> pid.y.index-enable
net y-enable => pid.y.enable
net y-output => pid.y.output
net y-pos-cmd => pid.y.command
net y-vel-fb => pid.y.feedback-deriv
net y-pos-fb => pid.y.feedback
# Step Gen signals/setup
setp hm2_5i25.0.stepgen.01.dirsetup [JOINT_1]DIRSETUP
setp hm2_5i25.0.stepgen.01.dirhold [JOINT_1]DIRHOLD
setp hm2_5i25.0.stepgen.01.steplen [JOINT_1]STEPLEN
setp hm2_5i25.0.stepgen.01.stepspace [JOINT_1]STEPSPACE
setp hm2_5i25.0.stepgen.01.position-scale [JOINT_1]STEP_SCALE
setp hm2_5i25.0.stepgen.01.step_type 0
# 0-open loop, 1-pid
setp hm2_5i25.0.stepgen.01.control-type 1
setp hm2_5i25.0.stepgen.01.maxaccel [JOINT_1]STEPGEN_MAXACCEL
setp hm2_5i25.0.stepgen.01.maxvel [JOINT_1]STEPGEN_MAXVEL
# ---closedloop stepper signals---
net y-pos-cmd joint.1.motor-pos-cmd
net y-output => hm2_5i25.0.stepgen.01.velocity-cmd
net y-enable joint.1.amp-enable-out => hm2_5i25.0.stepgen.01.enable
# ---Encoder feedback signals/setup---
setp hm2_5i25.0.encoder.01.counter-mode 0
setp hm2_5i25.0.encoder.01.filter 1
setp hm2_5i25.0.encoder.01.index-invert 0
setp hm2_5i25.0.encoder.01.index-mask 0
setp hm2_5i25.0.encoder.01.index-mask-invert 0
setp hm2_5i25.0.encoder.01.scale [JOINT_1]ENCODER_SCALE
net y-pos-fb <= hm2_5i25.0.encoder.01.position
net y-vel-fb <= hm2_5i25.0.encoder.01.velocity
net y-pos-fb => joint.1.motor-pos-fb
net y-index-enable joint.1.index-enable <=> hm2_5i25.0.encoder.01.index-enable
net y-pos-rawcounts <= hm2_5i25.0.encoder.01.rawcounts
# ---setup home / limit switch signals---
net home-y => joint.1.home-sw-in
net y-neg-limit => joint.1.neg-lim-sw-in
net y-pos-limit => joint.1.pos-lim-sw-in
#*******************
# AXIS Z
#*******************
# Joint 2
# Step Gen signals/setup
setp hm2_5i25.0.stepgen.02.dirsetup [JOINT_2]DIRSETUP
setp hm2_5i25.0.stepgen.02.dirhold [JOINT_2]DIRHOLD
setp hm2_5i25.0.stepgen.02.steplen [JOINT_2]STEPLEN
setp hm2_5i25.0.stepgen.02.stepspace [JOINT_2]STEPSPACE
setp hm2_5i25.0.stepgen.02.position-scale [JOINT_2]STEP_SCALE
setp hm2_5i25.0.stepgen.02.step_type 0
setp hm2_5i25.0.stepgen.02.control-type 0
setp hm2_5i25.0.stepgen.02.maxaccel [JOINT_2]STEPGEN_MAXACCEL
setp hm2_5i25.0.stepgen.02.maxvel [JOINT_2]STEPGEN_MAXVEL
setp hm2_5i25.0.gpio.009.invert_output true
net z-pos-fb joint.2.motor-pos-fb <= hm2_5i25.0.stepgen.02.position-fb
net z-pos-cmd joint.2.motor-pos-cmd => hm2_5i25.0.stepgen.02.position-cmd
net z-enable joint.2.amp-enable-out => hm2_5i25.0.stepgen.02.enable
# ---setup home / limit switch signals---
net home-z => joint.2.home-sw-in
net z-neg-limit => joint.2.neg-lim-sw-in
net z-pos-limit => joint.2.pos-lim-sw-in
#*******************
# SPINDLE S
#*******************
# ---PWM Generator signals/setup---
setp hm2_5i25.0.pwmgen.00.output-type 1
setp hm2_5i25.0.pwmgen.00.scale [SPINDLE_9]OUTPUT_SCALE
net spindle-vel-cmd => hm2_5i25.0.pwmgen.00.value
net machine-is-enabled => hm2_5i25.0.pwmgen.00.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 <= motion.spindle-speed-out
net spindle-vel-cmd-rpm-abs <= motion.spindle-speed-out-abs
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-revs => motion.spindle-revs
net spindle-at-speed => motion.spindle-at-speed
net spindle-vel-fb => motion.spindle-speed-in
net spindle-index-enable <=> motion.spindle-index-enable
# ---Setup spindle at speed signals---
sets spindle-at-speed true
#******************************
# connect miscellaneous signals
#******************************
# ---HALUI signals---
net joint-select-a halui.axis.x.select
net x-is-homed halui.joint.0.is-homed
net jog-x-pos halui.axis.x.plus
net jog-x-neg halui.axis.x.minus
net jog-x-analog halui.axis.x.analog
net joint-select-b halui.axis.y.select
net y-is-homed halui.joint.1.is-homed
net jog-y-pos halui.axis.y.plus
net jog-y-neg halui.axis.y.minus
net jog-y-analog halui.axis.y.analog
net joint-select-c halui.axis.z.select
net z-is-homed halui.joint.2.is-homed
net jog-z-pos halui.axis.z.plus
net jog-z-neg halui.axis.z.minus
net jog-z-analog halui.axis.z.analog
net jog-selected-pos halui.axis.selected.plus
net jog-selected-neg halui.axis.selected.minus
net spindle-manual-cw halui.spindle.forward
net spindle-manual-ccw halui.spindle.reverse
net spindle-manual-stop halui.spindle.stop
net machine-is-on halui.machine.is-on
net jog-speed halui.axis.jog-speed
net MDI-mode halui.mode.is-mdi
# ---charge pump signals---
net spindle-on => charge-pump.enable
net charge-pump <= charge-pump.out
# ---coolant signals---
#net coolant-mist <= iocontrol.0.coolant-mist
#net coolant-flood <= iocontrol.0.coolant-flood
# ---probe signal---
#net probe-in => motion.probe-input
# ---motion control signals---
net in-position <= motion.in-position
net machine-is-enabled <= motion.motion-enabled
# ---digital in / out signals---
# ---estop signals---
net estop-out <= iocontrol.0.user-enable-out
net estop-ext => iocontrol.0.emc-enable-in
# ---manual tool change signals---
loadusr -W hal_manualtoolchange
net tool-change-request iocontrol.0.tool-change => hal_manualtoolchange.change
net tool-change-confirmed 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
Here's my ini:
VERSION = 1.0
MACHINE = HD_Metal_Monster_Mesa_2
DEBUG = 0
[DISPLAY]
DISPLAY = axis
POSITION_OFFSET = RELATIVE
POSITION_FEEDBACK = ACTUAL
MAX_FEED_OVERRIDE = 2.000000
MAX_SPINDLE_OVERRIDE = 1.000000
MIN_SPINDLE_OVERRIDE = 0.100000
INTRO_GRAPHIC = linuxcnc.gif
INTRO_TIME = 2
PROGRAM_PREFIX = /home/canuck/linuxcnc/nc_files
PYVCP = pyvcp-panel.xml
INCREMENTS = .1in .05in .01in .005in .001in .0005in .0001in
DEFAULT_LINEAR_VELOCITY = 2.500000
MAX_LINEAR_VELOCITY = 8.333333
MIN_LINEAR_VELOCITY = 0.016667
DEFAULT_ANGULAR_VELOCITY = 0.250000
MAX_ANGULAR_VELOCITY = 1.000000
MIN_ANGULAR_VELOCITY = 0.010000
EDITOR = gedit
GEOMETRY = xyz
[FILTER]
PROGRAM_EXTENSION = .png,.gif,.jpg Greyscale Depth Image
PROGRAM_EXTENSION = .py Python Script
png = image-to-gcode
gif = image-to-gcode
jpg = image-to-gcode
py = python
[RS274NGC]
PARAMETER_FILE = linuxcnc.var
[EMCMOT]
EMCMOT = motmod
COMM_TIMEOUT = 1.0
SERVO_PERIOD = 300000
# SERVO_PERIOD = 800000
[TASK]
TASK = milltask
CYCLE_TIME = 0.010
[HAL]
HALFILE = HD_Metal_Monster_Mesa_2.hal
POSTGUI_HALFILE = postgui_call_list.hal
HALFILE = LIB:xhc-hb04.tcl
HALUI = halui
[KINS]
KINEMATICS = trivkins coordinates=XYZX
JOINTS = 4
[TRAJ]
COORDINATES = XYZX
LINEAR_UNITS = inch
ANGULAR_UNITS = degree
DEFAULT_LINEAR_VELOCITY = 1.67
MAX_LINEAR_VELOCITY = 16.67
[EMCIO]
EMCIO = io
CYCLE_TIME = 0.100
TOOL_TABLE = tool.tbl
#********************
# Axis X
#********************
[AXIS_X]
MIN_LIMIT = -0.01
MAX_LIMIT = 72.0
MAX_VELOCITY = 8.33333
MAX_ACCELERATION = 10
[JOINT_0]
TYPE = LINEAR
HOME = 0.0
FERROR = 0.5
MIN_FERROR = 1.001
MAX_VELOCITY = 8.33333
MAX_ACCELERATION = 10
# The values below should be 25% larger than MAX_VELOCITY and MAX_ACCELERATION
# If using BACKLASH compensation STEPGEN_MAXACCEL should be 100% larger.
STEPGEN_MAXVEL = 20
STEPGEN_MAXACCEL = 10000
BACKLASH = 0
#Velocity Mode PID
P = 40
I = 0
D = 0
FF0 = 0
FF1 = 0.81
FF2 = 0.003
BIAS = 0
DEADBAND = 4e-05
MAX_OUTPUT = 0
ENCODER_SCALE = -25400
# these are in nanoseconds
DIRSETUP = 1000
DIRHOLD = 1000
STEPLEN = 1000
STEPSPACE = 1000
#STEP_SCALE = 10185.92
STEP_SCALE = 10337.8
MIN_LIMIT = -0.01
MAX_LIMIT = 72.0
HOME_OFFSET = 0.0
HOME_SEARCH_VEL = -1.0000
HOME_LATCH_VEL = -0.020000
HOME_SEQUENCE = -1
#HOME_OFFSET = 0.0
#HOME_SEARCH_VEL = 0.0
#HOME_LATCH_VEL = 0.0
#HOME_SEQUENCE = 0
[JOINT_3]
TYPE = LINEAR
HOME = 0.0
FERROR = 0.5
MIN_FERROR = 1.001
MAX_VELOCITY = 8.33333
MAX_ACCELERATION = 10
# The values below should be 25% larger than MAX_VELOCITY and MAX_ACCELERATION
# If using BACKLASH compensation STEPGEN_MAXACCEL should be 100% larger.
STEPGEN_MAXVEL = 20
STEPGEN_MAXACCEL = 10000
BACKLASH = 0
#Velocity Mode PID
P = 40
I = 0
D = 0
FF0 = 0
FF1 = 0.81
FF2 = 0.003
BIAS = 0
DEADBAND = 4e-05
MAX_OUTPUT = 0
ENCODER_SCALE = 25400
# these are in nanoseconds
DIRSETUP = 1000
DIRHOLD = 1000
STEPLEN = 1000
STEPSPACE = 1000
#STEP_SCALE = 10185.92
STEP_SCALE = 10337.8
MIN_LIMIT = -0.01
MAX_LIMIT = 72.0
HOME_OFFSET = 0.0
HOME_SEARCH_VEL = -1.0000
HOME_LATCH_VEL = -0.020000
HOME_SEQUENCE = -1
#HOME_OFFSET = 0.0
#HOME_SEARCH_VEL = 0.0
#HOME_LATCH_VEL = 0.0
#HOME_SEQUENCE = 0
#********************
# Axis Y
#********************
[AXIS_Y]
MIN_LIMIT = -0.01
MAX_LIMIT = 25
MAX_VELOCITY = 8.333333
MAX_ACCELERATION = 20
[JOINT_1]
TYPE = LINEAR
HOME = 0.0
FERROR = 0.5
MIN_FERROR = 1.001
MAX_VELOCITY = 8.333333
MAX_ACCELERATION = 20
# The values below should be 25% larger than MAX_VELOCITY and MAX_ACCELERATION
# If using BACKLASH compensation STEPGEN_MAXACCEL should be 100% larger.
STEPGEN_MAXVEL = 20
STEPGEN_MAXACCEL = 10000
BACKLASH = 0
P = 90
I = 0
D = 0
FF0 = 0
FF1 = 0.81
FF2 = 0.0035
BIAS = 0
DEADBAND = 4e-05
MAX_OUTPUT = 0
ENCODER_SCALE = 25400
# these are in nanoseconds
DIRSETUP = 1000
DIRHOLD = 1000
STEPLEN = 1000
STEPSPACE = 1000
#STEP_SCALE = 10185.92
STEP_SCALE = 10337.8
MIN_LIMIT = -0.01
MAX_LIMIT = 25.0
HOME_OFFSET = 0.0
HOME_SEARCH_VEL = -1.0000
HOME_LATCH_VEL = -0.020000
HOME_SEQUENCE = 2
#********************
# Axis Z
#********************
[AXIS_Z]
MIN_LIMIT = -5.9
MAX_LIMIT = 0.01
MAX_VELOCITY = 1.2
MAX_ACCELERATION = 5.0
[JOINT_2]
TYPE = LINEAR
HOME = 0.0
FERROR = 0.05
MIN_FERROR = 0.001
MAX_VELOCITY = 1.2
MAX_ACCELERATION = 5.0
# The values below should be 25% larger than MAX_VELOCITY and MAX_ACCELERATION
# If using BACKLASH compensation STEPGEN_MAXACCEL should be 100% larger.
STEPGEN_MAXVEL = 1.5
STEPGEN_MAXACCEL = 6.2
# these are in nanoseconds
DIRSETUP = 1000
DIRHOLD = 20000
STEPLEN = 1000
STEPSPACE = 1000
STEP_SCALE = 25000
MIN_LIMIT = -5.9
MAX_LIMIT = 0.01
HOME_OFFSET = 0.0
HOME_SEARCH_VEL = 0.500000
HOME_LATCH_VEL = 0.020000
HOME_SEQUENCE = 0
[XHC_HB04_CONFIG]
# specify layout = n for xhc-hb04-layout{n}.cfg files
layout = 1
# coords: specify 4 letters
# coords: switch labels are xyza but any unique 4 letters
# from the set {xyxabcuvw) can be used (if the coord exists)
coords = x y z
# lowpass settings:
# coef: slows rate of change of output, range: 0 < coef < 1
coefs = 1 1 1
# mpg_accels: provision for reduced acceleration for manual mode jogging
mpg_accels = 2 2 20
# scale plus or minus, rotaries may require larger scale factor:
scales = 1 1 1
# jogmode normal(default) or vnormal or plus-minus
jogmode = normal
# sequence 1: 0.001,0.010,0.100,1.000 (mm-based machine)
# sequence 2: 0.001,0.005,0.010,0.020 (inch-based machine)
sequence = 2
# require_pendant = no: create xhc-hb04 hal pins when pendant not connected at startup
require_pendant = no
# inch_or_mm = in | mm
inch_or_mm = in
[APPLICATIONS]
APP = monitor-xhc-hb04
[XHC_HB04_BUTTONS]
# use button names according to layout file xhc-hb04-layout{n}.cfg
# note: "start-pause" is connected for standard behavior
# controlling halui.pause/halui.resume/halui.run
# these are examples, edit as required:
stop = halui.program.stop
start-pause = std_start_pause
rewind = halui.program.step
safe-z = halui.mdi-command-01
# in this sim, home-all only works first time, hold down till finished:
home = halui.home-all
x2 = halui.mdi-command-02
y2 = halui.mdi-command-03
# probe-input for simulating a probe:
probe-z = motion.probe-input
x0 = halui.mdi-command-04
y0 = halui.mdi-command-05
z0 = halui.mdi-command-06
goto-zero = halui.mdi-command-00
# synthesized per-axis buttons for goto-zero button:
goto-zero-x = ""
goto-zero-y = ""
goto-zero-z = ""
goto-zero-a = ""
step = xhc-hb04.stepsize-up
mode = ""
spindle = halui.mdi-command-07
reset = halui.estop.activate
[HOSTMOT2]
# **** This is for info only ****
# DRIVER0=hm2_pci
# BOARD0=5i25
[HALUI]
# these are examples, edit as required:
# a halui hal pin is created for each MDI_COMMAND below
# halui.mdi-command-00, halui.mdi-command-01,... etc
MDI_COMMAND=G0 X0 Y0 Z0
MDI_COMMAND=G0 Z0
MDI_COMMAND=
MDI_COMMAND=
MDI_COMMAND=
MDI_COMMAND=
MDI_COMMAND=
MDI_COMMAND=
MDI_COMMAND=
MDI_COMMAND=
MDI_COMMAND=
MDI_COMMAND=
MDI_COMMAND=
MDI_COMMAND=
MDI_COMMAND=
MDI_COMMAND=
#**********
# Spindle
#**********
[SPINDLE_9]
OUTPUT_SCALE = 24000
Thanks
Andrew
Last edit: 15 Nov 2017 05:26 by the_canuck.
Please Log in or Create an account to join the conversation.
15 Nov 2017 15:16 - 15 Nov 2017 17:00 #101836
by dgarrett
Replied by dgarrett on topic Master - Closed Loop Stepper with XHC-HB04 Jog Issue
For the master branch with joints-axes updates (2.8~pre),
xhc-hb04.tcl handles basic identity kins machines but may
require user intervention for configs that use multiple
joints for a single axis letter.
I adapted your ini file to a sim config by replacing your
machine-dependent halfiles with [HAL]HALFILE=LIB:basic_sim.tcl
and commented-out unprovided and unrelated files
pyvcp-panel.xml,postgui_call_list.hal. I set the sim config
for immediate homing on all joints and specified
kinstype=BOTH for clarity.
Using this config, i found a bug due to a recent commit
(232d7daa3 Wed Nov 8) and pushed a fix (ba44943f9 Wed Nov
15)
With this update, the sim example (xhctest.ini ATTACHED) reproducing
your config works as expected.
So, if you were trying a recent build of the master branch,
you should 1) update to current commit (ba44943f9 or
later), 2) try the attached sim. If this sim works, i
suspect your config can work too (with proper home switch
setup).
xhc-hb04.tcl handles basic identity kins machines but may
require user intervention for configs that use multiple
joints for a single axis letter.
I adapted your ini file to a sim config by replacing your
machine-dependent halfiles with [HAL]HALFILE=LIB:basic_sim.tcl
and commented-out unprovided and unrelated files
pyvcp-panel.xml,postgui_call_list.hal. I set the sim config
for immediate homing on all joints and specified
kinstype=BOTH for clarity.
Using this config, i found a bug due to a recent commit
(232d7daa3 Wed Nov 8) and pushed a fix (ba44943f9 Wed Nov
15)
With this update, the sim example (xhctest.ini ATTACHED) reproducing
your config works as expected.
So, if you were trying a recent build of the master branch,
you should 1) update to current commit (ba44943f9 or
later), 2) try the attached sim. If this sim works, i
suspect your config can work too (with proper home switch
setup).
Last edit: 15 Nov 2017 17:00 by dgarrett.
Please Log in or Create an account to join the conversation.
- the_canuck
- Offline
- New Member
Less
More
- Posts: 5
- Thank you received: 0
15 Nov 2017 16:53 - 15 Nov 2017 16:54 #101854
by the_canuck
Replied by the_canuck on topic Master - Closed Loop Stepper with XHC-HB04 Jog Issue
Thanks for checking out my situation.
I'll update the commit tonight and give it a retry.
Been fighting this for a couple days. I assumed it was something in my hal that was incorrect. Forced me to read up on the documentation so not completely unfruitful as I did learn quite a bit.
On homing: My dual joint x axis gantry only has one home switch. I think I found a way to make it work for now without adding a second switch. I'm relying on the gantry to be stiff enough to keep the motors in aligned on first power up and then through home sequence. 2 switches would be a better choice of course and ensure x and y return to perpendicular during homing. I will most likely add the missing switch soon.
Andrew
I'll update the commit tonight and give it a retry.
Been fighting this for a couple days. I assumed it was something in my hal that was incorrect. Forced me to read up on the documentation so not completely unfruitful as I did learn quite a bit.
On homing: My dual joint x axis gantry only has one home switch. I think I found a way to make it work for now without adding a second switch. I'm relying on the gantry to be stiff enough to keep the motors in aligned on first power up and then through home sequence. 2 switches would be a better choice of course and ensure x and y return to perpendicular during homing. I will most likely add the missing switch soon.
Andrew
Last edit: 15 Nov 2017 16:54 by the_canuck.
Please Log in or Create an account to join the conversation.
- the_canuck
- Offline
- New Member
Less
More
- Posts: 5
- Thank you received: 0
16 Nov 2017 00:36 #101870
by the_canuck
Replied by the_canuck on topic Master - Closed Loop Stepper with XHC-HB04 Jog Issue
Confirmed. Issue solved. Jog on the pendant now works correctly!
Nice catch on the int vs float math.
Andrew
Nice catch on the int vs float math.
Andrew
Please Log in or Create an account to join the conversation.
17 Mar 2018 15:33 #107468
by OT-CNC
Replied by OT-CNC on topic Master - Closed Loop Stepper with XHC-HB04 Jog Issue
I was wondering what linear encoders you are using and how well are they working? Sorry for going off topic here...
"I'm running step/dir DMM-tech servos (which are tuned through the servo drivers and are not connected closed loop to Linuxcnc) through a 5i25 to the standard DMM-tech breakout board. I semi recently added magnetic linear encoders connected through 5i25 with 7i85 breakout. Mechanics are rotating nut ball screws on x and y and normal but high lead ball screw on z"
"I'm running step/dir DMM-tech servos (which are tuned through the servo drivers and are not connected closed loop to Linuxcnc) through a 5i25 to the standard DMM-tech breakout board. I semi recently added magnetic linear encoders connected through 5i25 with 7i85 breakout. Mechanics are rotating nut ball screws on x and y and normal but high lead ball screw on z"
Please Log in or Create an account to join the conversation.
Time to create page: 0.246 seconds