Gene, Thanks for the response. The machine has been running great for years on those values but in position mode, not in velocity mode. I wouldn't think that any of the step-gen parameters would need to change when changing to velocity mode...?
I suspect the PID parameters I am using, DEADBAND?, MAX_OUTPUT? (not sure what these should be) or perhaps I have mis-wired, or not wired, an encoder or velocity parameter in the Hal config.... -Tom > On Jun 25, 2017, at 9:11 PM, Gene Heskett <ghesk...@shentel.net> wrote: > >> On Sunday 25 June 2017 18:12:14 tom-...@bgp.nu wrote: >> >> I would like to attempt to get my machine with stepper motors running >> in velocity mode with feedback from the encoders. Below are the >> relevant parts of my Hal and Ini files for just the X-Axis. I figured >> I would do one axis at a time. Currently nothing happens when I try >> to jog the X axis except if I hold it long enough it gives a following >> error. If I try to home it, it faults with a following error. I was >> trying to look various parameters on Halscope, triggering off of >> axis.0.f-error but nothing appears for any of the pins I was >> monitoring. Are there any obvious errors in the config below to >> start with? >> >> -Tom >> >> ======================== HAL ======================== >> 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" loadrt pid >> names=pid.x,pid.y,pid.z >> >> addf hm2_7i43.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.y.do-pid-calcs servo-thread >> addf pid.z.do-pid-calcs servo-thread >> addf hm2_7i43.0.write servo-thread >> >> >> #******************* >> # AXIS X >> #******************* >> # axis enable chain >> >> setp pid.x.Pgain [AXIS_0]P >> setp pid.x.Igain [AXIS_0]I >> setp pid.x.Dgain [AXIS_0]D >> setp pid.x.bias [AXIS_0]BIAS >> setp pid.x.FF0 [AXIS_0]FF0 >> setp pid.x.FF1 [AXIS_0]FF1 >> setp pid.x.FF2 [AXIS_0]FF2 >> setp pid.x.deadband [AXIS_0]DEADBAND >> setp pid.x.maxoutput [AXIS_0]MAX_OUTPUT >> >> net x-index-enable <=> pid.x.index-enable >> net x-enable => pid.x.enable >> net x-ouput => 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_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 1 >> >> # --closed loop stepper signals-- >> net x-pos-cmd axis.0.motor-pos-cmd >> net x-output => hm2_7i43.0.stepgen.00.velocity-cmd >> net x-enable axis.0.amp-enable-out => hm2_7i43.0.stepgen.00.enable >> >> # ---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 x-pos-fb <= hm2_7i43.0.encoder.00.position >> net x-vel-fb <= hm2_7i43.0.encoder.00.velocity >> net x-pos-fb => axis.0.motor-pos-fb >> net x-index-enable axis.0.index-enable <=> >> hm2_7i43.0.encoder.00.index-enable net x-pos-rawcounts <= >> hm2_7i43.0.encoder.00.rawcounts >> >> # ---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 >> >> ======================== end HAL ======================== >> >> ======================== INI ======================== >> [EMC] >> MACHINE = EMCO >> DEBUG = 0 >> >> [DISPLAY] >> DISPLAY = axis >> 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 >> >> [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-CL.hal >> HALFILE = custom.hal >> POSTGUI_HALFILE = custom_postgui.hal >> >> [HALUI] >> MDI_COMMAND = G53 G0 X0 Y0 Z0 >> MDI_COMMAND = o<probev2> call >> >> [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 >> DEFAULT_ANGULAR_VELOCITY = 0.25 >> MAX_ANGULAR_VELOCITY = 1.0 >> >> [EMCIO] >> EMCIO = io >> CYCLE_TIME = 0.100 >> TOOL_TABLE = tool.tbl >> >> #******************** >> # Axis X >> #******************** >> [AXIS_0] >> TYPE = LINEAR >> FERROR = 1 >> MIN_FERROR = 1 >> MAX_VELOCITY = 2.2 >> MAX_ACCELERATION = 20 >> # these are in nanoseconds >> DIRSETUP = 200 >> DIRHOLD = 200 > > What motor drivers are you using? That 200 ns may be too fast for the > input opto-isolators and the micro-controllers that run the drivers to > respond to a direction change. Start at 2500 and work down. When it > miss-fires, add 300 and call it good for that driver. > >> STEPLEN = 2000 >> STEPSPACE = 1200 > > You might be able to shorten these times, how far might be dependent on > the card to driver wireup. You should feed 5 volts to all the drivers + > inputs, hook the drivers - terminal to the breakout board terminal and > set the active time of the pulse to be a logic zero as most breakout > boards have lots more power in the pulldown than in the pullup, and it > can make quite a difference in how fast you can spin the motors. > >> STEPGEN_MAXACCEL = 40 > > Ditto here, try 5 to 10. > >> STEPGEN_MAXVEL = 2.75 >> # >> P = 1 >> I = 0 >> D = 0 >> FF0 = 0 >> FF1 = 1.0 >> FF2 = 0 >> BIAS = 0 >> DEADBAND = 0.001 >> MAX_OUTPUT = 8 >> # >> 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 = NO >> HOME_IGNORE_LIMITS = NO >> HOME_IS_SHARED = NO >> # do this after Z is homed >> HOME_SEQUENCE = 2 >> # should unhome if estop or power off? no >> VOLATILE_HOME = 0 >> ======================== end INIL ======================== > > I HTH. > > Cheers, Gene Heskett > -- > "There are four boxes to be used in defense of liberty: > soap, ballot, jury, and ammo. Please use in that order." > -Ed Howdershelt (Author) > Genes Web page <http://geneslinuxbox.net:6309/gene> > > ------------------------------------------------------------------------------ > 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 ------------------------------------------------------------------------------ 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