I'm traveling and cannot test on an actual BBB, but I see a couple
glaring problems:

* For AXIS_1 (Y) and AXIS_2 (Z), your stepgen maximum velocity and
acceleration values are DRAMATICALLY smaller than what you have
configured for the axis maximum values.  This will absolutely cause the
tracking errors you're seeing as the motion controller attempts to move
the axis at MAX_VELOCITY/MAX_ACCELERATION but the stepgen will hard-clip
the movement to STEPGEN_MAX_VEL/STEPGEN_MAX_ACC.  Make sure the STEPGEN
values are at least as large as what you're telling the motion
controller to command.

* You have a 4th axis (A) configured in your INI file, but nothing
related to this axis in your HAL file.  This can also generate tracking
errors if any motion is ever commanded on this axis.  You should at
least tie the commanded position to the position feedback, eg something
like:

  net emcmot.03.pos <= axis.3.motor-pos-cmd
  net emcmot.03.pos => axis.3.motor-pos-fb

...will avoid tracking errors if you don't want to actually connect this
axis to a stepgen driver while testing.

* Your velocity and acceleration values for the 4th axis also have the
same problem as the values for Y and Z (the STEPGEN values are smaller
than the values used for motion planning).  You'll need to fix that if
you want to tie the A axis to an actual stepgen instance.

* The gantry component won't really work as expected without per axis
limit switches.  As long as you start with both sides aligned you should
be OK, but you won't be able to automatically de-rack when homing.

Fix the problems with your vel/acc settings and report back with the
results.

On 4/23/2019 9:12 AM, Bradley Turner wrote:
> Sorry about that,
> Please let me know if you are able to view these files, if not I can send a 
> direct email to you with them, I also attached them as .txt if googles 
> security servers are not letting you download the .hal file itself. I also 
> have copied the text below, so hopefully if all else fails that will 
> work.Thank you for the quick response we really appreciate it!
> Thank you, Bradley Turner
> 
> 
> 
> INI:
> 
> 
> [PRUCONF]
> DRIVER=hal_pru_generic
> CONFIG=pru=0 num_stepgens=5 num_pwmgens=6
> PRUBIN=xenomai/pru_generic.bin
> #MPCNC
> 
> [EMC]
> 
> # Name of machine, for use with display, etc.
> MACHINE =               MPCNC-BCNC-CRAMPS
> 
> # Debug level, 0 means no messages. See src/emc/nml_int/emcglb.h for others
> #DEBUG =                0x00000003
> #DEBUG =                0x00000007
> DEBUG = 5
> 
> 
> 
> 
> [DISPLAY]
> 
> # Name of display program, e.g., tkemc
> #DISPLAY = tkemc
> #DISPLAY = gscreen
> DISPLAY = axis
> 
> # Touchy currently won't work without some hardware buttons/jog-wheel
> #DISPLAY = touchy
> 
> # Cycle time, in seconds, that display will sleep between polls
> CYCLE_TIME =            0.200
> 
> # Path to help file
> HELP_FILE =             tklinucnc.txt
> 
> # Initial display setting for position, RELATIVE or MACHINE
> POSITION_OFFSET =       RELATIVE
> 
> # Initial display setting for position, COMMANDED or ACTUAL
> POSITION_FEEDBACK =     ACTUAL
> 
> # Highest value that will be allowed for feed override, 1.0 = 100%
> MAX_FEED_OVERRIDE =     4
> 
> # Max jog speed (This is in mm per second.)
> MAX_LINEAR_VELOCITY = 200
> MIN_LNEAR_VELOCITY = 1
> 
> DEFAULT_LINEAR_VELOCITY =20
> 
> 
> 
> 
> # Prefix to be used
> PROGRAM_PREFIX = /home/machinekit/machinekit/nc_files
> 
> # Introductory graphic
> INTRO_GRAPHIC =         machinekit.gif
> INTRO_TIME =            5
> 
> # Increments for the JOG section
> INCREMENTS = 10 1 0.1 0.01
> 
> # This is the temperature display - not needed for this
> #PYVCP = 3D.Temps.panel.xml
> 
> [FILTER]
> PROGRAM_EXTENSION = .png,.gif,.jpg Grayscale Depth Image
> PROGRAM_EXTENSION = .py Python Script
> png = image-to-gcode
> gif = image-to-gcode
> jpg = image-to-gcode
> py = python
> 
> 
> [TASK]
> 
> # Name of task controller program, e.g., milltask
> TASK =                  milltask
> 
> # Cycle time, in seconds, that task controller will sleep between polls
> CYCLE_TIME =            0.010
> 
> 
> 
> 
> [RS274NGC]
> 
> # File containing interpreter variables
> PARAMETER_FILE =        pru-stepper.var
> 
> 
> 
> 
> [EMCMOT]
> #This is the real time motion component
> #You can read up on this here 
> http://linuxcnc.org/docs/html/man/man9/motion.9.html
> EMCMOT =                motmod
> 
> # Timeout for comm to emcmot, in seconds
> COMM_TIMEOUT =          1.0
> 
> # Interval between tries to emcmot, in seconds
> COMM_WAIT =             0.010
> 
> # Servo task period, in nanoseconds
> SERVO_PERIOD =          1000000
> BASE_PERIOD = 79375
> 
> [PENDANT]
> SPEED_1 = 20
> SPEED_2 = 30
> SPEED_3 = 60
> 
> 
> [HAL]
> 
> # The run script first uses halcmd to execute any HALFILE
> # files, and then to execute any individual HALCMD commands.
> 
> # list of hal config files to run through halcmd
> # files are executed in the order in which they appear
> 
> HALFILE = CRAMPS.hal
> 
> # list of halcmd commands to execute
> # commands are executed in the order in which they appear
> #HALCMD =               save neta
> 
> POSTGUI_HALFILE =       3D.postgui.hal
> POSTGUI_HALFILE = custom_postgui.hal
> HALUI = halui
> 
> 
> [TRAJ]
> 
> #JOINTS =                5
> AXES =                  4
> COORDINATES =           X Y Z A
> #MAX_ANGULAR_VELOCITY = 45.00
> #DEFAULT_ANGULAR_VELOCITY = 4.50
> LINEAR_UNITS =          mm
> ANGULAR_UNITS =         degree
> CYCLE_TIME =            0.010
> DEFAULT_VELOCITY = 5
> 
> DEFAULT_ACCELERATION = 400
> CYCLE_TIME =            0.010
> MAX_LINEAR_VELOCITY = 20.00
> 
> 
> 
> 
> 
> [AXIS_0]
> #X Axis
> 
> # 
> # Step timing is 40 us steplen + 40 us stepspace
> # That gives 80 us step period = 12.5 KHz step freq
> #
> # Bah, even software stepping can handle that, hm2 doesnt buy you much with
> # such slow steppers.
> #
> # Scale is 200 steps/rev * 5 revs/inch = 1000 steps/inch
> #
> # This gives a maxvel of 12.5/1 = 12.5 ips
> #
> 
> 
> TYPE =              LINEAR
> MAX_VELOCITY =       200.0
> MAX_ACCELERATION =   3000.0
> # Set Stepgen max 20% higher than the axis
> STEPGEN_MAX_VEL =    240.0
> STEPGEN_MAX_ACC =    3600.0
> 
> BACKLASH =           0.000
> 
> # scale is 200 steps/rev * 5 revs/inch
> SCALE =  -200
> 
> MIN_LIMIT =             -1.0
> MAX_LIMIT =             220.0
> 
> FERROR =     1.0
> MIN_FERROR = 0.25
> 
> HOME =                  0.000
> HOME_OFFSET =           0
> HOME_IGNORE_LIMITS =    YES
> HOME_USE_INDEX =        NO
> HOME_SEQUENCE =         1
> 
> # Set to zero if you don't have physical home/limit switches
> # Set to the desired homing and latch velocity if you have switches
> # See: https://github.com/machinekit/machinekit-docs
> HOME_SEARCH_VEL =       0
> HOME_LATCH_VEL =        0
> 
> # These are settings for DRV8825 Polulo
> # these are in nanoseconds
> #DIRSETUP   =              650
> #DIRHOLD    =              650
> #STEPLEN    =              1900
> #STEPSPACE  =              1900
> 
> #http://wiki.linuxcnc.org/cgi-bin/wiki.pl?Stepper_Drive_Timing
> # There are settings for a A4988 Polulo
> # these are in nanoseconds
> DIRSETUP   =              650
> DIRHOLD    =              650
> STEPLEN    =              1900
> STEPSPACE  =              1900
> 
> 
> 
> 
> [AXIS_1]
> #Y1
> 
> TYPE =              LINEAR
> MAX_VELOCITY =       20.0
> MAX_ACCELERATION =   300.0
> # Set Stepgen max 20% higher than the axis
> STEPGEN_MAX_VEL =    2.0
> STEPGEN_MAX_ACC =    3.0
> 
> BACKLASH =           0.000
> 
> SCALE =  200
> 
> MIN_LIMIT =             -1.0
> MAX_LIMIT =             250.0
> 
> FERROR =     1.0
> MIN_FERROR = 0.25
> 
> HOME =                  0.000
> HOME_OFFSET =           0.00
> HOME_IGNORE_LIMITS =    YES
> HOME_USE_INDEX =        NO
> HOME_SEQUENCE =         2
> 
> # Set to zero if you don't have physical home/limit switches
> # Set to the desired homing and latch velocity if you have switches
> # See: https://github.com/machinekit/machinekit-docs
> HOME_SEARCH_VEL =       0
> HOME_LATCH_VEL =        0
> 
> # these are in nanoseconds
> DIRSETUP   =              650
> DIRHOLD    =              650
> STEPLEN    =              1900
> STEPSPACE  =              1900
> 
> 
> 
> 
> [AXIS_2]
> 
> TYPE =              LINEAR
> MAX_VELOCITY =      200
> MAX_ACCELERATION =  300
> # Set Stepgen max 20% higher than the axis
> STEPGEN_MAX_VEL =    6.0
> STEPGEN_MAX_ACC =    125.0
> 
> BACKLASH =           0.000
> 
> #SCALE = 1511.81102362
> SCALE = 200
> 
> MIN_LIMIT =             -10.0
> MAX_LIMIT =             200.0
> 
> FERROR =     1.0
> MIN_FERROR = 0.25
> 
> HOME =                  0.000
> HOME_OFFSET =           0.00
> HOME_IGNORE_LIMITS =    YES
> HOME_USE_INDEX =        NO
> HOME_SEQUENCE =         0
> 
> # Set to zero if you don't have physical home/limit switches
> # Set to the desired homing and latch velocity if you have switches
> # See: https://github.com/machinekit/machinekit-docs
> HOME_SEARCH_VEL =       0
> HOME_LATCH_VEL =        0
> 
> # these are in nanoseconds
> DIRSETUP   =              650
> DIRHOLD    =              650
> STEPLEN    =              1900
> STEPSPACE  =              1900
> 
> 
> 
> 
> [AXIS_3]
> #Axis A
> TYPE = ANGULAR
> MAX_VELOCITY = 31.8993189453
> MAX_ACCELERATION = 3000.0
> # Set Stepgen max 20% higher than the axis
> STEPGEN_MAX_VEL = 3.0
> STEPGEN_MAX_ACC = 37.0
> 
> BACKLASH =           0.000
> 
> #SCALE = -744.530002058
> SCALE = -1489.06
> #SCALE = -732.32
> 
> MIN_LIMIT = -9999.0
> MAX_LIMIT = 999999999.0
> 
> FERROR = 1.0
> MIN_FERROR = 0.25
> 
> HOME =                  0.000
> HOME_OFFSET =           0.00
> HOME_IGNORE_LIMITS =    YES
> HOME_USE_INDEX =        NO
> HOME_SEQUENCE =         0
> 
> # Set to zero if you don't have physical home/limit switches
> # Set to the desired homing and latch velocity if you have switches
> # See: https://github.com/machinekit/machinekit-docs
> HOME_SEARCH_VEL =       0
> HOME_LATCH_VEL =        0
> 
> # these are in nanoseconds
> DIRSETUP   =              650
> DIRHOLD    =              650
> STEPLEN    =              1900
> STEPSPACE  =              1900
> 
> 
> 
> 
> [EMCIO]
> 
> # Name of IO controller program, e.g., io
> EMCIO =                 io
> 
> # cycle time, in seconds
> CYCLE_TIME =            0.100
> 
> # tool table file
> TOOL_TABLE =            tool.tbl
> 
> 
> 
> HAL:
> 
> 
> # #######################################
> #
> # HAL file for BeagleBone + CRAMPS cape with 5 steppers BCNC
> #
> # Derived from example hm2-stepper config
> #
> # ########################################
> 
> # Launch the setup script to make sure hardware setup looks good
> loadusr -w ./setup.sh
> 
> 
> # ###################################
> # Core EMC/HAL Loads
> # ###################################
> 
> # kinematics
> loadrt trivkins
> 
> # motion controller, get name and thread periods from ini file
> # trajectory planner
> loadrt tp
> loadrt [EMCMOT]EMCMOT servo_period_nsec=[EMCMOT]SERVO_PERIOD 
> num_joints=[TRAJ]AXES tp=tp kins=trivkins
> 
> 
> # load low-level drivers
> loadrt hal_bb_gpio output_pins=816,822,823,824,825,826,914,923,925 
> input_pins=807,808,809,810,817,911,913
> loadrt [PRUCONF](DRIVER) prucode=$(HAL_RTMOD_DIR)/[PRUCONF](PRUBIN) 
> [PRUCONF](CONFIG) halname=hpg
> #loadrt pid count=2
> 
> ###################################
> #This enables gantry configs
> ###################################
> 
> newinst gantry gantryY.0 pincount=2
> 
> ###################################
> 
> loadrt limit1 count=2
> 
> 
> # Python user-mode HAL module to read ADC value and generate a thermostat 
> output for PWM
> # c = analog input channel and thermistor table
> # loadusr -Wn Therm hal_temp_bbb -n Therm -c 
> 04:epcos_B57560G1104,05:epcos_B57560G1104 -b CRAMPS
> 
> # ################################################
> # THREADS
> # ################################################
> 
> addf hpg.capture-position                 servo-thread
> addf bb_gpio.read                         servo-thread
> addf motion-command-handler               servo-thread
> addf gantryY.0.read                       servo-thread
> addf motion-controller                    servo-thread
> 
> 
> #addf pid.0.do-pid-calcs                  servo-thread
> #addf pid.1.do-pid-calcs                  servo-thread
> 
> 
> addf gantryY.0.write                      servo-thread
> 
> 
> addf limit1.0                             servo-thread
> addf limit1.1                             servo-thread
> addf hpg.update                           servo-thread
> addf bb_gpio.write                        servo-thread
> 
> 
> # ######################################################
> # Axis-of-motion Specific Configs (not the GUI)
> # ######################################################
> 
> 
> # ################
> # X [0] Axis
> # ################
> 
> # 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 => hpg.stepgen.00.enable
> 
> 
> # position command and feedback
> net emcmot.00.pos-cmd <= axis.0.motor-pos-cmd
> net emcmot.00.pos-cmd => hpg.stepgen.00.position-cmd
> 
> net motor.00.pos-fb <= hpg.stepgen.00.position-fb
> net motor.00.pos-fb => axis.0.motor-pos-fb
> 
> 
> # timing parameters
> setp hpg.stepgen.00.dirsetup        [AXIS_0]DIRSETUP
> setp hpg.stepgen.00.dirhold         [AXIS_0]DIRHOLD
> 
> setp hpg.stepgen.00.steplen         [AXIS_0]STEPLEN
> setp hpg.stepgen.00.stepspace       [AXIS_0]STEPSPACE
> 
> setp hpg.stepgen.00.position-scale  [AXIS_0]SCALE
> 
> setp hpg.stepgen.00.maxvel          [AXIS_0]STEPGEN_MAX_VEL
> setp hpg.stepgen.00.maxaccel        [AXIS_0]STEPGEN_MAX_ACC
> 
> #setp hpg.stepgen.00.step_type       0
> # P8.43 PRU1.out2
> setp hpg.stepgen.00.steppin        813
> # P8.44 PRU1.out4
> setp hpg.stepgen.00.dirpin         812
> 
> 
> # ################
> # Y Axis Gantry
> # ################
> 
> net y1pos-cmd gantryY.0.joint.00.pos-cmd => hpg.stepgen.02.position-cmd
> net y1pos-fb  gantryY.0.joint.00.pos-fb  <= hpg.stepgen.02.position-fb
> net y2pos-cmd gantryY.0.joint.01.pos-cmd => hpg.stepgen.03.position-cmd
> net y2pos-fb  gantryY.0.joint.01.pos-fb  <= hpg.stepgen.03.position-fb
> net ypos-cmd  gantryY.0.position-cmd     <= axis.1.motor-pos-cmd
> net ypos-fb   gantryY.0.position-fb      => axis.1.motor-pos-fb
> net yenable axis.1.amp-enable-out => hpg.stepgen.02.enable 
> hpg.stepgen.03.enable
> setp gantryY.0.search-vel [AXIS_1]HOME_SEARCH_VEL
> 
> # y1-axis
> setp hpg.stepgen.02.position-scale [AXIS_1]SCALE
> setp hpg.stepgen.02.steplen [AXIS_1]STEPLEN
> setp hpg.stepgen.02.stepspace [AXIS_1]STEPSPACE
> setp hpg.stepgen.02.dirhold [AXIS_1]DIRHOLD
> setp hpg.stepgen.02.dirsetup [AXIS_1]DIRSETUP
> setp hpg.stepgen.02.maxaccel [AXIS_1]STEPGEN_MAX_ACC
> 
> #setp hpg.stepgen.01.steppin         144
> #setp hpg.stepgen.01.dirpin          145
> #setp hpg.stepgen.02.step_type       0
> # P8.42 PRU1.out5
> setp hpg.stepgen.02.steppin        815
> # P8.39 PRU1.out6
> setp hpg.stepgen.02.dirpin         814
> 
> # y2-axis
> setp hpg.stepgen.03.position-scale [AXIS_1]SCALE
> setp hpg.stepgen.03.steplen [AXIS_1]STEPLEN
> setp hpg.stepgen.03.stepspace [AXIS_1]STEPSPACE
> setp hpg.stepgen.03.dirhold [AXIS_1]DIRHOLD
> setp hpg.stepgen.03.dirsetup [AXIS_1]DIRSETUP
> setp hpg.stepgen.03.maxaccel [AXIS_1]STEPGEN_MAX_ACC
> 
> #setp hpg.stepgen.02.steppin         52
> #setp hpg.stepgen.02.dirpin          147
> #setp hpg.stepgen.03.step_type       0
> setp hpg.stepgen.03.steppin        917
> setp hpg.stepgen.03.dirpin         918
> 
> 
> 
> 
> 
> #######################################################
> # GETTING THE GANTRY HOME SWITCHES SETUP
> ########################################################
> # TODO this can be deleted just a refer to the cramps pins
> #net limit-x-min <= bb_gpio.p8.in-08
> #net limit-x-max <= bb_gpio.p8.in-07
> #net limit-y-min <= bb_gpio.p8.in-10
> #net limit-y-max <= bb_gpio.p8.in-09
> #net limit-z-min <= bb_gpio.p9.in-13
> #net limit-z-max <= bb_gpio.p9.in-11
> 
> 
> 
> ####################################
> ### X- AXIS GANTRY  ################
> ####################################
> # debounce the X-axis switches and connect them to signals
> #net switches-x1 <= bb_gpio.p8.in-08
> #net switches-x2 <= bb_gpio.p8.in-07
> 
> # join the home switch signals so that both switches have to be closed to 
> trigger a home position
> #net switches-x1 => gantryX.0.joint.00.home
> #net switches-x2 => gantryX.0.joint.01.home
> #net home-x <= gantryX.0.home
> #net home-x => axis.0.home-sw-in
> #net limit-x <= gantryX.0.limit
> #net limit-x => axis.0.neg-lim-sw-in
> 
> ####################################
> ### Y- AXIS GANTRY  ################
> ####################################
> # debounce the y-axis switches and connect them to signals
> ##net switches-y1 <= bb_gpio.p8.in-10
> ##net switches-y2 <= bb_gpio.p8.in-09
> 
> # join the home switch signals so that both switches have to be closed to 
> trigger a home position
> ##net switches-y1 => gantryY.0.joint.00.home
> ##net switches-y2 => gantryY.0.joint.01.home
> ##net home-y <= gantryY.0.home
> ##net home-y => axis.1.home-sw-in
> ##net limit-y <= gantryY.0.limit
> ##net limit-y => axis.1.neg-lim-sw-in
> 
> ####################################
> ### Z AXIS  ################
> ####################################
> 
> ##net limit-z-min <= bb_gpio.p9.in-13
> ##net both-home-z-max <= bb_gpio.p9.in-11
> ##net both-home-z-max => axis.2.pos-lim-sw-in
> ##net limit-z-min => axis.2.neg-lim-sw-in
> ##net both-home-z-max => axis.2.home-sw-in
> 
> 
> 
> 
> # 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 => hpg.stepgen.00.enable
> 
> 
> # position command and feedback
> #net emcmot.00.pos-cmd <= axis.0.motor-pos-cmd
> #net emcmot.00.pos-cmd => hpg.stepgen.00.position-cmd
> 
> #net motor.00.pos-fb <= hpg.stepgen.00.position-fb
> #net motor.00.pos-fb => axis.0.motor-pos-fb
> 
> 
> # timing parameters
> #setp hpg.stepgen.00.dirsetup        [AXIS_0]DIRSETUP
> #setp hpg.stepgen.00.dirhold         [AXIS_0]DIRHOLD
> 
> #setp hpg.stepgen.00.steplen         [AXIS_0]STEPLEN
> #setp hpg.stepgen.00.stepspace       [AXIS_0]STEPSPACE
> 
> #setp hpg.stepgen.00.position-scale  [AXIS_0]SCALE
> 
> #setp hpg.stepgen.00.maxvel          [AXIS_0]STEPGEN_MAX_VEL
> #setp hpg.stepgen.00.maxaccel        [AXIS_0]STEPGEN_MAX_ACC
> 
> #setp hpg.stepgen.00.step_type       0
> # P8.43 PRU1.out2
> #setp hpg.stepgen.00.steppin        813
> # P8.44 PRU1.out4
> #setp hpg.stepgen.00.dirpin         812
> 
> 
> 
> 
> 
> # ################
> # Y [1] Axis
> # ################
> 
> # 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 => hpg.stepgen.01.enable
> 
> 
> # position command and feedback
> #net emcmot.01.pos-cmd <= axis.1.motor-pos-cmd
> #net emcmot.01.pos-cmd => hpg.stepgen.01.position-cmd
> 
> #net motor.01.pos-fb <= hpg.stepgen.01.position-fb
> #net motor.01.pos-fb => axis.1.motor-pos-fb
> 
> 
> # timing parameters
> #setp hpg.stepgen.01.dirsetup        [AXIS_1]DIRSETUP
> #setp hpg.stepgen.01.dirhold         [AXIS_1]DIRHOLD
> 
> #setp hpg.stepgen.01.steplen         [AXIS_1]STEPLEN
> #setp hpg.stepgen.01.stepspace       [AXIS_1]STEPSPACE
> 
> #setp hpg.stepgen.01.position-scale  [AXIS_1]SCALE
> 
> #setp hpg.stepgen.01.maxvel          [AXIS_1]STEPGEN_MAX_VEL
> #setp hpg.stepgen.01.maxaccel        [AXIS_1]STEPGEN_MAX_ACC
> 
> #setp hpg.stepgen.01.step_type       0
> # P8.42 PRU1.out5
> #setp hpg.stepgen.01.steppin        815
> # P8.39 PRU1.out6
> #setp hpg.stepgen.01.dirpin         814
> 
> 
> 
> 
> 
> 
> 
> 
> 
> # ################
> # Z [2] Axis
> # ################
> 
> # 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 => hpg.stepgen.02.enable
> 
> 
> # position command and feedback
> net emcmot.02.pos-cmd <= axis.2.motor-pos-cmd
> #net emcmot.02.pos-cmd => hpg.stepgen.02.position-cmd
> 
> #net motor.02.pos-fb <= hpg.stepgen.02.position-fb
> net motor.02.pos-fb => axis.2.motor-pos-fb
> 
> 
> # timing parameters
> #setp hpg.stepgen.02.dirsetup        [AXIS_2]DIRSETUP
> #setp hpg.stepgen.02.dirhold         [AXIS_2]DIRHOLD
> 
> #setp hpg.stepgen.02.steplen         [AXIS_2]STEPLEN
> #setp hpg.stepgen.02.stepspace       [AXIS_2]STEPSPACE
> 
> #setp hpg.stepgen.02.position-scale  [AXIS_2]SCALE
> 
> #setp hpg.stepgen.02.maxvel          [AXIS_2]STEPGEN_MAX_VEL
> #setp hpg.stepgen.02.maxaccel        [AXIS_2]STEPGEN_MAX_ACC
> 
> #setp hpg.stepgen.02.step_type       0
> # P8.27 PRU1.out8
> #setp hpg.stepgen.02.steppin        819
> # P8.29 PRU1.out9
> #setp hpg.stepgen.02.dirpin         818
> 
> 
> # ################
> # A [3] Axis A-Axis
> # ################
> 
> # axis enable chain
> #newsig emcmot.03.enable bit
> #sets emcmot.03.enable FALSE
> 
> #net emcmot.03.enable <= axis.3.amp-enable-out
> #net emcmot.03.enable => hpg.stepgen.03.enable
> 
> 
> # position command and feedback
> #net emcmot.03.pos-cmd <= axis.3.motor-pos-cmd
> #net emcmot.03.pos-cmd => hpg.stepgen.03.position-cmd
> 
> #net motor.03.pos-fb <= hpg.stepgen.03.position-fb
> #net motor.03.pos-fb => axis.3.motor-pos-fb
> 
> 
> # timing parameters
> #setp hpg.stepgen.03.dirsetup        [AXIS_3]DIRSETUP
> #setp hpg.stepgen.03.dirhold         [AXIS_3]DIRHOLD
> 
> #setp hpg.stepgen.03.steplen         [AXIS_3]STEPLEN
> #setp hpg.stepgen.03.stepspace       [AXIS_3]STEPSPACE
> 
> #setp hpg.stepgen.03.position-scale  [AXIS_3]SCALE
> 
> #setp hpg.stepgen.03.maxvel          [AXIS_3]STEPGEN_MAX_VEL
> #setp hpg.stepgen.03.maxaccel        [AXIS_3]STEPGEN_MAX_ACC
> 
> #setp hpg.stepgen.03.step_type       0
> # P8.30 GPIO2.25
> #setp hpg.stepgen.03.steppin        916
> # P8.21 GPIO1.30
> #setp hpg.stepgen.03.dirpin         912
> 
> 
> 
> 
> 
> 
> # ##############################
> # A [4] Axis Extra Y Axis Gantry
> # THIS iS THE E1 drive on the cramps drive
> # ##############################
> 
> # axis enable chain
> #newsig emcmot.04.enable bit
> #sets emcmot.04.enable FALSE
> 
> #net emcmot.04.enable <= axis.4.amp-enable-out
> #net emcmot.04.enable => hpg.stepgen.04.enable
> 
> 
> # position command and feedback
> #net emcmot.04.pos-cmd <= axis.4.motor-pos-cmd
> #net emcmot.04.pos-cmd => hpg.stepgen.04.position-cmd
> 
> #net motor.04.pos-fb <= hpg.stepgen.04.position-fb
> #net motor.04.pos-fb => axis.4.motor-pos-fb
> 
> 
> # timing parameters
> #setp hpg.stepgen.04.dirsetup        [AXIS_4]DIRSETUP
> #setp hpg.stepgen.04.dirhold         [AXIS_4]DIRHOLD
> 
> #setp hpg.stepgen.04.steplen         [AXIS_4]STEPLEN
> #setp hpg.stepgen.04.stepspace       [AXIS_4]STEPSPACE
> 
> #setp hpg.stepgen.04.position-scale  [AXIS_4]SCALE
> 
> #setp hpg.stepgen.04.maxvel          [AXIS_4]STEPGEN_MAX_VEL
> #setp hpg.stepgen.04.maxaccel        [AXIS_4]STEPGEN_MAX_ACC
> 
> #setp hpg.stepgen.04.steppin        917
> #setp hpg.stepgen.04.dirpin         918
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> # ##################################################
> # Standard I/O - EStop, Enables, Limit Switches, Etc
> # ##################################################
> 
> # Create estop signal chain
> # Drive software estop to hardware
> net estop-out iocontrol.0.user-enable-out => bb_gpio.p8.out-26
> setp bb_gpio.p8.out-26.invert 1
> 
> # Monitor estop input from hardware
> net estop-loop bb_gpio.p8.in-17 => iocontrol.0.emc-enable-in
> setp bb_gpio.p8.in-17.invert 1
> 
> # create signals for tool loading loopback
> net tool-prep-loop iocontrol.0.tool-prepare => iocontrol.0.tool-prepared
> net tool-change-loop iocontrol.0.tool-change => iocontrol.0.tool-changed
> 
> # Axis enable signal (active low)
> net emcmot.00.enable => bb_gpio.p9.out-14
> setp bb_gpio.p9.out-14.invert 1
> 
> # Machine power
> # Use halui.machine.is-on instead?
> #net emcmot.00.enable => bb_gpio.p9.out-23
> #net xenable => bb_gpio.p9.out-14
> 
> 
> # Tie machine power signal to the CRAMPS LED
> # Feel free to tie any other signal you like to the LED
> net emcmot.00.enable => bb_gpio.p9.out-25
> 
> # ################
> # Limit Switches
> # ################
> #newsig limit-x-min bit
> #newsig limit-x-max bit
> #newsig limit-y-min bit
> #newsig limit-y-max bit
> #newsig limit-z-min bit
> #newsig limit-z-max bit
> 
> #net limit-x-min <= bb_gpio.p8.in-08
> #net limit-x-max <= bb_gpio.p8.in-07
> #net limit-y-min <= bb_gpio.p8.in-10
> #net limit-y-max <= bb_gpio.p8.in-09
> #net limit-z-min <= bb_gpio.p9.in-13
> #net limit-z-max <= bb_gpio.p9.in-11
> 
> # Adjust as needed for your switch polarity
> #setp bb_gpio.p8.in-08.invert 1
> #setp bb_gpio.p8.in-07.invert 1
> #setp bb_gpio.p8.in-10.invert 1
> setp bb_gpio.p8.in-09.invert 1
> #setp bb_gpio.p9.in-11.invert 1
> #setp bb_gpio.p9.in-13.invert 1
> 
> # Uncomment if you actually have limit switches setup
> # You probably want to setup homing in the INI file, as well
> #net limit-x-min => axis.0.home-sw-in
> #net limit-x-min => axis.0.neg-lim-sw-in
> #net limit-x-max => axis.0.pos-lim-sw-in
> #net limit-y-min => axis.1.home-sw-in
> #net limit-y-min => axis.1.neg-lim-sw-in
> #net limit-y-max => axis.1.pos-lim-sw-in
> #net limit-z-min => axis.2.home-sw-in
> #net limit-z-min => axis.2.neg-lim-sw-in
> #net limit-z-max => axis.2.pos-lim-sw-in
> 
> # ################
> # Servo signals
> # ################
> 
> # There is currently no driver to generate pulses for actual
> # radio-control style servos, but the buffered 5V output
> # signals can be used as GPIO
> 
> # !!! WARNING !!!
> # BBB on-board eMMC *MUST* be disabled in order to use these!
> # Drive eMMC-disabled signal high to enable signals that overlap
> # with the eMMC pins on P8, otherwise they are tri-stated
> #
> # You also need to edit the setup.sh file to enable the GPIO pins
> 
> # Signal the hardware that eMMC has been disabled and it is safe
> # to drive the signals connected to eMMC lines (active low)
> newsig eMMC-disabled bit
> sets eMMC-disabled 0
> net eMMC-disabled bb_gpio.p8.out-16
> setp bb_gpio.p8.out-16.invert 1
> 
> # Servo signals, output only, driven by an 'ACT125
> 
> #newsig servo.1 bit
> #newsig servo.2 bit
> #newsig servo.3 bit
> #newsig servo.4 bit
> 
> #sets servo.1 0
> #sets servo.2 0
> #sets servo.3 0
> #sets servo.4 0
> 
> #net servo.1 bb_gpio.p8.out-25
> #net servo.2 bb_gpio.p8.out-24
> #net servo.3 bb_gpio.p8.out-23
> #net servo.4 bb_gpio.p8.out-22
> 
> 
> # ##################################################
> # PWM and Temperature Signals
> # ##################################################
> 
> # Define signals to use elsewhere (ie: M1xx codes)
> # If you change any names here, lots of things will break!
> newsig e0.temp.set   float
> newsig e0.temp.meas  float
> newsig bed.temp.set  float
> newsig bed.temp.meas float
> 
> 
> setp hpg.pwmgen.00.pwm_period       10000000
> 
> # Bed Heater FET 1
> setp hpg.pwmgen.00.out.00.pin       811
> setp hpg.pwmgen.00.out.00.enable    1
> setp hpg.pwmgen.00.out.00.value     0.0
> 
> # E0 Heater FET 2
> setp hpg.pwmgen.00.out.01.pin       915
> setp hpg.pwmgen.00.out.01.enable    1
> setp hpg.pwmgen.00.out.01.value     0.0
> 
> # E1 Heater FET 3
> setp hpg.pwmgen.00.out.02.pin       927
> setp hpg.pwmgen.00.out.02.enable    1
> setp hpg.pwmgen.00.out.02.value     0.0
> 
> # E2 Heater FET 4
> setp hpg.pwmgen.00.out.03.pin       921
> setp hpg.pwmgen.00.out.03.enable    1
> setp hpg.pwmgen.00.out.03.value     0.0
> 
> # FET 5 - Fan / LED
> setp hpg.pwmgen.00.out.04.pin       941
> setp hpg.pwmgen.00.out.04.enable    1
> setp hpg.pwmgen.00.out.04.value     0.0
> 
> # FET 6 - Fan / LED
> setp hpg.pwmgen.00.out.05.pin       922
> setp hpg.pwmgen.00.out.05.enable    1
> setp hpg.pwmgen.00.out.05.value     0.0
> 
> # PID for Extruder 0 temperature control
> #net e0.temp.meas    <= Therm.ch-04.value
> #net e0.temp.meas    => pid.0.feedback
> 
> #sets e0.temp.set  0
> #net e0.temp.set     => pid.0.command
> 
> #net e0.heater  <= pid.0.output
> #net e0.heater  => limit1.0.in
> #net e0.heaterl <= limit1.0.out
> #net e0.heaterl => hpg.pwmgen.00.out.01.value
> 
> # Limit heater PWM to positive values
> # PWM mimics hm2 implementation, which generates output for negative values
> setp limit1.0.min 0
> 
> # PID for Bed temperature control
> #net bed.temp.meas    <= Therm.ch-05.value
> #net bed.temp.meas    => pid.1.feedback
> 
> #sets bed.temp.set  0
> #net bed.temp.set     => pid.1.command
> 
> #net bed.heater  <= pid.1.output
> #net bed.heater  => limit1.1.in
> #net bed.heaterl <= limit1.1.out
> #net bed.heaterl => hpg.pwmgen.00.out.00.value
> 
> # Limit heater PWM to positive values
> # PWM mimics hm2 implementation, which generates output for negative values
> setp limit1.1.min 0
> 
> # PID Parameters for adjusting temperature control
> # Extruder
> #setp pid.0.FF0      0
> #setp pid.0.FF1      0
> #setp pid.0.FF2      0
> #setp pid.0.Pgain  0.30
> #setp pid.0.Igain  0.00001
> #setp pid.0.Dgain  0.9375
> #setp pid.0.maxerrorI 1.0
> #setp pid.0.bias    0.5
> #setp pid.0.enable   1
> 
> # Bed
> #setp pid.1.FF0      0
> #setp pid.1.FF1      0
> #setp pid.1.FF2      0
> #setp pid.1.Pgain  1
> #setp pid.1.Igain  0.0
> #setp pid.1.Dgain  0.0
> #setp pid.1.maxerrorI 1.0
> #setp pid.1.bias    0.5
> #setp pid.1.enable   1
> 
> 
> 
> 
> 
> 
> 
> 
> On Tuesday, April 16, 2019 at 12:04:02 PM UTC-4, Charles Steinkuehler wrote:
>>
>> Stepper motors are (typically) open-loop, but the motion control logic 
>> in Machinekit and LCNC are closed-loop.  That many joint following 
>> errors probably means you either have problems with your HAL file 
>> (typically a goof in how the position command and position feedback 
>> signals are connected) or there's some other basic problem (eg: your 
>> scale is far enough out of wack that it's impossible for the stepgen 
>> instances to keep up with the commanded positions). 
>>
>> Post your INI & HAL file and we can review. 
>>
>> It looks like there's a link to your HAL file, but Google is being 
>> weird and I can't open it.  Also, we'd typically need to see your INI 
>> file as well unless you aren't pulling any ini values into your HAL file. 
>>
>> On 4/16/2019 10:17 AM, jonas hauptman wrote: 
>>> Our team working on the bamboo CNC project is really stuck over this 
>> issue, 
>>> any help would be greatly appreciated. 
>>>
>>> The machine information can all be found below (and I have posted before 
>> if 
>>> you recognize the posts). I used someones HAL file for gantry deracking 
>> for 
>>> an MPCNC, and changed the settings to accommodate to my motion setup. 
>> When 
>>> I go to move the axes in the GUI (AXIS) I get "joint 1 following error", 
>>> "joint 2 following error", and "joint 3 following error". Joint 1 (X - 
>>> Axis) works just fine. I am not sure what these errors mean, or how to 
>> fix 
>>> them, so any information y'all could provide would be greatly 
>> appreciated. 
>>> I will post my .hal file and some accompanying documentation/photos. I 
>> have 
>>> learned that the following error is related to motors, and the 
>> BeagleBone 
>>> not communicating with them correctly, but I have not been able to 
>> figure 
>>> out how to fix the issues. I have the issue whether or not the motors 
>> are 
>>> connected. I have been trying to figure out why, and have been working 
>>> through the errors I get but haven't made much progress. If I am using 
>> any 
>>> terminology that isn't correct please excuse it, as I am new to this. 
>> Any 
>>> help anyone can provide would be awesome. Thank you in advance. 
>>>
>>>
>> https://docs.google.com/presentation/d/1a7goIQwWIO0uKRLa-KfeOs9Kg6j0zBQBgmQGL14omLM/edit#slide=id.g5047c009fb_0_5
>>  
>>>
>>> Preview attachment Screen_Grab.jpg 
>>> <
>> https://mail.google.com/mail/u/0?ui=2&ik=6fb2ca6400&attid=0.2&permmsgid=msg-f:1630982304047515506&th=16a269c3a3b34772&view=att&disp=safe&realattid=f_jujwfdhy1>
>>  
>>
>>> <
>> https://mail.google.com/mail/u/0?ui=2&ik=6fb2ca6400&attid=0.2&permmsgid=msg-f:1630982304047515506&th=16a269c3a3b34772&view=att&disp=safe&realattid=f_jujwfdhy1>
>>  
>>
>>> Screen_Grab.jpg 
>>> <
>> https://mail.google.com/mail/u/0?ui=2&ik=6fb2ca6400&attid=0.2&permmsgid=msg-f:1630982304047515506&th=16a269c3a3b34772&view=att&disp=safe&realattid=f_jujwfdhy1>
>>  
>>
>>> 714 KB 
>>> <
>> https://mail.google.com/mail/u/0?ui=2&ik=6fb2ca6400&attid=0.2&permmsgid=msg-f:1630982304047515506&th=16a269c3a3b34772&view=att&disp=safe&realattid=f_jujwfdhy1>Preview
>>  
>>
>>> attachment CRAMPS.hal 
>>> <
>> https://mail.google.com/mail/u/0?ui=2&ik=6fb2ca6400&attid=0.1&permmsgid=msg-f:1630982304047515506&th=16a269c3a3b34772&view=att&disp=safe&realattid=f_jujwfdh30>
>>  
>>
>>> CRAMPS.hal 
>>> 17 KB 
>>> <
>> https://mail.google.com/mail/u/0?ui=2&ik=6fb2ca6400&attid=0.1&permmsgid=msg-f:1630982304047515506&th=16a269c3a3b34772&view=att&disp=safe&realattid=f_jujwfdh30>
>>  
>>
>>> <
>> https://mail.google.com/mail/u/0?ui=2&ik=6fb2ca6400&attid=0.2&permmsgid=msg-f:1630982304047515506&th=16a269c3a3b34772&view=att&disp=safe&realattid=f_jujwfdhy1>
>>  
>>
>>>
>>
>>
>> -- 
>> Charles Steinkuehler 
>> [email protected] <javascript:> 
>>
> 


-- 
Charles Steinkuehler
[email protected]

-- 
website: http://www.machinekit.io blog: http://blog.machinekit.io github: 
https://github.com/machinekit
--- 
You received this message because you are subscribed to the Google Groups 
"Machinekit" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
Visit this group at https://groups.google.com/group/machinekit.
For more options, visit https://groups.google.com/d/optout.

Reply via email to