Advertisements

Archive for November 29th, 2010

Sherline EMC2 CNC Mill: Configuration Files

This is a stick in the ground for the current config files I’m using with EMC 2.4.5. Even the automagically generated files may have some tweakage, which is why I’m putting them here…

[Update: this is for a Dell Dimension 4550 with a latency around 10 µs, occasional glitches to 20 µs, and a very rare burp to 80 µs. Worked fine, but those rare burps were disturbing.]

Sherline.ini

# Ed Nisley - KE4ZNU
# Just don't run stepconf ever again...

[EMC]
MACHINE = Sherline-XYZA
DEBUG = 0
RS274NGC_STARTUP_CODE = G21 G40 G49 G54 G80 G90 G92.1 G94 G97 G98

[DISPLAY]
DISPLAY = axis
EDITOR = gedit
GEOMETRY = AXYZ
POSITION_OFFSET = RELATIVE
POSITION_FEEDBACK = ACTUAL
MAX_FEED_OVERRIDE = 3.0
INTRO_GRAPHIC = Sherline.gif
INTRO_TIME = 3
PROGRAM_PREFIX = /mnt/bulkdata/
#PROGRAM_PREFIX = /home/ed/
#INCREMENTS = .1in .05in .01in .005in .001in .0005in .0001in
INCREMENTS = 10 mm, 1 mm, 0.1 mm, 90 deg, 45 deg, 10 deg

[FILTER]
PROGRAM_EXTENSION = .py Python Script
py = python

[TASK]
TASK = milltask
CYCLE_TIME = 0.010

[RS274NGC]
PARAMETER_FILE = emc.var

[EMCMOT]
EMCMOT = motmod
SHMEM_KEY = 111
COMM_TIMEOUT = 1.0
COMM_WAIT = 0.010
BASE_PERIOD = 100000
SERVO_PERIOD = 1000000

[HAL]
HALUI=halui
HALFILE = Sherline.hal
HALFILE = custom.hal
HALFILE = Logitech_Gamepad.hal
POSTGUI_HALFILE = custom_postgui.hal

[TRAJ]
AXES = 4
COORDINATES = X Y Z A
MAX_ANGULAR_VELOCITY = 45.00
DEFAULT_ANGULAR_VELOCITY = 36.0
LINEAR_UNITS = inch
ANGULAR_UNITS = degree
CYCLE_TIME = 0.010
#DEFAULT_VELOCITY = 0.333
DEFAULT_VELOCITY = 0.475
#MAX_LINEAR_VELOCITY = 0.400
MAX_LINEAR_VELOCITY = 0.500
POSITION_FILE =	lastposition.txt
NO_FORCE_HOMING = 1

[EMCIO]
EMCIO = io
CYCLE_TIME = 0.100
TOOL_TABLE = Sherline.tbl
TOOL_CHANGE_AT_G30 = 1

[AXIS_0]
TYPE = LINEAR
#MAX_VELOCITY = 0.400
MAX_VELOCITY = 0.475
#MAX_ACCELERATION = 1.5
MAX_ACCELERATION = 5.0
#STEPGEN_MAXACCEL = 1.7
STEPGEN_MAXACCEL = 10.0
SCALE = 16000.0
FERROR = 0.05
MIN_FERROR = 0.01
MIN_LIMIT = -1.0
MAX_LIMIT = 9.5
BACKLASH = 0.003
HOME_IS_SHARED = 1
HOME_SEQUENCE = 2
HOME_SEARCH_VEL = 0.3
HOME_LATCH_VEL = 0.016
HOME_FINAL_VEL = 0.4
HOME_OFFSET = 9.1
HOME = 4.5

[AXIS_1]
TYPE = LINEAR
#MAX_VELOCITY = 0.400
MAX_VELOCITY = 0.475
#MAX_ACCELERATION = 1.5
MAX_ACCELERATION = 5.0
#STEPGEN_MAXACCEL = 1.7
STEPGEN_MAXACCEL = 10.0
SCALE = 16000.0
FERROR = 0.05
MIN_FERROR = 0.01
MIN_LIMIT = -0.5
MAX_LIMIT = 4.90
BACKLASH = 0.003
HOME_IS_SHARED = 1
HOME_SEQUENCE = 1
HOME_SEARCH_VEL = -0.3
HOME_LATCH_VEL = -0.016
HOME_FINAL_VEL = 0.4
HOME_OFFSET = 0.0
HOME = 4.0

[AXIS_2]
TYPE = LINEAR
MAX_VELOCITY = 0.333
#MAX_VELOCITY = 0.400
#MAX_ACCELERATION = 1.0
MAX_ACCELERATION = 3.0
#STEPGEN_MAXACCEL = 1.2
STEPGEN_MAXACCEL = 6.0
SCALE = 16000.0
FERROR = 0.05
MIN_FERROR = 0.01
MIN_LIMIT = 0.0
MAX_LIMIT = 6.930
BACKLASH = 0.005
HOME_IS_SHARED = 1
HOME_SEQUENCE = 0
HOME_SEARCH_VEL = 0.200
HOME_LATCH_VEL = 0.016
HOME_FINAL_VEL = 0.3
HOME_OFFSET = 6.93
HOME = 6.5

[AXIS_3]
TYPE = ANGULAR
###WRAPPED_ROTARY = 1
MAX_VELOCITY = 40.0
MAX_ACCELERATION = 250.0
STEPGEN_MAXACCEL = 275.0
SCALE = 160.0
FERROR = 1
MIN_FERROR = .25
MIN_LIMIT = -999999999.9
MAX_LIMIT =  999999999.9
HOME_SEARCH_VEL = 0
HOME_LATCH_VEL = 0
HOME = 0.0

Sherline.tbl

;common end mills
T1 P1 Z1 D0.1225 ; 1/8
T2 P2 Z1 D0.1535 ; 5/32
T3 P3 Z1 D0.1870 ; 3/16
T4 P4 Z1 D0.2500 ; 1/4
T5 P5 Z1 D0.3122 ; 5/16
T6 P6 Z1 D0.3755 ; 3/8 - 4 flute long
T7 P7 Z1 D0.4374 ; 7/16
T8 P8 Z1 D0.4720 ; 1/2
;random metric equivalents
T20 P20 Z1 D0.09787 ; 2 mm
;number drills 1xx = xx
T107 P107 Z1 D0.201 ;  7	 5.11	10-32 clear
T109 P109 Z1 D0.196 ;  9	 4.98	10-32 clear
T118 P118 Z1 D0.170 ; 18	 4.32	 8-32 clear
T121 P121 Z1 D0.159 ; 21	 4.04	10-32 tap
T127 P127 Z1 D0.144 ; 27	 3.66	 6-32 clear
T129 P129 Z1 D0.136 ; 29	 3.45	 8-32 tap
T136 P136 Z1 D0.107 ; 36	 2.72	 6-32 tap
T132 P132 Z1 D0.116 ; 32	 2.95	 4-40 clear
T143 P143 Z1 D0.089 ; 43	 2.26	 4-40 tap
T141 P141 Z1 D0.096 ; 41	 2.44	 2-56 clear
T146 P146 Z1 D0.081 ; 46	 2.06	 good for 2 mm pin
T148 P148 Z1 D0.076 ; 48	 1.93	 1-72 clear
T150 P150 Z1 D0.070 ; 50	 1.78	 2-56 tap 0-80 clear
T152 P152 Z1 D0.064 ; 52	 1.63	 0-80 clear
T153 P153 Z1 D0.060 ; 53	 1.52	 1-72 tap
;fraction drills 2xx = xx/64
T203 P203 Z1 D0.047 ; 3/64	 1.2	 0-80 tap
;inch decimal drills for eagle drilling
; 1xxx = xxx/1000
T1000 P1000 Z1 D0.000	; center drill
T1024 P1024 Z1 D0.024
T1025 P1025 Z1 D0.025
T1032 P1032 Z1 D0.032
T1039 P1039 Z1 D0.039
T1040 P1040 Z1 D0.040
T1045 P1045 Z1 D0.045
T1047 P1047 Z1 D0.047
T1052 P1052 Z1 D0.052
T1067 P1067 Z1 D0.067
T1125 P1125 Z1 D0.125
T1140 P1140 Z1 D0.140
T1150 P1150 Z1 D0.150

custom.hal

# Include your customized HAL commands here
# This file will not be overwritten when you run stepconf again

#--------------
# Get buttons and joysticks from Logitech Dual Action gamepad

loadusr -W hal_input -KA Dual

#--------------
# Home switches are all in parallel, active low

net homeswitches <= parport.0.pin-10-in-not
net homeswitches => axis.0.home-sw-in
net homeswitches => axis.1.home-sw-in
net homeswitches => axis.2.home-sw-in

#--------------
# Probe input is active low

net probe-in <== parport.0.pin-15-in-not
net probe-in ==> motion.probe-input

custom_postgui.hal

#-- empty

Logitech_Gamepad.hal

# HAL config file automatically generated by Eagle-CAD ULP:
# [/mnt/bulkdata/Project Files/eagle/ulp/hal-write-array.ulp]
# (C) Martin Schoeneck.de 2008
# Mods Ed Nisley 2010
# Path        [/mnt/bulkdata/Project Files/eagle/projects/EMC2 HAL Configuration/]
# ProjectName [Logitech Gamepad]
# File name   [/mnt/bulkdata/Project Files/eagle/projects/EMC2 HAL Configuration/Logitech_Gamepad.hal]
# Created     [11:51:27 10-Nov-2010]

####################################################
# Load realtime and userspace modules
loadrt constant		count=16
loadrt and2		count=17
loadrt flipflop		count=4
loadrt mux2		count=5
loadrt mux4		count=1
loadrt not		count=8
loadrt or2		count=10
loadrt scale		count=7
loadrt timedelay		count=1
loadrt toggle		count=1
loadrt wcomp		count=6

####################################################
# Hook functions into threads
addf toggle.0		servo-thread
addf wcomp.1		servo-thread
addf wcomp.2		servo-thread
addf wcomp.3		servo-thread
addf and2.0		servo-thread
addf and2.4		servo-thread
addf and2.3		servo-thread
addf and2.2		servo-thread
addf and2.1		servo-thread
addf constant.6		servo-thread
addf constant.5		servo-thread
addf constant.4		servo-thread
addf constant.3		servo-thread
addf constant.2		servo-thread
addf constant.1		servo-thread
addf constant.0		servo-thread
addf constant.7		servo-thread
addf constant.8		servo-thread
addf scale.1		servo-thread
addf scale.2		servo-thread
addf scale.3		servo-thread
addf mux4.0		servo-thread
addf mux2.0		servo-thread
addf scale.4		servo-thread
addf scale.0		servo-thread
addf wcomp.5		servo-thread
addf wcomp.4		servo-thread
addf wcomp.0		servo-thread
addf flipflop.1		servo-thread
addf flipflop.0		servo-thread
addf and2.5		servo-thread
addf and2.6		servo-thread
addf and2.7		servo-thread
addf and2.8		servo-thread
addf flipflop.2		servo-thread
addf flipflop.3		servo-thread
addf or2.4		servo-thread
addf or2.8		servo-thread
addf or2.7		servo-thread
addf or2.6		servo-thread
addf or2.5		servo-thread
addf or2.3		servo-thread
addf or2.2		servo-thread
addf or2.1		servo-thread
addf or2.0		servo-thread
addf not.1		servo-thread
addf not.2		servo-thread
addf not.3		servo-thread
addf not.4		servo-thread
addf not.5		servo-thread
addf not.6		servo-thread
addf not.7		servo-thread
addf not.0		servo-thread
addf constant.9		servo-thread
addf mux2.1		servo-thread
addf mux2.2		servo-thread
addf mux2.3		servo-thread
addf mux2.4		servo-thread
addf constant.10		servo-thread
addf constant.11		servo-thread
addf scale.5		servo-thread
addf scale.6		servo-thread
addf constant.12		servo-thread
addf constant.13		servo-thread
addf timedelay.0		servo-thread
addf constant.14		servo-thread
addf constant.15		servo-thread
addf and2.16		servo-thread
addf and2.15		servo-thread
addf and2.14		servo-thread
addf and2.13		servo-thread
addf and2.12		servo-thread
addf and2.11		servo-thread
addf and2.10		servo-thread
addf and2.9		servo-thread
addf or2.9		servo-thread

####################################################
# Set parameters

####################################################
# Set constants
setp constant.0.value	+0.02
setp constant.1.value	-0.02
setp constant.2.value	60
setp constant.3.value	1.00
setp constant.4.value	0.10
setp constant.5.value	0.50
setp constant.6.value	0.10
setp constant.7.value	+0.5
setp constant.8.value	-0.5
setp constant.9.value	0.0
setp constant.10.value	[TRAJ]MAX_LINEAR_VELOCITY
setp constant.11.value	[TRAJ]MAX_ANGULAR_VELOCITY
setp constant.12.value	-1.0
setp constant.13.value	0.1
setp constant.14.value	0.020
setp constant.15.value	0.000

####################################################
# Connect Modules with nets
net a-button-minus input.0.btn-trigger or2.2.in0 and2.15.in0
net a-button-plus input.0.btn-thumb2 or2.2.in1 and2.16.in0
net a-buttons-active or2.2.out or2.3.in0 or2.4.in1
net a-disable not.7.out and2.5.in1
net a-enable or2.4.in0 flipflop.3.out not.7.in mux2.4.sel
net a-jog wcomp.2.in input.0.abs-z-position mux2.4.in1
net a-knob-active not.2.out and2.7.in1
net a-knob-inactive wcomp.2.out not.2.in and2.6.in1
net a-select and2.8.in0 and2.7.out
net a-set flipflop.3.set and2.8.out
net angular_motion or2.4.out mux2.0.sel
net any-buttons-active mux4.0.sel0 or2.8.out
net az-buttons-active or2.3.out or2.8.in1 or2.9.in0
net az-reset flipflop.2.reset and2.6.out flipflop.3.reset
net button-crawl scale.4.out mux4.0.in3
net button-fast scale.2.out mux4.0.in1 scale.4.in
net jog-crawl toggle.0.out mux4.0.sel1
net jog-speed halui.jog-speed mux4.0.out
net knob-crawl mux4.0.in2 scale.3.out
net knob-fast mux4.0.in0 scale.1.out scale.3.in
net n_1 constant.10.out mux2.0.in0
net n_2 and2.0.in0 input.0.btn-top2
net n_3 and2.0.in1 input.0.btn-base
net n_4 and2.0.out halui.abort
net n_5 halui.mode.manual input.0.btn-base3
net n_6 wcomp.0.max wcomp.1.max wcomp.2.max wcomp.3.max constant.0.out
net n_7 halui.program.resume input.0.btn-base4
net n_8 wcomp.0.min wcomp.1.min wcomp.2.min wcomp.3.min constant.1.out
net n_9 mux2.0.in1 constant.11.out
net n_10 constant.12.out scale.5.gain scale.6.gain
net n_11 input.0.btn-base5 or2.0.in0
net n_12 input.0.btn-base6 or2.0.in1
net n_13 constant.9.out mux2.1.in0 mux2.2.in0 mux2.3.in0 mux2.4.in0
net n_14 mux2.1.out halui.jog.0.analog
net n_15 toggle.0.in or2.0.out
net n_16 constant.2.out scale.0.gain
net n_17 constant.5.out scale.1.gain
net n_18 constant.3.out scale.2.gain
net n_19 constant.4.out scale.3.gain
net n_20 scale.4.gain constant.6.out
net n_21 halui.jog.1.analog mux2.2.out
net n_22 mux2.2.in1 scale.5.out
net n_23 scale.6.out mux2.3.in1
net n_24 constant.13.out halui.jog-deadband
net n_25 wcomp.4.max constant.7.out wcomp.5.max
net n_26 constant.8.out wcomp.4.min wcomp.5.min
net n_27 mux2.3.out halui.jog.2.analog
net n_28 halui.jog.3.analog mux2.4.out
net n_29 timedelay.0.out and2.9.in1 and2.10.in1 and2.12.in1 and2.11.in1 and2.13.in1 and2.14.in1 and2.16.in1 and2.15.in1
net n_30 and2.9.out halui.jog.0.minus
net n_31 or2.9.out timedelay.0.in
net n_32 constant.14.out timedelay.0.on-delay
net n_33 constant.15.out timedelay.0.off-delay
net n_34 and2.10.out halui.jog.0.plus
net n_35 and2.11.out halui.jog.1.minus
net n_36 halui.jog.1.plus and2.12.out
net n_37 and2.13.out halui.jog.2.minus
net n_38 and2.14.out halui.jog.2.plus
net n_39 and2.15.out halui.jog.3.minus
net n_40 and2.16.out halui.jog.3.plus
net vel-per-minute scale.0.out scale.1.in scale.2.in
net vel-per-second mux2.0.out scale.0.in
net x-buttons-active or2.7.in0 or2.5.out
net x-disable not.4.out and2.4.in1
net x-enable not.4.in flipflop.0.out mux2.1.sel
net x-hat-jog wcomp.4.in input.0.abs-hat0x-position
net x-hat-minus wcomp.4.under or2.5.in1 and2.9.in0
net x-hat-plus or2.5.in0 wcomp.4.over and2.10.in0
net x-jog wcomp.0.in input.0.abs-x-position mux2.1.in1
net x-knob-active not.0.out and2.1.in0
net x-knob-inactive wcomp.0.out not.0.in and2.2.in0 and2.3.in0
net x-set and2.1.out flipflop.0.set
net xy-buttons-active or2.7.out or2.8.in0 or2.9.in1
net xy-reset flipflop.0.reset and2.2.out flipflop.1.reset
net y-buttons-active or2.6.out or2.7.in1
net y-disable not.5.out and2.1.in1
net y-enable flipflop.1.out not.5.in mux2.2.sel
net y-hat-jog input.0.abs-hat0y-position wcomp.5.in
net y-hat-minus wcomp.5.under or2.6.in1 and2.12.in0
net y-hat-plus or2.6.in0 wcomp.5.over and2.11.in0
net y-jog wcomp.1.in input.0.abs-y-position scale.5.in
net y-knob-active not.1.out and2.3.in1
net y-knob-inactive not.1.in wcomp.1.out and2.2.in1
net y-select and2.4.in0 and2.3.out
net y-set flipflop.1.set and2.4.out
net z-button-minus input.0.btn-thumb or2.1.in0 and2.13.in0
net z-button-plus or2.1.in1 input.0.btn-top and2.14.in0
net z-buttons-active or2.1.out or2.3.in1
net z-disable not.6.out and2.8.in1
net z-enable not.6.in flipflop.2.out mux2.3.sel
net z-jog wcomp.3.in input.0.abs-rz-position scale.6.in
net z-knob-active not.3.out and2.5.in0
net z-knob-inactive not.3.in wcomp.3.out and2.7.in0 and2.6.in0
net z-set and2.5.out flipflop.2.set

Sherline.hal

# Generated by stepconf at Sat Aug 23 12:10:22 2008
# If you make changes to this file, they will be
# overwritten when you run stepconf again
loadrt trivkins
loadrt [EMCMOT]EMCMOT base_period_nsec=[EMCMOT]BASE_PERIOD servo_period_nsec=[EMCMOT]SERVO_PERIOD traj_period_nsec=[EMCMOT]SERVO_PERIOD key=[EMCMOT]SHMEM_KEY num_joints=[TRAJ]AXES
loadrt probe_parport
loadrt hal_parport cfg=0xecd8
setp parport.0.reset-time 60000
loadrt stepgen step_type=0,0,0,0
loadrt pwmgen output_type=0

addf parport.0.read base-thread
addf stepgen.make-pulses base-thread
addf pwmgen.make-pulses base-thread
addf parport.0.write base-thread
addf parport.0.reset base-thread

addf stepgen.capture-position servo-thread
addf motion-command-handler servo-thread
addf motion-controller servo-thread
addf stepgen.update-freq servo-thread
addf pwmgen.update servo-thread

net spindle-cmd <= motion.spindle-speed-out => pwmgen.0.value
net spindle-enable <= motion.spindle-on => pwmgen.0.enable
net spindle-pwm <= pwmgen.0.pwm
setp pwmgen.0.pwm-freq 100.0
setp pwmgen.0.scale 1166.66666667
setp pwmgen.0.offset 0.114285714286
setp pwmgen.0.dither-pwm true
net spindle-cw <= motion.spindle-forward

net estop-out => parport.0.pin-01-out
net xdir => parport.0.pin-02-out
net xstep => parport.0.pin-03-out
setp parport.0.pin-03-out-reset 1
setp parport.0.pin-04-out-invert 1
net ydir => parport.0.pin-04-out
net ystep => parport.0.pin-05-out
setp parport.0.pin-05-out-reset 1
setp parport.0.pin-06-out-invert 1
net zdir => parport.0.pin-06-out
net zstep => parport.0.pin-07-out
setp parport.0.pin-07-out-reset 1
net adir => parport.0.pin-08-out
net astep => parport.0.pin-09-out
setp parport.0.pin-09-out-reset 1
net spindle-cw => parport.0.pin-14-out
net spindle-pwm => parport.0.pin-16-out
net xenable => parport.0.pin-17-out

setp stepgen.0.position-scale [AXIS_0]SCALE
setp stepgen.0.steplen 1
setp stepgen.0.stepspace 0
setp stepgen.0.dirhold 60000
setp stepgen.0.dirsetup 60000
setp stepgen.0.maxaccel [AXIS_0]STEPGEN_MAXACCEL
net xpos-cmd axis.0.motor-pos-cmd => stepgen.0.position-cmd
net xpos-fb stepgen.0.position-fb => axis.0.motor-pos-fb
net xstep <= stepgen.0.step
net xdir <= stepgen.0.dir
net xenable axis.0.amp-enable-out => stepgen.0.enable

setp stepgen.1.position-scale [AXIS_1]SCALE
setp stepgen.1.steplen 1
setp stepgen.1.stepspace 0
setp stepgen.1.dirhold 60000
setp stepgen.1.dirsetup 60000
setp stepgen.1.maxaccel [AXIS_1]STEPGEN_MAXACCEL
net ypos-cmd axis.1.motor-pos-cmd => stepgen.1.position-cmd
net ypos-fb stepgen.1.position-fb => axis.1.motor-pos-fb
net ystep <= stepgen.1.step
net ydir <= stepgen.1.dir
net yenable axis.1.amp-enable-out => stepgen.1.enable

setp stepgen.2.position-scale [AXIS_2]SCALE
setp stepgen.2.steplen 1
setp stepgen.2.stepspace 0
setp stepgen.2.dirhold 60000
setp stepgen.2.dirsetup 60000
setp stepgen.2.maxaccel [AXIS_2]STEPGEN_MAXACCEL
net zpos-cmd axis.2.motor-pos-cmd => stepgen.2.position-cmd
net zpos-fb stepgen.2.position-fb => axis.2.motor-pos-fb
net zstep <= stepgen.2.step
net zdir <= stepgen.2.dir
net zenable axis.2.amp-enable-out => stepgen.2.enable

setp stepgen.3.position-scale [AXIS_3]SCALE
setp stepgen.3.steplen 1
setp stepgen.3.stepspace 0
setp stepgen.3.dirhold 60000
setp stepgen.3.dirsetup 60000
setp stepgen.3.maxaccel [AXIS_3]STEPGEN_MAXACCEL
net apos-cmd axis.3.motor-pos-cmd => stepgen.3.position-cmd
net apos-fb stepgen.3.position-fb => axis.3.motor-pos-fb
net astep <= stepgen.3.step
net adir <= stepgen.3.dir
net aenable axis.3.amp-enable-out => stepgen.3.enable

net estop-out <= iocontrol.0.user-enable-out
net estop-out => iocontrol.0.emc-enable-in

loadusr -W hal_manualtoolchange
net tool-change iocontrol.0.tool-change => hal_manualtoolchange.change
net tool-changed iocontrol.0.tool-changed <= hal_manualtoolchange.changed
net tool-number iocontrol.0.tool-prep-number => hal_manualtoolchange.number
net tool-prepare-loopback iocontrol.0.tool-prepare => iocontrol.0.tool-prepared
Advertisements

,

3 Comments