Why would I get a following error only while homing (latest Linuxcnc 2.7.9)? I recently added home switches to my machine. My machine has encoders on the steppers on each of the 3 axes so I want to use the index pulse for home. I set up the homing sequence each axis and when I do "Home All" I get a following error on my Z axis (first one to home). I played with all the settings and can’t get it to complete unless I set ferror and min_ferror very high Also, once there is a following error I can only clear it by exiting Linuxcnc and restarting it. If I just turn it back on, it immediately faults again with the same following error. If I don’t home, after restarting Linuxcnc, I can run the Z axis (and X and Y) all day at any speed without a following error.
I have tried setting the ferror and min_ferror settings to various reasonable values but it didn’t work. Before adding the switches I had error=0.001 and min_ferror=0.0005 and never had a following error appear. I set ferror to 2 and min_ferror to 1 (I think those were the values) and it worked but then got the following error on the Y axis (the second axis homed). The values for ferror and min_ferror that “worked” seem completely unreasonable given I am not even moving anywhere near my max velocity during homing. I have tried changing the sign on the HOME_LATCH_VEL to make it search for index in the other direction but the same thing happens. Below are my (current) machine hal and ini. -Tom ———————————— ini ——————————— # Generated by PNCconf at Thu Apr 8 11:40:39 2010 [EMC] MACHINE = EMCO DEBUG = 0 [DISPLAY] DISPLAY = axis #EMBED_TAB_NAME = Camera #EMBED_TAB_COMMAND = camview-emc -w {XID} EDITOR = gedit PYVCP = custom_pyvcp.xml POSITION_OFFSET = RELATIVE POSITION_FEEDBACK = ACTUAL MAX_FEED_OVERRIDE = 2.0 MAX_SPINDLE_OVERRIDE = 1.5 MIN_SPINDLE_OVERRIDE = 0.500000 INTRO_GRAPHIC = linuxcnc.gif INTRO_TIME = 2 PROGRAM_PREFIX = /home/tom/linuxcnc/nc_files INCREMENTS = .1in .05in .01in .005in .001in .0005in .0001in POSITION_OFFSET = RELATIVE POSITION_FEEDBACK = ACTUAL DEFAULT_LINEAR_VELOCITY = 0.250000 MAX_LINEAR_VELOCITY = 1.000000 MIN_LINEAR_VELOCITY = 0.010000 DEFAULT_ANGULAR_VELOCITY = 0.250000 MAX_ANGULAR_VELOCITY = 1.000000 MIN_ANGULAR_VELOCITY = 0.010000 GEOMETRY = xyz #GEOMETRY = xyza [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 [TASK] TASK = milltask CYCLE_TIME = 0.010 [RS274NGC] PARAMETER_FILE = emc.var [EMCMOT] EMCMOT = motmod COMM_TIMEOUT = 1.0 COMM_WAIT = 0.010 #BASE_PERIOD = 50000 SERVO_PERIOD = 1000000 # [HOSTMOT2] # This is for info only - config line is in the .hal file # DRIVER0=hm2_7i43 # BOARD0=7i43 # CONFIG0="firmware=hm2/7i43/SVST2_4_7I47B.BIT num_encoders=3 num_pwmgens=0 num_stepgens=4" [HAL] HALUI = halui HALFILE = EMCO.hal HALFILE = custom.hal POSTGUI_HALFILE = custom_postgui.hal [HALUI] MDI_COMMAND = G53 G0 X0 Y0 Z0 [TRAJ] AXES = 3 COORDINATES = X Y Z LINEAR_UNITS = inch ANGULAR_UNITS = degree CYCLE_TIME = 0.010 DEFAULT_VELOCITY = 0.5 MAX_LINEAR_VELOCITY = 2 #Joypad Test stuff below: DEFAULT_ANGULAR_VELOCITY = 0.25 MAX_ANGULAR_VELOCITY = 1.0 #ARC_BLEND_ENABLE = 1 #ARC_BLEND_RAMP_FREQ = 1000 [EMCIO] EMCIO = io CYCLE_TIME = 0.100 TOOL_TABLE = tool.tbl #******************** # Axis X #******************** [AXIS_0] TYPE = LINEAR # HOME = 0.0 -- see below FERROR = 0.005 MIN_FERROR = 0.001 MAX_VELOCITY = 2.2 MAX_ACCELERATION = 20 # these are in nanoseconds DIRSETUP = 200 DIRHOLD = 200 STEPLEN = 2000 STEPSPACE = 1200 STEPGEN_MAXACCEL = 40 STEPGEN_MAXVEL = 2.75 #BACKLASH = 0.0005 INPUT_SCALE = -208076.8 SCALE = -50800 MIN_LIMIT = -0.001 MAX_LIMIT = 7.8 # homing # move here after home switch found: HOME = 4.0 # home switch is located here: HOME_OFFSET = 7.8 # initial search velocity in/sec HOME_SEARCH_VEL = 0.75 # 2nd pass search velocity HOME_LATCH_VEL = 0.1 # speed to HOME HOME_FINAL_VEL = 0.5 # yes use index HOME_USE_INDEX = YES HOME_IGNORE_LIMITS = NO HOME_IS_SHARED = NO # do this after Z and Y is homed HOME_SEQUENCE = 2 # should unhome if estop or power off? no VOLATILE_HOME = 0 #******************** # Axis Y #******************** [AXIS_1] TYPE = LINEAR # HOME = 0.0 -- see below FERROR = 0.005 MIN_FERROR = 0.001 MAX_VELOCITY = 2.2 MAX_ACCELERATION = 20.0 # these are in nanoseconds DIRSETUP = 200 DIRHOLD = 200 STEPLEN = 2000 STEPSPACE = 1200 STEPGEN_MAXACCEL = 40 STEPGEN_MAXVEL = 2.75 BACKLASH = 0.0005 SCALE = 50800 MIN_LIMIT = -0.001 MAX_LIMIT = 3.8 INPUT_SCALE = 208076.8 # homing # move here after home switch found: HOME = 2.0 # home switch is located here: HOME_OFFSET = 0 # initial search velocity in/sec HOME_SEARCH_VEL = -0.4 # 2nd pass search velocity HOME_LATCH_VEL = -0.1 # speed to HOME HOME_FINAL_VEL = 0.5 # yes use index HOME_USE_INDEX = YES HOME_IGNORE_LIMITS = NO HOME_IS_SHARED = NO # do this after Z is homed HOME_SEQUENCE = 1 # should unhome if estop or power off? no VOLATILE_HOME = 0 #******************** # Axis Z #******************** [AXIS_2] TYPE = LINEAR # HOME = 0.0 -- see below FERROR = 0.005 MIN_FERROR = 0.001 MAX_VELOCITY = 2.2 MAX_ACCELERATION = 20.0 # these are in nanoseconds DIRSETUP = 200 DIRHOLD = 200 STEPLEN = 2000 STEPSPACE = 1200 STEPGEN_MAXACCEL = 40 STEPGEN_MAXVEL = 2.75 #BACKLASH = 0.0005 SCALE = -50800 MIN_LIMIT = -7.8 MAX_LIMIT = 0.001 INPUT_SCALE = -208076.8 # homing # move here after home switch found: HOME = 0.0 # home switch is located here: HOME_OFFSET = 0 # initial search velocity in/sec HOME_SEARCH_VEL = 0.4 # 2nd pass search velocity HOME_LATCH_VEL = -0.1 # speed to HOME HOME_FINAL_VEL = 0.5 # yes use index HOME_USE_INDEX = YES HOME_IGNORE_LIMITS = NO HOME_IS_SHARED = NO # do this before X/Y are homed HOME_SEQUENCE = 0 # should unhome if estop or power off? no VOLATILE_HOME = 0 #******************** # Spindle #******************** [SPINDLE_9] # these are in nanoseconds DIRSETUP = 0 DIRHOLD = 0 STEPLEN = 20000 STEPSPACE = 20000 SCALE = 8.7 ———————————— end ini ——————————— ———————————— hal ——————————— # Generated by PNCconf at Thu Apr 8 11:40:39 2010 loadrt trivkins loadrt [EMCMOT]EMCMOT servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[TRAJ]AXES loadrt hostmot2 loadrt hm2_7i43 config="firmware=hm2/7i43/SVST2_4_7I47B.BIT num_encoders=3 num_pwmgens=0 num_stepgens=4" addf hm2_7i43.0.read servo-thread addf motion-command-handler servo-thread addf motion-controller servo-thread addf hm2_7i43.0.write servo-thread # external output signals # # --- SPINDLE-BRAKE --- setp hm2_7i43.0.gpio.022.is_output true setp hm2_7i43.0.gpio.022.invert_output true net spindle-brake => hm2_7i43.0.gpio.022.out # --- COOLANT-FLOOD --- # setp hm2_7i43.0.gpio.025.is_output true # setp hm2_7i43.0.gpio.025.is_opendrain true # setp hm2_7i43.0.gpio.025.invert_output true # net coolant-flood => hm2_7i43.0.gpio.025.out # --- COOLANT-MIST --- setp hm2_7i43.0.gpio.025.is_output true setp hm2_7i43.0.gpio.025.is_opendrain true setp hm2_7i43.0.gpio.025.invert_output true net coolant-mist => hm2_7i43.0.gpio.025.out # --- Work Light (Or Air Vice)Control --- setp hm2_7i43.0.gpio.027.is_output true setp hm2_7i43.0.gpio.027.is_opendrain true setp hm2_7i43.0.gpio.027.invert_output true net worklight-ctl <= hm2_7i43.0.gpio.027.out # --- E-Stop Indication --- setp hm2_7i43.0.gpio.029.is_output false net epo-signal <= hm2_7i43.0.gpio.029.in_not #******************* # AXIS X #******************* # axis enable chain newsig emcmot.00.enable bit sets emcmot.00.enable FALSE net emcmot.00.enable <= axis.0.amp-enable-out net emcmot.00.enable => hm2_7i43.0.stepgen.00.enable # position command and feedback net emcmot.00.pos-cmd <= axis.0.motor-pos-cmd net emcmot.00.pos-cmd => hm2_7i43.0.stepgen.00.position-cmd # Step Gen signals/setup setp hm2_7i43.0.stepgen.00.dirsetup [AXIS_0]DIRSETUP setp hm2_7i43.0.stepgen.00.dirhold [AXIS_0]DIRHOLD setp hm2_7i43.0.stepgen.00.steplen [AXIS_0]STEPLEN setp hm2_7i43.0.stepgen.00.stepspace [AXIS_0]STEPSPACE setp hm2_7i43.0.stepgen.00.position-scale [AXIS_0]SCALE setp hm2_7i43.0.stepgen.00.maxaccel [AXIS_0]STEPGEN_MAXACCEL setp hm2_7i43.0.stepgen.00.maxvel [AXIS_0]STEPGEN_MAXVEL setp hm2_7i43.0.stepgen.00.step_type 0 setp hm2_7i43.0.stepgen.00.control-type 0 # ---Encoder feedback signals/setup--- setp hm2_7i43.0.encoder.00.counter-mode 0 setp hm2_7i43.0.encoder.00.filter 1 setp hm2_7i43.0.encoder.00.index-invert 0 setp hm2_7i43.0.encoder.00.index-mask 0 setp hm2_7i43.0.encoder.00.index-mask-invert 0 setp hm2_7i43.0.encoder.00.scale [AXIS_0]INPUT_SCALE net xindex-enable hm2_7i43.0.encoder.00.index-enable <=> axis.0.index-enable #Line below causes AXIS to display the ENCODER position in the DRO (and Preview) net xpos-fb => axis.0.motor-pos-fb <= hm2_7i43.0.encoder.00.position #net xpos-fb => axis.0.motor-pos-fb <= hm2_7i43.0.stepgen.00.position-fb # ---setup home / limit switch signals--- net x-home-sw => axis.0.home-sw-in net x-neg-limit => axis.0.neg-lim-sw-in net x-pos-limit => axis.0.pos-lim-sw-in #******************* # AXIS Y #******************* # axis enable chain newsig emcmot.01.enable bit sets emcmot.01.enable FALSE net emcmot.01.enable <= axis.1.amp-enable-out net emcmot.01.enable => hm2_7i43.0.stepgen.01.enable # position command and feedback net emcmot.01.pos-cmd <= axis.1.motor-pos-cmd net emcmot.01.pos-cmd => hm2_7i43.0.stepgen.01.position-cmd # Step Gen signals/setup setp hm2_7i43.0.stepgen.01.dirsetup [AXIS_1]DIRSETUP setp hm2_7i43.0.stepgen.01.dirhold [AXIS_1]DIRHOLD setp hm2_7i43.0.stepgen.01.steplen [AXIS_1]STEPLEN setp hm2_7i43.0.stepgen.01.stepspace [AXIS_1]STEPSPACE setp hm2_7i43.0.stepgen.01.position-scale [AXIS_1]SCALE setp hm2_7i43.0.stepgen.01.maxaccel [AXIS_0]STEPGEN_MAXACCEL setp hm2_7i43.0.stepgen.01.maxvel [AXIS_0]STEPGEN_MAXVEL setp hm2_7i43.0.stepgen.01.step_type 0 # ---Encoder feedback signals/setup--- setp hm2_7i43.0.encoder.01.counter-mode 0 setp hm2_7i43.0.encoder.01.filter 1 setp hm2_7i43.0.encoder.01.index-invert 0 setp hm2_7i43.0.encoder.01.index-mask 0 setp hm2_7i43.0.encoder.01.index-mask-invert 0 setp hm2_7i43.0.encoder.01.scale [AXIS_1]INPUT_SCALE net yindex-enable hm2_7i43.0.encoder.01.index-enable <=> axis.1.index-enable #Line below causes AXIS to disply the ENCODER position in the DRO (and Preview) net ypos-fb => axis.1.motor-pos-fb <= hm2_7i43.0.encoder.01.position # ---setup home / limit switch signals--- net y-home-sw => axis.1.home-sw-in net y-neg-limit => axis.1.neg-lim-sw-in net y-pos-limit => axis.1.pos-lim-sw-in #******************* # AXIS Z #******************* # axis enable chain newsig emcmot.02.enable bit sets emcmot.02.enable FALSE net emcmot.02.enable <= axis.2.amp-enable-out net emcmot.02.enable => hm2_7i43.0.stepgen.02.enable # position command and feedback net emcmot.02.pos-cmd <= axis.2.motor-pos-cmd net emcmot.02.pos-cmd => hm2_7i43.0.stepgen.02.position-cmd # Step Gen signals/setup setp hm2_7i43.0.stepgen.02.dirsetup [AXIS_2]DIRSETUP setp hm2_7i43.0.stepgen.02.dirhold [AXIS_2]DIRHOLD setp hm2_7i43.0.stepgen.02.steplen [AXIS_2]STEPLEN setp hm2_7i43.0.stepgen.02.stepspace [AXIS_2]STEPSPACE setp hm2_7i43.0.stepgen.02.position-scale [AXIS_2]SCALE setp hm2_7i43.0.stepgen.02.maxaccel [AXIS_0]STEPGEN_MAXACCEL setp hm2_7i43.0.stepgen.02.maxvel [AXIS_0]STEPGEN_MAXVEL setp hm2_7i43.0.stepgen.02.step_type 0 # ---Encoder feedback signals/setup--- setp hm2_7i43.0.encoder.02.counter-mode 0 setp hm2_7i43.0.encoder.02.filter 1 setp hm2_7i43.0.encoder.02.index-invert 0 setp hm2_7i43.0.encoder.02.index-mask 0 setp hm2_7i43.0.encoder.02.index-mask-invert 0 setp hm2_7i43.0.encoder.02.scale [AXIS_2]INPUT_SCALE net zindex-enable hm2_7i43.0.encoder.02.index-enable <=> axis.2.index-enable #Line below causes AXIS to disply the ENCODER position in the DRO (and Preview) net zpos-fb => axis.2.motor-pos-fb <= hm2_7i43.0.encoder.02.position # ---setup home / limit switch signals--- net z-home-sw => axis.2.home-sw-in net z-neg-limit => axis.2.neg-lim-sw-in net z-pos-limit => axis.2.pos-lim-sw-in #******************* # SPINDLE S #******************* # Step Gen signals/setup setp hm2_7i43.0.stepgen.03.dirsetup [SPINDLE_9]DIRSETUP setp hm2_7i43.0.stepgen.03.dirhold [SPINDLE_9]DIRHOLD setp hm2_7i43.0.stepgen.03.steplen [SPINDLE_9]STEPLEN setp hm2_7i43.0.stepgen.03.stepspace [SPINDLE_9]STEPSPACE setp hm2_7i43.0.stepgen.03.position-scale [SPINDLE_9]SCALE setp hm2_7i43.0.stepgen.03.maxaccel 0 setp hm2_7i43.0.stepgen.03.maxvel 0 setp hm2_7i43.0.stepgen.03.step_type 0 setp hm2_7i43.0.stepgen.03.control-type 1 net spindle-enable => hm2_7i43.0.stepgen.03.enable net spindle-vel-cmd => hm2_7i43.0.stepgen.03.velocity-cmd # ---setup spindle control signals--- net spindle-vel-cmd <= motion.spindle-speed-out net spindle-enable <= motion.spindle-on net spindle-ccw <= motion.spindle-reverse net spindle-brake <= motion.spindle-brake #****************************** # connect miscellaneous signals #****************************** # ---home signals --- setp hm2_7i43.0.gpio.033.is_output false net x-home-sw <= hm2_7i43.0.gpio.033.in_not setp hm2_7i43.0.gpio.035.is_output false net y-home-sw <= hm2_7i43.0.gpio.035.in_not setp hm2_7i43.0.gpio.037.is_output false net z-home-sw <= hm2_7i43.0.gpio.037.in_not # ---coolant signals--- net coolant-mist <= iocontrol.0.coolant-mist # ---estop signals--- net estop-out <= iocontrol.0.user-enable-out net epo-signal => iocontrol.0.emc-enable-in # ---manual tool change signals--- 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 ————————————end hal ——————————— ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot _______________________________________________ Emc-users mailing list Emc-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/emc-users