Thank you so much for the help, I am sorry for the late reply, I wasn't 
able to get back to the lab until now. I'm sure those things seems super 
obvious, I just don't know what to look for! I did what you said to try and 
it fixed the issue on the Y (Axis 1) and the A (Axis 3), however I still 
get the same issue on the Z axis (Axis 2). I tried adjusting the values up 
and down, but it did not seem to affect the issue on the Z axis.

I had removed the homing earlier to try and narrow down what was causing 
the issue. Once I get the joint following error and other movement errors 
all cleared up I am intending to try and tackle the auto-homing-deracking 
as well. Should I add this back in now, or continue with one problem at a 
time? 

Separately I am having an issue where software - wise the axes (other than 
the Z) all work correctly, however none of the motors spin. I have a 
feeling that this issue is more related to the CRAMPS board, however I 
figured I would mention it, as I am not sure what could be causing this. 

I really appreciate all the help, I have tried to self educate, however I 
haven't been able to find alot of information on configuring stuff like 
this, or errors like this on machinekit, so if there is a repository where 
I could learn more about it please let me know, I would love to look into 
all of that. Thank you again, I have posted the (slightly) edited .hal and 
.ini files.

On Tuesday, April 23, 2019 at 10:48:10 AM UTC-4, Charles Steinkuehler wrote:
>
> 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] <javascript:> 
>

-- 
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.
# #######################################
#
# 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
# ################


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

# 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
[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 =       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 =  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 =  3000
# Set Stepgen max 20% higher than the axis
STEPGEN_MAX_VEL =    240.0
STEPGEN_MAX_ACC =    3600.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 = 50.0
STEPGEN_MAX_ACC = 3700.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

Reply via email to