On Sunday 25 June 2017 18:12:14 [email protected] 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 [email protected] https://lists.sourceforge.net/lists/listinfo/emc-users
