Import LinuxCNC source tree

This commit is contained in:
Wang Dequan
2026-08-20 06:17:39 +08:00
commit 2c814634c3
9429 changed files with 10556013 additions and 0 deletions

View File

@@ -0,0 +1,271 @@
# EMC controller parameters for Parallel Port controlled Smithy 1034 Gecko Mill
[EMC]
MACHINE = Smithy 1034 Gecko Mill
VERSION = 1.1
DEBUG = 0x00000000
#DEBUG = 0x7FFFFFFF
[DISPLAY]
#DISPLAY = eztrol
# CYCLE_TIME is used by eztrol
CYCLE_TIME = .1
DISPLAY = axis
#DISPLAY = tklinuxcnc
#HELP_FILE = /usr/share/doc/linuxcnc/tklinuxcnc.txt
TKPKG = Ngcgui 1.0
TKPKG = Ngcguittt 1.0
# note: ngcgui_app.tcl must precede ngcgui_ttt.tcl
NGCGUI_FONT = Helvetica -12 normal
TTT = truetype-tracer
TTT_PREAMBLE = in_std.ngc
NGCGUI_PREAMBLE = in_std.ngc
NGCGUI_POSTAMBLE = bye.ngc
NGCGUI_SUBFILE = backlash.ngc
NGCGUI_SUBFILE = hole_circle.ngc
NGCGUI_SUBFILE = helix.ngc
NGCGUI_SUBFILE = helix_rtheta.ngc
NGCGUI_SUBFILE = slot.ngc
NGCGUI_SUBFILE = simp.ngc
NGCGUI_SUBFILE = xyz.ngc
NGCGUI_SUBFILE = iquad.ngc
NGCGUI_SUBFILE = oquad.ngc
NGCGUI_SUBFILE = db25.ngc
NGCGUI_SUBFILE = ihex.ngc
NGCGUI_SUBFILE = ohex.ngc
NGCGUI_SUBFILE = gosper.ngc
NGCGUI_SUBFILE = ""
#NGCGUI_SUBFILE = "" use when imageframe is specified if
# opening other files is required
# images will be put in a toplevel window
NGCGUI_OPTIONS =
#NGCGUI_OPTIONS = opt1 opt2 ...
# opt items:
# nonew -- disallow making a new tab page
# noremove -- disallow removing any tab page
# noauto -- no autosend (makeFile, then manually send)
# noiframe -- no internal image, image on separate toplevel
POSITION_OFFSET = RELATIVE
POSITION_FEEDBACK = ACTUAL
MAX_FEED_OVERRIDE = 1.5
MIN_SPINDLE_OVERRIDE = 0.2
MAX_SPINDLE_OVERRIDE = 1.5
INTRO_GRAPHIC = linuxcnc.gif
INTRO_TIME = 5
INCREMENTS = .1in .05in .01in .005in .001in .0005in .0001in
PROGRAM_PREFIX = ../../nc_files/
#EDITOR = geany
TOOL_EDITOR = tooledit
DEFAULT_LINEAR_VELOCITY = 0.2
MAX_LINEAR_VELOCITY = 2.0
DEFAULT_ANGULAR_VELOCITY = 12.0
MAX_ANGULAR_VELOCITY = 60
[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 = python3
[RS274NGC]
PARAMETER_FILE = emc.var
SUBROUTINE_PATH = ../../nc_files/ngcgui_lib:../../nc_files/ngcgui_lib/utilitysubs
USER_M_PATH = ../../nc_files/ngcgui_lib/mfiles
[EMCMOT]
EMCMOT = motmod
SHMEM_KEY = 111
COMM_TIMEOUT = 1.0
BASE_PERIOD = 50000
SERVO_PERIOD = 1000000
TRAJ_PERIOD = 10000000
[TASK]
TASK = milltask
CYCLE_TIME = 0.010
[HAL]
HALUI = halui
HALFILE = 1240gecko.hal
EZTROL_HALFILE = eztrol.hal
HALFILE = axis_manualtoolchange.hal
[HALUI]
#No Content
[TRAJ]
COORDINATES = X Y Z A
LINEAR_UNITS = inch
ANGULAR_UNITS = degree
MAX_LINEAR_VELOCITY = 2.0
MAX_LINEAR_ACCELERATION = 1.5
DEFAULT_LINEAR_VELOCITY = 0.2
[EMCIO]
TOOL_TABLE = mill.tbl
#TOOL_CHANGE_POSITION = 0 0 2
#TOOL_CHANGE_WITH_SPINDLE_ON = 1
TOOL_CHANGE_QUILL_UP = 1
#TOOL_CHANGE_AT_G30 = 1
[KINS]
KINEMATICS = trivkins
JOINTS = 4
[AXIS_X]
MIN_LIMIT = -14.7
MAX_LIMIT = 0.2
MAX_VELOCITY = 2.0
MAX_ACCELERATION = 1.5
[JOINT_0]
TYPE = LINEAR
HOME = 0.000
MAX_VELOCITY = 2.0
MAX_ACCELERATION = 1.5
STEPGEN_MAXVEL = 2.2
STEPGEN_MAXACCEL = 1.7
BACKLASH = 0.0000
# Leadscrew Pitch = 5mm
# Drive Ratio = 1:1
# Steps/Rev = 200 * 10uSteps = 2000
# Vel at 200k Steps/S = 1181"/min
SCALE = 10160
OUTPUT_SCALE = 1.000
MIN_LIMIT = -14.7
MAX_LIMIT = 0.2
FERROR = 0.05
MIN_FERROR = 0.01
HOME_OFFSET = 0.25
HOME_SEARCH_VEL = 0.5
HOME_LATCH_VEL = -0.1
HOME_FINAL_VEL = 0.5
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 2
[AXIS_Y]
MIN_LIMIT = -7.7
MAX_LIMIT = 0.2
MAX_VELOCITY = 2.0
MAX_ACCELERATION = 1.5
[JOINT_1]
TYPE = LINEAR
HOME = 0.000
MAX_VELOCITY = 2.0
MAX_ACCELERATION = 1.5
STEPGEN_MAXVEL = 2.2
STEPGEN_MAXACCEL = 1.7
BACKLASH = 0.0000
# Leadscrew Pitch = 5mm
# Drive Ratio = 1:1
# Steps/Rev = 200 * 10uSteps = 2000
# Vel at 200k Steps/S = 1181"/min
SCALE = -10160
OUTPUT_SCALE = 1.000
MIN_LIMIT = -7.7
MAX_LIMIT = 0.2
FERROR = 0.05
MIN_FERROR = 0.01
HOME_OFFSET = 0.25
HOME_SEARCH_VEL = 0.5
HOME_LATCH_VEL = -0.1
HOME_FINAL_VEL = 0.5
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 1
[AXIS_Z]
MIN_LIMIT = -9.0
MAX_LIMIT = 0.2
MAX_VELOCITY = 1.2
MAX_ACCELERATION = 1.5
[JOINT_2]
TYPE = LINEAR
HOME = 0.000
MAX_VELOCITY = 1.2
MAX_ACCELERATION = 1.5
STEPGEN_MAXVEL = 1.4
STEPGEN_MAXACCEL = 1.7
BACKLASH = 0.0000
# Leadscrew Pitch = 5mm
# Drive Ratio = 1:1
# Steps/Rev = 200 * 10uSteps = 2000
# Vel at 200k Steps/S = 1181"/min
SCALE = -10160
OUTPUT_SCALE = 1.000
MIN_LIMIT = -9.0
MAX_LIMIT = 0.2
FERROR = 0.05
MIN_FERROR = 0.01
HOME_OFFSET = 0.25
HOME_SEARCH_VEL = 0.5
HOME_LATCH_VEL = -0.1
HOME_FINAL_VEL = 0.5
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 0
[AXIS_A]
MIN_LIMIT = -36000.0
MAX_LIMIT = 36000.0
MAX_VELOCITY = 30.0
MAX_ACCELERATION = 300.0
[JOINT_3]
TYPE = ANGULAR
HOME = 0.0
MAX_VELOCITY = 30.0
MAX_ACCELERATION = 300.0
STEPGEN_MAXVEL = 33.0
STEPGEN_MAXACCEL = 330.0
BACKLASH = 0.0000
SCALE = -500
OUTPUT_SCALE = 1.000
MIN_LIMIT = -36000.0
MAX_LIMIT = 36000.0
FERROR = 5.0
MIN_FERROR = 1.0
HOME_OFFSET = 0.0
HOME_SEARCH_VEL = 0.0
HOME_LATCH_VEL = 0.0
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 3
[EZTROL]
QTEMC_PLUGIN = /usr/share/eztrol/lib/libqtemc-2.4.6.so
QTEMCHAL_PLUGIN = /usr/share/eztrol/lib/libqtemchal-2.4.6.so
EZTROLGUI = /usr/share/eztrol/eztrolgui/libguimill2.so
MAX_SPINDLE_RPM = 5000
DIR_PLUGIN = /usr/share/eztrol/eztrolplugins
PLUGIN = libeztrol_wizard_plugin.so
PLUGIN = libeztrol_webwizard_plugin.so
# disabling settings gcode editor will benefit systems with small memory size
ENABLE_SETTINGS_EDITOR = true
# disable OpenGL 3D Preview
ENABLE_3D_PREVIEW = true
# set to Full Screen TRUE/FALSE
FULLSCREEN = false
# Settings Tab GCode Editor Syntax Highlight
# color guide - http://www.w3.org/TR/SVG/types.html#ColorKeywords
AXIS_COLOR = magenta
LINENUMBER_COLOR = rosybrown
GM_COLOR = blue
STFDRLPQH_COLOR = red
O_COLOR = blue
RESERVEDWORDS_COLOR = darkviolet
VARIABLE_COLOR = olive
COMMENT_COLOR = seagreen
GUI_STYLESHEET = eztrolstyle1.qss
[EZTROLWIZARDS]
WIZARD_DIRECTORY = /usr/share/eztrol/eztrolwizards
SAVE_DIRECTORY = ../../nc_files
[EZTROLWEBWIZARD]
URL = http://www.mattshaver.com/ecmacam/ecmacam.htm

View File

@@ -0,0 +1,187 @@
# 5i20 config file for Smithy 1240 Mill
# load the hostmot2 driver, this doesn't do anything by itself,
# it just waits for low-level drivers to register boards
loadrt hostmot2 debug_idrom=1 debug_module_descriptors=1 debug_pin_descriptors=1 debug_modules=1
# load the low-level driver for the board
# this will load the board's firmware and register it with the hostmot2
# driver loaded above, and it'll show up in HAL
loadrt hm2_pci config="firmware=hm2/5i20/SVST2_4_7I47.BIT num_encoders=1 num_pwmgens=1 num_stepgens=4 enable_raw"
# 13312 = 0x3400 = Encoder Sample Rate Register
setp hm2_5i20.0.raw.write_address 13312
# sample rate is clock (33 MHz)/SRR+2 = 33MHz/10 = 3.3MHz
setp hm2_5i20.0.raw.write_data 8
# write data
setp hm2_5i20.0.raw.write_strobe 1
# set up the watchdog
#setp hm2_5i20.0.watchdog.timeout_ns 10000000
# load kinematics
loadrt [KINS]KINEMATICS
# load motion controller, get name and thread periods from ini file
loadrt [EMCMOT]EMCMOT base_period_nsec=[EMCMOT]BASE_PERIOD servo_period_nsec=[EMCMOT]SERVO_PERIOD traj_period_nsec=[EMCMOT]TRAJ_PERIOD key=[EMCMOT]SHMEM_KEY num_joints=[KINS]JOINTS
# load charge pump
loadrt charge_pump
# These loopbacks are usually disconnected by a postgui halfile
net tool-change-loop iocontrol.0.tool-change iocontrol.0.tool-changed
net tool-prepare-loopback iocontrol.0.tool-prepare iocontrol.0.tool-prepared
#the Enable signal is used to permanently enable things
newsig Enable bit
sets Enable TRUE
#configure the spindle speed
net scmd spindle.0.speed-out hm2_5i20.0.pwmgen.00.value
setp hm2_5i20.0.pwmgen.00.scale 4000
setp hm2_5i20.0.pwmgen.00.output-type 1
setp hm2_5i20.0.pwmgen.pwm_frequency 100
# invert the step pulse polarity
setp hm2_5i20.0.gpio.000.invert_output TRUE
setp hm2_5i20.0.gpio.002.invert_output TRUE
setp hm2_5i20.0.gpio.016.invert_output TRUE
setp hm2_5i20.0.gpio.018.invert_output TRUE
# configure the stepgen parameters
setp hm2_5i20.0.stepgen.00.dirsetup 5000
setp hm2_5i20.0.stepgen.00.dirhold 1250
setp hm2_5i20.0.stepgen.00.steplen 1250
setp hm2_5i20.0.stepgen.00.stepspace 1250
setp hm2_5i20.0.stepgen.00.position-scale [JOINT_0]SCALE
setp hm2_5i20.0.stepgen.00.maxaccel [JOINT_0]STEPGEN_MAXACCEL
setp hm2_5i20.0.stepgen.00.maxvel [JOINT_0]STEPGEN_MAXVEL
setp hm2_5i20.0.stepgen.01.dirsetup 5000
setp hm2_5i20.0.stepgen.01.dirhold 1250
setp hm2_5i20.0.stepgen.01.steplen 1250
setp hm2_5i20.0.stepgen.01.stepspace 1250
setp hm2_5i20.0.stepgen.01.position-scale [JOINT_1]SCALE
setp hm2_5i20.0.stepgen.01.maxaccel [JOINT_1]STEPGEN_MAXACCEL
setp hm2_5i20.0.stepgen.01.maxvel [JOINT_1]STEPGEN_MAXVEL
setp hm2_5i20.0.stepgen.02.dirsetup 5000
setp hm2_5i20.0.stepgen.02.dirhold 1250
setp hm2_5i20.0.stepgen.02.steplen 1250
setp hm2_5i20.0.stepgen.02.stepspace 1250
setp hm2_5i20.0.stepgen.02.position-scale [JOINT_2]SCALE
setp hm2_5i20.0.stepgen.02.maxaccel [JOINT_2]STEPGEN_MAXACCEL
setp hm2_5i20.0.stepgen.02.maxvel [JOINT_2]STEPGEN_MAXVEL
setp hm2_5i20.0.stepgen.03.dirsetup 5000
setp hm2_5i20.0.stepgen.03.dirhold 1250
setp hm2_5i20.0.stepgen.03.steplen 1250
setp hm2_5i20.0.stepgen.03.stepspace 1250
setp hm2_5i20.0.stepgen.03.position-scale [JOINT_3]SCALE
setp hm2_5i20.0.stepgen.03.maxaccel [JOINT_3]STEPGEN_MAXACCEL
setp hm2_5i20.0.stepgen.03.maxvel [JOINT_3]STEPGEN_MAXVEL
# connect position commands from motion module to step generator
net Xpos-cmd joint.0.motor-pos-cmd => hm2_5i20.0.stepgen.00.position-cmd
net Ypos-cmd joint.1.motor-pos-cmd => hm2_5i20.0.stepgen.01.position-cmd
net Zpos-cmd joint.2.motor-pos-cmd => hm2_5i20.0.stepgen.02.position-cmd
#net Apos-cmd joint.3.motor-pos-cmd => hm2_5i20.0.stepgen.03.position-cmd
# connect position feedback from step generators to motion module
net Xpos-fb hm2_5i20.0.stepgen.00.position-fb => joint.0.motor-pos-fb
net Ypos-fb hm2_5i20.0.stepgen.01.position-fb => joint.1.motor-pos-fb
net Zpos-fb hm2_5i20.0.stepgen.02.position-fb => joint.2.motor-pos-fb
#net Apos-fb hm2_5i20.0.stepgen.03.position-fb => joint.3.motor-pos-fb
# connect enable signals for step generators
net Xen joint.0.amp-enable-out => hm2_5i20.0.stepgen.00.enable
net Yen joint.1.amp-enable-out => hm2_5i20.0.stepgen.01.enable
net Zen joint.2.amp-enable-out => hm2_5i20.0.stepgen.02.enable
#net Aen joint.3.amp-enable-out => hm2_5i20.0.stepgen.03.enable
# enable velocity mode jogging
net Enable joint.0.jog-vel-mode
net Enable joint.1.jog-vel-mode
net Enable joint.2.jog-vel-mode
#net Enable joint.3.jog-vel-mode
# enable the PWM generator
net Enable => hm2_5i20.0.pwmgen.00.enable
# enable the charge pump
net Enable charge-pump.enable
# connect the charge pump signal to an output
setp hm2_5i20.0.gpio.022.is_output TRUE
net chargepump hm2_5i20.0.gpio.022.out => charge-pump.out
# Safety Relay Monitoring Contacts
net estop-enable hm2_5i20.0.gpio.037.in => iocontrol.0.emc-enable-in
# Run Switch
net machine-on hm2_5i20.0.gpio.039.in_not => halui.machine.on
#connect limit switches to limit inputs
net Xmax hm2_5i20.0.gpio.024.in_not => joint.0.pos-lim-sw-in
net Xmin hm2_5i20.0.gpio.026.in_not => joint.0.neg-lim-sw-in
net Ymax hm2_5i20.0.gpio.028.in_not => joint.1.pos-lim-sw-in
net Ymin hm2_5i20.0.gpio.030.in_not => joint.1.neg-lim-sw-in
net Zmax hm2_5i20.0.gpio.032.in_not => joint.2.pos-lim-sw-in
net Zmin hm2_5i20.0.gpio.034.in_not => joint.2.neg-lim-sw-in
#connect positive limit signals to home inputs
net Xmax => joint.0.home-sw-in
net Ymax => joint.1.home-sw-in
net Zmax => joint.2.home-sw-in
# Spindle Contactor Enable
setp hm2_5i20.0.gpio.041.is_output TRUE
setp hm2_5i20.0.gpio.041.invert_output TRUE
# Door Closed - Energizes spindle contactor
net CLOSED hm2_5i20.0.gpio.029.in_not hm2_5i20.0.gpio.041.out
# Main Contactors - True when both contactors are energized
net ACOK hm2_5i20.0.gpio.035.in_not
# VFD Fault Relay - True when VFD is not faulted
#net VFDOK hm2_5i20.0.gpio.031.in_not
# A Axis Home - On Sieg machines there is no VFD fault signal,
# it is used for the A axis home sensor on 4 axis machines
net VFDOK hm2_5i20.0.gpio.031.in_not
#net AHOME hm2_5i20.0.gpio.031.in joint.3.home-sw-in
# Spindle Contactor - False when spindle contactor is energized
net SOFF hm2_5i20.0.gpio.033.in halui.program.pause motion.feed-hold
# Axis Drive Status Signals
# True when YAKO stepper drive is on a full step position
# True when a Leadshine stepper drive is in the READY state
net DRV0 hm2_5i20.0.gpio.025.in_not
net DRV1 hm2_5i20.0.gpio.027.in_not
net DRV2 hm2_5i20.0.gpio.036.in_not
net DRV3 hm2_5i20.0.gpio.038.in_not
# Output Bits
# KA1
setp hm2_5i20.0.gpio.040.is_output TRUE
setp hm2_5i20.0.gpio.040.invert_output TRUE
net KA1 spindle.0.reverse => hm2_5i20.0.gpio.040.out
# KA2
setp hm2_5i20.0.gpio.042.is_output TRUE
setp hm2_5i20.0.gpio.042.invert_output TRUE
net KA2 spindle.0.forward => hm2_5i20.0.gpio.042.out
# Flood Coolant
setp hm2_5i20.0.gpio.043.is_output TRUE
setp hm2_5i20.0.gpio.043.invert_output TRUE
net M8 hm2_5i20.0.gpio.043.out => iocontrol.0.coolant-flood
# Mist Coolant
setp hm2_5i20.0.gpio.045.is_output TRUE
setp hm2_5i20.0.gpio.045.invert_output TRUE
net M7 hm2_5i20.0.gpio.045.out => iocontrol.0.coolant-mist
# hook the functions to threads
# read inputs
addf hm2_5i20.0.read servo-thread
# handle motion commands
addf motion-command-handler servo-thread
# run the motion controller
addf motion-controller servo-thread
# write outputs
addf hm2_5i20.0.write servo-thread
# toggle the charge pump
addf charge-pump servo-thread

View File

@@ -0,0 +1,285 @@
# EMC controller parameters for Mesa 5i20 controlled Smithy 1240 Mill
[EMC]
MACHINE = Smithy 1240 Mill
VERSION = 1.1
DEBUG = 0x00000000
#DEBUG = 0x7FFFFFFF
[DISPLAY]
#DISPLAY = eztrol
# CYCLE_TIME is used by eztrol
CYCLE_TIME = .1
DISPLAY = axis
#DISPLAY = tklinuxcnc
#HELP_FILE = /usr/share/doc/linuxcnc/tklinuxcnc.txt
TKPKG = Ngcgui 1.0
TKPKG = Ngcguittt 1.0
# note: ngcgui_app.tcl must precede ngcgui_ttt.tcl
NGCGUI_FONT = Helvetica -12 normal
TTT = truetype-tracer
TTT_PREAMBLE = in_std.ngc
NGCGUI_PREAMBLE = in_std.ngc
NGCGUI_POSTAMBLE = bye.ngc
NGCGUI_SUBFILE = backlash.ngc
NGCGUI_SUBFILE = hole_circle.ngc
NGCGUI_SUBFILE = helix.ngc
NGCGUI_SUBFILE = helix_rtheta.ngc
NGCGUI_SUBFILE = slot.ngc
NGCGUI_SUBFILE = simp.ngc
NGCGUI_SUBFILE = xyz.ngc
NGCGUI_SUBFILE = iquad.ngc
NGCGUI_SUBFILE = oquad.ngc
NGCGUI_SUBFILE = db25.ngc
NGCGUI_SUBFILE = ihex.ngc
NGCGUI_SUBFILE = ohex.ngc
NGCGUI_SUBFILE = gosper.ngc
NGCGUI_SUBFILE = ""
#NGCGUI_SUBFILE = "" use when imageframe is specified if
# opening other files is required
# images will be put in a toplevel window
NGCGUI_OPTIONS =
#NGCGUI_OPTIONS = opt1 opt2 ...
# opt items:
# nonew -- disallow making a new tab page
# noremove -- disallow removing any tab page
# noauto -- no autosend (makeFile, then manually send)
# noiframe -- no internal image, image on separate toplevel
POSITION_OFFSET = RELATIVE
POSITION_FEEDBACK = ACTUAL
MAX_FEED_OVERRIDE = 1.5
MIN_SPINDLE_OVERRIDE = 0.2
MAX_SPINDLE_OVERRIDE = 1.5
INTRO_GRAPHIC = linuxcnc.gif
INTRO_TIME = 5
INCREMENTS = .1in .05in .01in .005in .001in .0005in .0001in
PROGRAM_PREFIX = ../../nc_files/
#EDITOR = geany
TOOL_EDITOR = tooledit
DEFAULT_LINEAR_VELOCITY = 0.2
#MAX_LINEAR_VELOCITY = 7.0
MAX_LINEAR_VELOCITY = 5.0
DEFAULT_ANGULAR_VELOCITY = 12.0
MAX_ANGULAR_VELOCITY = 150.0
[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 = python3
[RS274NGC]
PARAMETER_FILE = emc.var
SUBROUTINE_PATH = ../../nc_files/ngcgui_lib:../../nc_files/ngcgui_lib/utilitysubs
USER_M_PATH = ../../nc_files/ngcgui_lib/mfiles
[EMCMOT]
EMCMOT = motmod
SHMEM_KEY = 111
COMM_TIMEOUT = 1.0
BASE_PERIOD = 1000000
SERVO_PERIOD = 1000000
TRAJ_PERIOD = 1000000
[TASK]
TASK = milltask
CYCLE_TIME = 0.001
[HAL]
HALUI = halui
HALFILE = 1240.hal
#HALFILE = naiky.hal
EZTROL_HALFILE = 5i20eztrol.hal
HALFILE = axis_manualtoolchange.hal
[HALUI]
#No Content
[TRAJ]
COORDINATES = X Y Z
LINEAR_UNITS = inch
ANGULAR_UNITS = degree
#MAX_VELOCITY = 7.0
#MAX_ACCELERATION = 20.0
MAX_LINEAR_VELOCITY = 5.0
MAX_LINEAR_ACCELERATION = 7.5
DEFAULT_LINEAR_VELOCITY = 0.2
[EMCIO]
TOOL_TABLE = mill.tbl
#TOOL_CHANGE_POSITION = 0 0 2
#TOOL_CHANGE_WITH_SPINDLE_ON = 1
TOOL_CHANGE_QUILL_UP = 1
#TOOL_CHANGE_AT_G30 = 1
[KINS]
KINEMATICS = trivkins
JOINTS = 4
[AXIS_X]
MIN_LIMIT = -21.8
MAX_LIMIT = 0.2
MAX_VELOCITY = 5.0
MAX_ACCELERATION = 7.5
[JOINT_0]
TYPE = LINEAR
HOME = 0.000
#MAX_VELOCITY = 7.0
#MAX_ACCELERATION = 10.0
MAX_VELOCITY = 5.0
MAX_ACCELERATION = 7.5
STEPGEN_MAXVEL = 0.0
STEPGEN_MAXACCEL = 0.0
BACKLASH = 0.0000
# Leadscrew Pitch = 5mm
# Drive Ratio = 1:1
# Steps/Rev = 200 * 50uSteps = 10000
# Vel at 400k Steps/S = 472 in/min
SCALE = 50800
OUTPUT_SCALE = 1.000
MIN_LIMIT = -21.8
MAX_LIMIT = 0.2
FERROR = 0.25
MIN_FERROR = 0.1
HOME_OFFSET = 0.25
HOME_SEARCH_VEL = 0.5
HOME_LATCH_VEL = 0.05
HOME_FINAL_VEL = 0.5
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 2
[AXIS_Y]
MIN_LIMIT = -11.8
MAX_LIMIT = 0.2
MAX_VELOCITY = 5.0
MAX_ACCELERATION = 7.5
[JOINT_1]
TYPE = LINEAR
HOME = 0.000
#MAX_VELOCITY = 7.0
#MAX_ACCELERATION = 10.0
MAX_VELOCITY = 5.0
MAX_ACCELERATION = 7.5
STEPGEN_MAXVEL = 0.0
STEPGEN_MAXACCEL = 0.0
BACKLASH = 0.0000
# Leadscrew Pitch = 5mm
# Drive Ratio = 1:1
# Steps/Rev = 200 * 50uSteps = 10000
# Vel at 400k Steps/S = 472 in/min
SCALE = -50800
OUTPUT_SCALE = 1.000
MIN_LIMIT = -11.8
MAX_LIMIT = 0.2
FERROR = 0.25
MIN_FERROR = 0.1
HOME_OFFSET = 0.25
HOME_SEARCH_VEL = 0.5
HOME_LATCH_VEL = 0.05
HOME_FINAL_VEL = 0.5
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 1
[AXIS_Z]
MIN_LIMIT = -11.8
MAX_LIMIT = 0.2
MAX_VELOCITY = 5.0
MAX_ACCELERATION = 7.5
[JOINT_2]
TYPE = LINEAR
HOME = 0.000
#MAX_VELOCITY = 7.0
#MAX_ACCELERATION = 10.0
MAX_VELOCITY = 5.0
MAX_ACCELERATION = 7.5
STEPGEN_MAXVEL = 0.0
STEPGEN_MAXACCEL = 0.0
BACKLASH = 0.0000
# Leadscrew Pitch = 5mm
# Drive Ratio = 1:1
# Steps/Rev = 200 * 50uSteps = 10000
# Vel at 400k Steps/S = 472 in/min
SCALE = -50800
OUTPUT_SCALE = 1.000
MIN_LIMIT = -11.8
MAX_LIMIT = 0.2
FERROR = 0.25
MIN_FERROR = 0.1
HOME_OFFSET = 0.25
HOME_SEARCH_VEL = 0.5
HOME_LATCH_VEL = 0.05
HOME_FINAL_VEL = 0.5
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 0
[AXIS_A]
MIN_LIMIT = -360000.0
MAX_LIMIT = 360000.0
MAX_VELOCITY = 150.0
MAX_ACCELERATION = 450.0
[JOINT_3]
TYPE = ANGULAR
HOME = 0.000
MAX_VELOCITY = 150.0
MAX_ACCELERATION = 450.0
STEPGEN_MAXVEL = 0.0
STEPGEN_MAXACCEL = 0.0
BACKLASH = 0.0000
# Drive Ratio = 90:360 = 1:4
# Steps/Rev = 200 * 50uSteps = 10000
# Vel at 400k Steps/S = 9600 deg/min
SCALE = 2500.0
OUTPUT_SCALE = 1.000
MIN_LIMIT = -360000.0
MAX_LIMIT = 360000.0
FERROR = 2.0
MIN_FERROR = 0.1
HOME_OFFSET = 0.0
HOME_SEARCH_VEL = 0.0
HOME_LATCH_VEL = 0.0
#HOME_FINAL_VEL = 0.0
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 3
[EZTROL]
QTEMC_PLUGIN = /usr/share/eztrol/lib/libqtemc-2.4.6.so
QTEMCHAL_PLUGIN = /usr/share/eztrol/lib/libqtemchal-2.4.6.so
EZTROLGUI = /usr/share/eztrol/eztrolgui/libguimill2.so
MAX_SPINDLE_RPM = 4000
DIR_PLUGIN = /usr/share/eztrol/eztrolplugins
PLUGIN = libeztrol_wizard_plugin.so
PLUGIN = libeztrol_webwizard_plugin.so
# disabling settings gcode editor will benefit systems with small memory size
ENABLE_SETTINGS_EDITOR = true
# disable OpenGL 3D Preview
ENABLE_3D_PREVIEW = true
# set to Full Screen TRUE/FALSE
FULLSCREEN = false
# Settings Tab GCode Editor Syntax Highlight
# color guide - http://www.w3.org/TR/SVG/types.html#ColorKeywords
AXIS_COLOR = magenta
LINENUMBER_COLOR = rosybrown
GM_COLOR = blue
STFDRLPQH_COLOR = red
O_COLOR = blue
RESERVEDWORDS_COLOR = darkviolet
VARIABLE_COLOR = olive
COMMENT_COLOR = seagreen
GUI_STYLESHEET = eztrolstyle1.qss
[EZTROLWIZARDS]
WIZARD_DIRECTORY = /usr/share/eztrol/eztrolwizards
SAVE_DIRECTORY = ../../nc_files
[EZTROLWEBWIZARD]
URL = http://www.mattshaver.com/ecmacam/ecmacam.htm

View File

@@ -0,0 +1,187 @@
# 5i20 config file for 4 Axis Smithy 1240 Mill
# load the hostmot2 driver, this doesn't do anything by itself,
# it just waits for low-level drivers to register boards
loadrt hostmot2 debug_idrom=1 debug_module_descriptors=1 debug_pin_descriptors=1 debug_modules=1
# load the low-level driver for the board
# this will load the board's firmware and register it with the hostmot2
# driver loaded above, and it'll show up in HAL
loadrt hm2_pci config="firmware=hm2/5i20/SVST2_4_7I47.BIT num_encoders=1 num_pwmgens=1 num_stepgens=4 enable_raw"
# 13312 = 0x3400 = Encoder Sample Rate Register
setp hm2_5i20.0.raw.write_address 13312
# sample rate is clock (33 MHz)/SRR+2 = 33MHz/10 = 3.3MHz
setp hm2_5i20.0.raw.write_data 8
# write data
setp hm2_5i20.0.raw.write_strobe 1
# set up the watchdog
#setp hm2_5i20.0.watchdog.timeout_ns 10000000
# load kinematics
loadrt [KINS]KINEMATICS
# load motion controller, get name and thread periods from ini file
loadrt [EMCMOT]EMCMOT base_period_nsec=[EMCMOT]BASE_PERIOD servo_period_nsec=[EMCMOT]SERVO_PERIOD traj_period_nsec=[EMCMOT]TRAJ_PERIOD key=[EMCMOT]SHMEM_KEY num_joints=[KINS]JOINTS
# load charge pump
loadrt charge_pump
# These loopbacks are usually disconnected by a postgui halfile
net tool-change-loop iocontrol.0.tool-change iocontrol.0.tool-changed
net tool-prepare-loopback iocontrol.0.tool-prepare iocontrol.0.tool-prepared
#the Enable signal is used to permanently enable things
newsig Enable bit
sets Enable TRUE
#configure the spindle speed
net scmd spindle.0.speed-out hm2_5i20.0.pwmgen.00.value
setp hm2_5i20.0.pwmgen.00.scale 4000
setp hm2_5i20.0.pwmgen.00.output-type 1
setp hm2_5i20.0.pwmgen.pwm_frequency 100
# invert the step pulse polarity
setp hm2_5i20.0.gpio.000.invert_output TRUE
setp hm2_5i20.0.gpio.002.invert_output TRUE
setp hm2_5i20.0.gpio.016.invert_output TRUE
setp hm2_5i20.0.gpio.018.invert_output TRUE
# configure the stepgen parameters
setp hm2_5i20.0.stepgen.00.dirsetup 5000
setp hm2_5i20.0.stepgen.00.dirhold 1250
setp hm2_5i20.0.stepgen.00.steplen 1250
setp hm2_5i20.0.stepgen.00.stepspace 1250
setp hm2_5i20.0.stepgen.00.position-scale [JOINT_0]SCALE
setp hm2_5i20.0.stepgen.00.maxaccel [JOINT_0]STEPGEN_MAXACCEL
setp hm2_5i20.0.stepgen.00.maxvel [JOINT_0]STEPGEN_MAXVEL
setp hm2_5i20.0.stepgen.01.dirsetup 5000
setp hm2_5i20.0.stepgen.01.dirhold 1250
setp hm2_5i20.0.stepgen.01.steplen 1250
setp hm2_5i20.0.stepgen.01.stepspace 1250
setp hm2_5i20.0.stepgen.01.position-scale [JOINT_1]SCALE
setp hm2_5i20.0.stepgen.01.maxaccel [JOINT_1]STEPGEN_MAXACCEL
setp hm2_5i20.0.stepgen.01.maxvel [JOINT_1]STEPGEN_MAXVEL
setp hm2_5i20.0.stepgen.02.dirsetup 5000
setp hm2_5i20.0.stepgen.02.dirhold 1250
setp hm2_5i20.0.stepgen.02.steplen 1250
setp hm2_5i20.0.stepgen.02.stepspace 1250
setp hm2_5i20.0.stepgen.02.position-scale [JOINT_2]SCALE
setp hm2_5i20.0.stepgen.02.maxaccel [JOINT_2]STEPGEN_MAXACCEL
setp hm2_5i20.0.stepgen.02.maxvel [JOINT_2]STEPGEN_MAXVEL
setp hm2_5i20.0.stepgen.03.dirsetup 5000
setp hm2_5i20.0.stepgen.03.dirhold 1250
setp hm2_5i20.0.stepgen.03.steplen 1250
setp hm2_5i20.0.stepgen.03.stepspace 1250
setp hm2_5i20.0.stepgen.03.position-scale [JOINT_3]SCALE
setp hm2_5i20.0.stepgen.03.maxaccel [JOINT_3]STEPGEN_MAXACCEL
setp hm2_5i20.0.stepgen.03.maxvel [JOINT_3]STEPGEN_MAXVEL
# connect position commands from motion module to step generator
net Xpos-cmd joint.0.motor-pos-cmd => hm2_5i20.0.stepgen.00.position-cmd
net Ypos-cmd joint.1.motor-pos-cmd => hm2_5i20.0.stepgen.01.position-cmd
net Zpos-cmd joint.2.motor-pos-cmd => hm2_5i20.0.stepgen.02.position-cmd
net Apos-cmd joint.3.motor-pos-cmd => hm2_5i20.0.stepgen.03.position-cmd
# connect position feedback from step generators to motion module
net Xpos-fb hm2_5i20.0.stepgen.00.position-fb => joint.0.motor-pos-fb
net Ypos-fb hm2_5i20.0.stepgen.01.position-fb => joint.1.motor-pos-fb
net Zpos-fb hm2_5i20.0.stepgen.02.position-fb => joint.2.motor-pos-fb
net Apos-fb hm2_5i20.0.stepgen.03.position-fb => joint.3.motor-pos-fb
# connect enable signals for step generators
net Xen joint.0.amp-enable-out => hm2_5i20.0.stepgen.00.enable
net Yen joint.1.amp-enable-out => hm2_5i20.0.stepgen.01.enable
net Zen joint.2.amp-enable-out => hm2_5i20.0.stepgen.02.enable
net Aen joint.3.amp-enable-out => hm2_5i20.0.stepgen.03.enable
# enable velocity mode jogging
net Enable joint.0.jog-vel-mode
net Enable joint.1.jog-vel-mode
net Enable joint.2.jog-vel-mode
net Enable joint.3.jog-vel-mode
# enable the PWM generator
net Enable => hm2_5i20.0.pwmgen.00.enable
# enable the charge pump
net Enable charge-pump.enable
# connect the charge pump signal to an output
setp hm2_5i20.0.gpio.022.is_output TRUE
net chargepump hm2_5i20.0.gpio.022.out => charge-pump.out
# Safety Relay Monitoring Contacts
net estop-enable hm2_5i20.0.gpio.037.in => iocontrol.0.emc-enable-in
# Run Switch
net machine-on hm2_5i20.0.gpio.039.in_not => halui.machine.on
#connect limit switches to limit inputs
net Xmax hm2_5i20.0.gpio.024.in_not => joint.0.pos-lim-sw-in
net Xmin hm2_5i20.0.gpio.026.in_not => joint.0.neg-lim-sw-in
net Ymax hm2_5i20.0.gpio.028.in_not => joint.1.pos-lim-sw-in
net Ymin hm2_5i20.0.gpio.030.in_not => joint.1.neg-lim-sw-in
net Zmax hm2_5i20.0.gpio.032.in_not => joint.2.pos-lim-sw-in
net Zmin hm2_5i20.0.gpio.034.in_not => joint.2.neg-lim-sw-in
#connect positive limit signals to home inputs
net Xmax => joint.0.home-sw-in
net Ymax => joint.1.home-sw-in
net Zmax => joint.2.home-sw-in
# Spindle Contactor Enable
setp hm2_5i20.0.gpio.041.is_output TRUE
setp hm2_5i20.0.gpio.041.invert_output TRUE
# Door Closed - Energizes spindle contactor
net CLOSED hm2_5i20.0.gpio.029.in_not hm2_5i20.0.gpio.041.out
# Main Contactors - True when both contactors are energized
net ACOK hm2_5i20.0.gpio.035.in_not
# VFD Fault Relay - True when VFD is not faulted
#net VFDOK hm2_5i20.0.gpio.031.in_not
# A Axis Home - On Sieg machines there is no VFD fault signal,
# it is used for the A axis home sensor on 4 axis machines
net VFDOK hm2_5i20.0.gpio.031.in_not
#net AHOME hm2_5i20.0.gpio.031.in joint.3.home-sw-in
# Spindle Contactor - False when spindle contactor is energized
net SOFF hm2_5i20.0.gpio.033.in halui.program.pause motion.feed-hold
# Axis Drive Status Signals
# True when YAKO stepper drive is on a full step position
# True when a Leadshine stepper drive is in the READY state
net DRV0 hm2_5i20.0.gpio.025.in_not
net DRV1 hm2_5i20.0.gpio.027.in_not
net DRV2 hm2_5i20.0.gpio.036.in_not
net DRV3 hm2_5i20.0.gpio.038.in_not
# Output Bits
# KA1
setp hm2_5i20.0.gpio.040.is_output TRUE
setp hm2_5i20.0.gpio.040.invert_output TRUE
net KA1 spindle.0.reverse => hm2_5i20.0.gpio.040.out
# KA2
setp hm2_5i20.0.gpio.042.is_output TRUE
setp hm2_5i20.0.gpio.042.invert_output TRUE
net KA2 spindle.0.forward => hm2_5i20.0.gpio.042.out
# Flood Coolant
setp hm2_5i20.0.gpio.043.is_output TRUE
setp hm2_5i20.0.gpio.043.invert_output TRUE
net M8 hm2_5i20.0.gpio.043.out => iocontrol.0.coolant-flood
# Mist Coolant
setp hm2_5i20.0.gpio.045.is_output TRUE
setp hm2_5i20.0.gpio.045.invert_output TRUE
net M7 hm2_5i20.0.gpio.045.out => iocontrol.0.coolant-mist
# hook the functions to threads
# read inputs
addf hm2_5i20.0.read servo-thread
# handle motion commands
addf motion-command-handler servo-thread
# run the motion controller
addf motion-controller servo-thread
# write outputs
addf hm2_5i20.0.write servo-thread
# toggle the charge pump
addf charge-pump servo-thread

View File

@@ -0,0 +1,285 @@
# EMC controller parameters for Mesa 5i20 controlled 4 Axis Smithy 1240 Mill
[EMC]
MACHINE = 4 Axis Smithy 1240 Mill
VERSION = 1.1
DEBUG = 0x00000000
#DEBUG = 0x7FFFFFFF
[DISPLAY]
#DISPLAY = eztrol
# CYCLE_TIME is used by eztrol
CYCLE_TIME = .1
DISPLAY = axis
#DISPLAY = tklinuxcnc
#HELP_FILE = /usr/share/doc/linuxcnc/tklinuxcnc.txt
TKPKG = Ngcgui 1.0
TKPKG = Ngcguittt 1.0
# note: ngcgui_app.tcl must precede ngcgui_ttt.tcl
NGCGUI_FONT = Helvetica -12 normal
TTT = truetype-tracer
TTT_PREAMBLE = in_std.ngc
NGCGUI_PREAMBLE = in_std.ngc
NGCGUI_POSTAMBLE = bye.ngc
NGCGUI_SUBFILE = backlash.ngc
NGCGUI_SUBFILE = hole_circle.ngc
NGCGUI_SUBFILE = helix.ngc
NGCGUI_SUBFILE = helix_rtheta.ngc
NGCGUI_SUBFILE = slot.ngc
NGCGUI_SUBFILE = simp.ngc
NGCGUI_SUBFILE = xyz.ngc
NGCGUI_SUBFILE = iquad.ngc
NGCGUI_SUBFILE = oquad.ngc
NGCGUI_SUBFILE = db25.ngc
NGCGUI_SUBFILE = ihex.ngc
NGCGUI_SUBFILE = ohex.ngc
NGCGUI_SUBFILE = gosper.ngc
NGCGUI_SUBFILE = ""
#NGCGUI_SUBFILE = "" use when imageframe is specified if
# opening other files is required
# images will be put in a toplevel window
NGCGUI_OPTIONS =
#NGCGUI_OPTIONS = opt1 opt2 ...
# opt items:
# nonew -- disallow making a new tab page
# noremove -- disallow removing any tab page
# noauto -- no autosend (makeFile, then manually send)
# noiframe -- no internal image, image on separate toplevel
POSITION_OFFSET = RELATIVE
POSITION_FEEDBACK = ACTUAL
MAX_FEED_OVERRIDE = 1.5
MIN_SPINDLE_OVERRIDE = 0.2
MAX_SPINDLE_OVERRIDE = 1.5
INTRO_GRAPHIC = linuxcnc.gif
INTRO_TIME = 5
INCREMENTS = .1in .05in .01in .005in .001in .0005in .0001in
PROGRAM_PREFIX = ../../nc_files/
#EDITOR = geany
TOOL_EDITOR = tooledit
DEFAULT_LINEAR_VELOCITY = 0.2
#MAX_LINEAR_VELOCITY = 7.0
MAX_LINEAR_VELOCITY = 5.0
DEFAULT_ANGULAR_VELOCITY = 12.0
MAX_ANGULAR_VELOCITY = 150.0
[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 = python3
[RS274NGC]
PARAMETER_FILE = emc.var
SUBROUTINE_PATH = ../../nc_files/ngcgui_lib:../../nc_files/ngcgui_lib/utilitysubs
USER_M_PATH = ../../nc_files/ngcgui_lib/mfiles
[EMCMOT]
EMCMOT = motmod
SHMEM_KEY = 111
COMM_TIMEOUT = 1.0
BASE_PERIOD = 1000000
SERVO_PERIOD = 1000000
TRAJ_PERIOD = 1000000
[TASK]
TASK = milltask
CYCLE_TIME = 0.001
[HAL]
HALUI = halui
HALFILE = 1240_4axis.hal
#HALFILE = naiky.hal
EZTROL_HALFILE = 5i20eztrol.hal
HALFILE = axis_manualtoolchange.hal
[HALUI]
#No Content
[TRAJ]
COORDINATES = X Y Z A
LINEAR_UNITS = inch
ANGULAR_UNITS = degree
#MAX_VELOCITY = 7.0
#MAX_ACCELERATION = 20.0
MAX_LINEAR_VELOCITY = 5.0
MAX_LINEAR_ACCELERATION = 7.5
DEFAULT_LINEAR_VELOCITY = 0.2
[EMCIO]
TOOL_TABLE = mill.tbl
#TOOL_CHANGE_POSITION = 0 0 2
#TOOL_CHANGE_WITH_SPINDLE_ON = 1
TOOL_CHANGE_QUILL_UP = 1
#TOOL_CHANGE_AT_G30 = 1
[KINS]
KINEMATICS = trivkins
JOINTS = 4
[AXIS_X]
MIN_LIMIT = -21.8
MAX_LIMIT = 0.2
MAX_VELOCITY = 5.0
MAX_ACCELERATION = 7.5
[JOINT_0]
TYPE = LINEAR
HOME = 0.000
#MAX_VELOCITY = 7.0
#MAX_ACCELERATION = 10.0
MAX_VELOCITY = 5.0
MAX_ACCELERATION = 7.5
STEPGEN_MAXVEL = 0.0
STEPGEN_MAXACCEL = 0.0
BACKLASH = 0.0000
# Leadscrew Pitch = 5mm
# Drive Ratio = 1:1
# Steps/Rev = 200 * 50uSteps = 10000
# Vel at 400k Steps/S = 472 in/min
SCALE = 50800
OUTPUT_SCALE = 1.000
MIN_LIMIT = -21.8
MAX_LIMIT = 0.2
FERROR = 0.25
MIN_FERROR = 0.1
HOME_OFFSET = 0.25
HOME_SEARCH_VEL = 0.5
HOME_LATCH_VEL = 0.05
HOME_FINAL_VEL = 0.5
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 2
[AXIS_Y]
MIN_LIMIT = -11.8
MAX_LIMIT = 0.2
MAX_VELOCITY = 5.0
MAX_ACCELERATION = 7.5
[JOINT_1]
TYPE = LINEAR
HOME = 0.000
#MAX_VELOCITY = 7.0
#MAX_ACCELERATION = 10.0
MAX_VELOCITY = 5.0
MAX_ACCELERATION = 7.5
STEPGEN_MAXVEL = 0.0
STEPGEN_MAXACCEL = 0.0
BACKLASH = 0.0000
# Leadscrew Pitch = 5mm
# Drive Ratio = 1:1
# Steps/Rev = 200 * 50uSteps = 10000
# Vel at 400k Steps/S = 472 in/min
SCALE = -50800
OUTPUT_SCALE = 1.000
MIN_LIMIT = -11.8
MAX_LIMIT = 0.2
FERROR = 0.25
MIN_FERROR = 0.1
HOME_OFFSET = 0.25
HOME_SEARCH_VEL = 0.5
HOME_LATCH_VEL = 0.05
HOME_FINAL_VEL = 0.5
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 1
[AXIS_Z]
MIN_LIMIT = -11.8
MAX_LIMIT = 0.2
MAX_VELOCITY = 5.0
MAX_ACCELERATION = 7.5
[JOINT_2]
TYPE = LINEAR
HOME = 0.000
#MAX_VELOCITY = 7.0
#MAX_ACCELERATION = 10.0
MAX_VELOCITY = 5.0
MAX_ACCELERATION = 7.5
STEPGEN_MAXVEL = 0.0
STEPGEN_MAXACCEL = 0.0
BACKLASH = 0.0000
# Leadscrew Pitch = 5mm
# Drive Ratio = 1:1
# Steps/Rev = 200 * 50uSteps = 10000
# Vel at 400k Steps/S = 472 in/min
SCALE = -50800
OUTPUT_SCALE = 1.000
MIN_LIMIT = -11.8
MAX_LIMIT = 0.2
FERROR = 0.25
MIN_FERROR = 0.1
HOME_OFFSET = 0.25
HOME_SEARCH_VEL = 0.5
HOME_LATCH_VEL = 0.05
HOME_FINAL_VEL = 0.5
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 0
[AXIS_A]
MIN_LIMIT = -360000.0
MAX_LIMIT = 360000.0
MAX_VELOCITY = 150.0
MAX_ACCELERATION = 450.0
[JOINT_3]
TYPE = ANGULAR
HOME = 0.000
MAX_VELOCITY = 150.0
MAX_ACCELERATION = 450.0
STEPGEN_MAXVEL = 0.0
STEPGEN_MAXACCEL = 0.0
BACKLASH = 0.0000
# Drive Ratio = 90:360 = 1:4
# Steps/Rev = 200 * 50uSteps = 10000
# Vel at 400k Steps/S = 9600 deg/min
SCALE = 2500.0
OUTPUT_SCALE = 1.000
MIN_LIMIT = -360000.0
MAX_LIMIT = 360000.0
FERROR = 2.0
MIN_FERROR = 0.1
HOME_OFFSET = 0.0
HOME_SEARCH_VEL = 0.0
HOME_LATCH_VEL = 0.0
#HOME_FINAL_VEL = 0.0
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 3
[EZTROL]
QTEMC_PLUGIN = /usr/share/eztrol/lib/libqtemc-2.4.6.so
QTEMCHAL_PLUGIN = /usr/share/eztrol/lib/libqtemchal-2.4.6.so
EZTROLGUI = /usr/share/eztrol/eztrolgui/libguimill2.so
MAX_SPINDLE_RPM = 4000
DIR_PLUGIN = /usr/share/eztrol/eztrolplugins
PLUGIN = libeztrol_wizard_plugin.so
PLUGIN = libeztrol_webwizard_plugin.so
# disabling settings gcode editor will benefit systems with small memory size
ENABLE_SETTINGS_EDITOR = true
# disable OpenGL 3D Preview
ENABLE_3D_PREVIEW = true
# set to Full Screen TRUE/FALSE
FULLSCREEN = false
# Settings Tab GCode Editor Syntax Highlight
# color guide - http://www.w3.org/TR/SVG/types.html#ColorKeywords
AXIS_COLOR = magenta
LINENUMBER_COLOR = rosybrown
GM_COLOR = blue
STFDRLPQH_COLOR = red
O_COLOR = blue
RESERVEDWORDS_COLOR = darkviolet
VARIABLE_COLOR = olive
COMMENT_COLOR = seagreen
GUI_STYLESHEET = eztrolstyle1.qss
[EZTROLWIZARDS]
WIZARD_DIRECTORY = /usr/share/eztrol/eztrolwizards
SAVE_DIRECTORY = ../../nc_files
[EZTROLWEBWIZARD]
URL = http://www.mattshaver.com/ecmacam/ecmacam.htm

View File

@@ -0,0 +1,277 @@
# 5i20 config file for Smithy 1240 Mill
# load the hostmot2 driver, this doesn't do anything by itself,
# it just waits for low-level drivers to register boards
loadrt hostmot2 debug_idrom=1 debug_module_descriptors=1 debug_pin_descriptors=1 debug_modules=1
# load the low-level driver for the board
# this will load the board's firmware and register it with the hostmot2
# driver loaded above, and it'll show up in HAL
loadrt hm2_pci config="firmware=hm2/5i20/sssvst2_2_4_v31.bit num_encoders=1 num_pwmgens=0 num_stepgens=4 sserial_port_0=0xxxxxxx enable_raw"
#loadrt hm2_pci config="firmware=hm2/5i20/sssvst2_2_2_v35.bit num_encoders=1 num_pwmgens=0 num_stepgens=4 enable_raw"
# 13312 = 0x3400 = Encoder Sample Rate Register
setp hm2_5i20.0.raw.write_address 13312
# sample rate is clock (33 MHz)/SRR+2 = 33MHz/10 = 3.3MHz
setp hm2_5i20.0.raw.write_data 8
# write data
setp hm2_5i20.0.raw.write_strobe 1
# set up the watchdog
#setp hm2_5i20.0.watchdog.timeout_ns 10000000
# load kinematics
loadrt [KINS]KINEMATICS
# load motion controller, get name and thread periods from ini file
loadrt [EMCMOT]EMCMOT base_period_nsec=[EMCMOT]BASE_PERIOD servo_period_nsec=[EMCMOT]SERVO_PERIOD traj_period_nsec=[EMCMOT]TRAJ_PERIOD key=[EMCMOT]SHMEM_KEY num_joints=[KINS]JOINTS
# load charge pump
loadrt charge_pump
setp charge-pump.enable TRUE
# load and configure the spindle speed PID
loadrt pid num_chan=1
setp pid.0.Pgain 0.1
setp pid.0.Igain 100.0
setp pid.0.Dgain 0.0
setp pid.0.maxoutput 1.0
setp pid.0.deadband 0.01
# load and configure the spindle speed limiting, filtering, and comparison blocks
# Need this line so AXIS shows +/- buttons
net srpm spindle.0.speed-out
# Limit bounds and slew rate/second
loadrt limit2
setp limit2.0.min -100
setp limit2.0.max 100
setp limit2.0.maxv 50
# Stalled spindle detector
loadrt abs
loadrt comp count=2
setp comp.0.in0 1.0
setp comp.1.in0 0.0
loadrt and2 count=2
# Filter srps
loadrt lowpass
setp lowpass.0.gain 0.07
# Spindle at-speed detection
loadrt near
setp near.0.scale 1.1
setp near.0.difference 0.1
net srps spindle.0.speed-out-rps limit2.0.in near.0.in1
net scmd limit2.0.out pid.0.command
net fb hm2_5i20.0.encoder.00.velocity pid.0.feedback spindle.0.speed-in lowpass.0.in comp.1.in1
net sflt lowpass.0.out near.0.in2
net at-speed near.0.out spindle.0.at-speed
net scur-abs abs.0.out comp.0.in1
net scmd-ok comp.0.equal and2.0.in0
net sfb-ok comp.1.equal and2.0.in1
net stall and2.0.out
# These loopbacks are usually disconnected by a postgui halfile
net tool-change-loop iocontrol.0.tool-change iocontrol.0.tool-changed
net tool-prepare-loopback iocontrol.0.tool-prepare iocontrol.0.tool-prepared
### q = encoder, h=hall sensors, i=index
loadrt bldc cfg=qh
setp bldc.0.rev 1
setp hm2_5i20.0.encoder.00.scale 2880
net Spos hm2_5i20.0.encoder.00.position spindle.0.revs
net Sidx hm2_5i20.0.encoder.00.index-enable spindle.0.index-enable
net pid-out pid.0.output bldc.0.value
net rawcount hm2_5i20.0.encoder.00.rawcounts
net rotor_angle hm2_5i20.0.8i20.0.0.angle bldc.0.rotor-angle
setp hm2_5i20.0.8i20.0.0.max_current 30.0
net current bldc.0.out hm2_5i20.0.8i20.0.0.current abs.0.in
### IF cfg==*q* uncomment these lines
setp bldc.0.initvalue 0.8
setp bldc.0.lead-angle 0
### 2.2kW Motor
setp bldc.0.poles 4
### 1kW Motor
#setp bldc.0.poles 8
setp bldc.0.scale -2880
net rawcount bldc.0.rawcounts
### IF cfg==*h* uncomment these lines
net spindle-on spindle.0.on pid.0.enable
net sa bldc.0.hall1 hm2_5i20.0.gpio.005.in
net sb bldc.0.hall2 hm2_5i20.0.gpio.007.in
net sc bldc.0.hall3 hm2_5i20.0.gpio.009.in
### 2.2kW Motor
setp bldc.0.pattern 17 # 17 or 44
### 1kW Motor
#setp bldc.0.pattern 34 # 15 or 34
### ELSE uncomment these lines
#net amp-enable bldc.0.init
#net init-done bldc.0.init-done
### IF cfg==*i* uncomment this line
#net Sidx bldc.0.index-enable
# invert the step pulse polarity
setp hm2_5i20.0.gpio.000.invert_output TRUE
setp hm2_5i20.0.gpio.002.invert_output TRUE
setp hm2_5i20.0.gpio.016.invert_output TRUE
setp hm2_5i20.0.gpio.018.invert_output TRUE
# configure the stepgen parameters
setp hm2_5i20.0.stepgen.00.dirsetup 5000
setp hm2_5i20.0.stepgen.00.dirhold 2000
setp hm2_5i20.0.stepgen.00.steplen 2000
setp hm2_5i20.0.stepgen.00.stepspace 2000
setp hm2_5i20.0.stepgen.00.position-scale [JOINT_0]SCALE
setp hm2_5i20.0.stepgen.00.maxaccel [JOINT_0]STEPGEN_MAXACCEL
setp hm2_5i20.0.stepgen.00.maxvel [JOINT_0]STEPGEN_MAXVEL
setp hm2_5i20.0.stepgen.01.dirsetup 5000
setp hm2_5i20.0.stepgen.01.dirhold 2000
setp hm2_5i20.0.stepgen.01.steplen 2000
setp hm2_5i20.0.stepgen.01.stepspace 2000
setp hm2_5i20.0.stepgen.01.position-scale [JOINT_1]SCALE
setp hm2_5i20.0.stepgen.01.maxaccel [JOINT_1]STEPGEN_MAXACCEL
setp hm2_5i20.0.stepgen.01.maxvel [JOINT_1]STEPGEN_MAXVEL
setp hm2_5i20.0.stepgen.02.dirsetup 5000
setp hm2_5i20.0.stepgen.02.dirhold 2000
setp hm2_5i20.0.stepgen.02.steplen 2000
setp hm2_5i20.0.stepgen.02.stepspace 2000
setp hm2_5i20.0.stepgen.02.position-scale [JOINT_2]SCALE
setp hm2_5i20.0.stepgen.02.maxaccel [JOINT_2]STEPGEN_MAXACCEL
setp hm2_5i20.0.stepgen.02.maxvel [JOINT_2]STEPGEN_MAXVEL
setp hm2_5i20.0.stepgen.03.dirsetup 5000
setp hm2_5i20.0.stepgen.03.dirhold 2000
setp hm2_5i20.0.stepgen.03.steplen 2000
setp hm2_5i20.0.stepgen.03.stepspace 2000
setp hm2_5i20.0.stepgen.03.position-scale [JOINT_3]SCALE
setp hm2_5i20.0.stepgen.03.maxaccel [JOINT_3]STEPGEN_MAXACCEL
setp hm2_5i20.0.stepgen.03.maxvel [JOINT_3]STEPGEN_MAXVEL
# connect position commands from motion module to step generator
net Xpos-cmd joint.0.motor-pos-cmd hm2_5i20.0.stepgen.00.position-cmd
net Ypos-cmd joint.1.motor-pos-cmd hm2_5i20.0.stepgen.01.position-cmd
net Zpos-cmd joint.2.motor-pos-cmd hm2_5i20.0.stepgen.02.position-cmd
#net Apos-cmd joint.3.motor-pos-cmd hm2_5i20.0.stepgen.03.position-cmd
# connect position feedback from step generators to motion module
net Xpos-fb hm2_5i20.0.stepgen.00.position-fb joint.0.motor-pos-fb
net Ypos-fb hm2_5i20.0.stepgen.01.position-fb joint.1.motor-pos-fb
net Zpos-fb hm2_5i20.0.stepgen.02.position-fb joint.2.motor-pos-fb
#net Apos-fb hm2_5i20.0.stepgen.03.position-fb joint.3.motor-pos-fb
# connect enable signals for step generators
net Xen joint.0.amp-enable-out hm2_5i20.0.stepgen.00.enable
net Yen joint.1.amp-enable-out hm2_5i20.0.stepgen.01.enable
net Zen joint.2.amp-enable-out hm2_5i20.0.stepgen.02.enable
#net Aen joint.3.amp-enable-out hm2_5i20.0.stepgen.03.enable
# enable velocity mode jogging
setp joint.0.jog-vel-mode TRUE
setp joint.1.jog-vel-mode TRUE
setp joint.2.jog-vel-mode TRUE
#setp joint.3.jog-vel-mode TRUE
# connect the charge pump signal to an output
setp hm2_5i20.0.gpio.022.is_output TRUE
net chargepump hm2_5i20.0.gpio.022.out charge-pump.out
# Safety Relay Monitoring Contacts
net estop-enable hm2_5i20.0.gpio.037.in iocontrol.0.emc-enable-in
# Run Switch
loadrt debounce cfg=1
setp debounce.0.delay 1000
net key-on hm2_5i20.0.gpio.039.in_not debounce.0.0.in
net machine-on debounce.0.0.out hm2_5i20.0.sserial.port-0.run hm2_5i20.0.8i20.0.0.amp_enable halui.machine.on
#connect limit switches to limit inputs
net Xmax hm2_5i20.0.gpio.024.in_not joint.0.pos-lim-sw-in
net Xmin hm2_5i20.0.gpio.026.in_not joint.0.neg-lim-sw-in
net Ymax hm2_5i20.0.gpio.028.in_not joint.1.pos-lim-sw-in
net Ymin hm2_5i20.0.gpio.030.in_not joint.1.neg-lim-sw-in
net Zmax hm2_5i20.0.gpio.032.in_not joint.2.pos-lim-sw-in
net Zmin hm2_5i20.0.gpio.034.in_not joint.2.neg-lim-sw-in
#connect positive limit signals to home inputs
net Xmax joint.0.home-sw-in
net Ymax joint.1.home-sw-in
net Zmax joint.2.home-sw-in
# Spindle Contactor Enable
setp hm2_5i20.0.gpio.041.is_output TRUE
setp hm2_5i20.0.gpio.041.invert_output TRUE
# Door Closed - Energizes spindle contactor
net CLOSED hm2_5i20.0.gpio.029.in_not hm2_5i20.0.gpio.041.out
# Main Contactors - True when both contactors are energized
net ACOK hm2_5i20.0.gpio.035.in_not
# VFD Fault Relay - True when VFD is not faulted
#net VFDOK hm2_5i20.0.gpio.031.in_not
# A Axis Home - On Sieg machines there is no VFD fault signal,
# it is used for the A axis home sensor on 4 axis machines
#net AHOME hm2_5i20.0.gpio.031.in joint.3.home-sw-in
# Stop on any spindle fault
loadrt or2
#net VFDOK hm2_5i20.0.gpio.031.in_not and2.1.in0
net VFDOK hm2_5i20.0.gpio.031.in_not or2.0.in0
#net AUTO halui.mode.is-auto and2.1.in1
net stall or2.0.in1
#net ABORT and2.1.out halui.abort
net ABORT or2.0.out halui.abort
# Spindle Contactor - False when spindle contactor is energized
net SOFF hm2_5i20.0.gpio.033.in halui.program.pause motion.feed-hold
# Axis Drive Status Signals
# True when YAKO stepper drive is on a full step position
# True when a Leadshine stepper drive is in the READY state
net DRV0 hm2_5i20.0.gpio.025.in_not
net DRV1 hm2_5i20.0.gpio.027.in_not
net DRV2 hm2_5i20.0.gpio.036.in_not
net DRV3 hm2_5i20.0.gpio.038.in_not
# Output Bits
# Link Spindle Direction Signals to make AXIS Display Buttons
net FWD spindle.0.reverse
net REV spindle.0.forward
# Flood Coolant
setp hm2_5i20.0.gpio.043.is_output TRUE
setp hm2_5i20.0.gpio.043.invert_output TRUE
net M8 hm2_5i20.0.gpio.043.out iocontrol.0.coolant-flood
# Mist Coolant
setp hm2_5i20.0.gpio.045.is_output TRUE
setp hm2_5i20.0.gpio.045.invert_output TRUE
net M7 hm2_5i20.0.gpio.045.out iocontrol.0.coolant-mist
# hook the functions to threads
# read inputs
addf hm2_5i20.0.read servo-thread
# handle motion commands
addf motion-command-handler servo-thread
# run the motion controller
addf motion-controller servo-thread
# limit the spindle speed command
addf limit2.0 servo-thread
# do spindle pid calcs
addf pid.0.do-pid-calcs servo-thread
# filter encoder velocity
addf lowpass.0 servo-thread
# compare filtered encoder velocity to commanded
addf near.0 servo-thread
# detect a stalled spindle
addf abs.0 servo-thread
addf comp.0 servo-thread
addf comp.1 servo-thread
addf and2.0 servo-thread
# delay running the 8i20 smart serial channel
addf debounce.0 servo-thread
# detect a spindle fault
#addf and2.1 servo-thread
addf or2.0 servo-thread
# write outputs
addf hm2_5i20.0.write servo-thread
# run bldc function
addf bldc.0 servo-thread
# toggle the charge pump
addf charge-pump servo-thread

View File

@@ -0,0 +1,302 @@
# EMC controller parameters for Mesa 5i20 controlled Smithy 1240 Mill
[EMC]
MACHINE = Smithy 1240 Combined Box Mill
VERSION = 1.1
DEBUG = 0x00000000
#DEBUG = 0x7FFFFFFF
[DISPLAY]
#DISPLAY = eztrol
# CYCLE_TIME is used by eztrol
CYCLE_TIME = .1
DISPLAY = axis
#DISPLAY = tklinuxcnc
#HELP_FILE = /usr/share/doc/linuxcnc/tklinuxcnc.txt
TKPKG = Ngcgui 1.0
TKPKG = Ngcguittt 1.0
# note: ngcgui_app.tcl must precede ngcgui_ttt.tcl
NGCGUI_FONT = Helvetica -12 normal
TTT = truetype-tracer
TTT_PREAMBLE = in_std.ngc
NGCGUI_PREAMBLE = in_std.ngc
NGCGUI_POSTAMBLE = bye.ngc
NGCGUI_SUBFILE = backlash.ngc
NGCGUI_SUBFILE = hole_circle.ngc
NGCGUI_SUBFILE = helix.ngc
NGCGUI_SUBFILE = helix_rtheta.ngc
NGCGUI_SUBFILE = slot.ngc
NGCGUI_SUBFILE = simp.ngc
NGCGUI_SUBFILE = xyz.ngc
NGCGUI_SUBFILE = iquad.ngc
NGCGUI_SUBFILE = oquad.ngc
NGCGUI_SUBFILE = db25.ngc
NGCGUI_SUBFILE = ihex.ngc
NGCGUI_SUBFILE = ohex.ngc
NGCGUI_SUBFILE = gosper.ngc
NGCGUI_SUBFILE = ""
#NGCGUI_SUBFILE = "" use when imageframe is specified if
# opening other files is required
# images will be put in a toplevel window
NGCGUI_OPTIONS =
#NGCGUI_OPTIONS = opt1 opt2 ...
# opt items:
# nonew -- disallow making a new tab page
# noremove -- disallow removing any tab page
# noauto -- no autosend (makeFile, then manually send)
# noiframe -- no internal image, image on separate toplevel
POSITION_OFFSET = RELATIVE
POSITION_FEEDBACK = ACTUAL
MAX_FEED_OVERRIDE = 1.5
MIN_SPINDLE_OVERRIDE = 0.2
MAX_SPINDLE_OVERRIDE = 1.5
INTRO_GRAPHIC = linuxcnc.gif
INTRO_TIME = 5
INCREMENTS = .1in .05in .01in .005in .001in .0005in .0001in
PROGRAM_PREFIX = ../../nc_files/
#EDITOR = geany
TOOL_EDITOR = tooledit
DEFAULT_LINEAR_VELOCITY = 0.2
# @SCALE = 25600
#MAX_LINEAR_VELOCITY = 1.9
# @SCALE = 10000
MAX_LINEAR_VELOCITY = 4.2
DEFAULT_ANGULAR_VELOCITY = 12.0
MAX_ANGULAR_VELOCITY = 85.0
PYVCP = 8i20.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 = python3
[RS274NGC]
PARAMETER_FILE = emc.var
SUBROUTINE_PATH = ../../nc_files/ngcgui_lib:../../nc_files/ngcgui_lib/utilitysubs
USER_M_PATH = ../../nc_files/ngcgui_lib/mfiles
[EMCMOT]
EMCMOT = motmod
SHMEM_KEY = 111
COMM_TIMEOUT = 1.0
BASE_PERIOD = 250000
SERVO_PERIOD = 250000
TRAJ_PERIOD = 250000
[TASK]
TASK = milltask
CYCLE_TIME = 0.001
[HAL]
HALUI = halui
HALFILE = 1240combined.hal
#HALFILE = naiky.hal
EZTROL_HALFILE = 5i20eztrol.hal
#HALFILE = axis_manualtoolchange.hal
POSTGUI_HALFILE = 8i20postgui.hal
[HALUI]
#No Content
[TRAJ]
COORDINATES = X Y Z
LINEAR_UNITS = inch
ANGULAR_UNITS = degree
# @SCALE = 25600
#MAX_VELOCITY = 1.9
# @SCALE = 10000
MAX_LINEAR_VELOCITY = 4.2
MAX_LINEAR_ACCELERATION = 10.0
DEFAULT_LINEAR_VELOCITY = 0.2
[EMCIO]
TOOL_TABLE = mill.tbl
#TOOL_CHANGE_POSITION = 0 0 2
#TOOL_CHANGE_WITH_SPINDLE_ON = 1
TOOL_CHANGE_QUILL_UP = 1
#TOOL_CHANGE_AT_G30 = 1
[KINS]
KINEMATICS = trivkins
JOINTS = 4
[AXIS_X]
MIN_LIMIT = -21.8
MAX_LIMIT = 0.2
MAX_VELOCITY = 4.2
MAX_ACCELERATION = 10.0
[JOINT_0]
TYPE = LINEAR
HOME = 0.000
# @SCALE = 25600
#MAX_VELOCITY = 1.9
# @SCALE = 10000
MAX_VELOCITY = 4.2
MAX_ACCELERATION = 10.0
STEPGEN_MAXVEL = 0.0
STEPGEN_MAXACCEL = 0.0
BACKLASH = 0.0000
# Leadscrew Pitch = 5mm
# Drive Ratio = 1:1
# Steps/Rev = 25600
# Vel at 250k Steps/S = 115"/min
#SCALE = 130048
# Steps/Rev = 10000
# Vel at 250k Steps/S = 295"/min
SCALE = 50800
OUTPUT_SCALE = 1.000
MIN_LIMIT = -21.8
MAX_LIMIT = 0.2
FERROR = 0.25
MIN_FERROR = 0.1
HOME_OFFSET = 0.25
HOME_SEARCH_VEL = 0.5
HOME_LATCH_VEL = 0.05
HOME_FINAL_VEL = 0.5
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 2
[AXIS_Y]
MIN_LIMIT = -11.8
MAX_LIMIT = 0.2
MAX_VELOCITY = 4.2
MAX_ACCELERATION = 10.0
[JOINT_1]
TYPE = LINEAR
HOME = 0.000
# @SCALE = 25600
#MAX_VELOCITY = 1.9
# @SCALE = 10000
MAX_VELOCITY = 4.2
MAX_ACCELERATION = 10.0
STEPGEN_MAXVEL = 0.0
STEPGEN_MAXACCEL = 0.0
BACKLASH = 0.0000
# Leadscrew Pitch = 5mm
# Drive Ratio = 1:1
# Steps/Rev = 25600
# Vel at 250k Steps/S = 115"/min
#SCALE = -130048
# Steps/Rev = 10000
# Vel at 250k Steps/S = 295"/min
SCALE = -50800
OUTPUT_SCALE = 1.000
MIN_LIMIT = -11.8
MAX_LIMIT = 0.2
FERROR = 0.25
MIN_FERROR = 0.1
HOME_OFFSET = 0.25
HOME_SEARCH_VEL = 0.5
HOME_LATCH_VEL = 0.05
HOME_FINAL_VEL = 0.5
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 1
[AXIS_Z]
MIN_LIMIT = -11.8
MAX_LIMIT = 0.2
MAX_VELOCITY = 4.2
MAX_ACCELERATION = 10.0
[JOINT_2]
TYPE = LINEAR
HOME = 0.000
# @SCALE = 25600
#MAX_VELOCITY = 1.9
# @SCALE = 10000
MAX_VELOCITY = 4.2
MAX_ACCELERATION = 10.0
STEPGEN_MAXVEL = 0.0
STEPGEN_MAXACCEL = 0.0
BACKLASH = 0.0000
# Leadscrew Pitch = 5mm
# Drive Ratio = 1:1
# Steps/Rev = 25600
# Vel at 250k Steps/S = 115"/min
#SCALE = -130048
# Steps/Rev = 10000
# Vel at 250k Steps/S = 295"/min
SCALE = -50800
OUTPUT_SCALE = 1.000
MIN_LIMIT = -11.8
MAX_LIMIT = 0.2
FERROR = 0.25
MIN_FERROR = 0.1
HOME_OFFSET = 0.25
HOME_SEARCH_VEL = 0.5
HOME_LATCH_VEL = 0.05
HOME_FINAL_VEL = 0.5
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 0
[AXIS_A]
MIN_LIMIT = -360000.0
MAX_LIMIT = 360000.0
MAX_VELOCITY = 85.0
MAX_ACCELERATION = 450.0
[JOINT_3]
TYPE = ANGULAR
HOME = 0.000
MAX_VELOCITY = 85.0
MAX_ACCELERATION = 450.0
STEPGEN_MAXVEL = 0.0
STEPGEN_MAXACCEL = 0.0
BACKLASH = 0.0000
# Drive Ratio = 90:360 = 1:4
# Steps/Rev = 200 * 50uSteps = 10000
# Vel at 400k Steps/S = 9600 deg/min
SCALE = 2500.0
OUTPUT_SCALE = 1.000
MIN_LIMIT = -360000.0
MAX_LIMIT = 360000.0
FERROR = 2.0
MIN_FERROR = 0.1
HOME_OFFSET = 0.0
HOME_SEARCH_VEL = 0.0
HOME_LATCH_VEL = 0.0
#HOME_FINAL_VEL = 0.0
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 3
[EZTROL]
QTEMC_PLUGIN = /usr/share/eztrol/lib/libqtemc-2.4.6.so
QTEMCHAL_PLUGIN = /usr/share/eztrol/lib/libqtemchal-2.4.6.so
EZTROLGUI = /usr/share/eztrol/eztrolgui/libguimill2.so
MAX_SPINDLE_RPM = 6000
DIR_PLUGIN = /usr/share/eztrol/eztrolplugins
PLUGIN = libeztrol_wizard_plugin.so
PLUGIN = libeztrol_webwizard_plugin.so
# disabling settings gcode editor will benefit systems with small memory size
ENABLE_SETTINGS_EDITOR = true
# disable OpenGL 3D Preview
ENABLE_3D_PREVIEW = true
# set to Full Screen TRUE/FALSE
FULLSCREEN = false
# Settings Tab GCode Editor Syntax Highlight
# color guide - http://www.w3.org/TR/SVG/types.html#ColorKeywords
AXIS_COLOR = magenta
LINENUMBER_COLOR = rosybrown
GM_COLOR = blue
STFDRLPQH_COLOR = red
O_COLOR = blue
RESERVEDWORDS_COLOR = darkviolet
VARIABLE_COLOR = olive
COMMENT_COLOR = seagreen
GUI_STYLESHEET = eztrolstyle1.qss
[EZTROLWIZARDS]
WIZARD_DIRECTORY = /usr/share/eztrol/eztrolwizards
SAVE_DIRECTORY = ../../nc_files
[EZTROLWEBWIZARD]
URL = http://www.mattshaver.com/ecmacam/ecmacam.htm

View File

@@ -0,0 +1,277 @@
# 5i20 config file for a 4 Axis Smithy 1240 Mill
# load the hostmot2 driver, this doesn't do anything by itself,
# it just waits for low-level drivers to register boards
loadrt hostmot2 debug_idrom=1 debug_module_descriptors=1 debug_pin_descriptors=1 debug_modules=1
# load the low-level driver for the board
# this will load the board's firmware and register it with the hostmot2
# driver loaded above, and it'll show up in HAL
loadrt hm2_pci config="firmware=hm2/5i20/sssvst2_2_4_v31.bit num_encoders=1 num_pwmgens=0 num_stepgens=4 sserial_port_0=0xxxxxxx enable_raw"
#loadrt hm2_pci config="firmware=hm2/5i20/sssvst2_2_2_v35.bit num_encoders=1 num_pwmgens=0 num_stepgens=4 enable_raw"
# 13312 = 0x3400 = Encoder Sample Rate Register
setp hm2_5i20.0.raw.write_address 13312
# sample rate is clock (33 MHz)/SRR+2 = 33MHz/10 = 3.3MHz
setp hm2_5i20.0.raw.write_data 8
# write data
setp hm2_5i20.0.raw.write_strobe 1
# set up the watchdog
#setp hm2_5i20.0.watchdog.timeout_ns 10000000
# load kinematics
loadrt [KINS]KINEMATICS
# load motion controller, get name and thread periods from ini file
loadrt [EMCMOT]EMCMOT base_period_nsec=[EMCMOT]BASE_PERIOD servo_period_nsec=[EMCMOT]SERVO_PERIOD traj_period_nsec=[EMCMOT]TRAJ_PERIOD key=[EMCMOT]SHMEM_KEY num_joints=[KINS]JOINTS
# load charge pump
loadrt charge_pump
setp charge-pump.enable TRUE
# load and configure the spindle speed PID
loadrt pid num_chan=1
setp pid.0.Pgain 0.1
setp pid.0.Igain 100.0
setp pid.0.Dgain 0.0
setp pid.0.maxoutput 1.0
setp pid.0.deadband 0.01
# load and configure the spindle speed limiting, filtering, and comparison blocks
# Need this line so AXIS shows +/- buttons
net srpm spindle.0.speed-out
# Limit bounds and slew rate/second
loadrt limit2
setp limit2.0.min -100
setp limit2.0.max 100
setp limit2.0.maxv 50
# Stalled spindle detector
loadrt abs
loadrt comp count=2
setp comp.0.in0 1.0
setp comp.1.in0 0.0
loadrt and2 count=2
# Filter srps
loadrt lowpass
setp lowpass.0.gain 0.07
# Spindle at-speed detection
loadrt near
setp near.0.scale 1.1
setp near.0.difference 0.1
net srps spindle.0.speed-out-rps limit2.0.in near.0.in1
net scmd limit2.0.out pid.0.command
net fb hm2_5i20.0.encoder.00.velocity pid.0.feedback spindle.0.speed-in lowpass.0.in comp.1.in1
net sflt lowpass.0.out near.0.in2
net at-speed near.0.out spindle.0.at-speed
net scur-abs abs.0.out comp.0.in1
net scmd-ok comp.0.equal and2.0.in0
net sfb-ok comp.1.equal and2.0.in1
net stall and2.0.out
# These loopbacks are usually disconnected by a postgui halfile
net tool-change-loop iocontrol.0.tool-change iocontrol.0.tool-changed
net tool-prepare-loopback iocontrol.0.tool-prepare iocontrol.0.tool-prepared
### q = encoder, h=hall sensors, i=index
loadrt bldc cfg=qh
setp bldc.0.rev 1
setp hm2_5i20.0.encoder.00.scale 2880
net Spos hm2_5i20.0.encoder.00.position spindle.0.revs
net Sidx hm2_5i20.0.encoder.00.index-enable spindle.0.index-enable
net pid-out pid.0.output bldc.0.value
net rawcount hm2_5i20.0.encoder.00.rawcounts
net rotor_angle hm2_5i20.0.8i20.0.0.angle bldc.0.rotor-angle
setp hm2_5i20.0.8i20.0.0.max_current 30.0
net current bldc.0.out hm2_5i20.0.8i20.0.0.current abs.0.in
### IF cfg==*q* uncomment these lines
setp bldc.0.initvalue 0.8
setp bldc.0.lead-angle 0
### 2.2kW Motor
setp bldc.0.poles 4
### 1kW Motor
#setp bldc.0.poles 8
setp bldc.0.scale -2880
net rawcount bldc.0.rawcounts
### IF cfg==*h* uncomment these lines
net spindle-on spindle.0.on pid.0.enable
net sa bldc.0.hall1 hm2_5i20.0.gpio.005.in
net sb bldc.0.hall2 hm2_5i20.0.gpio.007.in
net sc bldc.0.hall3 hm2_5i20.0.gpio.009.in
### 2.2kW Motor
setp bldc.0.pattern 17 # 17 or 44
### 1kW Motor
#setp bldc.0.pattern 34 # 15 or 34
### ELSE uncomment these lines
#net amp-enable bldc.0.init
#net init-done bldc.0.init-done
### IF cfg==*i* uncomment this line
#net Sidx bldc.0.index-enable
# invert the step pulse polarity
setp hm2_5i20.0.gpio.000.invert_output TRUE
setp hm2_5i20.0.gpio.002.invert_output TRUE
setp hm2_5i20.0.gpio.016.invert_output TRUE
setp hm2_5i20.0.gpio.018.invert_output TRUE
# configure the stepgen parameters
setp hm2_5i20.0.stepgen.00.dirsetup 5000
setp hm2_5i20.0.stepgen.00.dirhold 2000
setp hm2_5i20.0.stepgen.00.steplen 2000
setp hm2_5i20.0.stepgen.00.stepspace 2000
setp hm2_5i20.0.stepgen.00.position-scale [JOINT_0]SCALE
setp hm2_5i20.0.stepgen.00.maxaccel [JOINT_0]STEPGEN_MAXACCEL
setp hm2_5i20.0.stepgen.00.maxvel [JOINT_0]STEPGEN_MAXVEL
setp hm2_5i20.0.stepgen.01.dirsetup 5000
setp hm2_5i20.0.stepgen.01.dirhold 2000
setp hm2_5i20.0.stepgen.01.steplen 2000
setp hm2_5i20.0.stepgen.01.stepspace 2000
setp hm2_5i20.0.stepgen.01.position-scale [JOINT_1]SCALE
setp hm2_5i20.0.stepgen.01.maxaccel [JOINT_1]STEPGEN_MAXACCEL
setp hm2_5i20.0.stepgen.01.maxvel [JOINT_1]STEPGEN_MAXVEL
setp hm2_5i20.0.stepgen.02.dirsetup 5000
setp hm2_5i20.0.stepgen.02.dirhold 2000
setp hm2_5i20.0.stepgen.02.steplen 2000
setp hm2_5i20.0.stepgen.02.stepspace 2000
setp hm2_5i20.0.stepgen.02.position-scale [JOINT_2]SCALE
setp hm2_5i20.0.stepgen.02.maxaccel [JOINT_2]STEPGEN_MAXACCEL
setp hm2_5i20.0.stepgen.02.maxvel [JOINT_2]STEPGEN_MAXVEL
setp hm2_5i20.0.stepgen.03.dirsetup 5000
setp hm2_5i20.0.stepgen.03.dirhold 2000
setp hm2_5i20.0.stepgen.03.steplen 2000
setp hm2_5i20.0.stepgen.03.stepspace 2000
setp hm2_5i20.0.stepgen.03.position-scale [JOINT_3]SCALE
setp hm2_5i20.0.stepgen.03.maxaccel [JOINT_3]STEPGEN_MAXACCEL
setp hm2_5i20.0.stepgen.03.maxvel [JOINT_3]STEPGEN_MAXVEL
# connect position commands from motion module to step generator
net Xpos-cmd joint.0.motor-pos-cmd hm2_5i20.0.stepgen.00.position-cmd
net Ypos-cmd joint.1.motor-pos-cmd hm2_5i20.0.stepgen.01.position-cmd
net Zpos-cmd joint.2.motor-pos-cmd hm2_5i20.0.stepgen.02.position-cmd
net Apos-cmd joint.3.motor-pos-cmd hm2_5i20.0.stepgen.03.position-cmd
# connect position feedback from step generators to motion module
net Xpos-fb hm2_5i20.0.stepgen.00.position-fb joint.0.motor-pos-fb
net Ypos-fb hm2_5i20.0.stepgen.01.position-fb joint.1.motor-pos-fb
net Zpos-fb hm2_5i20.0.stepgen.02.position-fb joint.2.motor-pos-fb
net Apos-fb hm2_5i20.0.stepgen.03.position-fb joint.3.motor-pos-fb
# connect enable signals for step generators
net Xen joint.0.amp-enable-out hm2_5i20.0.stepgen.00.enable
net Yen joint.1.amp-enable-out hm2_5i20.0.stepgen.01.enable
net Zen joint.2.amp-enable-out hm2_5i20.0.stepgen.02.enable
net Aen joint.3.amp-enable-out hm2_5i20.0.stepgen.03.enable
# enable velocity mode jogging
setp joint.0.jog-vel-mode TRUE
setp joint.1.jog-vel-mode TRUE
setp joint.2.jog-vel-mode TRUE
setp joint.3.jog-vel-mode TRUE
# connect the charge pump signal to an output
setp hm2_5i20.0.gpio.022.is_output TRUE
net chargepump hm2_5i20.0.gpio.022.out charge-pump.out
# Safety Relay Monitoring Contacts
net estop-enable hm2_5i20.0.gpio.037.in iocontrol.0.emc-enable-in
# Run Switch
loadrt debounce cfg=1
setp debounce.0.delay 1000
net key-on hm2_5i20.0.gpio.039.in_not debounce.0.0.in
net machine-on debounce.0.0.out hm2_5i20.0.sserial.port-0.run hm2_5i20.0.8i20.0.0.amp_enable halui.machine.on
#connect limit switches to limit inputs
net Xmax hm2_5i20.0.gpio.024.in_not joint.0.pos-lim-sw-in
net Xmin hm2_5i20.0.gpio.026.in_not joint.0.neg-lim-sw-in
net Ymax hm2_5i20.0.gpio.028.in_not joint.1.pos-lim-sw-in
net Ymin hm2_5i20.0.gpio.030.in_not joint.1.neg-lim-sw-in
net Zmax hm2_5i20.0.gpio.032.in_not joint.2.pos-lim-sw-in
net Zmin hm2_5i20.0.gpio.034.in_not joint.2.neg-lim-sw-in
#connect positive limit signals to home inputs
net Xmax joint.0.home-sw-in
net Ymax joint.1.home-sw-in
net Zmax joint.2.home-sw-in
# Spindle Contactor Enable
setp hm2_5i20.0.gpio.041.is_output TRUE
setp hm2_5i20.0.gpio.041.invert_output TRUE
# Door Closed - Energizes spindle contactor
net CLOSED hm2_5i20.0.gpio.029.in_not hm2_5i20.0.gpio.041.out
# Main Contactors - True when both contactors are energized
net ACOK hm2_5i20.0.gpio.035.in_not
# VFD Fault Relay - True when VFD is not faulted
#net VFDOK hm2_5i20.0.gpio.031.in_not
# A Axis Home - On Sieg machines there is no VFD fault signal,
# it is used for the A axis home sensor on 4 axis machines
#net AHOME hm2_5i20.0.gpio.031.in joint.3.home-sw-in
# Stop on any spindle fault
loadrt or2
#net VFDOK hm2_5i20.0.gpio.031.in_not and2.1.in0
net VFDOK hm2_5i20.0.gpio.031.in_not or2.0.in0
#net AUTO halui.mode.is-auto and2.1.in1
net stall or2.0.in1
#net ABORT and2.1.out halui.abort
net ABORT or2.0.out halui.abort
# Spindle Contactor - False when spindle contactor is energized
net SOFF hm2_5i20.0.gpio.033.in halui.program.pause motion.feed-hold
# Axis Drive Status Signals
# True when YAKO stepper drive is on a full step position
# True when a Leadshine stepper drive is in the READY state
net DRV0 hm2_5i20.0.gpio.025.in_not
net DRV1 hm2_5i20.0.gpio.027.in_not
net DRV2 hm2_5i20.0.gpio.036.in_not
net DRV3 hm2_5i20.0.gpio.038.in_not
# Output Bits
# Link Spindle Direction Signals to make AXIS Display Buttons
net FWD spindle.0.reverse
net REV spindle.0.forward
# Flood Coolant
setp hm2_5i20.0.gpio.043.is_output TRUE
setp hm2_5i20.0.gpio.043.invert_output TRUE
net M8 hm2_5i20.0.gpio.043.out iocontrol.0.coolant-flood
# Mist Coolant
setp hm2_5i20.0.gpio.045.is_output TRUE
setp hm2_5i20.0.gpio.045.invert_output TRUE
net M7 hm2_5i20.0.gpio.045.out iocontrol.0.coolant-mist
# hook the functions to threads
# read inputs
addf hm2_5i20.0.read servo-thread
# handle motion commands
addf motion-command-handler servo-thread
# run the motion controller
addf motion-controller servo-thread
# limit the spindle speed command
addf limit2.0 servo-thread
# do spindle pid calcs
addf pid.0.do-pid-calcs servo-thread
# filter encoder velocity
addf lowpass.0 servo-thread
# compare filtered encoder velocity to commanded
addf near.0 servo-thread
# detect a stalled spindle
addf abs.0 servo-thread
addf comp.0 servo-thread
addf comp.1 servo-thread
addf and2.0 servo-thread
# delay running the 8i20 smart serial channel
addf debounce.0 servo-thread
# detect a spindle fault
#addf and2.1 servo-thread
addf or2.0 servo-thread
# write outputs
addf hm2_5i20.0.write servo-thread
# run bldc function
addf bldc.0 servo-thread
# toggle the charge pump
addf charge-pump servo-thread

View File

@@ -0,0 +1,302 @@
# EMC controller parameters for Mesa 5i20 controlled 4 Axis Smithy 1240 Mill
[EMC]
MACHINE = 4 Axis Smithy 1240 Combined Box Mill
VERSION = 1.1
DEBUG = 0x00000000
#DEBUG = 0x7FFFFFFF
[DISPLAY]
#DISPLAY = eztrol
# CYCLE_TIME is used by eztrol
CYCLE_TIME = .1
DISPLAY = axis
#DISPLAY = tklinuxcnc
#HELP_FILE = /usr/share/doc/linuxcnc/tklinuxcnc.txt
TKPKG = Ngcgui 1.0
TKPKG = Ngcguittt 1.0
# note: ngcgui_app.tcl must precede ngcgui_ttt.tcl
NGCGUI_FONT = Helvetica -12 normal
TTT = truetype-tracer
TTT_PREAMBLE = in_std.ngc
NGCGUI_PREAMBLE = in_std.ngc
NGCGUI_POSTAMBLE = bye.ngc
NGCGUI_SUBFILE = backlash.ngc
NGCGUI_SUBFILE = hole_circle.ngc
NGCGUI_SUBFILE = helix.ngc
NGCGUI_SUBFILE = helix_rtheta.ngc
NGCGUI_SUBFILE = slot.ngc
NGCGUI_SUBFILE = simp.ngc
NGCGUI_SUBFILE = xyz.ngc
NGCGUI_SUBFILE = iquad.ngc
NGCGUI_SUBFILE = oquad.ngc
NGCGUI_SUBFILE = db25.ngc
NGCGUI_SUBFILE = ihex.ngc
NGCGUI_SUBFILE = ohex.ngc
NGCGUI_SUBFILE = gosper.ngc
NGCGUI_SUBFILE = ""
#NGCGUI_SUBFILE = "" use when imageframe is specified if
# opening other files is required
# images will be put in a toplevel window
NGCGUI_OPTIONS =
#NGCGUI_OPTIONS = opt1 opt2 ...
# opt items:
# nonew -- disallow making a new tab page
# noremove -- disallow removing any tab page
# noauto -- no autosend (makeFile, then manually send)
# noiframe -- no internal image, image on separate toplevel
POSITION_OFFSET = RELATIVE
POSITION_FEEDBACK = ACTUAL
MAX_FEED_OVERRIDE = 1.5
MIN_SPINDLE_OVERRIDE = 0.2
MAX_SPINDLE_OVERRIDE = 1.5
INTRO_GRAPHIC = linuxcnc.gif
INTRO_TIME = 5
INCREMENTS = .1in .05in .01in .005in .001in .0005in .0001in
PROGRAM_PREFIX = ../../nc_files/
#EDITOR = geany
TOOL_EDITOR = tooledit
DEFAULT_LINEAR_VELOCITY = 0.2
# @SCALE = 25600
#MAX_LINEAR_VELOCITY = 1.9
# @SCALE = 10000
MAX_LINEAR_VELOCITY = 4.2
DEFAULT_ANGULAR_VELOCITY = 12.0
MAX_ANGULAR_VELOCITY = 85.0
PYVCP = 8i20.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 = python3
[RS274NGC]
PARAMETER_FILE = emc.var
SUBROUTINE_PATH = ../../nc_files/ngcgui_lib:../../nc_files/ngcgui_lib/utilitysubs
USER_M_PATH = ../../nc_files/ngcgui_lib/mfiles
[EMCMOT]
EMCMOT = motmod
SHMEM_KEY = 111
COMM_TIMEOUT = 1.0
BASE_PERIOD = 250000
SERVO_PERIOD = 250000
TRAJ_PERIOD = 250000
[TASK]
TASK = milltask
CYCLE_TIME = 0.001
[HAL]
HALUI = halui
HALFILE = 1240combined_4axis.hal
#HALFILE = naiky_4axis.hal
EZTROL_HALFILE = 5i20eztrol.hal
#HALFILE = axis_manualtoolchange.hal
POSTGUI_HALFILE = 8i20postgui.hal
[HALUI]
#No Content
[TRAJ]
COORDINATES = X Y Z A
LINEAR_UNITS = inch
ANGULAR_UNITS = degree
# @SCALE = 25600
#MAX_VELOCITY = 1.9
# @SCALE = 10000
MAX_LINEAR_VELOCITY = 4.2
MAX_LINEAR_ACCELERATION = 10.0
DEFAULT_LINEAR_VELOCITY = 0.2
[EMCIO]
TOOL_TABLE = mill.tbl
#TOOL_CHANGE_POSITION = 0 0 2
#TOOL_CHANGE_WITH_SPINDLE_ON = 1
TOOL_CHANGE_QUILL_UP = 1
#TOOL_CHANGE_AT_G30 = 1
[KINS]
KINEMATICS = trivkins
JOINTS = 4
[AXIS_X]
MIN_LIMIT = -21.8
MAX_LIMIT = 0.2
MAX_VELOCITY = 4.2
MAX_ACCELERATION = 10.0
[JOINT_0]
TYPE = LINEAR
HOME = 0.000
# @SCALE = 25600
#MAX_VELOCITY = 1.9
# @SCALE = 10000
MAX_VELOCITY = 4.2
MAX_ACCELERATION = 10.0
STEPGEN_MAXVEL = 0.0
STEPGEN_MAXACCEL = 0.0
BACKLASH = 0.0000
# Leadscrew Pitch = 5mm
# Drive Ratio = 1:1
# Steps/Rev = 25600
# Vel at 250k Steps/S = 115"/min
#SCALE = 130048
# Steps/Rev = 10000
# Vel at 250k Steps/S = 295"/min
SCALE = 50800
OUTPUT_SCALE = 1.000
MIN_LIMIT = -21.8
MAX_LIMIT = 0.2
FERROR = 0.25
MIN_FERROR = 0.1
HOME_OFFSET = 0.25
HOME_SEARCH_VEL = 0.5
HOME_LATCH_VEL = 0.05
HOME_FINAL_VEL = 0.5
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 2
[AXIS_Y]
MIN_LIMIT = -11.8
MAX_LIMIT = 0.2
MAX_VELOCITY = 4.2
MAX_ACCELERATION = 10.0
[JOINT_1]
TYPE = LINEAR
HOME = 0.000
# @SCALE = 25600
#MAX_VELOCITY = 1.9
# @SCALE = 10000
MAX_VELOCITY = 4.2
MAX_ACCELERATION = 10.0
STEPGEN_MAXVEL = 0.0
STEPGEN_MAXACCEL = 0.0
BACKLASH = 0.0000
# Leadscrew Pitch = 5mm
# Drive Ratio = 1:1
# Steps/Rev = 25600
# Vel at 250k Steps/S = 115"/min
#SCALE = -130048
# Steps/Rev = 10000
# Vel at 250k Steps/S = 295"/min
SCALE = -50800
OUTPUT_SCALE = 1.000
MIN_LIMIT = -11.8
MAX_LIMIT = 0.2
FERROR = 0.25
MIN_FERROR = 0.1
HOME_OFFSET = 0.25
HOME_SEARCH_VEL = 0.5
HOME_LATCH_VEL = 0.05
HOME_FINAL_VEL = 0.5
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 1
[AXIS_Z]
MIN_LIMIT = -11.8
MAX_LIMIT = 0.2
MAX_VELOCITY = 4.2
MAX_ACCELERATION = 10.0
[JOINT_2]
TYPE = LINEAR
HOME = 0.000
# @SCALE = 25600
#MAX_VELOCITY = 1.9
# @SCALE = 10000
MAX_VELOCITY = 4.2
MAX_ACCELERATION = 10.0
STEPGEN_MAXVEL = 0.0
STEPGEN_MAXACCEL = 0.0
BACKLASH = 0.0000
# Leadscrew Pitch = 5mm
# Drive Ratio = 1:1
# Steps/Rev = 25600
# Vel at 250k Steps/S = 115"/min
#SCALE = -130048
# Steps/Rev = 10000
# Vel at 250k Steps/S = 295"/min
SCALE = -50800
OUTPUT_SCALE = 1.000
MIN_LIMIT = -11.8
MAX_LIMIT = 0.2
FERROR = 0.25
MIN_FERROR = 0.1
HOME_OFFSET = 0.25
HOME_SEARCH_VEL = 0.5
HOME_LATCH_VEL = 0.05
HOME_FINAL_VEL = 0.5
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 0
[AXIS_A]
MIN_LIMIT = -360000.0
MAX_LIMIT = 360000.0
MAX_VELOCITY = 85.0
MAX_ACCELERATION = 450.0
[JOINT_3]
TYPE = ANGULAR
HOME = 0.000
MAX_VELOCITY = 85.0
MAX_ACCELERATION = 450.0
STEPGEN_MAXVEL = 0.0
STEPGEN_MAXACCEL = 0.0
BACKLASH = 0.0000
# Drive Ratio = 90:360 = 1:4
# Steps/Rev = 200 * 50uSteps = 10000
# Vel at 400k Steps/S = 9600 deg/min
SCALE = 2500.0
OUTPUT_SCALE = 1.000
MIN_LIMIT = -360000.0
MAX_LIMIT = 360000.0
FERROR = 2.0
MIN_FERROR = 0.1
HOME_OFFSET = 0.0
HOME_SEARCH_VEL = 0.0
HOME_LATCH_VEL = 0.0
#HOME_FINAL_VEL = 0.0
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 3
[EZTROL]
QTEMC_PLUGIN = /usr/share/eztrol/lib/libqtemc-2.4.6.so
QTEMCHAL_PLUGIN = /usr/share/eztrol/lib/libqtemchal-2.4.6.so
EZTROLGUI = /usr/share/eztrol/eztrolgui/libguimill2.so
MAX_SPINDLE_RPM = 4000
DIR_PLUGIN = /usr/share/eztrol/eztrolplugins
PLUGIN = libeztrol_wizard_plugin.so
PLUGIN = libeztrol_webwizard_plugin.so
# disabling settings gcode editor will benefit systems with small memory size
ENABLE_SETTINGS_EDITOR = true
# disable OpenGL 3D Preview
ENABLE_3D_PREVIEW = true
# set to Full Screen TRUE/FALSE
FULLSCREEN = false
# Settings Tab GCode Editor Syntax Highlight
# color guide - http://www.w3.org/TR/SVG/types.html#ColorKeywords
AXIS_COLOR = magenta
LINENUMBER_COLOR = rosybrown
GM_COLOR = blue
STFDRLPQH_COLOR = red
O_COLOR = blue
RESERVEDWORDS_COLOR = darkviolet
VARIABLE_COLOR = olive
COMMENT_COLOR = seagreen
GUI_STYLESHEET = eztrolstyle1.qss
[EZTROLWIZARDS]
WIZARD_DIRECTORY = /usr/share/eztrol/eztrolwizards
SAVE_DIRECTORY = ../../nc_files
[EZTROLWEBWIZARD]
URL = http://www.mattshaver.com/ecmacam/ecmacam.htm

View File

@@ -0,0 +1,282 @@
# EMC controller parameters for Mesa 5i20 controlled Smithy 1240 Mill
[EMC]
MACHINE = Smithy 1240 Combined Box Mill (metric operation)
VERSION = 1.1
DEBUG = 0x00000000
#DEBUG = 0x7FFFFFFF
[DISPLAY]
#DISPLAY = eztrol
# CYCLE_TIME is used by eztrol
CYCLE_TIME = .1
DISPLAY = axis
#DISPLAY = tklinuxcnc
#HELP_FILE = /usr/share/doc/linuxcnc/tklinuxcnc.txt
TKPKG = Ngcgui 1.0
TKPKG = Ngcguittt 1.0
# note: ngcgui_app.tcl must precede ngcgui_ttt.tcl
NGCGUI_FONT = Helvetica -12 normal
TTT = truetype-tracer
TTT_PREAMBLE = in_std.ngc
NGCGUI_PREAMBLE = in_std.ngc
NGCGUI_POSTAMBLE = bye.ngc
NGCGUI_SUBFILE = backlash.ngc
NGCGUI_SUBFILE = hole_circle.ngc
NGCGUI_SUBFILE = helix.ngc
NGCGUI_SUBFILE = helix_rtheta.ngc
NGCGUI_SUBFILE = slot.ngc
NGCGUI_SUBFILE = simp.ngc
NGCGUI_SUBFILE = xyz.ngc
NGCGUI_SUBFILE = iquad.ngc
NGCGUI_SUBFILE = oquad.ngc
NGCGUI_SUBFILE = db25.ngc
NGCGUI_SUBFILE = ihex.ngc
NGCGUI_SUBFILE = ohex.ngc
NGCGUI_SUBFILE = gosper.ngc
NGCGUI_SUBFILE = ""
#NGCGUI_SUBFILE = "" use when imageframe is specified if
# opening other files is required
# images will be put in a toplevel window
NGCGUI_OPTIONS =
#NGCGUI_OPTIONS = opt1 opt2 ...
# opt items:
# nonew -- disallow making a new tab page
# noremove -- disallow removing any tab page
# noauto -- no autosend (makeFile, then manually send)
# noiframe -- no internal image, image on separate toplevel
POSITION_OFFSET = RELATIVE
POSITION_FEEDBACK = ACTUAL
MAX_FEED_OVERRIDE = 1.5
MIN_SPINDLE_OVERRIDE = 0.2
MAX_SPINDLE_OVERRIDE = 1.5
INTRO_GRAPHIC = linuxcnc.gif
INTRO_TIME = 5
INCREMENTS = 1mm .5mm .1mm .05mm .01mm .005mm .001mm .0005mm
PROGRAM_PREFIX = ../../nc_files/
#EDITOR = geany
TOOL_EDITOR = tooledit
DEFAULT_LINEAR_VELOCITY = 5.08
MAX_LINEAR_VELOCITY = 124.46
DEFAULT_ANGULAR_VELOCITY = 12.0
MAX_ANGULAR_VELOCITY = 150.0
PYVCP = 8i20.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 = python3
[RS274NGC]
PARAMETER_FILE = emc.var
RS274NGC_STARTUP_CODE = G21
SUBROUTINE_PATH = ../../nc_files/ngcgui_lib:../../nc_files/ngcgui_lib/utilitysubs
USER_M_PATH = ../../nc_files/ngcgui_lib/mfiles
[EMCMOT]
EMCMOT = motmod
SHMEM_KEY = 111
COMM_TIMEOUT = 1.0
BASE_PERIOD = 250000
SERVO_PERIOD = 250000
TRAJ_PERIOD = 250000
[TASK]
TASK = milltask
CYCLE_TIME = 0.001
[HAL]
HALUI = halui
HALFILE = 1240combined.hal
#HALFILE = naiky.hal
EZTROL_HALFILE = 5i20eztrol.hal
#HALFILE = axis_manualtoolchange.hal
POSTGUI_HALFILE = 8i20postgui.hal
[HALUI]
#No Content
[TRAJ]
COORDINATES = X Y Z
LINEAR_UNITS = mm
ANGULAR_UNITS = degree
MAX_LINEAR_VELOCITY = 124.46
MAX_LINEAR_ACCELERATION = 254.0
DEFAULT_LINEAR_VELOCITY = 5.08
[EMCIO]
TOOL_TABLE = mill.tbl
#TOOL_CHANGE_POSITION = 0 0 0
#TOOL_CHANGE_WITH_SPINDLE_ON = 1
TOOL_CHANGE_QUILL_UP = 1
#TOOL_CHANGE_AT_G30 = 1
[KINS]
KINEMATICS = trivkins
JOINTS = 4
[AXIS_X]
MIN_LIMIT = -553.72
MAX_LIMIT = 5.08
MAX_VELOCITY = 124.46
MAX_ACCELERATION = 254.0
[JOINT_0]
TYPE = LINEAR
HOME = 0.000
MAX_VELOCITY = 124.46
MAX_ACCELERATION = 254.0
STEPGEN_MAXVEL = 0.0
STEPGEN_MAXACCEL = 0.0
BACKLASH = 0.0000
# Leadscrew Pitch = 5mm
# Drive Ratio = 1:1
# Steps/Rev = 10000
# Vel at 250k Steps/S = 7493mm/min
SCALE = 2000
OUTPUT_SCALE = 1.000
MIN_LIMIT = -553.72
MAX_LIMIT = 5.08
FERROR = 6.35
MIN_FERROR = 2.54
HOME_OFFSET = 6.35
HOME_SEARCH_VEL = 12.7
HOME_LATCH_VEL = 1.27
HOME_FINAL_VEL = 12.7
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 2
[AXIS_Y]
MIN_LIMIT = -299.72
MAX_LIMIT = 5.08
MAX_VELOCITY = 124.46
MAX_ACCELERATION = 254.0
[JOINT_1]
TYPE = LINEAR
HOME = 0.000
MAX_VELOCITY = 124.46
MAX_ACCELERATION = 254.0
STEPGEN_MAXVEL = 0.0
STEPGEN_MAXACCEL = 0.0
BACKLASH = 0.0000
# Leadscrew Pitch = 5mm
# Drive Ratio = 1:1
# Steps/Rev = 10000
# Vel at 250k Steps/S = 7493mm/min
SCALE = -2000
OUTPUT_SCALE = 1.000
MIN_LIMIT = -299.72
MAX_LIMIT = 5.08
FERROR = 6.35
MIN_FERROR = 2.54
HOME_OFFSET = 6.35
HOME_SEARCH_VEL = 12.7
HOME_LATCH_VEL = 1.27
HOME_FINAL_VEL = 12.7
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 1
[AXIS_Z]
MIN_LIMIT = -299.72
MAX_LIMIT = 5.08
MAX_VELOCITY = 124.46
MAX_ACCELERATION = 254.0
[JOINT_2]
TYPE = LINEAR
HOME = 0.000
# @SCALE = 25600
#MAX_VELOCITY = 1.9
# @SCALE = 10000
MAX_VELOCITY = 124.46
MAX_ACCELERATION = 254.0
STEPGEN_MAXVEL = 0.0
STEPGEN_MAXACCEL = 0.0
BACKLASH = 0.0000
# Leadscrew Pitch = 5mm
# Drive Ratio = 1:1
# Steps/Rev = 10000
# Vel at 250k Steps/S = 7493mm/min
SCALE = -2000
OUTPUT_SCALE = 1.000
MIN_LIMIT = -299.72
MAX_LIMIT = 5.08
FERROR = 6.35
MIN_FERROR = 2.54
HOME_OFFSET = 6.35
HOME_SEARCH_VEL = 12.7
HOME_LATCH_VEL = 1.27
HOME_FINAL_VEL = 12.7
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 0
[AXIS_A]
MIN_LIMIT = -360000.0
MAX_LIMIT = 360000.0
MAX_VELOCITY = 150.0
MAX_ACCELERATION = 450.0
[JOINT_3]
TYPE = ANGULAR
HOME = 0.000
MAX_VELOCITY = 150.0
MAX_ACCELERATION = 450.0
STEPGEN_MAXVEL = 0.0
STEPGEN_MAXACCEL = 0.0
BACKLASH = 0.0000
# Drive Ratio = 90:360 = 1:4
# Steps/Rev = 200 * 50uSteps = 10000
# Vel at 400k Steps/S = 9600 deg/min
SCALE = 2500.0
OUTPUT_SCALE = 1.000
MIN_LIMIT = -360000.0
MAX_LIMIT = 360000.0
FERROR = 2.0
MIN_FERROR = 0.1
HOME_OFFSET = 0.0
HOME_SEARCH_VEL = 0.0
HOME_LATCH_VEL = 0.0
#HOME_FINAL_VEL = 0.0
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 3
[EZTROL]
QTEMC_PLUGIN = /usr/share/eztrol/lib/libqtemc-2.4.6.so
QTEMCHAL_PLUGIN = /usr/share/eztrol/lib/libqtemchal-2.4.6.so
EZTROLGUI = /usr/share/eztrol/eztrolgui/libguimill2.so
MAX_SPINDLE_RPM = 4000
DIR_PLUGIN = /usr/share/eztrol/eztrolplugins
PLUGIN = libeztrol_wizard_plugin.so
PLUGIN = libeztrol_webwizard_plugin.so
# disabling settings gcode editor will benefit systems with small memory size
ENABLE_SETTINGS_EDITOR = true
# disable OpenGL 3D Preview
ENABLE_3D_PREVIEW = true
# set to Full Screen TRUE/FALSE
FULLSCREEN = false
# Settings Tab GCode Editor Syntax Highlight
# color guide - http://www.w3.org/TR/SVG/types.html#ColorKeywords
AXIS_COLOR = magenta
LINENUMBER_COLOR = rosybrown
GM_COLOR = blue
STFDRLPQH_COLOR = red
O_COLOR = blue
RESERVEDWORDS_COLOR = darkviolet
VARIABLE_COLOR = olive
COMMENT_COLOR = seagreen
GUI_STYLESHEET = eztrolstyle1.qss
[EZTROLWIZARDS]
WIZARD_DIRECTORY = /usr/share/eztrol/eztrolwizards
SAVE_DIRECTORY = ../../nc_files
[EZTROLWEBWIZARD]
URL = http://www.mattshaver.com/ecmacam/ecmacam.htm

View File

@@ -0,0 +1,125 @@
loadrt [KINS]KINEMATICS
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=[KINS]JOINTS
loadrt hal_parport cfg=0x378
setp parport.0.reset-time 4000
loadrt stepgen step_type=0,0,0,0
loadrt charge_pump
loadrt match8 count=1
loadrt pwmgen output_type=1
setp pwmgen.0.pwm-freq 5.0
setp pwmgen.0.scale 4000
setp pwmgen.0.offset 0.0
setp pwmgen.0.min-dc 0.01
setp pwmgen.0.max-dc 0.99
setp pwmgen.0.dither-pwm true
addf parport.0.read base-thread
addf stepgen.make-pulses base-thread
addf charge-pump 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
addf match8.0 servo-thread
net spindle-cmd spindle.0.speed-out pwmgen.0.value
net spindle-enable spindle.0.on pwmgen.0.enable
net coolant-flood parport.0.pin-01-out iocontrol.0.coolant-flood
net xdir parport.0.pin-02-out stepgen.0.dir
net xstep parport.0.pin-03-out stepgen.0.step
setp parport.0.pin-03-out-reset 1
net ydir parport.0.pin-04-out stepgen.1.dir
net ystep parport.0.pin-05-out stepgen.1.step
setp parport.0.pin-05-out-reset 1
net zdir parport.0.pin-06-out stepgen.2.dir
net zstep parport.0.pin-07-out stepgen.2.step
setp parport.0.pin-07-out-reset 1
net adir parport.0.pin-08-out stepgen.3.dir
net astep parport.0.pin-09-out stepgen.3.step
setp parport.0.pin-09-out-reset 1
#PMDX-110
# Need this line so AXIS shows the reverse button
net spindle-rev spindle.0.reverse
net spindle-fwd parport.0.pin-14-out spindle.0.forward
#--OR--
#PMDX-131
# Need this line so AXIS shows the forward button
#net spindle-fwd spindle.0.forward
#net spindle-rev parport.0.pin-14-out spindle.0.reverse
net spindle-pwm parport.0.pin-16-out pwmgen.0.pwm
net charge-pump parport.0.pin-17-out charge-pump.out
net estop-in parport.0.pin-10-in-not iocontrol.0.emc-enable-in
net estop-out charge-pump.enable halui.machine.is-on
#PMDX-110
#net run parport.0.pin-11-in-not halui.program.pause motion.feed-hold
#--OR--
#PMDX-131
net run parport.0.pin-11-in halui.program.pause motion.feed-hold
net all-home parport.0.pin-12-in-not
setp stepgen.0.position-scale [JOINT_0]SCALE
setp stepgen.0.steplen 1
setp stepgen.0.stepspace 0
setp stepgen.0.dirhold 35000
setp stepgen.0.dirsetup 16000
setp stepgen.0.maxaccel [JOINT_0]STEPGEN_MAXACCEL
net xpos-cmd joint.0.motor-pos-cmd stepgen.0.position-cmd
net xpos-fb stepgen.0.position-fb joint.0.motor-pos-fb
net xenable joint.0.amp-enable-out stepgen.0.enable
net all-home joint.0.home-sw-in
setp stepgen.1.position-scale [JOINT_1]SCALE
setp stepgen.1.steplen 1
setp stepgen.1.stepspace 0
setp stepgen.1.dirhold 35000
setp stepgen.1.dirsetup 16000
setp stepgen.1.maxaccel [JOINT_1]STEPGEN_MAXACCEL
net ypos-cmd joint.1.motor-pos-cmd stepgen.1.position-cmd
net ypos-fb stepgen.1.position-fb joint.1.motor-pos-fb
net yenable joint.1.amp-enable-out stepgen.1.enable
net all-home joint.1.home-sw-in
setp stepgen.2.position-scale [JOINT_2]SCALE
setp stepgen.2.steplen 1
setp stepgen.2.stepspace 0
setp stepgen.2.dirhold 35000
setp stepgen.2.dirsetup 16000
setp stepgen.2.maxaccel [JOINT_2]STEPGEN_MAXACCEL
net zpos-cmd joint.2.motor-pos-cmd stepgen.2.position-cmd
net zpos-fb stepgen.2.position-fb joint.2.motor-pos-fb
net zenable joint.2.amp-enable-out stepgen.2.enable
net all-home joint.2.home-sw-in
setp stepgen.3.position-scale [JOINT_3]SCALE
setp stepgen.3.steplen 1
setp stepgen.3.stepspace 0
setp stepgen.3.dirhold 35000
setp stepgen.3.dirsetup 16000
setp stepgen.3.maxaccel [JOINT_3]STEPGEN_MAXACCEL
net apos-cmd joint.3.motor-pos-cmd stepgen.3.position-cmd
net apos-fb stepgen.3.position-fb joint.3.motor-pos-fb
net aenable joint.3.amp-enable-out stepgen.3.enable
newsig false bit
sets false FALSE
net xhoming joint.0.homing match8.0.a0
net yhoming joint.1.homing match8.0.a1
net zhoming joint.2.homing match8.0.a2
net false match8.0.b0 match8.0.b1 match8.0.b2
net all-home match8.0.in
net limit match8.0.out joint.0.neg-lim-sw-in
# These loopbacks are usually disconnected by a postgui halfile
net tool-change-loop iocontrol.0.tool-change iocontrol.0.tool-changed
net tool-prepare-loopback iocontrol.0.tool-prepare iocontrol.0.tool-prepared

View File

@@ -0,0 +1,272 @@
# EMC controller parameters for Parallel Port controlled Smithy 1240 Gecko Mill
[EMC]
MACHINE = Smithy 1240 Gecko Mill
VERSION = 1.1
DEBUG = 0x00000000
#DEBUG = 0x7FFFFFFF
[DISPLAY]
#DISPLAY = eztrol
# CYCLE_TIME is used by eztrol
CYCLE_TIME = .1
DISPLAY = axis
#DISPLAY = tklinuxcnc
#HELP_FILE = /usr/share/doc/linuxcnc/tklinuxcnc.txt
TKPKG = Ngcgui 1.0
TKPKG = Ngcguittt 1.0
# note: ngcgui_app.tcl must precede ngcgui_ttt.tcl
NGCGUI_FONT = Helvetica -12 normal
TTT = truetype-tracer
TTT_PREAMBLE = in_std.ngc
NGCGUI_PREAMBLE = in_std.ngc
NGCGUI_POSTAMBLE = bye.ngc
NGCGUI_SUBFILE = backlash.ngc
NGCGUI_SUBFILE = hole_circle.ngc
NGCGUI_SUBFILE = helix.ngc
NGCGUI_SUBFILE = helix_rtheta.ngc
NGCGUI_SUBFILE = slot.ngc
NGCGUI_SUBFILE = simp.ngc
NGCGUI_SUBFILE = xyz.ngc
NGCGUI_SUBFILE = iquad.ngc
NGCGUI_SUBFILE = oquad.ngc
NGCGUI_SUBFILE = db25.ngc
NGCGUI_SUBFILE = ihex.ngc
NGCGUI_SUBFILE = ohex.ngc
NGCGUI_SUBFILE = gosper.ngc
NGCGUI_SUBFILE = ""
#NGCGUI_SUBFILE = "" use when imageframe is specified if
# opening other files is required
# images will be put in a toplevel window
NGCGUI_OPTIONS =
#NGCGUI_OPTIONS = opt1 opt2 ...
# opt items:
# nonew -- disallow making a new tab page
# noremove -- disallow removing any tab page
# noauto -- no autosend (makeFile, then manually send)
# noiframe -- no internal image, image on separate toplevel
POSITION_OFFSET = RELATIVE
POSITION_FEEDBACK = ACTUAL
MAX_FEED_OVERRIDE = 1.5
MIN_SPINDLE_OVERRIDE = 0.2
MAX_SPINDLE_OVERRIDE = 1.5
INTRO_GRAPHIC = linuxcnc.gif
INTRO_TIME = 5
INCREMENTS = .1in .05in .01in .005in .001in .0005in .0001in
PROGRAM_PREFIX = ../../nc_files/
#EDITOR = geany
TOOL_EDITOR = tooledit
DEFAULT_LINEAR_VELOCITY = 0.2
MAX_LINEAR_VELOCITY = 2.0
DEFAULT_ANGULAR_VELOCITY = 12.0
MAX_ANGULAR_VELOCITY = 60
PYVCP = gecko.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 = python3
[RS274NGC]
PARAMETER_FILE = emc.var
SUBROUTINE_PATH = ../../nc_files/ngcgui_lib:../../nc_files/ngcgui_lib/utilitysubs
USER_M_PATH = ../../nc_files/ngcgui_lib/mfiles
[EMCMOT]
EMCMOT = motmod
SHMEM_KEY = 111
COMM_TIMEOUT = 1.0
BASE_PERIOD = 50000
SERVO_PERIOD = 1000000
TRAJ_PERIOD = 10000000
[TASK]
TASK = milltask
CYCLE_TIME = 0.010
[HAL]
HALUI = halui
HALFILE = 1240gecko.hal
EZTROL_HALFILE = eztrol.hal
POSTGUI_HALFILE = gecko_postgui.hal
[HALUI]
#No Content
[TRAJ]
COORDINATES = X Y Z A
LINEAR_UNITS = inch
ANGULAR_UNITS = degree
MAX_LINEAR_VELOCITY = 2.0
MAX_LINEAR_ACCELERATION = 1.5
DEFAULT_LINEAR_VELOCITY = 0.2
[EMCIO]
TOOL_TABLE = mill.tbl
#TOOL_CHANGE_POSITION = 0 0 2
#TOOL_CHANGE_WITH_SPINDLE_ON = 1
TOOL_CHANGE_QUILL_UP = 1
#TOOL_CHANGE_AT_G30 = 1
[KINS]
KINEMATICS = trivkins
JOINTS = 4
[AXIS_X]
MIN_LIMIT = -21.8
MAX_LIMIT = 0.2
MAX_VELOCITY = 2.0
MAX_ACCELERATION = 1.5
[JOINT_0]
TYPE = LINEAR
HOME = 0.000
MAX_VELOCITY = 2.0
MAX_ACCELERATION = 1.5
STEPGEN_MAXVEL = 2.2
STEPGEN_MAXACCEL = 1.7
BACKLASH = 0.0000
# Leadscrew Pitch = 5mm
# Drive Ratio = 1:1
# Steps/Rev = 200 * 10uSteps = 2000
# Vel at 200k Steps/S = 1181"/min
SCALE = 10160
OUTPUT_SCALE = 1.000
MIN_LIMIT = -21.8
MAX_LIMIT = 0.2
FERROR = 0.05
MIN_FERROR = 0.01
HOME_OFFSET = 0.25
HOME_SEARCH_VEL = 0.5
HOME_LATCH_VEL = -0.1
HOME_FINAL_VEL = 0.5
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 2
[AXIS_Y]
MIN_LIMIT = -10.8
MAX_LIMIT = 0.2
MAX_VELOCITY = 2.0
MAX_ACCELERATION = 1.5
[JOINT_1]
TYPE = LINEAR
HOME = 0.000
MAX_VELOCITY = 2.0
MAX_ACCELERATION = 1.5
STEPGEN_MAXVEL = 2.2
STEPGEN_MAXACCEL = 1.7
BACKLASH = 0.0000
# Leadscrew Pitch = 5mm
# Drive Ratio = 1:1
# Steps/Rev = 200 * 10uSteps = 2000
# Vel at 200k Steps/S = 1181"/min
SCALE = -10160
OUTPUT_SCALE = 1.000
MIN_LIMIT = -10.8
MAX_LIMIT = 0.2
FERROR = 0.05
MIN_FERROR = 0.01
HOME_OFFSET = 0.25
HOME_SEARCH_VEL = 0.5
HOME_LATCH_VEL = -0.1
HOME_FINAL_VEL = 0.5
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 1
[AXIS_Z]
MIN_LIMIT = -11.3
MAX_LIMIT = 0.2
MAX_VELOCITY = 1.2
MAX_ACCELERATION = 1.5
[JOINT_2]
TYPE = LINEAR
HOME = 0.000
MAX_VELOCITY = 1.2
MAX_ACCELERATION = 1.5
STEPGEN_MAXVEL = 1.4
STEPGEN_MAXACCEL = 1.7
BACKLASH = 0.0000
# Leadscrew Pitch = 5mm
# Drive Ratio = 1:1
# Steps/Rev = 200 * 10uSteps = 2000
# Vel at 200k Steps/S = 1181"/min
SCALE = -10160
OUTPUT_SCALE = 1.000
MIN_LIMIT = -11.3
MAX_LIMIT = 0.2
FERROR = 0.05
MIN_FERROR = 0.01
HOME_OFFSET = 0.25
HOME_SEARCH_VEL = 0.5
HOME_LATCH_VEL = -0.1
HOME_FINAL_VEL = 0.5
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 0
[AXIS_A]
MIN_LIMIT = -36000.0
MAX_LIMIT = 36000.0
MAX_VELOCITY = 30.0
MAX_ACCELERATION = 300.0
[JOINT_3]
TYPE = ANGULAR
HOME = 0.0
MAX_VELOCITY = 30.0
MAX_ACCELERATION = 300.0
STEPGEN_MAXVEL = 33.0
STEPGEN_MAXACCEL = 330.0
BACKLASH = 0.0000
SCALE = -500
OUTPUT_SCALE = 1.000
MIN_LIMIT = -36000.0
MAX_LIMIT = 36000.0
FERROR = 5.0
MIN_FERROR = 1.0
HOME_OFFSET = 0.0
HOME_SEARCH_VEL = 0.0
HOME_LATCH_VEL = 0.0
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 3
[EZTROL]
QTEMC_PLUGIN = /usr/share/eztrol/lib/libqtemc-2.4.6.so
QTEMCHAL_PLUGIN = /usr/share/eztrol/lib/libqtemchal-2.4.6.so
EZTROLGUI = /usr/share/eztrol/eztrolgui/libguimill2.so
MAX_SPINDLE_RPM = 5000
DIR_PLUGIN = /usr/share/eztrol/eztrolplugins
PLUGIN = libeztrol_wizard_plugin.so
PLUGIN = libeztrol_webwizard_plugin.so
# disabling settings gcode editor will benefit systems with small memory size
ENABLE_SETTINGS_EDITOR = true
# disable OpenGL 3D Preview
ENABLE_3D_PREVIEW = true
# set to Full Screen TRUE/FALSE
FULLSCREEN = false
# Settings Tab GCode Editor Syntax Highlight
# color guide - http://www.w3.org/TR/SVG/types.html#ColorKeywords
AXIS_COLOR = magenta
LINENUMBER_COLOR = rosybrown
GM_COLOR = blue
STFDRLPQH_COLOR = red
O_COLOR = blue
RESERVEDWORDS_COLOR = darkviolet
VARIABLE_COLOR = olive
COMMENT_COLOR = seagreen
GUI_STYLESHEET = eztrolstyle1.qss
[EZTROLWIZARDS]
WIZARD_DIRECTORY = /usr/share/eztrol/eztrolwizards
SAVE_DIRECTORY = ../../nc_files
[EZTROLWEBWIZARD]
URL = http://www.mattshaver.com/ecmacam/ecmacam.htm

View File

@@ -0,0 +1,77 @@
loadrt [KINS]KINEMATICS
loadrt [EMCMOT]EMCMOT base_period_nsec=[EMCMOT]BASE_PERIOD servo_period_nsec=[EMCMOT]SERVO_PERIOD traj_period_nsec=[EMCMOT]TRAJ_PERIOD key=[EMCMOT]SHMEM_KEY num_joints=[KINS]JOINTS
loadrt stepgen step_type=0,0,0
loadrt match8 count=1
# Used to filter out spurious limit switch signals
# THIS IS VERY BAD & SHOULD BE FIXED IN HARDWARE!!!
loadrt debounce cfg=1
setp debounce.0.delay 2
loadrt hal_parport cfg="0x378"
addf parport.0.read base-thread
addf stepgen.make-pulses base-thread
addf debounce.0 base-thread
addf parport.0.write base-thread
addf stepgen.capture-position servo-thread
addf match8.0 servo-thread
addf motion-command-handler servo-thread
addf motion-controller servo-thread
addf stepgen.update-freq servo-thread
net Xpos-cmd joint.0.motor-pos-cmd stepgen.0.position-cmd
net Ypos-cmd joint.1.motor-pos-cmd stepgen.1.position-cmd
net Zpos-cmd joint.2.motor-pos-cmd stepgen.2.position-cmd
net Xpos-fb stepgen.0.position-fb joint.0.motor-pos-fb
net Ypos-fb stepgen.1.position-fb joint.1.motor-pos-fb
net Zpos-fb stepgen.2.position-fb joint.2.motor-pos-fb
net Xen <= joint.0.amp-enable-out stepgen.0.enable
net Yen <= joint.1.amp-enable-out stepgen.1.enable
net Zen <= joint.2.amp-enable-out stepgen.2.enable
net Xstep stepgen.0.step parport.0.pin-03-out
net Xdir stepgen.0.dir parport.0.pin-02-out
net Ystep stepgen.1.step parport.0.pin-05-out
net Ydir stepgen.1.dir parport.0.pin-04-out
net Zstep stepgen.2.step parport.0.pin-07-out
net Zdir stepgen.2.dir parport.0.pin-06-out
setp stepgen.0.position-scale [JOINT_0]SCALE
setp stepgen.1.position-scale [JOINT_1]SCALE
setp stepgen.2.position-scale [JOINT_2]SCALE
setp stepgen.0.maxvel [JOINT_0]STEPGEN_MAXVEL
setp stepgen.1.maxvel [JOINT_1]STEPGEN_MAXVEL
setp stepgen.2.maxvel [JOINT_2]STEPGEN_MAXVEL
setp stepgen.0.maxaccel [JOINT_0]STEPGEN_MAXACCEL
setp stepgen.1.maxaccel [JOINT_1]STEPGEN_MAXACCEL
setp stepgen.2.maxaccel [JOINT_2]STEPGEN_MAXACCEL
# three axis motion allows 6 other outputs on pins 8,9,1,14,16,17
# five additional input pins are available 10,11,12,13,15
setp parport.0.pin-01-out-invert true
net estop iocontrol.0.user-enable-out parport.0.pin-01-out iocontrol.0.emc-enable-in
setp parport.0.pin-14-out-invert true
net flood iocontrol.0.coolant-flood parport.0.pin-14-out
setp parport.0.pin-17-out-invert true
net forward spindle.0.forward parport.0.pin-16-out
net reverse spindle.0.reverse parport.0.pin-17-out
# These loopbacks are usually disconnected by a postgui halfile
net tool-change-loop iocontrol.0.tool-change iocontrol.0.tool-changed
net tool-prepare-loopback iocontrol.0.tool-prepare iocontrol.0.tool-prepared
newsig false bit
sets false FALSE
net xhoming joint.0.homing match8.0.a0
net yhoming joint.1.homing match8.0.a1
net zhoming joint.2.homing match8.0.a2
net false match8.0.b0 match8.0.b1 match8.0.b2
net home-raw parport.0.pin-15-in-not debounce.0.0.in
net home-filtered debounce.0.0.out joint.0.home-sw-in joint.1.home-sw-in joint.2.home-sw-in match8.0.in
net limit match8.0.out joint.0.neg-lim-sw-in

View File

@@ -0,0 +1,270 @@
# EMC controller parameters for Parallel Port controlled Smithy 1240 Rutex Mill
[EMC]
MACHINE = Smithy 1240 Rutex Mill
VERSION = 1.1
DEBUG = 0x00000000
#DEBUG = 0x7FFFFFFF
[DISPLAY]
#DISPLAY = eztrol
# CYCLE_TIME is used by eztrol
CYCLE_TIME = .1
DISPLAY = axis
#DISPLAY = tklinuxcnc
#HELP_FILE = /usr/share/doc/linuxcnc/tklinuxcnc.txt
TKPKG = Ngcgui 1.0
TKPKG = Ngcguittt 1.0
# note: ngcgui_app.tcl must precede ngcgui_ttt.tcl
NGCGUI_FONT = Helvetica -12 normal
TTT = truetype-tracer
TTT_PREAMBLE = in_std.ngc
NGCGUI_PREAMBLE = in_std.ngc
NGCGUI_POSTAMBLE = bye.ngc
NGCGUI_SUBFILE = backlash.ngc
NGCGUI_SUBFILE = hole_circle.ngc
NGCGUI_SUBFILE = helix.ngc
NGCGUI_SUBFILE = helix_rtheta.ngc
NGCGUI_SUBFILE = slot.ngc
NGCGUI_SUBFILE = simp.ngc
NGCGUI_SUBFILE = xyz.ngc
NGCGUI_SUBFILE = iquad.ngc
NGCGUI_SUBFILE = oquad.ngc
NGCGUI_SUBFILE = db25.ngc
NGCGUI_SUBFILE = ihex.ngc
NGCGUI_SUBFILE = ohex.ngc
NGCGUI_SUBFILE = gosper.ngc
NGCGUI_SUBFILE = ""
#NGCGUI_SUBFILE = "" use when imageframe is specified if
# opening other files is required
# images will be put in a toplevel window
NGCGUI_OPTIONS =
#NGCGUI_OPTIONS = opt1 opt2 ...
# opt items:
# nonew -- disallow making a new tab page
# noremove -- disallow removing any tab page
# noauto -- no autosend (makeFile, then manually send)
# noiframe -- no internal image, image on separate toplevel
POSITION_OFFSET = RELATIVE
POSITION_FEEDBACK = ACTUAL
MAX_FEED_OVERRIDE = 1.5
MIN_SPINDLE_OVERRIDE = 0.2
MAX_SPINDLE_OVERRIDE = 1.5
INTRO_GRAPHIC = linuxcnc.gif
INTRO_TIME = 5
INCREMENTS = .1in .05in .01in .005in .001in .0005in .0001in
PROGRAM_PREFIX = ../../nc_files/
#EDITOR = geany
TOOL_EDITOR = tooledit
DEFAULT_LINEAR_VELOCITY = 0.2
MAX_LINEAR_VELOCITY = 3.0
DEFAULT_ANGULAR_VELOCITY = 12.0
MAX_ANGULAR_VELOCITY = 60
[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 = python3
[RS274NGC]
PARAMETER_FILE = emc.var
SUBROUTINE_PATH = ../../nc_files/ngcgui_lib:../../nc_files/ngcgui_lib/utilitysubs
USER_M_PATH = ../../nc_files/ngcgui_lib/mfiles
[EMCMOT]
EMCMOT = motmod
SHMEM_KEY = 111
COMM_TIMEOUT = 1.0
BASE_PERIOD = 50000
SERVO_PERIOD = 1000000
TRAJ_PERIOD = 10000000
[TASK]
TASK = milltask
CYCLE_TIME = 0.010
[HAL]
HALUI = halui
HALFILE = 1240rutex.hal
EZTROL_HALFILE = eztrol.hal
HALFILE = axis_manualtoolchange.hal
[HALUI]
#No Content
[TRAJ]
COORDINATES = X Y Z
LINEAR_UNITS = inch
ANGULAR_UNITS = degree
MAX_LINEAR_VELOCITY = 3.0
MAX_LINEAR_ACCELERATION = 3.0
DEFAULT_LINEAR_VELOCITY = 0.2
[EMCIO]
TOOL_TABLE = mill.tbl
#TOOL_CHANGE_POSITION = 0 0 2
#TOOL_CHANGE_WITH_SPINDLE_ON = 1
TOOL_CHANGE_QUILL_UP = 1
#TOOL_CHANGE_AT_G30 = 1
[KINS]
KINEMATICS = trivkins
JOINTS = 4
[AXIS_X]
MIN_LIMIT = -22.0
MAX_LIMIT = 0.25
MAX_VELOCITY = 3.0
MAX_ACCELERATION = 3.0
[JOINT_0]
TYPE = LINEAR
HOME = 0.000
MAX_VELOCITY = 3.0
MAX_ACCELERATION = 3.0
STEPGEN_MAXVEL = 3.4
STEPGEN_MAXACCEL = 4.0
BACKLASH = 0.0000
SCALE = 2033.2
OUTPUT_SCALE = 1.000
MIN_LIMIT = -22.0
MAX_LIMIT = 0.25
FERROR = 0.05
MIN_FERROR = 0.01
HOME_OFFSET = 0.25
HOME_SEARCH_VEL = 0.5
HOME_LATCH_VEL = -0.1
HOME_FINAL_VEL = 0.5
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 2
[AXIS_Y]
MIN_LIMIT = -11.0
MAX_LIMIT = 0.2
MAX_VELOCITY = 3.0
MAX_ACCELERATION = 3.0
[JOINT_1]
TYPE = LINEAR
HOME = 0.000
MAX_VELOCITY = 3.0
MAX_ACCELERATION = 3.0
STEPGEN_MAXVEL = 3.4
STEPGEN_MAXACCEL = 4.0
BACKLASH = 0.0000
SCALE = -2033.2
OUTPUT_SCALE = 1.000
MIN_LIMIT = -11.0
MAX_LIMIT = 0.2
FERROR = 0.05
MIN_FERROR = 0.01
HOME_OFFSET = 0.25
HOME_SEARCH_VEL = 0.5
HOME_LATCH_VEL = -0.1
HOME_FINAL_VEL = 0.5
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 1
[AXIS_Z]
MIN_LIMIT = -11.0
MAX_LIMIT = 0.2
MAX_VELOCITY = 1.2
MAX_ACCELERATION = 20.0
[JOINT_2]
TYPE = LINEAR
HOME = 0.000
MAX_VELOCITY = 1.2
MAX_ACCELERATION = 20.0
STEPGEN_MAXVEL = 1.4
STEPGEN_MAXACCEL = 21.0
BACKLASH = 0.0000
SCALE = -2033.2
OUTPUT_SCALE = 1.000
MIN_LIMIT = -11.0
MAX_LIMIT = 0.2
FERROR = 0.05
MIN_FERROR = 0.01
HOME_OFFSET = 0.25
HOME_SEARCH_VEL = 0.5
HOME_LATCH_VEL = -0.1
HOME_FINAL_VEL = 0.5
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 0
[AXIS_A]
MIN_LIMIT = -360000.0
MAX_LIMIT = 360000.0
MAX_VELOCITY = 10.0
MAX_ACCELERATION = 30.0
[JOINT_3]
TYPE = ANGULAR
HOME = 0.000
MAX_VELOCITY = 10.0
MAX_ACCELERATION = 30.0
STEPGEN_MAXVEL = 11.0
STEPGEN_MAXACCEL = 31.0
BACKLASH = 0.0000
# Drive Ratio = 40:360 = 1:9
# Steps/Rev = 200 * 10uSteps = 2000
# Vel at 50k Steps/S = 13500 deg/min
#SCALE = -222.22222222
# Drive Ratio = 72:360 = 1:5
# Steps/Rev = 200 * 10uSteps = 2000
# Vel at 50k Steps/S = 7500 deg/min
#SCALE = -400.0
# Drive Ratio = 90:360 = 1:4
# Steps/Rev = 200 * 10uSteps = 2000
# Vel at 50k Steps/S = 6000 deg/min
SCALE = -500.0
OUTPUT_SCALE = 1.000
MIN_LIMIT = -360000.0
MAX_LIMIT = 360000.0
FERROR = 50.0
MIN_FERROR = 10.0
HOME_OFFSET = 0.0
HOME_SEARCH_VEL = 0.0
HOME_LATCH_VEL = 0.0
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 3
[EZTROL]
QTEMC_PLUGIN = /usr/share/eztrol/lib/libqtemc-2.4.6.so
QTEMCHAL_PLUGIN = /usr/share/eztrol/lib/libqtemchal-2.4.6.so
EZTROLGUI = /usr/share/eztrol/eztrolgui/libguimill2.so
MAX_SPINDLE_RPM = 5000
DIR_PLUGIN = /usr/share/eztrol/eztrolplugins
PLUGIN = libeztrol_wizard_plugin.so
PLUGIN = libeztrol_webwizard_plugin.so
# disabling settings gcode editor will benefit systems with small memory size
ENABLE_SETTINGS_EDITOR = true
# disable OpenGL 3D Preview
ENABLE_3D_PREVIEW = true
# set to Full Screen TRUE/FALSE
FULLSCREEN = false
# Settings Tab GCode Editor Syntax Highlight
# color guide - http://www.w3.org/TR/SVG/types.html#ColorKeywords
AXIS_COLOR = magenta
LINENUMBER_COLOR = rosybrown
GM_COLOR = blue
STFDRLPQH_COLOR = red
O_COLOR = blue
RESERVEDWORDS_COLOR = darkviolet
VARIABLE_COLOR = olive
COMMENT_COLOR = seagreen
GUI_STYLESHEET = eztrolstyle1.qss
[EZTROLWIZARDS]
WIZARD_DIRECTORY = /usr/share/eztrol/eztrolwizards
SAVE_DIRECTORY = ../../nc_files
[EZTROLWEBWIZARD]
URL = http://www.mattshaver.com/ecmacam/ecmacam.htm

View File

@@ -0,0 +1,86 @@
loadrt [KINS]KINEMATICS
loadrt [EMCMOT]EMCMOT base_period_nsec=[EMCMOT]BASE_PERIOD servo_period_nsec=[EMCMOT]SERVO_PERIOD traj_period_nsec=[EMCMOT]TRAJ_PERIOD key=[EMCMOT]SHMEM_KEY num_joints=[KINS]JOINTS
loadrt stepgen step_type=0,0,0,0
loadrt match8 count=1
# Used to filter out spurious limit switch signals
# THIS IS VERY BAD & SHOULD BE FIXED IN HARDWARE!!!
loadrt debounce cfg=1
setp debounce.0.delay 2
loadrt hal_parport cfg="0x378"
addf parport.0.read base-thread
addf stepgen.make-pulses base-thread
addf debounce.0 base-thread
addf parport.0.write base-thread
addf stepgen.capture-position servo-thread
addf match8.0 servo-thread
addf motion-command-handler servo-thread
addf motion-controller servo-thread
addf stepgen.update-freq servo-thread
net Xpos-cmd joint.0.motor-pos-cmd stepgen.0.position-cmd
net Ypos-cmd joint.1.motor-pos-cmd stepgen.1.position-cmd
net Zpos-cmd joint.2.motor-pos-cmd stepgen.2.position-cmd
net Apos-cmd joint.3.motor-pos-cmd stepgen.3.position-cmd
net Xpos-fb stepgen.0.position-fb joint.0.motor-pos-fb
net Ypos-fb stepgen.1.position-fb joint.1.motor-pos-fb
net Zpos-fb stepgen.2.position-fb joint.2.motor-pos-fb
net Apos-fb stepgen.3.position-fb joint.3.motor-pos-fb
net Xen <= joint.0.amp-enable-out stepgen.0.enable
net Yen <= joint.1.amp-enable-out stepgen.1.enable
net Zen <= joint.2.amp-enable-out stepgen.2.enable
net Aen <= joint.3.amp-enable-out stepgen.3.enable
net Xstep stepgen.0.step parport.0.pin-03-out
net Xdir stepgen.0.dir parport.0.pin-02-out
net Ystep stepgen.1.step parport.0.pin-05-out
net Ydir stepgen.1.dir parport.0.pin-04-out
net Zstep stepgen.2.step parport.0.pin-07-out
net Zdir stepgen.2.dir parport.0.pin-06-out
net Astep stepgen.3.step parport.0.pin-09-out
net Adir stepgen.3.dir parport.0.pin-08-out
setp stepgen.0.position-scale [JOINT_0]SCALE
setp stepgen.1.position-scale [JOINT_1]SCALE
setp stepgen.2.position-scale [JOINT_2]SCALE
setp stepgen.3.position-scale [JOINT_3]SCALE
setp stepgen.0.maxvel [JOINT_0]STEPGEN_MAXVEL
setp stepgen.1.maxvel [JOINT_1]STEPGEN_MAXVEL
setp stepgen.2.maxvel [JOINT_2]STEPGEN_MAXVEL
setp stepgen.3.maxvel [JOINT_3]STEPGEN_MAXVEL
setp stepgen.0.maxaccel [JOINT_0]STEPGEN_MAXACCEL
setp stepgen.1.maxaccel [JOINT_1]STEPGEN_MAXACCEL
setp stepgen.2.maxaccel [JOINT_2]STEPGEN_MAXACCEL
setp stepgen.3.maxaccel [JOINT_3]STEPGEN_MAXACCEL
# four axis motion allows 4 other outputs on pins 1,14,16,17
# five additional input pins are available 10,11,12,13,15
setp parport.0.pin-01-out-invert true
net estop iocontrol.0.user-enable-out parport.0.pin-01-out iocontrol.0.emc-enable-in
setp parport.0.pin-14-out-invert true
net flood iocontrol.0.coolant-flood parport.0.pin-14-out
setp parport.0.pin-17-out-invert true
net forward spindle.0.forward parport.0.pin-16-out
net reverse spindle.0.reverse parport.0.pin-17-out
# These loopbacks are usually disconnected by a postgui halfile
net tool-change-loop iocontrol.0.tool-change iocontrol.0.tool-changed
net tool-prepare-loopback iocontrol.0.tool-prepare iocontrol.0.tool-prepared
newsig false bit
sets false FALSE
net xhoming joint.0.homing match8.0.a0
net yhoming joint.1.homing match8.0.a1
net zhoming joint.2.homing match8.0.a2
net ahoming joint.3.homing match8.0.a3
net false match8.0.b0 match8.0.b1 match8.0.b2 match8.0.b3
net home-raw parport.0.pin-15-in-not debounce.0.0.in
net home-filtered debounce.0.0.out joint.0.home-sw-in joint.1.home-sw-in joint.2.home-sw-in joint.3.home-sw-in match8.0.in
net limit match8.0.out joint.0.neg-lim-sw-in

View File

@@ -0,0 +1,270 @@
# EMC controller parameters for Parallel Port controlled Smithy 1240 Rutex Mill
[EMC]
MACHINE = 4 Axis Smithy 1240 Rutex Mill
VERSION = 1.1
DEBUG = 0x00000000
#DEBUG = 0x7FFFFFFF
[DISPLAY]
#DISPLAY = eztrol
# CYCLE_TIME is used by eztrol
CYCLE_TIME = .1
DISPLAY = axis
#DISPLAY = tklinuxcnc
#HELP_FILE = /usr/share/doc/linuxcnc/tklinuxcnc.txt
TKPKG = Ngcgui 1.0
TKPKG = Ngcguittt 1.0
# note: ngcgui_app.tcl must precede ngcgui_ttt.tcl
NGCGUI_FONT = Helvetica -12 normal
TTT = truetype-tracer
TTT_PREAMBLE = in_std.ngc
NGCGUI_PREAMBLE = in_std.ngc
NGCGUI_POSTAMBLE = bye.ngc
NGCGUI_SUBFILE = backlash.ngc
NGCGUI_SUBFILE = hole_circle.ngc
NGCGUI_SUBFILE = helix.ngc
NGCGUI_SUBFILE = helix_rtheta.ngc
NGCGUI_SUBFILE = slot.ngc
NGCGUI_SUBFILE = simp.ngc
NGCGUI_SUBFILE = xyz.ngc
NGCGUI_SUBFILE = iquad.ngc
NGCGUI_SUBFILE = oquad.ngc
NGCGUI_SUBFILE = db25.ngc
NGCGUI_SUBFILE = ihex.ngc
NGCGUI_SUBFILE = ohex.ngc
NGCGUI_SUBFILE = gosper.ngc
NGCGUI_SUBFILE = ""
#NGCGUI_SUBFILE = "" use when imageframe is specified if
# opening other files is required
# images will be put in a toplevel window
NGCGUI_OPTIONS =
#NGCGUI_OPTIONS = opt1 opt2 ...
# opt items:
# nonew -- disallow making a new tab page
# noremove -- disallow removing any tab page
# noauto -- no autosend (makeFile, then manually send)
# noiframe -- no internal image, image on separate toplevel
POSITION_OFFSET = RELATIVE
POSITION_FEEDBACK = ACTUAL
MAX_FEED_OVERRIDE = 1.5
MIN_SPINDLE_OVERRIDE = 0.2
MAX_SPINDLE_OVERRIDE = 1.5
INTRO_GRAPHIC = linuxcnc.gif
INTRO_TIME = 5
INCREMENTS = .1in .05in .01in .005in .001in .0005in .0001in
PROGRAM_PREFIX = ../../nc_files/
#EDITOR = geany
TOOL_EDITOR = tooledit
DEFAULT_LINEAR_VELOCITY = 0.2
MAX_LINEAR_VELOCITY = 3.0
DEFAULT_ANGULAR_VELOCITY = 12.0
MAX_ANGULAR_VELOCITY = 60
[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 = python3
[RS274NGC]
PARAMETER_FILE = emc.var
SUBROUTINE_PATH = ../../nc_files/ngcgui_lib:../../nc_files/ngcgui_lib/utilitysubs
USER_M_PATH = ../../nc_files/ngcgui_lib/mfiles
[EMCMOT]
EMCMOT = motmod
SHMEM_KEY = 111
COMM_TIMEOUT = 1.0
BASE_PERIOD = 50000
SERVO_PERIOD = 1000000
TRAJ_PERIOD = 10000000
[TASK]
TASK = milltask
CYCLE_TIME = 0.010
[HAL]
HALUI = halui
HALFILE = 1240rutex_4axis.hal
EZTROL_HALFILE = eztrol.hal
HALFILE = axis_manualtoolchange.hal
[HALUI]
#No Content
[TRAJ]
COORDINATES = X Y Z A
LINEAR_UNITS = inch
ANGULAR_UNITS = degree
MAX_LINEAR_VELOCITY = 3.0
MAX_LINEAR_ACCELERATION = 3.0
DEFAULT_LINEAR_VELOCITY = 0.2
[EMCIO]
TOOL_TABLE = mill.tbl
#TOOL_CHANGE_POSITION = 0 0 2
#TOOL_CHANGE_WITH_SPINDLE_ON = 1
TOOL_CHANGE_QUILL_UP = 1
#TOOL_CHANGE_AT_G30 = 1
[KINS]
KINEMATICS = trivkins
JOINTS = 4
[AXIS_X]
MIN_LIMIT = -22.0
MAX_LIMIT = 0.25
MAX_VELOCITY = 3.0
MAX_ACCELERATION = 3.0
[JOINT_0]
TYPE = LINEAR
HOME = 0.000
MAX_VELOCITY = 3.0
MAX_ACCELERATION = 3.0
STEPGEN_MAXVEL = 3.4
STEPGEN_MAXACCEL = 4.0
BACKLASH = 0.0000
SCALE = 2033.2
OUTPUT_SCALE = 1.000
MIN_LIMIT = -22.0
MAX_LIMIT = 0.25
FERROR = 0.05
MIN_FERROR = 0.01
HOME_OFFSET = 0.25
HOME_SEARCH_VEL = 0.5
HOME_LATCH_VEL = -0.1
HOME_FINAL_VEL = 0.5
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 2
[AXIS_Y]
MIN_LIMIT = -11.0
MAX_LIMIT = 0.2
MAX_VELOCITY = 3.0
MAX_ACCELERATION = 3.0
[JOINT_1]
TYPE = LINEAR
HOME = 0.000
MAX_VELOCITY = 3.0
MAX_ACCELERATION = 3.0
STEPGEN_MAXVEL = 3.4
STEPGEN_MAXACCEL = 4.0
BACKLASH = 0.0000
SCALE = -2033.2
OUTPUT_SCALE = 1.000
MIN_LIMIT = -11.0
MAX_LIMIT = 0.2
FERROR = 0.05
MIN_FERROR = 0.01
HOME_OFFSET = 0.25
HOME_SEARCH_VEL = 0.5
HOME_LATCH_VEL = -0.1
HOME_FINAL_VEL = 0.5
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 1
[AXIS_Z]
MIN_LIMIT = -11.0
MAX_LIMIT = 0.2
MAX_VELOCITY = 1.2
MAX_ACCELERATION = 20.0
[JOINT_2]
TYPE = LINEAR
HOME = 0.000
MAX_VELOCITY = 1.2
MAX_ACCELERATION = 20.0
STEPGEN_MAXVEL = 1.4
STEPGEN_MAXACCEL = 21.0
BACKLASH = 0.0000
SCALE = -2033.2
OUTPUT_SCALE = 1.000
MIN_LIMIT = -11.0
MAX_LIMIT = 0.2
FERROR = 0.05
MIN_FERROR = 0.01
HOME_OFFSET = 0.25
HOME_SEARCH_VEL = 0.5
HOME_LATCH_VEL = -0.1
HOME_FINAL_VEL = 0.5
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 0
[AXIS_A]
MIN_LIMIT = -360000.0
MAX_LIMIT = 360000.0
MAX_VELOCITY = 10.0
MAX_ACCELERATION = 30.0
[JOINT_3]
TYPE = ANGULAR
HOME = 0.000
MAX_VELOCITY = 10.0
MAX_ACCELERATION = 30.0
STEPGEN_MAXVEL = 11.0
STEPGEN_MAXACCEL = 31.0
BACKLASH = 0.0000
# Drive Ratio = 40:360 = 1:9
# Steps/Rev = 200 * 10uSteps = 2000
# Vel at 50k Steps/S = 13500 deg/min
#SCALE = -222.22222222
# Drive Ratio = 72:360 = 1:5
# Steps/Rev = 200 * 10uSteps = 2000
# Vel at 50k Steps/S = 7500 deg/min
#SCALE = -400.0
# Drive Ratio = 90:360 = 1:4
# Steps/Rev = 200 * 10uSteps = 2000
# Vel at 50k Steps/S = 6000 deg/min
SCALE = -500.0
OUTPUT_SCALE = 1.000
MIN_LIMIT = -360000.0
MAX_LIMIT = 360000.0
FERROR = 50.0
MIN_FERROR = 10.0
HOME_OFFSET = 0.0
HOME_SEARCH_VEL = 0.0
HOME_LATCH_VEL = 0.0
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 3
[EZTROL]
QTEMC_PLUGIN = /usr/share/eztrol/lib/libqtemc-2.4.6.so
QTEMCHAL_PLUGIN = /usr/share/eztrol/lib/libqtemchal-2.4.6.so
EZTROLGUI = /usr/share/eztrol/eztrolgui/libguimill2.so
MAX_SPINDLE_RPM = 5000
DIR_PLUGIN = /usr/share/eztrol/eztrolplugins
PLUGIN = libeztrol_wizard_plugin.so
PLUGIN = libeztrol_webwizard_plugin.so
# disabling settings gcode editor will benefit systems with small memory size
ENABLE_SETTINGS_EDITOR = true
# disable OpenGL 3D Preview
ENABLE_3D_PREVIEW = true
# set to Full Screen TRUE/FALSE
FULLSCREEN = false
# Settings Tab GCode Editor Syntax Highlight
# color guide - http://www.w3.org/TR/SVG/types.html#ColorKeywords
AXIS_COLOR = magenta
LINENUMBER_COLOR = rosybrown
GM_COLOR = blue
STFDRLPQH_COLOR = red
O_COLOR = blue
RESERVEDWORDS_COLOR = darkviolet
VARIABLE_COLOR = olive
COMMENT_COLOR = seagreen
GUI_STYLESHEET = eztrolstyle1.qss
[EZTROLWIZARDS]
WIZARD_DIRECTORY = /usr/share/eztrol/eztrolwizards
SAVE_DIRECTORY = ../../nc_files
[EZTROLWEBWIZARD]
URL = http://www.mattshaver.com/ecmacam/ecmacam.htm

View File

@@ -0,0 +1,181 @@
# 5i20 config file for Smithy 1315 Lathe
# load the hostmot2 driver, this doesn't do anything by itself,
# it just waits for low-level drivers to register boards
loadrt hostmot2 debug_idrom=1 debug_module_descriptors=1 debug_pin_descriptors=1 debug_modules=1
# load the low-level driver for the board
# this will load the board's firmware and register it with the hostmot2
# driver loaded above, and it'll show up in HAL
loadrt hm2_pci config="firmware=hm2/5i20/SVST2_4_7I47.BIT num_encoders=2 num_pwmgens=1 num_stepgens=2 enable_raw"
# 13312 = 0x3400 = Encoder Sample Rate Register
setp hm2_5i20.0.raw.write_address 13312
# sample rate is clock (33 MHz)/SRR+2 = 33MHz/10 = 3.3MHz
setp hm2_5i20.0.raw.write_data 8
# write data
setp hm2_5i20.0.raw.write_strobe 1
# set up the watchdog
#setp hm2_5i20.0.watchdog.timeout_ns 10000000
# load kinematics
loadrt [KINS]KINEMATICS
# load motion controller, get name and thread periods from ini file
loadrt [EMCMOT]EMCMOT base_period_nsec=[EMCMOT]BASE_PERIOD servo_period_nsec=[EMCMOT]SERVO_PERIOD traj_period_nsec=[EMCMOT]TRAJ_PERIOD key=[EMCMOT]SHMEM_KEY num_joints=[KINS]JOINTS
# classicladder for machine logic
# (load the realtime portion)
loadrt classicladder_rt
# invoke the user part of CL to silently load the program
loadusr -w classicladder --nogui 924.clp
# load charge pump
loadrt charge_pump
setp charge-pump.enable TRUE
#configure the spindle encoder
#encoder scale was 4800 on Pete's machine
setp hm2_5i20.0.encoder.00.scale -4096
net Spos hm2_5i20.0.encoder.00.position spindle.0.revs
net Svel hm2_5i20.0.encoder.00.velocity spindle.0.speed-in
net Sidx hm2_5i20.0.encoder.00.index-enable spindle.0.index-enable
#configure the spindle speed PWM generator
net Scmd spindle.0.speed-out hm2_5i20.0.pwmgen.00.value
setp hm2_5i20.0.pwmgen.00.scale 3000
setp hm2_5i20.0.pwmgen.00.output-type 1
setp hm2_5i20.0.pwmgen.pwm_frequency 100
# invert the step pulse polarity
setp hm2_5i20.0.gpio.000.invert_output TRUE
setp hm2_5i20.0.gpio.002.invert_output TRUE
# configure the stepgen parameters
setp hm2_5i20.0.stepgen.00.dirsetup 5000
setp hm2_5i20.0.stepgen.00.dirhold 2000
setp hm2_5i20.0.stepgen.00.steplen 2000
setp hm2_5i20.0.stepgen.00.stepspace 2000
setp hm2_5i20.0.stepgen.00.position-scale [JOINT_0]SCALE
setp hm2_5i20.0.stepgen.00.maxaccel [JOINT_0]STEPGEN_MAXACCEL
setp hm2_5i20.0.stepgen.00.maxvel [JOINT_0]STEPGEN_MAXVEL
setp hm2_5i20.0.stepgen.01.dirsetup 5000
setp hm2_5i20.0.stepgen.01.dirhold 2000
setp hm2_5i20.0.stepgen.01.steplen 2000
setp hm2_5i20.0.stepgen.01.stepspace 2000
setp hm2_5i20.0.stepgen.01.position-scale [JOINT_2]SCALE
setp hm2_5i20.0.stepgen.01.maxaccel [JOINT_2]STEPGEN_MAXACCEL
setp hm2_5i20.0.stepgen.01.maxvel [JOINT_2]STEPGEN_MAXVEL
# connect position commands from motion module to step generator
net Xpos-cmd joint.0.motor-pos-cmd hm2_5i20.0.stepgen.00.position-cmd
net Zpos-cmd joint.2.motor-pos-cmd hm2_5i20.0.stepgen.01.position-cmd
# connect position feedback from step generators to motion module
net Xpos-fb hm2_5i20.0.stepgen.00.position-fb joint.0.motor-pos-fb
net Zpos-fb hm2_5i20.0.stepgen.01.position-fb joint.2.motor-pos-fb
# connect enable signals for amplifiers and step generators
setp hm2_5i20.0.gpio.018.is_output TRUE
setp hm2_5i20.0.gpio.018.invert_output TRUE
setp hm2_5i20.0.gpio.019.is_output TRUE
setp hm2_5i20.0.gpio.019.invert_output TRUE
net Xen joint.0.amp-enable-out hm2_5i20.0.gpio.018.out hm2_5i20.0.stepgen.00.enable
net Zen joint.2.amp-enable-out hm2_5i20.0.gpio.019.out hm2_5i20.0.stepgen.01.enable
# enable velocity mode jogging
setp joint.0.jog-vel-mode TRUE
setp joint.2.jog-vel-mode TRUE
# enable the PWM generator
setp hm2_5i20.0.pwmgen.00.enable TRUE
# connect the charge pump signal to an output
setp hm2_5i20.0.gpio.022.is_output TRUE
net chargepump hm2_5i20.0.gpio.022.out charge-pump.out
# Safety Relay Monitoring Contacts
net estop-enable hm2_5i20.0.gpio.037.in iocontrol.0.emc-enable-in
# Run Switch
loadrt debounce cfg=1
setp debounce.0.delay 1000
net key-on hm2_5i20.0.gpio.039.in_not debounce.0.0.in
net machine-on debounce.0.0.out halui.machine.on
# Spindle Contactor - False when spindle contactor is energized
net SOFF hm2_5i20.0.gpio.033.in halui.program.pause motion.feed-hold
#connect limit/home switches
#Brown Wire - Was Zhome, now Xpos
net Xpos_lim hm2_5i20.0.gpio.024.in joint.0.pos-lim-sw-in joint.0.home-sw-in
#Brown/White Wire - Was Xhome, now Xneg
net Xneg_lim hm2_5i20.0.gpio.026.in joint.0.neg-lim-sw-in
#Green Wire - Was XZpos, now Zpos
net Zpos_lim hm2_5i20.0.gpio.028.in joint.2.pos-lim-sw-in joint.2.home-sw-in
#Green/White Wire - Was XZneg, now Zneg
net Zneg_lim hm2_5i20.0.gpio.030.in joint.2.neg-lim-sw-in
#Tool Post Control Inputs
net PrepNo iocontrol.0.tool-prep-number classicladder.0.s32in-00
net TC iocontrol.0.tool-change classicladder.0.in-00
net T1 hm2_5i20.0.gpio.032.in classicladder.0.in-01
net T2 hm2_5i20.0.gpio.034.in classicladder.0.in-02
net T3 hm2_5i20.0.gpio.036.in classicladder.0.in-03
net T4 hm2_5i20.0.gpio.038.in classicladder.0.in-04
net TP iocontrol.0.tool-prepare classicladder.0.in-05
#Door Sensor
net SS hm2_5i20.0.gpio.029.in
#Output Bits
#AIN
#setp hm2_5i20.0.gpio.041.is_output TRUE
#setp hm2_5i20.0.gpio.041.invert_output TRUE
#KA1
setp hm2_5i20.0.gpio.040.is_output TRUE
setp hm2_5i20.0.gpio.040.invert_output TRUE
net KA1 spindle.0.forward hm2_5i20.0.gpio.040.out
#KA2
setp hm2_5i20.0.gpio.042.is_output TRUE
setp hm2_5i20.0.gpio.042.invert_output TRUE
net KA2 spindle.0.reverse hm2_5i20.0.gpio.042.out
#Tool Post Control Outputs
net TD classicladder.0.out-00 iocontrol.0.tool-changed
net TQ classicladder.0.out-03 iocontrol.0.tool-prepared
#KA3
setp hm2_5i20.0.gpio.044.is_output TRUE
setp hm2_5i20.0.gpio.044.invert_output TRUE
net KA3 hm2_5i20.0.gpio.044.out classicladder.0.out-01
#KA4
setp hm2_5i20.0.gpio.046.is_output TRUE
setp hm2_5i20.0.gpio.046.invert_output TRUE
net KA4 hm2_5i20.0.gpio.046.out classicladder.0.out-02
#Spindle Enable
setp hm2_5i20.0.gpio.041.is_output TRUE
setp hm2_5i20.0.gpio.041.invert_output TRUE
setp hm2_5i20.0.gpio.041.out TRUE
#Flood Coolant
setp hm2_5i20.0.gpio.043.is_output TRUE
setp hm2_5i20.0.gpio.043.invert_output TRUE
net M8 hm2_5i20.0.gpio.043.out iocontrol.0.coolant-flood
# Mist Coolant
setp hm2_5i20.0.gpio.045.is_output TRUE
setp hm2_5i20.0.gpio.045.invert_output TRUE
net M7 hm2_5i20.0.gpio.045.out iocontrol.0.coolant-mist
# hook the functions to threads
# read inputs
addf hm2_5i20.0.read servo-thread
# handle motion commands
addf motion-command-handler servo-thread
# run the motion controller
addf motion-controller servo-thread
# debounce the keyswitch
addf debounce.0 servo-thread
# refresh classicladder
addf classicladder.0.refresh servo-thread
# write outputs
addf hm2_5i20.0.write servo-thread
# toggle the charge pump
addf charge-pump servo-thread

View File

@@ -0,0 +1,158 @@
# EMC controller parameters for Mesa 5i20 controlled Smithy 6130 Lathe
[EMC]
MACHINE = Smithy 1315 Lathe
VERSION = 1.1
DEBUG = 0x00000000
#DEBUG = 0x7FFFFFFF
[DISPLAY]
DISPLAY = axis
#DISPLAY = tklinuxcnc
# Path to help file for tklinuxcnc
HELP_FILE = /usr/share/doc/linuxcnc/tklinuxcnc.txt
LATHE = 1
TKPKG = Ngcgui 1.0
NGCGUI_FONT = Helvetica -12 normal
NGCGUI_PREAMBLE = lathe_std.ngc
NGCGUI_POSTAMBLE = bye.ngc
NGCGUI_SUBFILE = backlash.ngc
NGCGUI_SUBFILE = id.ngc
NGCGUI_SUBFILE = od.ngc
NGCGUI_SUBFILE = taper-od.ngc
NGCGUI_SUBFILE = ""
#NGCGUI_SUBFILE = "" use when imageframe is specified if
# opening other files is required
# images will be put in a toplevel window
NGCGUI_OPTIONS =
#NGCGUI_OPTIONS = opt1 opt2 ...
# opt items:
# nonew -- disallow making a new tab page
# noremove -- disallow removing any tab page
# noauto -- no autosend (makeFile, then manually send)
# noiframe -- no internal image, image on separate toplevel
POSITION_OFFSET = RELATIVE
POSITION_FEEDBACK = ACTUAL
MAX_FEED_OVERRIDE = 1.2
INTRO_GRAPHIC = linuxcnc.gif
INTRO_TIME = 5
INCREMENTS = .1in .05in .01in .005in .001in .0005in .0001in
DEFAULT_LINEAR_VELOCITY = 0.2
MAX_LINEAR_VELOCITY = 1.5
DEFAULT_ANGULAR_VELOCITY = 0.1
PROGRAM_PREFIX = ../../nc_files/
#EDITOR = geany
TOOL_EDITOR = tooledit
PYVCP = 1315.xml
[FILTER]
#No Content
[RS274NGC]
PARAMETER_FILE = emc.var
RS274NGC_STARTUP_CODE = G18 G54
SUBROUTINE_PATH = ../../nc_files/ngcgui_lib:../../nc_files/ngcgui_lib/lathe:../../nc_files/ngcgui_lib/utilitysubs
USER_M_PATH = ../../nc_files/ngcgui_lib/mfiles
[EMCMOT]
EMCMOT = motmod
SHMEM_KEY = 111
COMM_TIMEOUT = 1.0
BASE_PERIOD = 250000
SERVO_PERIOD = 250000
TRAJ_PERIOD = 250000
[TASK]
TASK = milltask
CYCLE_TIME = 0.010
[HAL]
HALUI = halui
HALFILE = 1315.hal
#HALFILE = naiky.hal
POSTGUI_HALFILE = 1315postgui.hal
[HALUI]
#No Content
[TRAJ]
COORDINATES = X Z
HOME = 0 0
LINEAR_UNITS = inch
ANGULAR_UNITS = degree
MAX_LINEAR_VELOCITY = 1.5
MAX_LINEAR_ACCELERATION = 5.0
[EMCIO]
TOOL_TABLE = lathe.tbl
TOOL_CHANGE_POSITION = 0 0 0
TOOL_CHANGE_WITH_SPINDLE_ON = 1
[KINS]
KINEMATICS = trivkins
JOINTS = 3
[AXIS_X]
MIN_LIMIT = -5.75
MAX_LIMIT = 0.15
MAX_VELOCITY = 1.0
MAX_ACCELERATION = 5.0
[JOINT_0]
TYPE = LINEAR
HOME = 0.000
MAX_VELOCITY = 1.0
MAX_ACCELERATION = 5.0
STEPGEN_MAXACCEL = 0
STEPGEN_MAXVEL = 0
BACKLASH = 0.0005
# Leadscrew Pitch = 5mm
# Drive Ratio = 21:35
# Steps/Rev = 10000
# Vel at 200k Steps/S = 2.4 in/min
SCALE = 84666.666666667
OUTPUT_SCALE = 1.000
MIN_LIMIT = -5.75
MAX_LIMIT = 0.15
FERROR = 0.250
MIN_FERROR = 0.1
HOME_OFFSET = 0.20
HOME_SEARCH_VEL = 1.0
HOME_LATCH_VEL = 0.05
HOME_FINAL_VEL = 0.5
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 0
[AXIS_Z]
MIN_LIMIT = -7.8
MAX_LIMIT = 0.15
MAX_VELOCITY = 1.0
MAX_ACCELERATION = 5.0
[JOINT_2]
TYPE = LINEAR
HOME = 0.000
MAX_VELOCITY = 1.0
MAX_ACCELERATION = 5.0
STEPGEN_MAXACCEL = 0
STEPGEN_MAXVEL = 0
BACKLASH = 0.0010
# Leadscrew Pitch = 5mm
# Drive Ratio = 21:35
# Steps/Rev = 10000
# Vel at 200k Steps/S = 2.4 in/min
SCALE = 84666.666666667
OUTPUT_SCALE = 1.000
#MIN_LIMIT = -10.1
MIN_LIMIT = -7.8
MAX_LIMIT = 0.15
FERROR = 0.250
MIN_FERROR = 0.1
HOME_OFFSET = 0.20
HOME_SEARCH_VEL = 1.0
HOME_LATCH_VEL = 0.05
HOME_FINAL_VEL = 0.5
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 1

View File

@@ -0,0 +1,21 @@
<pyvcp>
<label>
<text>"Commanded:"</text>
</label>
<number>
<halpin>"commanded-spindle-speed"</halpin>
<font>("Helvetica",12)</font>
<format>"6d"</format>
<width>6</width>
</number>
<label>
<text>"Actual:"</text>
</label>
<number>
<halpin>"actual-spindle-speed"</halpin>
<font>("Helvetica",12)</font>
<format>"6d"</format>
<width>6</width>
</number>
</pyvcp>

View File

@@ -0,0 +1,8 @@
loadrt scale count=1
net Svel scale.0.in
setp scale.0.gain 60
net Scmd pyvcp.commanded-spindle-speed
net Sact pyvcp.actual-spindle-speed scale.0.out
addf scale.0 servo-thread

View File

@@ -0,0 +1,121 @@
loadrt [KINS]KINEMATICS
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=[KINS]JOINTS
loadrt hal_parport cfg=0x378
setp parport.0.reset-time 4000
loadrt stepgen step_type=0,0,0,0
loadrt charge_pump
loadrt match8 count=1
loadrt pwmgen output_type=1
setp pwmgen.0.pwm-freq 5.0
#5000 RPM spindles (early production)
setp pwmgen.0.scale 5000
#7000 RPM spindles (late production)
#setp pwmgen.0.scale 7000
setp pwmgen.0.offset 0.0
setp pwmgen.0.min-dc 0.01
setp pwmgen.0.max-dc 0.99
setp pwmgen.0.dither-pwm true
addf parport.0.read base-thread
addf stepgen.make-pulses base-thread
addf charge-pump 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
addf match8.0 servo-thread
net spindle-cmd motion.spindle-speed-out pwmgen.0.value
net spindle-enable motion.spindle-on pwmgen.0.enable
net coolant-flood parport.0.pin-01-out iocontrol.0.coolant-flood
net xdir parport.0.pin-02-out stepgen.0.dir
net xstep parport.0.pin-03-out stepgen.0.step
setp parport.0.pin-03-out-reset 1
net ydir parport.0.pin-04-out stepgen.1.dir
net ystep parport.0.pin-05-out stepgen.1.step
setp parport.0.pin-05-out-reset 1
net zdir parport.0.pin-06-out stepgen.2.dir
net zstep parport.0.pin-07-out stepgen.2.step
setp parport.0.pin-07-out-reset 1
net adir parport.0.pin-08-out stepgen.3.dir
net astep parport.0.pin-09-out stepgen.3.step
setp parport.0.pin-09-out-reset 1
#PMDX-110
net spindle-dir parport.0.pin-14-out motion.spindle-reverse
#PMDX-131
#net spindle-dir parport.0.pin-14-out motion.spindle-forward
net spindle-pwm parport.0.pin-16-out pwmgen.0.pwm
net charge-pump parport.0.pin-17-out charge-pump.out
net estop-in parport.0.pin-10-in-not iocontrol.0.emc-enable-in
net estop-out charge-pump.enable halui.machine.is-on
#PMDX-110
net run parport.0.pin-11-in-not halui.program.pause motion.feed-hold
#PMDX-131
#net run parport.0.pin-11-in halui.program.pause motion.feed-hold
#normally closed switches (late production)
net all-home parport.0.pin-12-in
#normally open switches (early production)
#net all-home parport.0.pin-12-in-not
setp stepgen.0.position-scale [AXIS_0]SCALE
setp stepgen.0.steplen 1
setp stepgen.0.stepspace 0
setp stepgen.0.dirhold 35000
setp stepgen.0.dirsetup 16000
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 xenable axis.0.amp-enable-out stepgen.0.enable
net all-home axis.0.home-sw-in
setp stepgen.1.position-scale [AXIS_1]SCALE
setp stepgen.1.steplen 1
setp stepgen.1.stepspace 0
setp stepgen.1.dirhold 35000
setp stepgen.1.dirsetup 16000
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 yenable axis.1.amp-enable-out stepgen.1.enable
net all-home axis.1.home-sw-in
setp stepgen.2.position-scale [AXIS_2]SCALE
setp stepgen.2.steplen 1
setp stepgen.2.stepspace 0
setp stepgen.2.dirhold 35000
setp stepgen.2.dirsetup 16000
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 zenable axis.2.amp-enable-out stepgen.2.enable
net all-home axis.2.home-sw-in
setp stepgen.3.position-scale [AXIS_3]SCALE
setp stepgen.3.steplen 1
setp stepgen.3.stepspace 0
setp stepgen.3.dirhold 35000
setp stepgen.3.dirsetup 16000
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 aenable axis.3.amp-enable-out stepgen.3.enable
newsig false bit
sets false FALSE
net xhoming axis.0.homing match8.0.a0
net yhoming axis.1.homing match8.0.a1
net zhoming axis.2.homing match8.0.a2
net false match8.0.b0 match8.0.b1 match8.0.b2
net all-home match8.0.in
net limit match8.0.out axis.0.neg-lim-sw-in
# These loopbacks are usually disconnected by a postgui halfile
net tool-change-loop iocontrol.0.tool-change iocontrol.0.tool-changed
net tool-prepare-loopback iocontrol.0.tool-prepare iocontrol.0.tool-prepared

View File

@@ -0,0 +1,274 @@
# EMC controller parameters for Parallel Port controlled Smithy 622 Gecko Mill
[EMC]
MACHINE = Smithy 622 Gecko Mill
VERSION = 1.1
DEBUG = 0x00000000
#DEBUG = 0x7FFFFFFF
[DISPLAY]
#DISPLAY = eztrol
# CYCLE_TIME is used by eztrol
CYCLE_TIME = .1
DISPLAY = axis
#DISPLAY = tklinuxcnc
#HELP_FILE = /usr/share/doc/linuxcnc/tklinuxcnc.txt
TKPKG = Ngcgui 1.0
TKPKG = Ngcguittt 1.0
# note: ngcgui_app.tcl must precede ngcgui_ttt.tcl
NGCGUI_FONT = Helvetica -12 normal
TTT = truetype-tracer
TTT_PREAMBLE = in_std.ngc
NGCGUI_PREAMBLE = in_std.ngc
NGCGUI_POSTAMBLE = bye.ngc
NGCGUI_SUBFILE = backlash.ngc
NGCGUI_SUBFILE = hole_circle.ngc
NGCGUI_SUBFILE = helix.ngc
NGCGUI_SUBFILE = helix_rtheta.ngc
NGCGUI_SUBFILE = slot.ngc
NGCGUI_SUBFILE = simp.ngc
NGCGUI_SUBFILE = xyz.ngc
NGCGUI_SUBFILE = iquad.ngc
NGCGUI_SUBFILE = oquad.ngc
NGCGUI_SUBFILE = db25.ngc
NGCGUI_SUBFILE = ihex.ngc
NGCGUI_SUBFILE = ohex.ngc
NGCGUI_SUBFILE = gosper.ngc
NGCGUI_SUBFILE = ""
#NGCGUI_SUBFILE = "" use when imageframe is specified if
# opening other files is required
# images will be put in a toplevel window
NGCGUI_OPTIONS =
#NGCGUI_OPTIONS = opt1 opt2 ...
# opt items:
# nonew -- disallow making a new tab page
# noremove -- disallow removing any tab page
# noauto -- no autosend (makeFile, then manually send)
# noiframe -- no internal image, image on separate toplevel
POSITION_OFFSET = RELATIVE
POSITION_FEEDBACK = ACTUAL
MAX_FEED_OVERRIDE = 1.5
MIN_SPINDLE_OVERRIDE = 0.2
MAX_SPINDLE_OVERRIDE = 1.5
INTRO_GRAPHIC = linuxcnc.gif
INTRO_TIME = 5
INCREMENTS = .1in .05in .01in .005in .001in .0005in .0001in
PROGRAM_PREFIX = ../../nc_files/
#EDITOR = geany
TOOL_EDITOR = tooledit
DEFAULT_LINEAR_VELOCITY = 0.2
MAX_LINEAR_VELOCITY = 1.5
DEFAULT_ANGULAR_VELOCITY = 12.0
MAX_ANGULAR_VELOCITY = 60
[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 = python3
[RS274NGC]
PARAMETER_FILE = emc.var
SUBROUTINE_PATH = ../../nc_files/ngcgui_lib:../../nc_files/ngcgui_lib/utilitysubs
USER_M_PATH = ../../nc_files/ngcgui_lib/mfiles
[EMCMOT]
EMCMOT = motmod
SHMEM_KEY = 111
COMM_TIMEOUT = 1.0
BASE_PERIOD = 50000
SERVO_PERIOD = 1000000
TRAJ_PERIOD = 10000000
[TASK]
TASK = milltask
CYCLE_TIME = 0.010
[HAL]
HALUI = halui
HALFILE = 622gecko.hal
EZTROL_HALFILE = eztrol.hal
HALFILE = axis_manualtoolchange.hal
[HALUI]
#No Content
[TRAJ]
COORDINATES = X Y Z A
LINEAR_UNITS = inch
ANGULAR_UNITS = degree
MAX_LINEAR_VELOCITY = 1.5
MAX_LINEAR_ACCELERATION = 1.5
DEFAULT_LINEAR_VELOCITY = 0.2
[EMCIO]
TOOL_TABLE = mill.tbl
#TOOL_CHANGE_POSITION = 0 0 2
#TOOL_CHANGE_WITH_SPINDLE_ON = 1
TOOL_CHANGE_QUILL_UP = 1
#TOOL_CHANGE_AT_G30 = 1
[KINS]
KINEMATICS = trivkins
JOINTS = 4
[AXIS_X]
MIN_LIMIT = -10.0
MAX_LIMIT = 0.2
MAX_VELOCITY = 1.5
MAX_ACCELERATION = 1.5
[JOINT_0]
TYPE = LINEAR
HOME = 0.000
MAX_VELOCITY = 1.5
MAX_ACCELERATION = 1.5
STEPGEN_MAXVEL = 1.6
STEPGEN_MAXACCEL = 1.6
BACKLASH = 0.0000
# Leadscrew Pitch = 4mm
# Drive Ratio = 1:1
# Steps/Rev = 200 * 10uSteps = 2000
# Vel at 200k Steps/S = 944"/min
SCALE = -12700
OUTPUT_SCALE = 1.000
MIN_LIMIT = -10.0
MAX_LIMIT = 0.2
FERROR = 0.05
MIN_FERROR = 0.01
HOME_OFFSET = 0.25
HOME_SEARCH_VEL = 0.5
HOME_LATCH_VEL = -0.05
HOME_FINAL_VEL = 0.5
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 2
[AXIS_Y]
MIN_LIMIT = -4.1
MAX_LIMIT = 0.2
MAX_VELOCITY = 1.5
MAX_ACCELERATION = 1.5
[JOINT_1]
TYPE = LINEAR
HOME = 0.000
MAX_VELOCITY = 1.5
MAX_ACCELERATION = 1.5
STEPGEN_MAXVEL = 1.6
STEPGEN_MAXACCEL = 1.6
BACKLASH = 0.0000
# Leadscrew Pitch = 4mm
# Drive Ratio = 1:1
# Steps/Rev = 200 * 10uSteps = 2000
# Vel at 200k Steps/S = 944"/min
SCALE = 12700
OUTPUT_SCALE = 1.000
MIN_LIMIT = -4.1
MAX_LIMIT = 0.2
FERROR = 0.05
MIN_FERROR = 0.01
HOME_OFFSET = 0.25
HOME_SEARCH_VEL = 0.5
HOME_LATCH_VEL = -0.05
HOME_FINAL_VEL = 0.5
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 1
[AXIS_Z]
MIN_LIMIT = -6.8
MAX_LIMIT = 0.2
MAX_VELOCITY = 0.8
MAX_ACCELERATION = 1.5
[JOINT_2]
TYPE = LINEAR
HOME = 0.000
MAX_VELOCITY = 0.8
MAX_ACCELERATION = 1.5
STEPGEN_MAXVEL = 1.3
STEPGEN_MAXACCEL = 1.6
BACKLASH = 0.0000
# Leadscrew Pitch = 4mm
# Drive Ratio = 1:1
# Steps/Rev = 200 * 10uSteps = 2000
# Vel at 200k Steps/S = 944"/min
SCALE = 12700
OUTPUT_SCALE = 1.000
MIN_LIMIT = -6.8
MAX_LIMIT = 0.2
FERROR = 0.05
MIN_FERROR = 0.01
HOME_OFFSET = 0.25
HOME_SEARCH_VEL = 0.5
HOME_LATCH_VEL = -0.05
HOME_FINAL_VEL = 0.5
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 0
[AXIS_A]
MIN_LIMIT = -36000.0
MAX_LIMIT = 36000.0
MAX_VELOCITY = 30.0
MAX_ACCELERATION = 300.0
[JOINT_3]
TYPE = ANGULAR
HOME = 0.000
MAX_VELOCITY = 30.0
MAX_ACCELERATION = 300.0
STEPGEN_MAXVEL = 32.0
STEPGEN_MAXACCEL = 310.0
BACKLASH = 0.0000
SCALE = -400
OUTPUT_SCALE = 1.000
MIN_LIMIT = -36000.0
MAX_LIMIT = 36000.0
FERROR = 5.0
MIN_FERROR = 1.0
HOME_OFFSET = 0.0
HOME_SEARCH_VEL = 0.0
HOME_LATCH_VEL = 0.0
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 3
[EZTROL]
QTEMC_PLUGIN = /usr/share/eztrol/lib/libqtemc-2.4.6.so
QTEMCHAL_PLUGIN = /usr/share/eztrol/lib/libqtemchal-2.4.6.so
EZTROLGUI = /usr/share/eztrol/eztrolgui/libguimill2.so
#4000 RPM spindles (early production)
#MAX_SPINDLE_RPM = 4000
#5000 RPM spindles (late production)
MAX_SPINDLE_RPM = 5000
DIR_PLUGIN = /usr/share/eztrol/eztrolplugins
PLUGIN = libeztrol_wizard_plugin.so
PLUGIN = libeztrol_webwizard_plugin.so
# disabling settings gcode editor will benefit systems with small memory size
ENABLE_SETTINGS_EDITOR = true
# disable OpenGL 3D Preview
ENABLE_3D_PREVIEW = true
# set to Full Screen TRUE/FALSE
FULLSCREEN = false
# Settings Tab GCode Editor Syntax Highlight
# color guide - http://www.w3.org/TR/SVG/types.html#ColorKeywords
AXIS_COLOR = magenta
LINENUMBER_COLOR = rosybrown
GM_COLOR = blue
STFDRLPQH_COLOR = red
O_COLOR = blue
RESERVEDWORDS_COLOR = darkviolet
VARIABLE_COLOR = olive
COMMENT_COLOR = seagreen
GUI_STYLESHEET = eztrolstyle1.qss
[EZTROLWIZARDS]
WIZARD_DIRECTORY = /usr/share/eztrol/eztrolwizards
SAVE_DIRECTORY = ../../nc_files
[EZTROLWEBWIZARD]
URL = http://www.mattshaver.com/ecmacam/ecmacam.htm

View File

@@ -0,0 +1,24 @@
unlinkp iocontrol.0.tool-change
unlinkp iocontrol.0.tool-changed
net tool-change eztrol.tool-change iocontrol.0.tool-change
net tool-changed eztrol.tool-changed iocontrol.0.tool-changed
net tool-prep-number eztrol.tool-prep-number iocontrol.0.tool-prep-number
net Xmax eztrol.x-positive-limit
net Xmin eztrol.x-negative-limit
net Ymax eztrol.y-positive-limit
net Ymin eztrol.y-negative-limit
net Zmax eztrol.z-positive-limit
net Zmin eztrol.z-negative-limit
loadrt mux2
unlinkp motion.spindle-speed-out
unlinkp hm2_5i20.0.pwmgen.00.value
net spd-mux mux2.0.out hm2_5i20.0.pwmgen.00.value eztrol.spindle-rpm-reading
net spd-motion motion.spindle-speed-out mux2.0.in0
net spd-eztrol eztrol.spindle-rpm-control mux2.0.in1
net speed-select halui.mode.is-manual mux2.0.sel
addf mux2.0 servo-thread
#eztrol.estop
#eztrol.in-manual-mode
#eztrol.limit-override
#eztrol.spindle-max-rpm

View File

@@ -0,0 +1,179 @@
# 5i20 config file for Smithy 622 Mill
# load the hostmot2 driver, this doesn't do anything by itself,
# it just waits for low-level drivers to register boards
loadrt hostmot2 debug_idrom=1 debug_module_descriptors=1 debug_pin_descriptors=1 debug_modules=1
# load the low-level driver for the board
# this will load the board's firmware and register it with the hostmot2
# driver loaded above, and it'll show up in HAL
loadrt hm2_pci config="firmware=hm2/5i20/SVST2_4_7I47.BIT num_encoders=1 num_pwmgens=1 num_stepgens=4"
# set up the watchdog
#setp hm2_5i20.0.watchdog.timeout_ns 10000000
# load kinematics
loadrt [KINS]KINEMATICS
# load motion controller, get name and thread periods from ini file
loadrt [EMCMOT]EMCMOT base_period_nsec=[EMCMOT]BASE_PERIOD servo_period_nsec=[EMCMOT]SERVO_PERIOD traj_period_nsec=[EMCMOT]TRAJ_PERIOD key=[EMCMOT]SHMEM_KEY num_joints=[KINS]JOINTS
# load charge pump
loadrt charge_pump
# These loopbacks are usually disconnected by a postgui halfile
net tool-change-loop iocontrol.0.tool-change iocontrol.0.tool-changed
net tool-prepare-loopback iocontrol.0.tool-prepare iocontrol.0.tool-prepared
#the Enable signal is used to permanently enable things
newsig Enable bit
sets Enable TRUE
#configure the spindle speed
net scmd spindle.0.speed-out hm2_5i20.0.pwmgen.00.value
setp hm2_5i20.0.pwmgen.00.scale 5000
setp hm2_5i20.0.pwmgen.00.output-type 1
setp hm2_5i20.0.pwmgen.pwm_frequency 100
# invert the step pulse polarity
setp hm2_5i20.0.gpio.000.invert_output TRUE
setp hm2_5i20.0.gpio.002.invert_output TRUE
setp hm2_5i20.0.gpio.016.invert_output TRUE
setp hm2_5i20.0.gpio.018.invert_output TRUE
# configure the stepgen parameters
setp hm2_5i20.0.stepgen.00.dirsetup 2500
setp hm2_5i20.0.stepgen.00.dirhold 2500
setp hm2_5i20.0.stepgen.00.steplen 2500
setp hm2_5i20.0.stepgen.00.stepspace 2500
setp hm2_5i20.0.stepgen.00.position-scale [JOINT_0]SCALE
setp hm2_5i20.0.stepgen.00.maxaccel [JOINT_0]STEPGEN_MAXACCEL
setp hm2_5i20.0.stepgen.00.maxvel [JOINT_0]STEPGEN_MAXVEL
setp hm2_5i20.0.stepgen.01.dirsetup 2500
setp hm2_5i20.0.stepgen.01.dirhold 2500
setp hm2_5i20.0.stepgen.01.steplen 2500
setp hm2_5i20.0.stepgen.01.stepspace 2500
setp hm2_5i20.0.stepgen.01.position-scale [JOINT_1]SCALE
setp hm2_5i20.0.stepgen.01.maxaccel [JOINT_1]STEPGEN_MAXACCEL
setp hm2_5i20.0.stepgen.01.maxvel [JOINT_1]STEPGEN_MAXVEL
setp hm2_5i20.0.stepgen.02.dirsetup 2500
setp hm2_5i20.0.stepgen.02.dirhold 2500
setp hm2_5i20.0.stepgen.02.steplen 2500
setp hm2_5i20.0.stepgen.02.stepspace 2500
setp hm2_5i20.0.stepgen.02.position-scale [JOINT_2]SCALE
setp hm2_5i20.0.stepgen.02.maxaccel [JOINT_2]STEPGEN_MAXACCEL
setp hm2_5i20.0.stepgen.02.maxvel [JOINT_2]STEPGEN_MAXVEL
setp hm2_5i20.0.stepgen.03.dirsetup 2500
setp hm2_5i20.0.stepgen.03.dirhold 2500
setp hm2_5i20.0.stepgen.03.steplen 2500
setp hm2_5i20.0.stepgen.03.stepspace 2500
setp hm2_5i20.0.stepgen.03.position-scale [JOINT_3]SCALE
setp hm2_5i20.0.stepgen.03.maxaccel [JOINT_3]STEPGEN_MAXACCEL
setp hm2_5i20.0.stepgen.03.maxvel [JOINT_3]STEPGEN_MAXVEL
# connect position commands from motion module to step generator
net Xpos-cmd joint.0.motor-pos-cmd => hm2_5i20.0.stepgen.00.position-cmd
net Ypos-cmd joint.1.motor-pos-cmd => hm2_5i20.0.stepgen.01.position-cmd
net Zpos-cmd joint.2.motor-pos-cmd => hm2_5i20.0.stepgen.02.position-cmd
#net Apos-cmd joint.3.motor-pos-cmd => hm2_5i20.0.stepgen.03.position-cmd
# connect position feedback from step generators to motion module
net Xpos-fb hm2_5i20.0.stepgen.00.position-fb => joint.0.motor-pos-fb
net Ypos-fb hm2_5i20.0.stepgen.01.position-fb => joint.1.motor-pos-fb
net Zpos-fb hm2_5i20.0.stepgen.02.position-fb => joint.2.motor-pos-fb
#net Apos-fb hm2_5i20.0.stepgen.03.position-fb => joint.3.motor-pos-fb
# connect enable signals for step generators
net Xen joint.0.amp-enable-out => hm2_5i20.0.stepgen.00.enable
net Yen joint.1.amp-enable-out => hm2_5i20.0.stepgen.01.enable
net Zen joint.2.amp-enable-out => hm2_5i20.0.stepgen.02.enable
#net Aen joint.3.amp-enable-out => hm2_5i20.0.stepgen.03.enable
# enable velocity mode jogging
net Enable joint.0.jog-vel-mode
net Enable joint.1.jog-vel-mode
net Enable joint.2.jog-vel-mode
#net Enable joint.3.jog-vel-mode
# enable the PWM generator
net Enable => hm2_5i20.0.pwmgen.00.enable
# enable the charge pump
net Enable => charge-pump.enable
# connect the charge pump signal to an output
setp hm2_5i20.0.gpio.022.is_output TRUE
net chargepump hm2_5i20.0.gpio.022.out => charge-pump.out
# Safety Relay Monitoring Contacts
net estop-enable hm2_5i20.0.gpio.037.in => iocontrol.0.emc-enable-in
# Run Switch
net machine-on hm2_5i20.0.gpio.039.in_not => halui.machine.on
#connect limit switches to limit inputs
net Xmax hm2_5i20.0.gpio.032.in => joint.0.pos-lim-sw-in
net Xmin hm2_5i20.0.gpio.034.in => joint.0.neg-lim-sw-in
net Ymax hm2_5i20.0.gpio.028.in => joint.1.pos-lim-sw-in
net Ymin hm2_5i20.0.gpio.030.in => joint.1.neg-lim-sw-in
net Zmax hm2_5i20.0.gpio.024.in => joint.2.pos-lim-sw-in
net Zmin hm2_5i20.0.gpio.026.in => joint.2.neg-lim-sw-in
#connect positive limit signals to home inputs
net Xmax => joint.0.home-sw-in
net Ymax => joint.1.home-sw-in
net Zmax => joint.2.home-sw-in
# Spindle Contactor Enable
setp hm2_5i20.0.gpio.041.is_output TRUE
setp hm2_5i20.0.gpio.041.invert_output TRUE
# Door Closed - Energizes spindle contactor
net CLOSED hm2_5i20.0.gpio.029.in_not hm2_5i20.0.gpio.041.out
# Main Contactors - True when both contactors are energized
net ACOK hm2_5i20.0.gpio.035.in_not
# VFD Fault Relay - True when VFD is not faulted
#net VFDOK hm2_5i20.0.gpio.031.in_not
# A Axis Home - On Sieg machines there is no VFD fault signal,
# it is used for the A axis home sensor on 4 axis machines
#net VFDOK hm2_5i20.0.gpio.031.in_not
#net AHOME hm2_5i20.0.gpio.031.in joint.3.home-sw-in
# Spindle Contactor - False when spindle contactor is energized
net SOFF hm2_5i20.0.gpio.033.in halui.program.pause motion.feed-hold
# Axis Drive Status Signals
# True when YAKO stepper drive is on a full step position
# True when a Leadshine stepper drive is in the READY state
net DRV1 hm2_5i20.0.gpio.025.in_not
net DRV2 hm2_5i20.0.gpio.036.in_not
net DRV3 hm2_5i20.0.gpio.027.in_not
net DRV4 hm2_5i20.0.gpio.038.in_not
# Output Bits
# KA1
setp hm2_5i20.0.gpio.040.is_output TRUE
setp hm2_5i20.0.gpio.040.invert_output TRUE
net KA1 spindle.0.reverse => hm2_5i20.0.gpio.040.out
# KA2
setp hm2_5i20.0.gpio.042.is_output TRUE
setp hm2_5i20.0.gpio.042.invert_output TRUE
net KA2 spindle.0.on => hm2_5i20.0.gpio.042.out
# Flood Coolant
setp hm2_5i20.0.gpio.043.is_output TRUE
setp hm2_5i20.0.gpio.043.invert_output TRUE
net M8 hm2_5i20.0.gpio.043.out => iocontrol.0.coolant-flood
# Mist Coolant
setp hm2_5i20.0.gpio.045.is_output TRUE
setp hm2_5i20.0.gpio.045.invert_output TRUE
net M7 hm2_5i20.0.gpio.045.out => iocontrol.0.coolant-mist
# hook the functions to threads
# read inputs
addf hm2_5i20.0.read servo-thread
# handle motion commands
addf motion-command-handler servo-thread
# run the motion controller
addf motion-controller servo-thread
# write outputs
addf hm2_5i20.0.write servo-thread
# toggle the charge pump
addf charge-pump servo-thread

View File

@@ -0,0 +1,279 @@
# EMC controller parameters for Mesa 5i20 controlled Smithy 622 Mill
[EMC]
MACHINE = Smithy 622 Mill
VERSION = 1.1
DEBUG = 0x00000000
#DEBUG = 0x7FFFFFFF
[DISPLAY]
#DISPLAY = eztrol
# CYCLE_TIME is used by eztrol
CYCLE_TIME = .1
DISPLAY = axis
#DISPLAY = tklinuxcnc
#HELP_FILE = /usr/share/doc/linuxcnc/tklinuxcnc.txt
TKPKG = Ngcgui 1.0
TKPKG = Ngcguittt 1.0
# note: ngcgui_app.tcl must precede ngcgui_ttt.tcl
NGCGUI_FONT = Helvetica -12 normal
TTT = truetype-tracer
TTT_PREAMBLE = in_std.ngc
NGCGUI_PREAMBLE = in_std.ngc
NGCGUI_POSTAMBLE = bye.ngc
NGCGUI_SUBFILE = backlash.ngc
NGCGUI_SUBFILE = hole_circle.ngc
NGCGUI_SUBFILE = helix.ngc
NGCGUI_SUBFILE = helix_rtheta.ngc
NGCGUI_SUBFILE = slot.ngc
NGCGUI_SUBFILE = simp.ngc
NGCGUI_SUBFILE = xyz.ngc
NGCGUI_SUBFILE = iquad.ngc
NGCGUI_SUBFILE = oquad.ngc
NGCGUI_SUBFILE = db25.ngc
NGCGUI_SUBFILE = ihex.ngc
NGCGUI_SUBFILE = ohex.ngc
NGCGUI_SUBFILE = gosper.ngc
NGCGUI_SUBFILE = ""
#NGCGUI_SUBFILE = "" use when imageframe is specified if
# opening other files is required
# images will be put in a toplevel window
NGCGUI_OPTIONS =
#NGCGUI_OPTIONS = opt1 opt2 ...
# opt items:
# nonew -- disallow making a new tab page
# noremove -- disallow removing any tab page
# noauto -- no autosend (makeFile, then manually send)
# noiframe -- no internal image, image on separate toplevel
POSITION_OFFSET = RELATIVE
POSITION_FEEDBACK = ACTUAL
MAX_FEED_OVERRIDE = 1.5
MIN_SPINDLE_OVERRIDE = 0.2
MAX_SPINDLE_OVERRIDE = 1.5
INTRO_GRAPHIC = linuxcnc.gif
INTRO_TIME = 5
INCREMENTS = .1in .05in .01in .005in .001in .0005in .0001in
PROGRAM_PREFIX = ../../nc_files/
#EDITOR = geany
TOOL_EDITOR = tooledit
DEFAULT_LINEAR_VELOCITY = 0.2
MAX_LINEAR_VELOCITY = 3.0
DEFAULT_ANGULAR_VELOCITY = 12.0
MAX_ANGULAR_VELOCITY = 60.0
[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 = python3
[RS274NGC]
PARAMETER_FILE = emc.var
SUBROUTINE_PATH = ../../nc_files/ngcgui_lib:../../nc_files/ngcgui_lib/utilitysubs
USER_M_PATH = ../../nc_files/ngcgui_lib/mfiles
[EMCMOT]
EMCMOT = motmod
SHMEM_KEY = 111
COMM_TIMEOUT = 1.0
BASE_PERIOD = 1000000
SERVO_PERIOD = 1000000
TRAJ_PERIOD = 1000000
[TASK]
TASK = milltask
CYCLE_TIME = 0.001
[HAL]
HALUI = halui
HALFILE = 622.hal
#HALFILE = naiky.hal
EZTROL_HALFILE = 5i20eztrol.hal
HALFILE = axis_manualtoolchange.hal
[HALUI]
#No Content
[TRAJ]
COORDINATES = X Y Z
LINEAR_UNITS = inch
ANGULAR_UNITS = degree
MAX_LINEAR_VELOCITY = 3.0
MAX_LINEAR_ACCELERATION = 20.0
DEFAULT_LINEAR_VELOCITY = 0.2
[EMCIO]
TOOL_TABLE = mill.tbl
#TOOL_CHANGE_POSITION = 0 0 2
#TOOL_CHANGE_WITH_SPINDLE_ON = 1
TOOL_CHANGE_QUILL_UP = 1
#TOOL_CHANGE_AT_G30 = 1
[KINS]
KINEMATICS = trivkins
JOINTS = 4
[AXIS_X]
MIN_LIMIT = -11.6
MAX_LIMIT = 0.2
MAX_VELOCITY = 3.0
MAX_ACCELERATION = 20.0
[JOINT_0]
TYPE = LINEAR
HOME = 0.000
MAX_VELOCITY = 3.0
MAX_ACCELERATION = 20.0
STEPGEN_MAXVEL = 0.0
STEPGEN_MAXACCEL = 0.0
BACKLASH = 0.0000
# Leadscrew Pitch = 4mm
# Drive Ratio = 1:1
# Steps/Rev = 200 * 50uSteps = 10000
# Vel at 200k Steps/S = 180"/min
SCALE = 63500
OUTPUT_SCALE = 1.000
MIN_LIMIT = -11.6
MAX_LIMIT = 0.2
FERROR = 0.25
MIN_FERROR = 0.1
HOME_OFFSET = 0.25
HOME_SEARCH_VEL = 0.5
HOME_LATCH_VEL = 0.05
HOME_FINAL_VEL = 0.5
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 2
[AXIS_Y]
MIN_LIMIT = -5.3
MAX_LIMIT = 0.2
MAX_VELOCITY = 3.0
MAX_ACCELERATION = 20.0
[JOINT_1]
TYPE = LINEAR
HOME = 0.000
MAX_VELOCITY = 3.0
MAX_ACCELERATION = 20.0
STEPGEN_MAXVEL = 0.0
STEPGEN_MAXACCEL = 0.0
BACKLASH = 0.0000
# Leadscrew Pitch = 4mm
# Drive Ratio = 1:1
# Steps/Rev = 200 * 50uSteps = 10000
# Vel at 200k Steps/S = 180"/min
SCALE = -63500
OUTPUT_SCALE = 1.000
MIN_LIMIT = -5.3
MAX_LIMIT = 0.2
FERROR = 0.25
MIN_FERROR = 0.1
HOME_OFFSET = 0.25
HOME_SEARCH_VEL = 0.5
HOME_LATCH_VEL = 0.05
HOME_FINAL_VEL = 0.5
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 1
[AXIS_Z]
MIN_LIMIT = -10.2
MAX_LIMIT = 0.2
MAX_VELOCITY = 2.0
MAX_ACCELERATION = 20.0
[JOINT_2]
TYPE = LINEAR
HOME = 0.000
MAX_VELOCITY = 2.0
MAX_ACCELERATION = 20.0
STEPGEN_MAXVEL = 0.0
STEPGEN_MAXACCEL = 0.0
BACKLASH = 0.0000
# Leadscrew Pitch = 4mm
# Drive Ratio = 1:1
# Steps/Rev = 200 * 50uSteps = 10000
# Vel at 200k Steps/S = 180"/min
SCALE = -63500
OUTPUT_SCALE = 1.000
MIN_LIMIT = -10.2
MAX_LIMIT = 0.2
FERROR = 0.25
MIN_FERROR = 0.1
HOME_OFFSET = 0.25
HOME_SEARCH_VEL = 0.5
HOME_LATCH_VEL = 0.05
HOME_FINAL_VEL = 0.5
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 0
[AXIS_A]
MIN_LIMIT = -360000.0
MAX_LIMIT = 360000.0
MAX_VELOCITY = 60.0
MAX_ACCELERATION = 120.0
[JOINT_3]
TYPE = ANGULAR
HOME = 0.000
MAX_VELOCITY = 60.0
MAX_ACCELERATION = 120.0
STEPGEN_MAXVEL = 0.0
STEPGEN_MAXACCEL = 0.0
BACKLASH = 0.0000
# Drive Ratio = 1:4
# Steps/Rev = 200 * 50uSteps = 10000
# Vel at 200k Steps/S = 4800 deg/min
SCALE = -1111.11111111111111111111111111
# If [TRAJ]ANGULAR_UNITS = grad
#SCALE = -1000
OUTPUT_SCALE = 1.000
MIN_LIMIT = -360000.0
MAX_LIMIT = 360000.0
FERROR = 0.25
MIN_FERROR = 0.1
HOME_OFFSET = 0.0
HOME_SEARCH_VEL = 36.0
HOME_LATCH_VEL = 3.6
HOME_FINAL_VEL = 36.0
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 3
[EZTROL]
QTEMC_PLUGIN = /usr/share/eztrol/lib/libqtemc-2.4.6.so
QTEMCHAL_PLUGIN = /usr/share/eztrol/lib/libqtemchal-2.4.6.so
EZTROLGUI = /usr/share/eztrol/eztrolgui/libguimill2.so
MAX_SPINDLE_RPM = 5000
DIR_PLUGIN = /usr/share/eztrol/eztrolplugins
PLUGIN = libeztrol_wizard_plugin.so
PLUGIN = libeztrol_webwizard_plugin.so
# disabling settings gcode editor will benefit systems with small memory size
ENABLE_SETTINGS_EDITOR = true
# disable OpenGL 3D Preview
ENABLE_3D_PREVIEW = true
# set to Full Screen TRUE/FALSE
FULLSCREEN = false
# Settings Tab GCode Editor Syntax Highlight
# color guide - http://www.w3.org/TR/SVG/types.html#ColorKeywords
AXIS_COLOR = magenta
LINENUMBER_COLOR = rosybrown
GM_COLOR = blue
STFDRLPQH_COLOR = red
O_COLOR = blue
RESERVEDWORDS_COLOR = darkviolet
VARIABLE_COLOR = olive
COMMENT_COLOR = seagreen
GUI_STYLESHEET = eztrolstyle1.qss
[EZTROLWIZARDS]
WIZARD_DIRECTORY = /usr/share/eztrol/eztrolwizards
SAVE_DIRECTORY = ../../nc_files
[EZTROLWEBWIZARD]
URL = http://www.mattshaver.com/ecmacam/ecmacam.htm

View File

@@ -0,0 +1,179 @@
# 5i20 config file for 4 Axis Smithy 622 Mill
# load the hostmot2 driver, this doesn't do anything by itself,
# it just waits for low-level drivers to register boards
loadrt hostmot2 debug_idrom=1 debug_module_descriptors=1 debug_pin_descriptors=1 debug_modules=1
# load the low-level driver for the board
# this will load the board's firmware and register it with the hostmot2
# driver loaded above, and it'll show up in HAL
loadrt hm2_pci config="firmware=hm2/5i20/SVST2_4_7I47.BIT num_encoders=1 num_pwmgens=1 num_stepgens=4"
# set up the watchdog
#setp hm2_5i20.0.watchdog.timeout_ns 10000000
# load kinematics
loadrt [KINS]KINEMATICS
# load motion controller, get name and thread periods from ini file
loadrt [EMCMOT]EMCMOT base_period_nsec=[EMCMOT]BASE_PERIOD servo_period_nsec=[EMCMOT]SERVO_PERIOD traj_period_nsec=[EMCMOT]TRAJ_PERIOD key=[EMCMOT]SHMEM_KEY num_joints=[KINS]JOINTS
# load charge pump
loadrt charge_pump
# These loopbacks are usually disconnected by a postgui halfile
net tool-change-loop iocontrol.0.tool-change iocontrol.0.tool-changed
net tool-prepare-loopback iocontrol.0.tool-prepare iocontrol.0.tool-prepared
#the Enable signal is used to permanently enable things
newsig Enable bit
sets Enable TRUE
#configure the spindle speed
net scmd spindle.0.speed-out hm2_5i20.0.pwmgen.00.value
setp hm2_5i20.0.pwmgen.00.scale 5000
setp hm2_5i20.0.pwmgen.00.output-type 1
setp hm2_5i20.0.pwmgen.pwm_frequency 100
# invert the step pulse polarity
setp hm2_5i20.0.gpio.000.invert_output TRUE
setp hm2_5i20.0.gpio.002.invert_output TRUE
setp hm2_5i20.0.gpio.016.invert_output TRUE
setp hm2_5i20.0.gpio.018.invert_output TRUE
# configure the stepgen parameters
setp hm2_5i20.0.stepgen.00.dirsetup 2500
setp hm2_5i20.0.stepgen.00.dirhold 2500
setp hm2_5i20.0.stepgen.00.steplen 2500
setp hm2_5i20.0.stepgen.00.stepspace 2500
setp hm2_5i20.0.stepgen.00.position-scale [JOINT_0]SCALE
setp hm2_5i20.0.stepgen.00.maxaccel [JOINT_0]STEPGEN_MAXACCEL
setp hm2_5i20.0.stepgen.00.maxvel [JOINT_0]STEPGEN_MAXVEL
setp hm2_5i20.0.stepgen.01.dirsetup 2500
setp hm2_5i20.0.stepgen.01.dirhold 2500
setp hm2_5i20.0.stepgen.01.steplen 2500
setp hm2_5i20.0.stepgen.01.stepspace 2500
setp hm2_5i20.0.stepgen.01.position-scale [JOINT_1]SCALE
setp hm2_5i20.0.stepgen.01.maxaccel [JOINT_1]STEPGEN_MAXACCEL
setp hm2_5i20.0.stepgen.01.maxvel [JOINT_1]STEPGEN_MAXVEL
setp hm2_5i20.0.stepgen.02.dirsetup 2500
setp hm2_5i20.0.stepgen.02.dirhold 2500
setp hm2_5i20.0.stepgen.02.steplen 2500
setp hm2_5i20.0.stepgen.02.stepspace 2500
setp hm2_5i20.0.stepgen.02.position-scale [JOINT_2]SCALE
setp hm2_5i20.0.stepgen.02.maxaccel [JOINT_2]STEPGEN_MAXACCEL
setp hm2_5i20.0.stepgen.02.maxvel [JOINT_2]STEPGEN_MAXVEL
setp hm2_5i20.0.stepgen.03.dirsetup 2500
setp hm2_5i20.0.stepgen.03.dirhold 2500
setp hm2_5i20.0.stepgen.03.steplen 2500
setp hm2_5i20.0.stepgen.03.stepspace 2500
setp hm2_5i20.0.stepgen.03.position-scale [JOINT_3]SCALE
setp hm2_5i20.0.stepgen.03.maxaccel [JOINT_3]STEPGEN_MAXACCEL
setp hm2_5i20.0.stepgen.03.maxvel [JOINT_3]STEPGEN_MAXVEL
# connect position commands from motion module to step generator
net Xpos-cmd joint.0.motor-pos-cmd => hm2_5i20.0.stepgen.00.position-cmd
net Ypos-cmd joint.1.motor-pos-cmd => hm2_5i20.0.stepgen.01.position-cmd
net Zpos-cmd joint.2.motor-pos-cmd => hm2_5i20.0.stepgen.02.position-cmd
net Apos-cmd joint.3.motor-pos-cmd => hm2_5i20.0.stepgen.03.position-cmd
# connect position feedback from step generators to motion module
net Xpos-fb hm2_5i20.0.stepgen.00.position-fb => joint.0.motor-pos-fb
net Ypos-fb hm2_5i20.0.stepgen.01.position-fb => joint.1.motor-pos-fb
net Zpos-fb hm2_5i20.0.stepgen.02.position-fb => joint.2.motor-pos-fb
net Apos-fb hm2_5i20.0.stepgen.03.position-fb => joint.3.motor-pos-fb
# connect enable signals for step generators
net Xen joint.0.amp-enable-out => hm2_5i20.0.stepgen.00.enable
net Yen joint.1.amp-enable-out => hm2_5i20.0.stepgen.01.enable
net Zen joint.2.amp-enable-out => hm2_5i20.0.stepgen.02.enable
net Aen joint.3.amp-enable-out => hm2_5i20.0.stepgen.03.enable
# enable velocity mode jogging
net Enable joint.0.jog-vel-mode
net Enable joint.1.jog-vel-mode
net Enable joint.2.jog-vel-mode
net Enable joint.3.jog-vel-mode
# enable the PWM generator
net Enable => hm2_5i20.0.pwmgen.00.enable
# enable the charge pump
net Enable => charge-pump.enable
# connect the charge pump signal to an output
setp hm2_5i20.0.gpio.022.is_output TRUE
net chargepump hm2_5i20.0.gpio.022.out => charge-pump.out
# Safety Relay Monitoring Contacts
net estop-enable hm2_5i20.0.gpio.037.in => iocontrol.0.emc-enable-in
# Run Switch
net machine-on hm2_5i20.0.gpio.039.in_not => halui.machine.on
#connect limit switches to limit inputs
net Xmax hm2_5i20.0.gpio.032.in => joint.0.pos-lim-sw-in
net Xmin hm2_5i20.0.gpio.034.in => joint.0.neg-lim-sw-in
net Ymax hm2_5i20.0.gpio.028.in => joint.1.pos-lim-sw-in
net Ymin hm2_5i20.0.gpio.030.in => joint.1.neg-lim-sw-in
net Zmax hm2_5i20.0.gpio.024.in => joint.2.pos-lim-sw-in
net Zmin hm2_5i20.0.gpio.026.in => joint.2.neg-lim-sw-in
#connect positive limit signals to home inputs
net Xmax => joint.0.home-sw-in
net Ymax => joint.1.home-sw-in
net Zmax => joint.2.home-sw-in
# Spindle Contactor Enable
setp hm2_5i20.0.gpio.041.is_output TRUE
setp hm2_5i20.0.gpio.041.invert_output TRUE
# Door Closed - Energizes spindle contactor
net CLOSED hm2_5i20.0.gpio.029.in_not hm2_5i20.0.gpio.041.out
# Main Contactors - True when both contactors are energized
net ACOK hm2_5i20.0.gpio.035.in_not
# VFD Fault Relay - True when VFD is not faulted
#net VFDOK hm2_5i20.0.gpio.031.in_not
# A Axis Home - On Sieg machines there is no VFD fault signal,
# it is used for the A axis home sensor on 4 axis machines
#net VFDOK hm2_5i20.0.gpio.031.in_not
net AHOME hm2_5i20.0.gpio.031.in joint.3.home-sw-in
# Spindle Contactor - False when spindle contactor is energized
net SOFF hm2_5i20.0.gpio.033.in halui.program.pause motion.feed-hold
# Axis Drive Status Signals
# True when YAKO stepper drive is on a full step position
# True when a Leadshine stepper drive is in the READY state
net DRV1 hm2_5i20.0.gpio.025.in_not
net DRV2 hm2_5i20.0.gpio.036.in_not
net DRV3 hm2_5i20.0.gpio.027.in_not
net DRV4 hm2_5i20.0.gpio.038.in_not
# Output Bits
# KA1
setp hm2_5i20.0.gpio.040.is_output TRUE
setp hm2_5i20.0.gpio.040.invert_output TRUE
net KA1 spindle.0.reverse => hm2_5i20.0.gpio.040.out
# KA2
setp hm2_5i20.0.gpio.042.is_output TRUE
setp hm2_5i20.0.gpio.042.invert_output TRUE
net KA2 spindle.0.on => hm2_5i20.0.gpio.042.out
# Flood Coolant
setp hm2_5i20.0.gpio.043.is_output TRUE
setp hm2_5i20.0.gpio.043.invert_output TRUE
net M8 hm2_5i20.0.gpio.043.out => iocontrol.0.coolant-flood
# Mist Coolant
setp hm2_5i20.0.gpio.045.is_output TRUE
setp hm2_5i20.0.gpio.045.invert_output TRUE
net M7 hm2_5i20.0.gpio.045.out => iocontrol.0.coolant-mist
# hook the functions to threads
# read inputs
addf hm2_5i20.0.read servo-thread
# handle motion commands
addf motion-command-handler servo-thread
# run the motion controller
addf motion-controller servo-thread
# write outputs
addf hm2_5i20.0.write servo-thread
# toggle the charge pump
addf charge-pump servo-thread

View File

@@ -0,0 +1,279 @@
# EMC controller parameters for Mesa 5i20 controlled 4 axis Smithy 622 Mill
[EMC]
MACHINE = 4 Axis Smithy 622 Mill
VERSION = 1.1
DEBUG = 0x00000000
#DEBUG = 0x7FFFFFFF
[DISPLAY]
#DISPLAY = eztrol
# CYCLE_TIME is used by eztrol
CYCLE_TIME = .1
DISPLAY = axis
#DISPLAY = tklinuxcnc
#HELP_FILE = /usr/share/doc/linuxcnc/tklinuxcnc.txt
TKPKG = Ngcgui 1.0
TKPKG = Ngcguittt 1.0
# note: ngcgui_app.tcl must precede ngcgui_ttt.tcl
NGCGUI_FONT = Helvetica -12 normal
TTT = truetype-tracer
TTT_PREAMBLE = in_std.ngc
NGCGUI_PREAMBLE = in_std.ngc
NGCGUI_POSTAMBLE = bye.ngc
NGCGUI_SUBFILE = backlash.ngc
NGCGUI_SUBFILE = hole_circle.ngc
NGCGUI_SUBFILE = helix.ngc
NGCGUI_SUBFILE = helix_rtheta.ngc
NGCGUI_SUBFILE = slot.ngc
NGCGUI_SUBFILE = simp.ngc
NGCGUI_SUBFILE = xyz.ngc
NGCGUI_SUBFILE = iquad.ngc
NGCGUI_SUBFILE = oquad.ngc
NGCGUI_SUBFILE = db25.ngc
NGCGUI_SUBFILE = ihex.ngc
NGCGUI_SUBFILE = ohex.ngc
NGCGUI_SUBFILE = gosper.ngc
NGCGUI_SUBFILE = ""
#NGCGUI_SUBFILE = "" use when imageframe is specified if
# opening other files is required
# images will be put in a toplevel window
NGCGUI_OPTIONS =
#NGCGUI_OPTIONS = opt1 opt2 ...
# opt items:
# nonew -- disallow making a new tab page
# noremove -- disallow removing any tab page
# noauto -- no autosend (makeFile, then manually send)
# noiframe -- no internal image, image on separate toplevel
POSITION_OFFSET = RELATIVE
POSITION_FEEDBACK = ACTUAL
MAX_FEED_OVERRIDE = 1.5
MIN_SPINDLE_OVERRIDE = 0.2
MAX_SPINDLE_OVERRIDE = 1.5
INTRO_GRAPHIC = linuxcnc.gif
INTRO_TIME = 5
INCREMENTS = .1in .05in .01in .005in .001in .0005in .0001in
PROGRAM_PREFIX = ../../nc_files/
#EDITOR = geany
TOOL_EDITOR = tooledit
DEFAULT_LINEAR_VELOCITY = 0.2
MAX_LINEAR_VELOCITY = 3.0
DEFAULT_ANGULAR_VELOCITY = 12.0
MAX_ANGULAR_VELOCITY = 60
[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 = python3
[RS274NGC]
PARAMETER_FILE = emc.var
SUBROUTINE_PATH = ../../nc_files/ngcgui_lib:../../nc_files/ngcgui_lib/utilitysubs
USER_M_PATH = ../../nc_files/ngcgui_lib/mfiles
[EMCMOT]
EMCMOT = motmod
SHMEM_KEY = 111
COMM_TIMEOUT = 1.0
BASE_PERIOD = 1000000
SERVO_PERIOD = 1000000
TRAJ_PERIOD = 1000000
[TASK]
TASK = milltask
CYCLE_TIME = 0.001
[HAL]
HALUI = halui
HALFILE = 622_4axis.hal
#HALFILE = naiky.hal
EZTROL_HALFILE = 5i20eztrol.hal
HALFILE = axis_manualtoolchange.hal
[HALUI]
#No Content
[TRAJ]
COORDINATES = X Y Z A
LINEAR_UNITS = inch
ANGULAR_UNITS = degree
MAX_LINEAR_VELOCITY = 3.0
MAX_LINEAR_ACCELERATION = 20.0
DEFAULT_LINEAR_VELOCITY = 0.2
[EMCIO]
TOOL_TABLE = mill.tbl
#TOOL_CHANGE_POSITION = 0 0 2
#TOOL_CHANGE_WITH_SPINDLE_ON = 1
TOOL_CHANGE_QUILL_UP = 1
#TOOL_CHANGE_AT_G30 = 1
[KINS]
KINEMATICS = trivkins
JOINTS = 4
[AXIS_X]
MIN_LIMIT = -11.6
MAX_LIMIT = 0.2
MAX_VELOCITY = 3.0
MAX_ACCELERATION = 20.0
[JOINT_0]
TYPE = LINEAR
HOME = 0.000
MAX_VELOCITY = 3.0
MAX_ACCELERATION = 20.0
STEPGEN_MAXVEL = 0.0
STEPGEN_MAXACCEL = 0.0
BACKLASH = 0.0000
# Leadscrew Pitch = 4mm
# Drive Ratio = 1:1
# Steps/Rev = 200 * 50uSteps = 10000
# Vel at 200k Steps/S = 180"/min
SCALE = 63500
OUTPUT_SCALE = 1.000
MIN_LIMIT = -11.6
MAX_LIMIT = 0.2
FERROR = 0.25
MIN_FERROR = 0.1
HOME_OFFSET = 0.25
HOME_SEARCH_VEL = 0.5
HOME_LATCH_VEL = 0.05
HOME_FINAL_VEL = 0.5
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 2
[AXIS_Y]
MIN_LIMIT = -5.3
MAX_LIMIT = 0.2
MAX_VELOCITY = 3.0
MAX_ACCELERATION = 20.0
[JOINT_1]
TYPE = LINEAR
HOME = 0.000
MAX_VELOCITY = 3.0
MAX_ACCELERATION = 20.0
STEPGEN_MAXVEL = 0.0
STEPGEN_MAXACCEL = 0.0
BACKLASH = 0.0000
# Leadscrew Pitch = 4mm
# Drive Ratio = 1:1
# Steps/Rev = 200 * 50uSteps = 10000
# Vel at 200k Steps/S = 180"/min
SCALE = -63500
OUTPUT_SCALE = 1.000
MIN_LIMIT = -5.3
MAX_LIMIT = 0.2
FERROR = 0.25
MIN_FERROR = 0.1
HOME_OFFSET = 0.25
HOME_SEARCH_VEL = 0.5
HOME_LATCH_VEL = 0.05
HOME_FINAL_VEL = 0.5
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 1
[AXIS_Z]
MIN_LIMIT = -10.2
MAX_LIMIT = 0.2
MAX_VELOCITY = 2.0
MAX_ACCELERATION = 20.0
[JOINT_2]
TYPE = LINEAR
HOME = 0.000
MAX_VELOCITY = 2.0
MAX_ACCELERATION = 20.0
STEPGEN_MAXVEL = 0.0
STEPGEN_MAXACCEL = 0.0
BACKLASH = 0.0000
# Leadscrew Pitch = 4mm
# Drive Ratio = 1:1
# Steps/Rev = 200 * 50uSteps = 10000
# Vel at 200k Steps/S = 180"/min
SCALE = -63500
OUTPUT_SCALE = 1.000
MIN_LIMIT = -10.2
MAX_LIMIT = 0.2
FERROR = 0.25
MIN_FERROR = 0.1
HOME_OFFSET = 0.25
HOME_SEARCH_VEL = 0.5
HOME_LATCH_VEL = 0.05
HOME_FINAL_VEL = 0.5
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 0
[AXIS_A]
MIN_LIMIT = -360000.0
MAX_LIMIT = 360000.0
MAX_VELOCITY = 60.0
MAX_ACCELERATION = 120.0
[JOINT_3]
TYPE = ANGULAR
HOME = 0.000
MAX_VELOCITY = 60.0
MAX_ACCELERATION = 120.0
STEPGEN_MAXVEL = 0.0
STEPGEN_MAXACCEL = 0.0
BACKLASH = 0.0000
# Drive Ratio = 1:4
# Steps/Rev = 200 * 50uSteps = 10000
# Vel at 200k Steps/S = 4800 deg/min
SCALE = -1111.11111111111111111111111111
# If [TRAJ]ANGULAR_UNITS = grad
#SCALE = -1000
OUTPUT_SCALE = 1.000
MIN_LIMIT = -360000.0
MAX_LIMIT = 360000.0
FERROR = 0.25
MIN_FERROR = 0.1
HOME_OFFSET = 0.0
HOME_SEARCH_VEL = 36.0
HOME_LATCH_VEL = 3.6
HOME_FINAL_VEL = 36.0
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 3
[EZTROL]
QTEMC_PLUGIN = /usr/share/eztrol/lib/libqtemc-2.4.6.so
QTEMCHAL_PLUGIN = /usr/share/eztrol/lib/libqtemchal-2.4.6.so
EZTROLGUI = /usr/share/eztrol/eztrolgui/libguimill2.so
MAX_SPINDLE_RPM = 5000
DIR_PLUGIN = /usr/share/eztrol/eztrolplugins
PLUGIN = libeztrol_wizard_plugin.so
PLUGIN = libeztrol_webwizard_plugin.so
# disabling settings gcode editor will benefit systems with small memory size
ENABLE_SETTINGS_EDITOR = true
# disable OpenGL 3D Preview
ENABLE_3D_PREVIEW = true
# set to Full Screen TRUE/FALSE
FULLSCREEN = false
# Settings Tab GCode Editor Syntax Highlight
# color guide - http://www.w3.org/TR/SVG/types.html#ColorKeywords
AXIS_COLOR = magenta
LINENUMBER_COLOR = rosybrown
GM_COLOR = blue
STFDRLPQH_COLOR = red
O_COLOR = blue
RESERVEDWORDS_COLOR = darkviolet
VARIABLE_COLOR = olive
COMMENT_COLOR = seagreen
GUI_STYLESHEET = eztrolstyle1.qss
[EZTROLWIZARDS]
WIZARD_DIRECTORY = /usr/share/eztrol/eztrolwizards
SAVE_DIRECTORY = ../../nc_files
[EZTROLWEBWIZARD]
URL = http://www.mattshaver.com/ecmacam/ecmacam.htm

View File

@@ -0,0 +1,121 @@
loadrt [KINS]KINEMATICS
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=[KINS]JOINTS
loadrt hal_parport cfg=0x378
setp parport.0.reset-time 4000
loadrt stepgen step_type=0,0,0,0
loadrt charge_pump
loadrt match8 count=1
loadrt pwmgen output_type=1
setp pwmgen.0.pwm-freq 5.0
#4000 RPM spindles (early production)
setp pwmgen.0.scale 4000
#5000 RPM spindles (late production)
#setp pwmgen.0.scale 5000
setp pwmgen.0.offset 0.0
setp pwmgen.0.min-dc 0.01
setp pwmgen.0.max-dc 0.99
setp pwmgen.0.dither-pwm true
addf parport.0.read base-thread
addf stepgen.make-pulses base-thread
addf charge-pump 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
addf match8.0 servo-thread
net spindle-cmd spindle.0.speed-out pwmgen.0.value
net spindle-enable spindle.0.on pwmgen.0.enable
net coolant-flood parport.0.pin-01-out iocontrol.0.coolant-flood
net xdir parport.0.pin-02-out stepgen.0.dir
net xstep parport.0.pin-03-out stepgen.0.step
setp parport.0.pin-03-out-reset 1
net ydir parport.0.pin-04-out stepgen.1.dir
net ystep parport.0.pin-05-out stepgen.1.step
setp parport.0.pin-05-out-reset 1
net zdir parport.0.pin-06-out stepgen.2.dir
net zstep parport.0.pin-07-out stepgen.2.step
setp parport.0.pin-07-out-reset 1
net adir parport.0.pin-08-out stepgen.3.dir
net astep parport.0.pin-09-out stepgen.3.step
setp parport.0.pin-09-out-reset 1
#PMDX-110
net spindle-dir parport.0.pin-14-out spindle.0.reverse
#PMDX-131
#net spindle-dir parport.0.pin-14-out spindle.0.forward
net spindle-pwm parport.0.pin-16-out pwmgen.0.pwm
net charge-pump parport.0.pin-17-out charge-pump.out
net estop-in parport.0.pin-10-in-not iocontrol.0.emc-enable-in
net estop-out charge-pump.enable halui.machine.is-on
#PMDX-110
net run parport.0.pin-11-in-not halui.program.pause motion.feed-hold
#PMDX-131
#net run parport.0.pin-11-in halui.program.pause motion.feed-hold
#normally closed switches (late production)
net all-home parport.0.pin-12-in
#normally open switches (early production)
#net all-home parport.0.pin-12-in-not
setp stepgen.0.position-scale [JOINT_0]SCALE
setp stepgen.0.steplen 1
setp stepgen.0.stepspace 0
setp stepgen.0.dirhold 35000
setp stepgen.0.dirsetup 16000
setp stepgen.0.maxaccel [JOINT_0]STEPGEN_MAXACCEL
net xpos-cmd joint.0.motor-pos-cmd stepgen.0.position-cmd
net xpos-fb stepgen.0.position-fb joint.0.motor-pos-fb
net xenable joint.0.amp-enable-out stepgen.0.enable
net all-home joint.0.home-sw-in
setp stepgen.1.position-scale [JOINT_1]SCALE
setp stepgen.1.steplen 1
setp stepgen.1.stepspace 0
setp stepgen.1.dirhold 35000
setp stepgen.1.dirsetup 16000
setp stepgen.1.maxaccel [JOINT_1]STEPGEN_MAXACCEL
net ypos-cmd joint.1.motor-pos-cmd stepgen.1.position-cmd
net ypos-fb stepgen.1.position-fb joint.1.motor-pos-fb
net yenable joint.1.amp-enable-out stepgen.1.enable
net all-home joint.1.home-sw-in
setp stepgen.2.position-scale [JOINT_2]SCALE
setp stepgen.2.steplen 1
setp stepgen.2.stepspace 0
setp stepgen.2.dirhold 35000
setp stepgen.2.dirsetup 16000
setp stepgen.2.maxaccel [JOINT_2]STEPGEN_MAXACCEL
net zpos-cmd joint.2.motor-pos-cmd stepgen.2.position-cmd
net zpos-fb stepgen.2.position-fb joint.2.motor-pos-fb
net zenable joint.2.amp-enable-out stepgen.2.enable
net all-home joint.2.home-sw-in
setp stepgen.3.position-scale [JOINT_3]SCALE
setp stepgen.3.steplen 1
setp stepgen.3.stepspace 0
setp stepgen.3.dirhold 35000
setp stepgen.3.dirsetup 16000
setp stepgen.3.maxaccel [JOINT_3]STEPGEN_MAXACCEL
net apos-cmd joint.3.motor-pos-cmd stepgen.3.position-cmd
net apos-fb stepgen.3.position-fb joint.3.motor-pos-fb
net aenable joint.3.amp-enable-out stepgen.3.enable
newsig false bit
sets false FALSE
net xhoming joint.0.homing match8.0.a0
net yhoming joint.1.homing match8.0.a1
net zhoming joint.2.homing match8.0.a2
net false match8.0.b0 match8.0.b1 match8.0.b2
net all-home match8.0.in
net limit match8.0.out joint.0.neg-lim-sw-in
# These loopbacks are usually disconnected by a postgui halfile
net tool-change-loop iocontrol.0.tool-change iocontrol.0.tool-changed
net tool-prepare-loopback iocontrol.0.tool-prepare iocontrol.0.tool-prepared

View File

@@ -0,0 +1,274 @@
# EMC controller parameters for Parallel Port controlled Smithy 622 Gecko Mill
[EMC]
MACHINE = Smithy 622 Gecko Mill
VERSION = 1.1
DEBUG = 0x00000000
#DEBUG = 0x7FFFFFFF
[DISPLAY]
#DISPLAY = eztrol
# CYCLE_TIME is used by eztrol
CYCLE_TIME = .1
DISPLAY = axis
#DISPLAY = tklinuxcnc
#HELP_FILE = /usr/share/doc/linuxcnc/tklinuxcnc.txt
TKPKG = Ngcgui 1.0
TKPKG = Ngcguittt 1.0
# note: ngcgui_app.tcl must precede ngcgui_ttt.tcl
NGCGUI_FONT = Helvetica -12 normal
TTT = truetype-tracer
TTT_PREAMBLE = in_std.ngc
NGCGUI_PREAMBLE = in_std.ngc
NGCGUI_POSTAMBLE = bye.ngc
NGCGUI_SUBFILE = backlash.ngc
NGCGUI_SUBFILE = hole_circle.ngc
NGCGUI_SUBFILE = helix.ngc
NGCGUI_SUBFILE = helix_rtheta.ngc
NGCGUI_SUBFILE = slot.ngc
NGCGUI_SUBFILE = simp.ngc
NGCGUI_SUBFILE = xyz.ngc
NGCGUI_SUBFILE = iquad.ngc
NGCGUI_SUBFILE = oquad.ngc
NGCGUI_SUBFILE = db25.ngc
NGCGUI_SUBFILE = ihex.ngc
NGCGUI_SUBFILE = ohex.ngc
NGCGUI_SUBFILE = gosper.ngc
NGCGUI_SUBFILE = ""
#NGCGUI_SUBFILE = "" use when imageframe is specified if
# opening other files is required
# images will be put in a toplevel window
NGCGUI_OPTIONS =
#NGCGUI_OPTIONS = opt1 opt2 ...
# opt items:
# nonew -- disallow making a new tab page
# noremove -- disallow removing any tab page
# noauto -- no autosend (makeFile, then manually send)
# noiframe -- no internal image, image on separate toplevel
POSITION_OFFSET = RELATIVE
POSITION_FEEDBACK = ACTUAL
MAX_FEED_OVERRIDE = 1.5
MIN_SPINDLE_OVERRIDE = 0.2
MAX_SPINDLE_OVERRIDE = 1.5
INTRO_GRAPHIC = linuxcnc.gif
INTRO_TIME = 5
INCREMENTS = .1in .05in .01in .005in .001in .0005in .0001in
PROGRAM_PREFIX = ../../nc_files/
#EDITOR = geany
TOOL_EDITOR = tooledit
DEFAULT_LINEAR_VELOCITY = 0.2
MAX_LINEAR_VELOCITY = 1.5
DEFAULT_ANGULAR_VELOCITY = 12.0
MAX_ANGULAR_VELOCITY = 60
[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 = python3
[RS274NGC]
PARAMETER_FILE = emc.var
SUBROUTINE_PATH = ../../nc_files/ngcgui_lib:../../nc_files/ngcgui_lib/utilitysubs
USER_M_PATH = ../../nc_files/ngcgui_lib/mfiles
[EMCMOT]
EMCMOT = motmod
SHMEM_KEY = 111
COMM_TIMEOUT = 1.0
BASE_PERIOD = 50000
SERVO_PERIOD = 1000000
TRAJ_PERIOD = 10000000
[TASK]
TASK = milltask
CYCLE_TIME = 0.010
[HAL]
HALUI = halui
HALFILE = 622gecko.hal
EZTROL_HALFILE = eztrol.hal
HALFILE = axis_manualtoolchange.hal
[HALUI]
#No Content
[TRAJ]
COORDINATES = X Y Z A
LINEAR_UNITS = inch
ANGULAR_UNITS = degree
MAX_LINEAR_VELOCITY = 1.5
MAX_LINEAR_ACCELERATION = 1.5
DEFAULT_LINEAR_VELOCITY = 0.2
[EMCIO]
TOOL_TABLE = mill.tbl
#TOOL_CHANGE_POSITION = 0 0 2
#TOOL_CHANGE_WITH_SPINDLE_ON = 1
TOOL_CHANGE_QUILL_UP = 1
#TOOL_CHANGE_AT_G30 = 1
[KINS]
KINEMATICS = trivkins
JOINTS = 4
[AXIS_X]
MIN_LIMIT = -10.8
MAX_LIMIT = 0.2
MAX_VELOCITY = 1.5
MAX_ACCELERATION = 1.5
[JOINT_0]
TYPE = LINEAR
HOME = 0.000
MAX_VELOCITY = 1.5
MAX_ACCELERATION = 1.5
STEPGEN_MAXVEL = 1.6
STEPGEN_MAXACCEL = 1.6
BACKLASH = 0.0000
# Leadscrew Pitch = 4mm
# Drive Ratio = 1:1
# Steps/Rev = 200 * 10uSteps = 2000
# Vel at 200k Steps/S = 944"/min
SCALE = -12700
OUTPUT_SCALE = 1.000
MIN_LIMIT = -10.8
MAX_LIMIT = 0.2
FERROR = 0.05
MIN_FERROR = 0.01
HOME_OFFSET = 0.25
HOME_SEARCH_VEL = 0.5
HOME_LATCH_VEL = -0.05
HOME_FINAL_VEL = 0.5
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 2
[AXIS_Y]
MIN_LIMIT = -5.05
MAX_LIMIT = 0.2
MAX_VELOCITY = 1.5
MAX_ACCELERATION = 1.5
[JOINT_1]
TYPE = LINEAR
HOME = 0.000
MAX_VELOCITY = 1.5
MAX_ACCELERATION = 1.5
STEPGEN_MAXVEL = 1.6
STEPGEN_MAXACCEL = 1.6
BACKLASH = 0.0000
# Leadscrew Pitch = 4mm
# Drive Ratio = 1:1
# Steps/Rev = 200 * 10uSteps = 2000
# Vel at 200k Steps/S = 944"/min
SCALE = 12700
OUTPUT_SCALE = 1.000
MIN_LIMIT = -5.05
MAX_LIMIT = 0.2
FERROR = 0.05
MIN_FERROR = 0.01
HOME_OFFSET = 0.25
HOME_SEARCH_VEL = 0.5
HOME_LATCH_VEL = -0.05
HOME_FINAL_VEL = 0.5
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 1
[AXIS_Z]
MIN_LIMIT = -9.8
MAX_LIMIT = 0.2
MAX_VELOCITY = 0.8
MAX_ACCELERATION = 1.5
[JOINT_2]
TYPE = LINEAR
HOME = 0.000
MAX_VELOCITY = 0.8
MAX_ACCELERATION = 1.5
STEPGEN_MAXVEL = 1.3
STEPGEN_MAXACCEL = 1.6
BACKLASH = 0.0000
# Leadscrew Pitch = 4mm
# Drive Ratio = 1:1
# Steps/Rev = 200 * 10uSteps = 2000
# Vel at 200k Steps/S = 944"/min
SCALE = 12700
OUTPUT_SCALE = 1.000
MIN_LIMIT = -9.8
MAX_LIMIT = 0.2
FERROR = 0.05
MIN_FERROR = 0.01
HOME_OFFSET = 0.25
HOME_SEARCH_VEL = 0.5
HOME_LATCH_VEL = -0.05
HOME_FINAL_VEL = 0.5
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 0
[AXIS_A]
MIN_LIMIT = -36000.0
MAX_LIMIT = 36000.0
MAX_VELOCITY = 30.0
MAX_ACCELERATION = 300.0
[JOINT_3]
TYPE = ANGULAR
HOME = 0.000
MAX_VELOCITY = 30.0
MAX_ACCELERATION = 300.0
STEPGEN_MAXVEL = 32.0
STEPGEN_MAXACCEL = 310.0
BACKLASH = 0.0000
SCALE = -500
OUTPUT_SCALE = 1.000
MIN_LIMIT = -36000.0
MAX_LIMIT = 36000.0
FERROR = 5.0
MIN_FERROR = 1.0
HOME_OFFSET = 0.0
HOME_SEARCH_VEL = 0.0
HOME_LATCH_VEL = 0.0
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 3
[EZTROL]
QTEMC_PLUGIN = /usr/share/eztrol/lib/libqtemc-2.4.6.so
QTEMCHAL_PLUGIN = /usr/share/eztrol/lib/libqtemchal-2.4.6.so
EZTROLGUI = /usr/share/eztrol/eztrolgui/libguimill2.so
#4000 RPM spindles (early production)
#MAX_SPINDLE_RPM = 4000
#5000 RPM spindles (late production)
MAX_SPINDLE_RPM = 5000
DIR_PLUGIN = /usr/share/eztrol/eztrolplugins
PLUGIN = libeztrol_wizard_plugin.so
PLUGIN = libeztrol_webwizard_plugin.so
# disabling settings gcode editor will benefit systems with small memory size
ENABLE_SETTINGS_EDITOR = true
# disable OpenGL 3D Preview
ENABLE_3D_PREVIEW = true
# set to Full Screen TRUE/FALSE
FULLSCREEN = false
# Settings Tab GCode Editor Syntax Highlight
# color guide - http://www.w3.org/TR/SVG/types.html#ColorKeywords
AXIS_COLOR = magenta
LINENUMBER_COLOR = rosybrown
GM_COLOR = blue
STFDRLPQH_COLOR = red
O_COLOR = blue
RESERVEDWORDS_COLOR = darkviolet
VARIABLE_COLOR = olive
COMMENT_COLOR = seagreen
GUI_STYLESHEET = eztrolstyle1.qss
[EZTROLWIZARDS]
WIZARD_DIRECTORY = /usr/share/eztrol/eztrolwizards
SAVE_DIRECTORY = ../../nc_files
[EZTROLWEBWIZARD]
URL = http://www.mattshaver.com/ecmacam/ecmacam.htm

View File

@@ -0,0 +1,180 @@
# 5i20 config file for Smithy 622 Mill with Leadshine Drives
# load the hostmot2 driver, this doesn't do anything by itself,
# it just waits for low-level drivers to register boards
loadrt hostmot2 debug_idrom=1 debug_module_descriptors=1 debug_pin_descriptors=1 debug_modules=1
# load the low-level driver for the board
# this will load the board's firmware and register it with the hostmot2
# driver loaded above, and it'll show up in HAL
loadrt hm2_pci config="firmware=hm2/5i20/SVST2_4_7I47.BIT num_encoders=1 num_pwmgens=1 num_stepgens=4"
# set up the watchdog
#setp hm2_5i20.0.watchdog.timeout_ns 10000000
# load kinematics
loadrt [KINS]KINEMATICS
# load motion controller, get name and thread periods from ini file
loadrt [EMCMOT]EMCMOT base_period_nsec=[EMCMOT]BASE_PERIOD servo_period_nsec=[EMCMOT]SERVO_PERIOD traj_period_nsec=[EMCMOT]TRAJ_PERIOD key=[EMCMOT]SHMEM_KEY num_joints=[KINS]JOINTS
# load charge pump
loadrt charge_pump
# These loopbacks are usually disconnected by a postgui halfile
net tool-change-loop iocontrol.0.tool-change iocontrol.0.tool-changed
net tool-prepare-loopback iocontrol.0.tool-prepare iocontrol.0.tool-prepared
#the Enable signal is used to permanently enable things
newsig Enable bit
sets Enable TRUE
#configure the spindle speed
net scmd spindle.0.speed-out hm2_5i20.0.pwmgen.00.value
setp hm2_5i20.0.pwmgen.00.scale 5000
setp hm2_5i20.0.pwmgen.00.output-type 1
setp hm2_5i20.0.pwmgen.pwm_frequency 100
# invert the step pulse polarity
setp hm2_5i20.0.gpio.000.invert_output TRUE
setp hm2_5i20.0.gpio.002.invert_output TRUE
setp hm2_5i20.0.gpio.016.invert_output TRUE
setp hm2_5i20.0.gpio.018.invert_output TRUE
# configure the stepgen parameters
setp hm2_5i20.0.stepgen.00.dirsetup 5000
setp hm2_5i20.0.stepgen.00.dirhold 1250
setp hm2_5i20.0.stepgen.00.steplen 1250
setp hm2_5i20.0.stepgen.00.stepspace 1250
setp hm2_5i20.0.stepgen.00.position-scale [JOINT_0]SCALE
setp hm2_5i20.0.stepgen.00.maxaccel [JOINT_0]STEPGEN_MAXACCEL
setp hm2_5i20.0.stepgen.00.maxvel [JOINT_0]STEPGEN_MAXVEL
setp hm2_5i20.0.stepgen.01.dirsetup 5000
setp hm2_5i20.0.stepgen.01.dirhold 1250
setp hm2_5i20.0.stepgen.01.steplen 1250
setp hm2_5i20.0.stepgen.01.stepspace 1250
setp hm2_5i20.0.stepgen.01.position-scale [JOINT_1]SCALE
setp hm2_5i20.0.stepgen.01.maxaccel [JOINT_1]STEPGEN_MAXACCEL
setp hm2_5i20.0.stepgen.01.maxvel [JOINT_1]STEPGEN_MAXVEL
setp hm2_5i20.0.stepgen.02.dirsetup 5000
setp hm2_5i20.0.stepgen.02.dirhold 1250
setp hm2_5i20.0.stepgen.02.steplen 1250
setp hm2_5i20.0.stepgen.02.stepspace 1250
setp hm2_5i20.0.stepgen.02.position-scale [JOINT_2]SCALE
setp hm2_5i20.0.stepgen.02.maxaccel [JOINT_2]STEPGEN_MAXACCEL
setp hm2_5i20.0.stepgen.02.maxvel [JOINT_2]STEPGEN_MAXVEL
setp hm2_5i20.0.stepgen.03.dirsetup 5000
setp hm2_5i20.0.stepgen.03.dirhold 1250
setp hm2_5i20.0.stepgen.03.steplen 1250
setp hm2_5i20.0.stepgen.03.stepspace 1250
setp hm2_5i20.0.stepgen.03.position-scale [JOINT_3]SCALE
setp hm2_5i20.0.stepgen.03.maxaccel [JOINT_3]STEPGEN_MAXACCEL
setp hm2_5i20.0.stepgen.03.maxvel [JOINT_3]STEPGEN_MAXVEL
# connect position commands from motion module to step generator
net Xpos-cmd joint.0.motor-pos-cmd => hm2_5i20.0.stepgen.00.position-cmd
net Ypos-cmd joint.1.motor-pos-cmd => hm2_5i20.0.stepgen.01.position-cmd
net Zpos-cmd joint.2.motor-pos-cmd => hm2_5i20.0.stepgen.02.position-cmd
#net Apos-cmd joint.3.motor-pos-cmd => hm2_5i20.0.stepgen.03.position-cmd
# connect position feedback from step generators to motion module
net Xpos-fb hm2_5i20.0.stepgen.00.position-fb => joint.0.motor-pos-fb
net Ypos-fb hm2_5i20.0.stepgen.01.position-fb => joint.1.motor-pos-fb
net Zpos-fb hm2_5i20.0.stepgen.02.position-fb => joint.2.motor-pos-fb
#net Apos-fb hm2_5i20.0.stepgen.03.position-fb => joint.3.motor-pos-fb
# connect enable signals for step generators
net Xen joint.0.amp-enable-out => hm2_5i20.0.stepgen.00.enable
net Yen joint.1.amp-enable-out => hm2_5i20.0.stepgen.01.enable
net Zen joint.2.amp-enable-out => hm2_5i20.0.stepgen.02.enable
#net Aen joint.3.amp-enable-out => hm2_5i20.0.stepgen.03.enable
# enable velocity mode jogging
net Enable joint.0.jog-vel-mode
net Enable joint.1.jog-vel-mode
net Enable joint.2.jog-vel-mode
#net Enable joint.3.jog-vel-mode
# enable the PWM generator
net Enable => hm2_5i20.0.pwmgen.00.enable
# enable the charge pump
net Enable => charge-pump.enable
# connect the charge pump signal to an output
setp hm2_5i20.0.gpio.022.is_output TRUE
net chargepump hm2_5i20.0.gpio.022.out => charge-pump.out
# Safety Relay Monitoring Contacts
net estop-enable hm2_5i20.0.gpio.037.in => iocontrol.0.emc-enable-in
# Run Switch
net machine-on hm2_5i20.0.gpio.039.in_not => halui.machine.on
#connect limit switches to limit inputs
net Xmax hm2_5i20.0.gpio.032.in => joint.0.pos-lim-sw-in
net Xmin hm2_5i20.0.gpio.034.in => joint.0.neg-lim-sw-in
net Ymax hm2_5i20.0.gpio.028.in => joint.1.pos-lim-sw-in
net Ymin hm2_5i20.0.gpio.030.in => joint.1.neg-lim-sw-in
net Zmax hm2_5i20.0.gpio.024.in_not => joint.2.pos-lim-sw-in
net Zmin hm2_5i20.0.gpio.026.in_not => joint.2.neg-lim-sw-in
#connect positive limit signals to home inputs
net Xmax => joint.0.home-sw-in
net Ymax => joint.1.home-sw-in
net Zmax => joint.2.home-sw-in
# Spindle Contactor Enable
setp hm2_5i20.0.gpio.041.is_output TRUE
setp hm2_5i20.0.gpio.041.invert_output TRUE
# Door Closed - Energizes spindle contactor
net CLOSED hm2_5i20.0.gpio.029.in_not hm2_5i20.0.gpio.041.out
# Main Contactors - True when both contactors are energized
net ACOK hm2_5i20.0.gpio.035.in_not
# VFD Fault Relay - True when VFD is not faulted
#net VFDOK hm2_5i20.0.gpio.031.in_not
# A Axis Home - On Sieg machines there is no VFD fault signal,
# it is used for the A axis home sensor on 4 axis machines
#net VFDOK hm2_5i20.0.gpio.031.in_not
#net AHOME hm2_5i20.0.gpio.031.in joint.3.home-sw-in
# Spindle Contactor - False when spindle contactor is energized
net SOFF hm2_5i20.0.gpio.033.in halui.program.pause motion.feed-hold
# Axis Drive Status Signals
# True when YAKO stepper drive is on a full step position
# True when a Leadshine stepper drive is in the READY state
net DRV1 hm2_5i20.0.gpio.025.in_not
net DRV2 hm2_5i20.0.gpio.036.in_not
net DRV3 hm2_5i20.0.gpio.027.in_not
net DRV4 hm2_5i20.0.gpio.038.in_not
# Output Bits
# KA1
setp hm2_5i20.0.gpio.040.is_output TRUE
setp hm2_5i20.0.gpio.040.invert_output TRUE
net KA1 spindle.0.reverse => hm2_5i20.0.gpio.040.out
# KA2
setp hm2_5i20.0.gpio.042.is_output TRUE
setp hm2_5i20.0.gpio.042.invert_output TRUE
net KA2 spindle.0.on => hm2_5i20.0.gpio.042.out
# Flood Coolant
setp hm2_5i20.0.gpio.043.is_output TRUE
setp hm2_5i20.0.gpio.043.invert_output TRUE
net M8 hm2_5i20.0.gpio.043.out => iocontrol.0.coolant-flood
# Mist
setp hm2_5i20.0.gpio.045.is_output TRUE
setp hm2_5i20.0.gpio.045.invert_output TRUE
net M7 hm2_5i20.0.gpio.045.out => iocontrol.0.coolant-mist
# hook the functions to threads
# read inputs
addf hm2_5i20.0.read servo-thread
# handle motion commands
addf motion-command-handler servo-thread
# run the motion controller
addf motion-controller servo-thread
# write outputs
addf hm2_5i20.0.write servo-thread
# toggle the charge pump
addf charge-pump servo-thread

View File

@@ -0,0 +1,280 @@
# EMC controller parameters for Mesa 5i20 controlled Smithy 622 Mill with Leadshine Axis Drives
[EMC]
MACHINE = Smithy 622 Mill
VERSION = 1.1
DEBUG = 0x00000000
#DEBUG = 0x7FFFFFFF
[DISPLAY]
#DISPLAY = eztrol
# CYCLE_TIME is used by eztrol
CYCLE_TIME = .1
DISPLAY = axis
#DISPLAY = tklinuxcnc
#HELP_FILE = /usr/share/doc/linuxcnc/tklinuxcnc.txt
TKPKG = Ngcgui 1.0
TKPKG = Ngcguittt 1.0
# note: ngcgui_app.tcl must precede ngcgui_ttt.tcl
NGCGUI_FONT = Helvetica -12 normal
TTT = truetype-tracer
TTT_PREAMBLE = in_std.ngc
NGCGUI_PREAMBLE = in_std.ngc
NGCGUI_POSTAMBLE = bye.ngc
NGCGUI_SUBFILE = backlash.ngc
NGCGUI_SUBFILE = hole_circle.ngc
NGCGUI_SUBFILE = helix.ngc
NGCGUI_SUBFILE = helix_rtheta.ngc
NGCGUI_SUBFILE = slot.ngc
NGCGUI_SUBFILE = simp.ngc
NGCGUI_SUBFILE = xyz.ngc
NGCGUI_SUBFILE = iquad.ngc
NGCGUI_SUBFILE = oquad.ngc
NGCGUI_SUBFILE = db25.ngc
NGCGUI_SUBFILE = ihex.ngc
NGCGUI_SUBFILE = ohex.ngc
NGCGUI_SUBFILE = gosper.ngc
NGCGUI_SUBFILE = ""
#NGCGUI_SUBFILE = "" use when imageframe is specified if
# opening other files is required
# images will be put in a toplevel window
NGCGUI_OPTIONS =
#NGCGUI_OPTIONS = opt1 opt2 ...
# opt items:
# nonew -- disallow making a new tab page
# noremove -- disallow removing any tab page
# noauto -- no autosend (makeFile, then manually send)
# noiframe -- no internal image, image on separate toplevel
POSITION_OFFSET = RELATIVE
POSITION_FEEDBACK = ACTUAL
MAX_FEED_OVERRIDE = 1.5
MIN_SPINDLE_OVERRIDE = 0.2
MAX_SPINDLE_OVERRIDE = 1.5
INTRO_GRAPHIC = linuxcnc.gif
INTRO_TIME = 5
INCREMENTS = .1in .05in .01in .005in .001in .0005in .0001in
PROGRAM_PREFIX = ../../nc_files/
#EDITOR = geany
TOOL_EDITOR = tooledit
DEFAULT_LINEAR_VELOCITY = 0.2
MAX_LINEAR_VELOCITY = 3.0
DEFAULT_ANGULAR_VELOCITY = 12.0
MAX_ANGULAR_VELOCITY = 150.0
PYVCP = keyence.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 = python3
[RS274NGC]
PARAMETER_FILE = emc.var
SUBROUTINE_PATH = ../../nc_files/ngcgui_lib:../../nc_files/ngcgui_lib/utilitysubs
USER_M_PATH = ../../nc_files/ngcgui_lib/mfiles
[EMCMOT]
EMCMOT = motmod
SHMEM_KEY = 111
COMM_TIMEOUT = 1.0
BASE_PERIOD = 1000000
SERVO_PERIOD = 1000000
TRAJ_PERIOD = 1000000
[TASK]
TASK = milltask
CYCLE_TIME = 0.001
[HAL]
HALUI = halui
HALFILE = 622keyence.hal
#HALFILE = naiky.hal
EZTROL_HALFILE = 622eztrol-leadshine.hal
#HALFILE = axis_manualtoolchange.hal
POSTGUI_HALFILE = keyence_postgui.hal
[HALUI]
#No Content
[TRAJ]
COORDINATES = X Y Z
LINEAR_UNITS = inch
ANGULAR_UNITS = degree
MAX_LINEAR_VELOCITY = 3.0
MAX_LINEAR_ACCELERATION = 20.0
DEFAULT_LINEAR_VELOCITY = 0.2
[EMCIO]
TOOL_TABLE = mill.tbl
#TOOL_CHANGE_POSITION = 0 0 2
#TOOL_CHANGE_WITH_SPINDLE_ON = 1
TOOL_CHANGE_QUILL_UP = 1
#TOOL_CHANGE_AT_G30 = 1
[KINS]
KINEMATICS = trivkins
JOINTS = 4
[AXIS_X]
MIN_LIMIT = -11.6
MAX_LIMIT = 0.2
MAX_VELOCITY = 3.0
MAX_ACCELERATION = 20.0
[JOINT_0]
TYPE = LINEAR
HOME = 0.000
MAX_VELOCITY = 3.0
MAX_ACCELERATION = 20.0
STEPGEN_MAXVEL = 0.0
STEPGEN_MAXACCEL = 0.0
BACKLASH = 0.0000
# Leadscrew Pitch = 5mm
# Drive Ratio = 1:1
# Steps/Rev = 200 * 50uSteps = 10000
# Vel at 400k Steps/S = 377"/min
SCALE = 63500
OUTPUT_SCALE = 1.000
MIN_LIMIT = -11.6
MAX_LIMIT = 0.2
FERROR = 0.25
MIN_FERROR = 0.1
HOME_OFFSET = 0.25
HOME_SEARCH_VEL = 0.5
HOME_LATCH_VEL = 0.05
HOME_FINAL_VEL = 0.5
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 2
[AXIS_Y]
MIN_LIMIT = -0.73
MAX_LIMIT = 0.2
MAX_VELOCITY = 3.0
MAX_ACCELERATION = 20.0
[JOINT_1]
TYPE = LINEAR
HOME = 0.000
MAX_VELOCITY = 3.0
MAX_ACCELERATION = 20.0
STEPGEN_MAXVEL = 0.0
STEPGEN_MAXACCEL = 0.0
BACKLASH = 0.0000
# Leadscrew Pitch = 5mm
# Drive Ratio = 1:1
# Steps/Rev = 200 * 50uSteps = 10000
# Vel at 400k Steps/S = 472"/min
SCALE = 63500
OUTPUT_SCALE = 1.000
MIN_LIMIT = -0.73
MAX_LIMIT = 0.2
FERROR = 0.25
MIN_FERROR = 0.1
HOME_OFFSET = 0.25
HOME_SEARCH_VEL = 0.5
HOME_LATCH_VEL = 0.05
HOME_FINAL_VEL = 0.5
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 1
[AXIS_Z]
MIN_LIMIT = -8.25
MAX_LIMIT = 0.2
MAX_VELOCITY = 3.0
MAX_ACCELERATION = 20.0
[JOINT_2]
TYPE = LINEAR
HOME = 0.000
MAX_VELOCITY = 3.0
MAX_ACCELERATION = 20.0
STEPGEN_MAXVEL = 0.0
STEPGEN_MAXACCEL = 0.0
BACKLASH = 0.0000
# Leadscrew Pitch = 5mm
# Drive Ratio = 1:1
# Steps/Rev = 200 * 50uSteps = 10000
# Vel at 400k Steps/S = 377"/min
SCALE = 63500
OUTPUT_SCALE = 1.000
MIN_LIMIT = -8.25
MAX_LIMIT = 0.2
FERROR = 0.25
MIN_FERROR = 0.1
HOME_OFFSET = 0.25
HOME_SEARCH_VEL = 0.5
HOME_LATCH_VEL = 0.05
HOME_FINAL_VEL = 0.5
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 0
[AXIS_A]
MIN_LIMIT = -360000.0
MAX_LIMIT = 360000.0
MAX_VELOCITY = 60.0
MAX_ACCELERATION = 120.0
[JOINT_3]
TYPE = ANGULAR
HOME = 0.000
MAX_VELOCITY = 60.0
MAX_ACCELERATION = 120.0
STEPGEN_MAXVEL = 0.0
STEPGEN_MAXACCEL = 0.0
BACKLASH = 0.0000
# Drive Ratio = 1:4
# Steps/Rev = 200 * 50uSteps = 10000
# Vel at 200k Steps/S = 4800 deg/min
SCALE = -1111.11111111111111111111111111
# If [TRAJ]ANGULAR_UNITS = grad
#SCALE = -1000
OUTPUT_SCALE = 1.000
MIN_LIMIT = -360000.0
MAX_LIMIT = 360000.0
FERROR = 0.25
MIN_FERROR = 0.1
HOME_OFFSET = 0.0
HOME_SEARCH_VEL = 36.0
HOME_LATCH_VEL = 3.6
HOME_FINAL_VEL = 36.0
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 3
[EZTROL]
QTEMC_PLUGIN = /usr/share/eztrol/lib/libqtemc-2.4.6.so
QTEMCHAL_PLUGIN = /usr/share/eztrol/lib/libqtemchal-2.4.6.so
EZTROLGUI = /usr/share/eztrol/eztrolgui/libguimill2.so
MAX_SPINDLE_RPM = 5000
DIR_PLUGIN = /usr/share/eztrol/eztrolplugins
PLUGIN = libeztrol_wizard_plugin.so
PLUGIN = libeztrol_webwizard_plugin.so
# disabling settings gcode editor will benefit systems with small memory size
ENABLE_SETTINGS_EDITOR = true
# disable OpenGL 3D Preview
ENABLE_3D_PREVIEW = true
# set to Full Screen TRUE/FALSE
FULLSCREEN = false
# Settings Tab GCode Editor Syntax Highlight
# color guide - http://www.w3.org/TR/SVG/types.html#ColorKeywords
AXIS_COLOR = magenta
LINENUMBER_COLOR = rosybrown
GM_COLOR = blue
STFDRLPQH_COLOR = red
O_COLOR = blue
RESERVEDWORDS_COLOR = darkviolet
VARIABLE_COLOR = olive
COMMENT_COLOR = seagreen
[EZTROLWIZARDS]
WIZARD_DIRECTORY = /usr/share/eztrol/eztrolwizards
SAVE_DIRECTORY = ../../nc_files
[EZTROLWEBWIZARD]
URL = http://www.mattshaver.com/ecmacam/ecmacam.htm

View File

@@ -0,0 +1,186 @@
# 5i20 config file for Smithy 622 Mill with Leadshine Drives
# load the hostmot2 driver, this doesn't do anything by itself,
# it just waits for low-level drivers to register boards
loadrt hostmot2 debug_idrom=1 debug_module_descriptors=1 debug_pin_descriptors=1 debug_modules=1
# load the low-level driver for the board
# this will load the board's firmware and register it with the hostmot2
# driver loaded above, and it'll show up in HAL
loadrt hm2_pci config="firmware=hm2/5i20/SVST2_4_7I47.BIT num_encoders=1 num_pwmgens=1 num_stepgens=4"
# set up the watchdog
#setp hm2_5i20.0.watchdog.timeout_ns 10000000
# load kinematics
loadrt [KINS]KINEMATICS
# load motion controller, get name and thread periods from ini file
loadrt [EMCMOT]EMCMOT base_period_nsec=[EMCMOT]BASE_PERIOD servo_period_nsec=[EMCMOT]SERVO_PERIOD traj_period_nsec=[EMCMOT]TRAJ_PERIOD key=[EMCMOT]SHMEM_KEY num_joints=[KINS]JOINTS
# load charge pump
loadrt charge_pump
# These loopbacks are usually disconnected by a postgui halfile
net tool-change-loop iocontrol.0.tool-change iocontrol.0.tool-changed
net tool-prepare-loopback iocontrol.0.tool-prepare iocontrol.0.tool-prepared
#the Enable signal is used to permanently enable things
newsig Enable bit
sets Enable TRUE
#configure the spindle speed
net scmd spindle.0.speed-out hm2_5i20.0.pwmgen.00.value
setp hm2_5i20.0.pwmgen.00.scale 5000
setp hm2_5i20.0.pwmgen.00.output-type 1
setp hm2_5i20.0.pwmgen.pwm_frequency 100
# invert the step pulse polarity
setp hm2_5i20.0.gpio.000.invert_output TRUE
setp hm2_5i20.0.gpio.002.invert_output TRUE
setp hm2_5i20.0.gpio.016.invert_output TRUE
setp hm2_5i20.0.gpio.018.invert_output TRUE
# configure the stepgen parameters
setp hm2_5i20.0.stepgen.00.dirsetup 5000
setp hm2_5i20.0.stepgen.00.dirhold 1250
setp hm2_5i20.0.stepgen.00.steplen 1250
setp hm2_5i20.0.stepgen.00.stepspace 1250
setp hm2_5i20.0.stepgen.00.position-scale [JOINT_0]SCALE
setp hm2_5i20.0.stepgen.00.maxaccel [JOINT_0]STEPGEN_MAXACCEL
setp hm2_5i20.0.stepgen.00.maxvel [JOINT_0]STEPGEN_MAXVEL
setp hm2_5i20.0.stepgen.01.dirsetup 5000
setp hm2_5i20.0.stepgen.01.dirhold 1250
setp hm2_5i20.0.stepgen.01.steplen 1250
setp hm2_5i20.0.stepgen.01.stepspace 1250
setp hm2_5i20.0.stepgen.01.position-scale [JOINT_1]SCALE
setp hm2_5i20.0.stepgen.01.maxaccel [JOINT_1]STEPGEN_MAXACCEL
setp hm2_5i20.0.stepgen.01.maxvel [JOINT_1]STEPGEN_MAXVEL
setp hm2_5i20.0.stepgen.02.dirsetup 5000
setp hm2_5i20.0.stepgen.02.dirhold 1250
setp hm2_5i20.0.stepgen.02.steplen 1250
setp hm2_5i20.0.stepgen.02.stepspace 1250
setp hm2_5i20.0.stepgen.02.position-scale [JOINT_2]SCALE
setp hm2_5i20.0.stepgen.02.maxaccel [JOINT_2]STEPGEN_MAXACCEL
setp hm2_5i20.0.stepgen.02.maxvel [JOINT_2]STEPGEN_MAXVEL
setp hm2_5i20.0.stepgen.03.dirsetup 5000
setp hm2_5i20.0.stepgen.03.dirhold 1250
setp hm2_5i20.0.stepgen.03.steplen 1250
setp hm2_5i20.0.stepgen.03.stepspace 1250
setp hm2_5i20.0.stepgen.03.position-scale [JOINT_3]SCALE
setp hm2_5i20.0.stepgen.03.maxaccel [JOINT_3]STEPGEN_MAXACCEL
setp hm2_5i20.0.stepgen.03.maxvel [JOINT_3]STEPGEN_MAXVEL
# connect position commands from motion module to step generator
net Xpos-cmd joint.0.motor-pos-cmd => hm2_5i20.0.stepgen.00.position-cmd
net Ypos-cmd joint.1.motor-pos-cmd => hm2_5i20.0.stepgen.01.position-cmd
net Zpos-cmd joint.2.motor-pos-cmd => hm2_5i20.0.stepgen.02.position-cmd
#net Apos-cmd joint.3.motor-pos-cmd => hm2_5i20.0.stepgen.03.position-cmd
# connect position feedback from step generators to motion module
net Xpos-fb hm2_5i20.0.stepgen.00.position-fb => joint.0.motor-pos-fb
net Ypos-fb hm2_5i20.0.stepgen.01.position-fb => joint.1.motor-pos-fb
net Zpos-fb hm2_5i20.0.stepgen.02.position-fb => joint.2.motor-pos-fb
#net Apos-fb hm2_5i20.0.stepgen.03.position-fb => joint.3.motor-pos-fb
# connect enable signals for step generators
net Xen joint.0.amp-enable-out => hm2_5i20.0.stepgen.00.enable
net Yen joint.1.amp-enable-out => hm2_5i20.0.stepgen.01.enable
net Zen joint.2.amp-enable-out => hm2_5i20.0.stepgen.02.enable
#net Aen joint.3.amp-enable-out => hm2_5i20.0.stepgen.03.enable
# enable velocity mode jogging
net Enable joint.0.jog-vel-mode
net Enable joint.1.jog-vel-mode
net Enable joint.2.jog-vel-mode
#net Enable joint.3.jog-vel-mode
# enable the PWM generator
net Enable => hm2_5i20.0.pwmgen.00.enable
# enable the charge pump
net Enable => charge-pump.enable
# connect the charge pump signal to an output
setp hm2_5i20.0.gpio.022.is_output TRUE
net chargepump hm2_5i20.0.gpio.022.out => charge-pump.out
# Safety Relay Monitoring Contacts
net estop-enable hm2_5i20.0.gpio.037.in => iocontrol.0.emc-enable-in
# Run Switch
net machine-on hm2_5i20.0.gpio.039.in_not => halui.machine.on
#connect limit switches to limit inputs
net Xmax hm2_5i20.0.gpio.032.in => joint.0.pos-lim-sw-in
net Xmin hm2_5i20.0.gpio.034.in => joint.0.neg-lim-sw-in
net Ymax hm2_5i20.0.gpio.028.in => joint.1.pos-lim-sw-in
net Ymin hm2_5i20.0.gpio.030.in => joint.1.neg-lim-sw-in
# The earliest production units had normally open switches
# on the Z axis which were deemed too difficult to change
# to normally closed operation due to their remote location.
#net Zmax hm2_5i20.0.gpio.024.in_not => joint.2.pos-lim-sw-in
#net Zmin hm2_5i20.0.gpio.026.in_not => joint.2.neg-lim-sw-in
# Later production units came correctly wired with normally
# closed switched on all three axes.
net Zmax hm2_5i20.0.gpio.024.in => joint.2.pos-lim-sw-in
net Zmin hm2_5i20.0.gpio.026.in => joint.2.neg-lim-sw-in
#connect positive limit signals to home inputs
net Xmax => joint.0.home-sw-in
net Ymax => joint.1.home-sw-in
net Zmax => joint.2.home-sw-in
# Spindle Contactor Enable
setp hm2_5i20.0.gpio.041.is_output TRUE
setp hm2_5i20.0.gpio.041.invert_output TRUE
# Door Closed - Energizes spindle contactor
net CLOSED hm2_5i20.0.gpio.029.in_not hm2_5i20.0.gpio.041.out
# Main Contactors - True when both contactors are energized
net ACOK hm2_5i20.0.gpio.035.in_not
# VFD Fault Relay - True when VFD is not faulted
#net VFDOK hm2_5i20.0.gpio.031.in_not
# A Axis Home - On Sieg machines there is no VFD fault signal,
# it is used for the A axis home sensor on 4 axis machines
#net VFDOK hm2_5i20.0.gpio.031.in_not
#net AHOME hm2_5i20.0.gpio.031.in joint.3.home-sw-in
# Spindle Contactor - False when spindle contactor is energized
net SOFF hm2_5i20.0.gpio.033.in halui.program.pause motion.feed-hold
# Axis Drive Status Signals
# True when YAKO stepper drive is on a full step position
# True when a Leadshine stepper drive is in the READY state
net DRV1 hm2_5i20.0.gpio.025.in_not
net DRV2 hm2_5i20.0.gpio.036.in_not
net DRV3 hm2_5i20.0.gpio.027.in_not
net DRV4 hm2_5i20.0.gpio.038.in_not
# Output Bits
# KA1
setp hm2_5i20.0.gpio.040.is_output TRUE
setp hm2_5i20.0.gpio.040.invert_output TRUE
net KA1 spindle.0.reverse => hm2_5i20.0.gpio.040.out
# KA2
setp hm2_5i20.0.gpio.042.is_output TRUE
setp hm2_5i20.0.gpio.042.invert_output TRUE
net KA2 spindle.0.on => hm2_5i20.0.gpio.042.out
# Flood Coolant
setp hm2_5i20.0.gpio.043.is_output TRUE
setp hm2_5i20.0.gpio.043.invert_output TRUE
net M8 hm2_5i20.0.gpio.043.out => iocontrol.0.coolant-flood
# Mist Coolant
setp hm2_5i20.0.gpio.045.is_output TRUE
setp hm2_5i20.0.gpio.045.invert_output TRUE
net M7 hm2_5i20.0.gpio.045.out => iocontrol.0.coolant-mist
# hook the functions to threads
# read inputs
addf hm2_5i20.0.read servo-thread
# handle motion commands
addf motion-command-handler servo-thread
# run the motion controller
addf motion-controller servo-thread
# write outputs
addf hm2_5i20.0.write servo-thread
# toggle the charge pump
addf charge-pump servo-thread

View File

@@ -0,0 +1,279 @@
# EMC controller parameters for Mesa 5i20 controlled Smithy 622 Mill with Leadshine Axis Drives
[EMC]
MACHINE = Smithy 622 Mill
VERSION = 1.1
DEBUG = 0x00000000
#DEBUG = 0x7FFFFFFF
[DISPLAY]
#DISPLAY = eztrol
# CYCLE_TIME is used by eztrol
CYCLE_TIME = .1
DISPLAY = axis
#DISPLAY = tklinuxcnc
#HELP_FILE = /usr/share/doc/linuxcnc/tklinuxcnc.txt
TKPKG = Ngcgui 1.0
TKPKG = Ngcguittt 1.0
# note: ngcgui_app.tcl must precede ngcgui_ttt.tcl
NGCGUI_FONT = Helvetica -12 normal
TTT = truetype-tracer
TTT_PREAMBLE = in_std.ngc
NGCGUI_PREAMBLE = in_std.ngc
NGCGUI_POSTAMBLE = bye.ngc
NGCGUI_SUBFILE = backlash.ngc
NGCGUI_SUBFILE = hole_circle.ngc
NGCGUI_SUBFILE = helix.ngc
NGCGUI_SUBFILE = helix_rtheta.ngc
NGCGUI_SUBFILE = slot.ngc
NGCGUI_SUBFILE = simp.ngc
NGCGUI_SUBFILE = xyz.ngc
NGCGUI_SUBFILE = iquad.ngc
NGCGUI_SUBFILE = oquad.ngc
NGCGUI_SUBFILE = db25.ngc
NGCGUI_SUBFILE = ihex.ngc
NGCGUI_SUBFILE = ohex.ngc
NGCGUI_SUBFILE = gosper.ngc
NGCGUI_SUBFILE = ""
#NGCGUI_SUBFILE = "" use when imageframe is specified if
# opening other files is required
# images will be put in a toplevel window
NGCGUI_OPTIONS =
#NGCGUI_OPTIONS = opt1 opt2 ...
# opt items:
# nonew -- disallow making a new tab page
# noremove -- disallow removing any tab page
# noauto -- no autosend (makeFile, then manually send)
# noiframe -- no internal image, image on separate toplevel
POSITION_OFFSET = RELATIVE
POSITION_FEEDBACK = ACTUAL
MAX_FEED_OVERRIDE = 1.5
MIN_SPINDLE_OVERRIDE = 0.2
MAX_SPINDLE_OVERRIDE = 1.5
INTRO_GRAPHIC = linuxcnc.gif
INTRO_TIME = 5
INCREMENTS = .1in .05in .01in .005in .001in .0005in .0001in
PROGRAM_PREFIX = ../../nc_files/
#EDITOR = geany
TOOL_EDITOR = tooledit
DEFAULT_LINEAR_VELOCITY = 0.2
MAX_LINEAR_VELOCITY = 3.0
DEFAULT_ANGULAR_VELOCITY = 12.0
MAX_ANGULAR_VELOCITY = 300.0
[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 = python3
[RS274NGC]
PARAMETER_FILE = emc.var
SUBROUTINE_PATH = ../../nc_files/ngcgui_lib:../../nc_files/ngcgui_lib/utilitysubs
USER_M_PATH = ../../nc_files/ngcgui_lib/mfiles
[EMCMOT]
EMCMOT = motmod
SHMEM_KEY = 111
COMM_TIMEOUT = 1.0
BASE_PERIOD = 1000000
SERVO_PERIOD = 1000000
TRAJ_PERIOD = 1000000
[TASK]
TASK = milltask
CYCLE_TIME = 0.001
[HAL]
HALUI = halui
HALFILE = 622leadshine.hal
#HALFILE = naiky.hal
EZTROL_HALFILE = 5i20eztrol.hal
HALFILE = axis_manualtoolchange.hal
[HALUI]
#No Content
[TRAJ]
COORDINATES = X Y Z
LINEAR_UNITS = inch
ANGULAR_UNITS = degree
MAX_LINEAR_VELOCITY = 3.0
MAX_LINEAR_ACCELERATION = 20.0
DEFAULT_LINEAR_VELOCITY = 0.2
[EMCIO]
TOOL_TABLE = mill.tbl
#TOOL_CHANGE_POSITION = 0 0 2
#TOOL_CHANGE_WITH_SPINDLE_ON = 1
TOOL_CHANGE_QUILL_UP = 1
#TOOL_CHANGE_AT_G30 = 1
[KINS]
KINEMATICS = trivkins
JOINTS = 4
[AXIS_X]
MIN_LIMIT = -11.6
MAX_LIMIT = 0.2
MAX_VELOCITY = 3.0
MAX_ACCELERATION = 20.0
[JOINT_0]
TYPE = LINEAR
HOME = 0.000
MAX_VELOCITY = 3.0
MAX_ACCELERATION = 20.0
STEPGEN_MAXVEL = 0.0
STEPGEN_MAXACCEL = 0.0
BACKLASH = 0.0000
# Leadscrew Pitch = 5mm
# Drive Ratio = 1:1
# Steps/Rev = 200 * 50uSteps = 10000
# Vel at 400k Steps/S = 377"/min
SCALE = 63500
OUTPUT_SCALE = 1.000
MIN_LIMIT = -11.6
MAX_LIMIT = 0.2
FERROR = 0.25
MIN_FERROR = 0.1
HOME_OFFSET = 0.25
HOME_SEARCH_VEL = 0.5
HOME_LATCH_VEL = 0.05
HOME_FINAL_VEL = 0.5
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 2
[AXIS_Y]
MIN_LIMIT = -5.3
MAX_LIMIT = 0.2
MAX_VELOCITY = 3.0
MAX_ACCELERATION = 20.0
[JOINT_1]
TYPE = LINEAR
HOME = 0.000
MAX_VELOCITY = 3.0
MAX_ACCELERATION = 20.0
STEPGEN_MAXVEL = 0.0
STEPGEN_MAXACCEL = 0.0
BACKLASH = 0.0000
# Leadscrew Pitch = 5mm
# Drive Ratio = 1:1
# Steps/Rev = 200 * 50uSteps = 10000
# Vel at 400k Steps/S = 472"/min
SCALE = 63500
OUTPUT_SCALE = 1.000
MIN_LIMIT = -5.3
MAX_LIMIT = 0.2
FERROR = 0.25
MIN_FERROR = 0.1
HOME_OFFSET = 0.25
HOME_SEARCH_VEL = 0.5
HOME_LATCH_VEL = 0.05
HOME_FINAL_VEL = 0.5
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 1
[AXIS_Z]
MIN_LIMIT = -10.2
MAX_LIMIT = 0.2
MAX_VELOCITY = 3.0
MAX_ACCELERATION = 20.0
[JOINT_2]
TYPE = LINEAR
HOME = 0.000
MAX_VELOCITY = 3.0
MAX_ACCELERATION = 20.0
STEPGEN_MAXVEL = 0.0
STEPGEN_MAXACCEL = 0.0
BACKLASH = 0.0000
# Leadscrew Pitch = 5mm
# Drive Ratio = 1:1
# Steps/Rev = 200 * 50uSteps = 10000
# Vel at 400k Steps/S = 377"/min
SCALE = 63500
OUTPUT_SCALE = 1.000
MIN_LIMIT = -10.2
MAX_LIMIT = 0.2
FERROR = 0.25
MIN_FERROR = 0.1
HOME_OFFSET = 0.25
HOME_SEARCH_VEL = 0.5
HOME_LATCH_VEL = 0.05
HOME_FINAL_VEL = 0.5
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 0
[AXIS_A]
MIN_LIMIT = -360000.0
MAX_LIMIT = 360000.0
MAX_VELOCITY = 300.0
MAX_ACCELERATION = 1000.0
[JOINT_3]
TYPE = ANGULAR
HOME = 0.000
MAX_VELOCITY = 300.0
MAX_ACCELERATION = 1000.0
STEPGEN_MAXVEL = 0.0
STEPGEN_MAXACCEL = 0.0
BACKLASH = 0.0000
# Drive Ratio = 40:360 = 1:9
# Steps/Rev = 200 * 50uSteps = 10000
# Vel at 400k Steps/S = 21600 deg/min
SCALE = -1111.11111111111111111111111111
# If [TRAJ]ANGULAR_UNITS = grad
#SCALE = -1000
OUTPUT_SCALE = 1.000
MIN_LIMIT = -360000.0
MAX_LIMIT = 360000.0
FERROR = 0.25
MIN_FERROR = 0.1
HOME_OFFSET = 0.0
HOME_SEARCH_VEL = 36.0
HOME_LATCH_VEL = 3.6
HOME_FINAL_VEL = 36.0
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 3
[EZTROL]
QTEMC_PLUGIN = /usr/share/eztrol/lib/libqtemc-2.4.6.so
QTEMCHAL_PLUGIN = /usr/share/eztrol/lib/libqtemchal-2.4.6.so
EZTROLGUI = /usr/share/eztrol/eztrolgui/libguimill2.so
MAX_SPINDLE_RPM = 5000
DIR_PLUGIN = /usr/share/eztrol/eztrolplugins
PLUGIN = libeztrol_wizard_plugin.so
PLUGIN = libeztrol_webwizard_plugin.so
# disabling settings gcode editor will benefit systems with small memory size
ENABLE_SETTINGS_EDITOR = true
# disable OpenGL 3D Preview
ENABLE_3D_PREVIEW = true
# set to Full Screen TRUE/FALSE
FULLSCREEN = false
# Settings Tab GCode Editor Syntax Highlight
# color guide - http://www.w3.org/TR/SVG/types.html#ColorKeywords
AXIS_COLOR = magenta
LINENUMBER_COLOR = rosybrown
GM_COLOR = blue
STFDRLPQH_COLOR = red
O_COLOR = blue
RESERVEDWORDS_COLOR = darkviolet
VARIABLE_COLOR = olive
COMMENT_COLOR = seagreen
GUI_STYLESHEET = eztrolstyle1.qss
[EZTROLWIZARDS]
WIZARD_DIRECTORY = /usr/share/eztrol/eztrolwizards
SAVE_DIRECTORY = ../../nc_files
[EZTROLWEBWIZARD]
URL = http://www.mattshaver.com/ecmacam/ecmacam.htm

View File

@@ -0,0 +1,179 @@
# 5i20 config file for 4 Axis Smithy 622 Mill with Leadshine Drives
# load the hostmot2 driver, this doesn't do anything by itself,
# it just waits for low-level drivers to register boards
loadrt hostmot2 debug_idrom=1 debug_module_descriptors=1 debug_pin_descriptors=1 debug_modules=1
# load the low-level driver for the board
# this will load the board's firmware and register it with the hostmot2
# driver loaded above, and it'll show up in HAL
loadrt hm2_pci config="firmware=hm2/5i20/SVST2_4_7I47.BIT num_encoders=1 num_pwmgens=1 num_stepgens=4"
# set up the watchdog
#setp hm2_5i20.0.watchdog.timeout_ns 10000000
# load kinematics
loadrt [KINS]KINEMATICS
# load motion controller, get name and thread periods from ini file
loadrt [EMCMOT]EMCMOT base_period_nsec=[EMCMOT]BASE_PERIOD servo_period_nsec=[EMCMOT]SERVO_PERIOD traj_period_nsec=[EMCMOT]TRAJ_PERIOD key=[EMCMOT]SHMEM_KEY num_joints=[KINS]JOINTS
# load charge pump
loadrt charge_pump
# These loopbacks are usually disconnected by a postgui halfile
net tool-change-loop iocontrol.0.tool-change iocontrol.0.tool-changed
net tool-prepare-loopback iocontrol.0.tool-prepare iocontrol.0.tool-prepared
#the Enable signal is used to permanently enable things
newsig Enable bit
sets Enable TRUE
#configure the spindle speed
net scmd spindle.0.speed-out hm2_5i20.0.pwmgen.00.value
setp hm2_5i20.0.pwmgen.00.scale 5000
setp hm2_5i20.0.pwmgen.00.output-type 1
setp hm2_5i20.0.pwmgen.pwm_frequency 100
# invert the step pulse polarity
setp hm2_5i20.0.gpio.000.invert_output TRUE
setp hm2_5i20.0.gpio.002.invert_output TRUE
setp hm2_5i20.0.gpio.016.invert_output TRUE
setp hm2_5i20.0.gpio.018.invert_output TRUE
# configure the stepgen parameters
setp hm2_5i20.0.stepgen.00.dirsetup 5000
setp hm2_5i20.0.stepgen.00.dirhold 1250
setp hm2_5i20.0.stepgen.00.steplen 1250
setp hm2_5i20.0.stepgen.00.stepspace 1250
setp hm2_5i20.0.stepgen.00.position-scale [JOINT_0]SCALE
setp hm2_5i20.0.stepgen.00.maxaccel [JOINT_0]STEPGEN_MAXACCEL
setp hm2_5i20.0.stepgen.00.maxvel [JOINT_0]STEPGEN_MAXVEL
setp hm2_5i20.0.stepgen.01.dirsetup 5000
setp hm2_5i20.0.stepgen.01.dirhold 1250
setp hm2_5i20.0.stepgen.01.steplen 1250
setp hm2_5i20.0.stepgen.01.stepspace 1250
setp hm2_5i20.0.stepgen.01.position-scale [JOINT_1]SCALE
setp hm2_5i20.0.stepgen.01.maxaccel [JOINT_1]STEPGEN_MAXACCEL
setp hm2_5i20.0.stepgen.01.maxvel [JOINT_1]STEPGEN_MAXVEL
setp hm2_5i20.0.stepgen.02.dirsetup 5000
setp hm2_5i20.0.stepgen.02.dirhold 1250
setp hm2_5i20.0.stepgen.02.steplen 1250
setp hm2_5i20.0.stepgen.02.stepspace 1250
setp hm2_5i20.0.stepgen.02.position-scale [JOINT_2]SCALE
setp hm2_5i20.0.stepgen.02.maxaccel [JOINT_2]STEPGEN_MAXACCEL
setp hm2_5i20.0.stepgen.02.maxvel [JOINT_2]STEPGEN_MAXVEL
setp hm2_5i20.0.stepgen.03.dirsetup 5000
setp hm2_5i20.0.stepgen.03.dirhold 1250
setp hm2_5i20.0.stepgen.03.steplen 1250
setp hm2_5i20.0.stepgen.03.stepspace 1250
setp hm2_5i20.0.stepgen.03.position-scale [JOINT_3]SCALE
setp hm2_5i20.0.stepgen.03.maxaccel [JOINT_3]STEPGEN_MAXACCEL
setp hm2_5i20.0.stepgen.03.maxvel [JOINT_3]STEPGEN_MAXVEL
# connect position commands from motion module to step generator
net Xpos-cmd joint.0.motor-pos-cmd => hm2_5i20.0.stepgen.00.position-cmd
net Ypos-cmd joint.1.motor-pos-cmd => hm2_5i20.0.stepgen.01.position-cmd
net Zpos-cmd joint.2.motor-pos-cmd => hm2_5i20.0.stepgen.02.position-cmd
net Apos-cmd joint.3.motor-pos-cmd => hm2_5i20.0.stepgen.03.position-cmd
# connect position feedback from step generators to motion module
net Xpos-fb hm2_5i20.0.stepgen.00.position-fb => joint.0.motor-pos-fb
net Ypos-fb hm2_5i20.0.stepgen.01.position-fb => joint.1.motor-pos-fb
net Zpos-fb hm2_5i20.0.stepgen.02.position-fb => joint.2.motor-pos-fb
net Apos-fb hm2_5i20.0.stepgen.03.position-fb => joint.3.motor-pos-fb
# connect enable signals for step generators
net Xen joint.0.amp-enable-out => hm2_5i20.0.stepgen.00.enable
net Yen joint.1.amp-enable-out => hm2_5i20.0.stepgen.01.enable
net Zen joint.2.amp-enable-out => hm2_5i20.0.stepgen.02.enable
net Aen joint.3.amp-enable-out => hm2_5i20.0.stepgen.03.enable
# enable velocity mode jogging
net Enable joint.0.jog-vel-mode
net Enable joint.1.jog-vel-mode
net Enable joint.2.jog-vel-mode
net Enable joint.3.jog-vel-mode
# enable the PWM generator
net Enable => hm2_5i20.0.pwmgen.00.enable
# enable the charge pump
net Enable => charge-pump.enable
# connect the charge pump signal to an output
setp hm2_5i20.0.gpio.022.is_output TRUE
net chargepump hm2_5i20.0.gpio.022.out => charge-pump.out
# Safety Relay Monitoring Contacts
net estop-enable hm2_5i20.0.gpio.037.in => iocontrol.0.emc-enable-in
# Run Switch
net machine-on hm2_5i20.0.gpio.039.in_not => halui.machine.on
#connect limit switches to limit inputs
net Xmax hm2_5i20.0.gpio.032.in => joint.0.pos-lim-sw-in
net Xmin hm2_5i20.0.gpio.034.in => joint.0.neg-lim-sw-in
net Ymax hm2_5i20.0.gpio.028.in => joint.1.pos-lim-sw-in
net Ymin hm2_5i20.0.gpio.030.in => joint.1.neg-lim-sw-in
net Zmax hm2_5i20.0.gpio.024.in_not => joint.2.pos-lim-sw-in
net Zmin hm2_5i20.0.gpio.026.in_not => joint.2.neg-lim-sw-in
#connect positive limit signals to home inputs
net Xmax => joint.0.home-sw-in
net Ymax => joint.1.home-sw-in
net Zmax => joint.2.home-sw-in
# Spindle Contactor Enable
setp hm2_5i20.0.gpio.041.is_output TRUE
setp hm2_5i20.0.gpio.041.invert_output TRUE
# Door Closed - Energizes spindle contactor
net CLOSED hm2_5i20.0.gpio.029.in_not hm2_5i20.0.gpio.041.out
# Main Contactors - True when both contactors are energized
net ACOK hm2_5i20.0.gpio.035.in_not
# VFD Fault Relay - True when VFD is not faulted
#net VFDOK hm2_5i20.0.gpio.031.in_not
# A Axis Home - On Sieg machines there is no VFD fault signal,
# it is used for the A axis home sensor on 4 axis machines
#net VFDOK hm2_5i20.0.gpio.031.in_not
net AHOME hm2_5i20.0.gpio.031.in joint.3.home-sw-in
# Spindle Contactor - False when spindle contactor is energized
net SOFF hm2_5i20.0.gpio.033.in halui.program.pause motion.feed-hold
# Axis Drive Status Signals
# True when YAKO stepper drive is on a full step position
# True when a Leadshine stepper drive is in the READY state
net DRV1 hm2_5i20.0.gpio.025.in_not
net DRV2 hm2_5i20.0.gpio.036.in_not
net DRV3 hm2_5i20.0.gpio.027.in_not
net DRV4 hm2_5i20.0.gpio.038.in_not
# Output Bits
# KA1
setp hm2_5i20.0.gpio.040.is_output TRUE
setp hm2_5i20.0.gpio.040.invert_output TRUE
net KA1 spindle.0.reverse => hm2_5i20.0.gpio.040.out
# KA2
setp hm2_5i20.0.gpio.042.is_output TRUE
setp hm2_5i20.0.gpio.042.invert_output TRUE
net KA2 spindle.0.on => hm2_5i20.0.gpio.042.out
# Flood Coolant
setp hm2_5i20.0.gpio.043.is_output TRUE
setp hm2_5i20.0.gpio.043.invert_output TRUE
net M8 hm2_5i20.0.gpio.043.out => iocontrol.0.coolant-flood
# Mist Coolant
setp hm2_5i20.0.gpio.045.is_output TRUE
setp hm2_5i20.0.gpio.045.invert_output TRUE
net M7 hm2_5i20.0.gpio.045.out => iocontrol.0.coolant-mist
# hook the functions to threads
# read inputs
addf hm2_5i20.0.read servo-thread
# handle motion commands
addf motion-command-handler servo-thread
# run the motion controller
addf motion-controller servo-thread
# write outputs
addf hm2_5i20.0.write servo-thread
# toggle the charge pump
addf charge-pump servo-thread

View File

@@ -0,0 +1,279 @@
# EMC controller parameters for Mesa 5i20 controlled 4 axis Smithy 622 Mill with Leadshine Axis Drives
[EMC]
MACHINE = 4 Axis Smithy 622 Mill
VERSION = 1.1
DEBUG = 0x00000000
#DEBUG = 0x7FFFFFFF
[DISPLAY]
#DISPLAY = eztrol
# CYCLE_TIME is used by eztrol
CYCLE_TIME = .1
DISPLAY = axis
#DISPLAY = tklinuxcnc
#HELP_FILE = /usr/share/doc/linuxcnc/tklinuxcnc.txt
TKPKG = Ngcgui 1.0
TKPKG = Ngcguittt 1.0
# note: ngcgui_app.tcl must precede ngcgui_ttt.tcl
NGCGUI_FONT = Helvetica -12 normal
TTT = truetype-tracer
TTT_PREAMBLE = in_std.ngc
NGCGUI_PREAMBLE = in_std.ngc
NGCGUI_POSTAMBLE = bye.ngc
NGCGUI_SUBFILE = backlash.ngc
NGCGUI_SUBFILE = hole_circle.ngc
NGCGUI_SUBFILE = helix.ngc
NGCGUI_SUBFILE = helix_rtheta.ngc
NGCGUI_SUBFILE = slot.ngc
NGCGUI_SUBFILE = simp.ngc
NGCGUI_SUBFILE = xyz.ngc
NGCGUI_SUBFILE = iquad.ngc
NGCGUI_SUBFILE = oquad.ngc
NGCGUI_SUBFILE = db25.ngc
NGCGUI_SUBFILE = ihex.ngc
NGCGUI_SUBFILE = ohex.ngc
NGCGUI_SUBFILE = gosper.ngc
NGCGUI_SUBFILE = ""
#NGCGUI_SUBFILE = "" use when imageframe is specified if
# opening other files is required
# images will be put in a toplevel window
NGCGUI_OPTIONS =
#NGCGUI_OPTIONS = opt1 opt2 ...
# opt items:
# nonew -- disallow making a new tab page
# noremove -- disallow removing any tab page
# noauto -- no autosend (makeFile, then manually send)
# noiframe -- no internal image, image on separate toplevel
POSITION_OFFSET = RELATIVE
POSITION_FEEDBACK = ACTUAL
MAX_FEED_OVERRIDE = 1.5
MIN_SPINDLE_OVERRIDE = 0.2
MAX_SPINDLE_OVERRIDE = 1.5
INTRO_GRAPHIC = linuxcnc.gif
INTRO_TIME = 5
INCREMENTS = .1in .05in .01in .005in .001in .0005in .0001in
PROGRAM_PREFIX = ../../nc_files/
#EDITOR = geany
TOOL_EDITOR = tooledit
DEFAULT_LINEAR_VELOCITY = 0.2
MAX_LINEAR_VELOCITY = 3.0
DEFAULT_ANGULAR_VELOCITY = 12.0
MAX_ANGULAR_VELOCITY = 300.0
[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 = python3
[RS274NGC]
PARAMETER_FILE = emc.var
SUBROUTINE_PATH = ../../nc_files/ngcgui_lib:../../nc_files/ngcgui_lib/utilitysubs
USER_M_PATH = ../../nc_files/ngcgui_lib/mfiles
[EMCMOT]
EMCMOT = motmod
SHMEM_KEY = 111
COMM_TIMEOUT = 1.0
BASE_PERIOD = 1000000
SERVO_PERIOD = 1000000
TRAJ_PERIOD = 1000000
[TASK]
TASK = milltask
CYCLE_TIME = 0.001
[HAL]
HALUI = halui
HALFILE = 622leadshine_4axis.hal
#HALFILE = naiky.hal
EZTROL_HALFILE = 5i20eztrol.hal
HALFILE = axis_manualtoolchange.hal
[HALUI]
#No Content
[TRAJ]
COORDINATES = X Y Z A
LINEAR_UNITS = inch
ANGULAR_UNITS = degree
MAX_LINEAR_VELOCITY = 3.0
MAX_LINEAR_ACCELERATION = 20.0
DEFAULT_LINEAR_VELOCITY = 0.2
[EMCIO]
TOOL_TABLE = mill.tbl
#TOOL_CHANGE_POSITION = 0 0 2
#TOOL_CHANGE_WITH_SPINDLE_ON = 1
TOOL_CHANGE_QUILL_UP = 1
#TOOL_CHANGE_AT_G30 = 1
[KINS]
KINEMATICS = trivkins
JOINTS = 4
[AXIS_X]
MIN_LIMIT = -11.6
MAX_LIMIT = 0.2
MAX_VELOCITY = 3.0
MAX_ACCELERATION = 20.0
[JOINT_0]
TYPE = LINEAR
HOME = 0.000
MAX_VELOCITY = 3.0
MAX_ACCELERATION = 20.0
STEPGEN_MAXVEL = 0.0
STEPGEN_MAXACCEL = 0.0
BACKLASH = 0.0000
# Leadscrew Pitch = 5mm
# Drive Ratio = 1:1
# Steps/Rev = 200 * 50uSteps = 10000
# Vel at 400k Steps/S = 377"/min
SCALE = 63500
OUTPUT_SCALE = 1.000
MIN_LIMIT = -11.6
MAX_LIMIT = 0.2
FERROR = 0.25
MIN_FERROR = 0.1
HOME_OFFSET = 0.25
HOME_SEARCH_VEL = 0.5
HOME_LATCH_VEL = 0.05
HOME_FINAL_VEL = 0.5
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 2
[AXIS_Y]
MIN_LIMIT = -5.3
MAX_LIMIT = 0.2
MAX_VELOCITY = 3.0
MAX_ACCELERATION = 20.0
[JOINT_1]
TYPE = LINEAR
HOME = 0.000
MAX_VELOCITY = 3.0
MAX_ACCELERATION = 20.0
STEPGEN_MAXVEL = 0.0
STEPGEN_MAXACCEL = 0.0
BACKLASH = 0.0000
# Leadscrew Pitch = 5mm
# Drive Ratio = 1:1
# Steps/Rev = 200 * 50uSteps = 10000
# Vel at 400k Steps/S = 472"/min
SCALE = 63500
OUTPUT_SCALE = 1.000
MIN_LIMIT = -5.3
MAX_LIMIT = 0.2
FERROR = 0.25
MIN_FERROR = 0.1
HOME_OFFSET = 0.25
HOME_SEARCH_VEL = 0.5
HOME_LATCH_VEL = 0.05
HOME_FINAL_VEL = 0.5
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 1
[AXIS_Z]
MIN_LIMIT = -10.2
MAX_LIMIT = 0.2
MAX_VELOCITY = 3.0
MAX_ACCELERATION = 20.0
[JOINT_2]
TYPE = LINEAR
HOME = 0.000
MAX_VELOCITY = 3.0
MAX_ACCELERATION = 20.0
STEPGEN_MAXVEL = 0.0
STEPGEN_MAXACCEL = 0.0
BACKLASH = 0.0000
# Leadscrew Pitch = 5mm
# Drive Ratio = 1:1
# Steps/Rev = 200 * 50uSteps = 10000
# Vel at 400k Steps/S = 377"/min
SCALE = 63500
OUTPUT_SCALE = 1.000
MIN_LIMIT = -10.2
MAX_LIMIT = 0.2
FERROR = 0.25
MIN_FERROR = 0.1
HOME_OFFSET = 0.25
HOME_SEARCH_VEL = 0.5
HOME_LATCH_VEL = 0.05
HOME_FINAL_VEL = 0.5
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 0
[AXIS_A]
MIN_LIMIT = -360000.0
MAX_LIMIT = 360000.0
MAX_VELOCITY = 300.0
MAX_ACCELERATION = 1000.0
[JOINT_3]
TYPE = ANGULAR
HOME = 0.000
MAX_VELOCITY = 300.0
MAX_ACCELERATION = 1000.0
STEPGEN_MAXVEL = 0.0
STEPGEN_MAXACCEL = 0.0
BACKLASH = 0.0000
# Drive Ratio = 40:360 = 1:9
# Steps/Rev = 200 * 50uSteps = 10000
# Vel at 400k Steps/S = 21600 deg/min
SCALE = -1111.11111111111111111111111111
# If [TRAJ]ANGULAR_UNITS = grad
#SCALE = -1000
OUTPUT_SCALE = 1.000
MIN_LIMIT = -360000.0
MAX_LIMIT = 360000.0
FERROR = 0.25
MIN_FERROR = 0.1
HOME_OFFSET = 0.0
HOME_SEARCH_VEL = 36.0
HOME_LATCH_VEL = 3.6
HOME_FINAL_VEL = 36.0
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 3
[EZTROL]
QTEMC_PLUGIN = /usr/share/eztrol/lib/libqtemc-2.4.6.so
QTEMCHAL_PLUGIN = /usr/share/eztrol/lib/libqtemchal-2.4.6.so
EZTROLGUI = /usr/share/eztrol/eztrolgui/libguimill2.so
MAX_SPINDLE_RPM = 5000
DIR_PLUGIN = /usr/share/eztrol/eztrolplugins
PLUGIN = libeztrol_wizard_plugin.so
PLUGIN = libeztrol_webwizard_plugin.so
# disabling settings gcode editor will benefit systems with small memory size
ENABLE_SETTINGS_EDITOR = true
# disable OpenGL 3D Preview
ENABLE_3D_PREVIEW = true
# set to Full Screen TRUE/FALSE
FULLSCREEN = false
# Settings Tab GCode Editor Syntax Highlight
# color guide - http://www.w3.org/TR/SVG/types.html#ColorKeywords
AXIS_COLOR = magenta
LINENUMBER_COLOR = rosybrown
GM_COLOR = blue
STFDRLPQH_COLOR = red
O_COLOR = blue
RESERVEDWORDS_COLOR = darkviolet
VARIABLE_COLOR = olive
COMMENT_COLOR = seagreen
GUI_STYLESHEET = eztrolstyle1.qss
[EZTROLWIZARDS]
WIZARD_DIRECTORY = /usr/share/eztrol/eztrolwizards
SAVE_DIRECTORY = ../../nc_files
[EZTROLWEBWIZARD]
URL = http://www.mattshaver.com/ecmacam/ecmacam.htm

View File

@@ -0,0 +1,195 @@
<pyvcp>
<hbox>
<label>
<text>"Commanded Velocity:"</text>
</label>
<number>
<halpin>"command"</halpin>
<format>"+4.0f"</format>
</number>
</hbox>
<hbox>
<label>
<text>"Feedback Velocity:"</text>
</label>
<number>
<halpin>"vel"</halpin>
<format>"+4.0f"</format>
</number>
</hbox>
<hbox>
<led>
<halpin>"enabled"</halpin>
</led>
<label>
<text>"Machine On"</text>
</label>
</hbox>
<hbox>
<led>
<halpin>"done"</halpin>
</led>
<label>
<text>"Init Done"</text>
</label>
</hbox>
<hbox>
<label>
<text>"PID Out/BLDC In:"</text>
</label>
<number>
<halpin>"val"</halpin>
<format>"+4.2f"</format>
</number>
</hbox>
<hbox>
<label>
<text>"Encoder Count:"</text>
</label>
<s32>
<halpin>"count"</halpin>
<format>"6d"</format>
</s32>
</hbox>
<hbox>
<label>
<text>"Rotor Angle:"</text>
</label>
<number>
<halpin>"rotor_angle"</halpin>
<format>"+4.4f"</format>
</number>
</hbox>
<hbox>
<label>
<text>"Phase Angle:"</text>
</label>
<number>
<halpin>"phase_angle"</halpin>
<format>"+4.4f"</format>
</number>
</hbox>
<hbox>
<label>
<text>"Current:"</text>
</label>
<number>
<halpin>"current"</halpin>
<format>"+4.4f"</format>
</number>
</hbox>
<hbox>
<label>
<text>"A"</text>
</label>
<led>
<halpin>"a"</halpin>
</led>
<label>
<text>"B"</text>
</label>
<led>
<halpin>"b"</halpin>
</led>
<label>
<text>"C"</text>
</label>
<led>
<halpin>"c"</halpin>
</led>
<label>
<text>"Index Enable"</text>
</label>
<led>
<halpin>"ie_led"</halpin>
</led>
</hbox>
<hbox>
<label>
<text>"8i20 Comms:"</text>
</label>
<u32>
<halpin>"comms"</halpin>
<format>"8x"</format>
</u32>
</hbox>
<hbox>
<label>
<text>"8i20 Fault:"</text>
</label>
<u32>
<halpin>"fault"</halpin>
<format>"8x"</format>
</u32>
</hbox>
<hbox>
<label>
<text>"8i20 Status:"</text>
</label>
<u32>
<halpin>"status"</halpin>
<format>"8x"</format>
</u32>
</hbox>
<hbox>
<label>
<text>"8i20 Temp:"</text>
</label>
<number>
<halpin>"temp"</halpin>
<format>"+2.0f"</format>
</number>
</hbox>
<hbox>
<label>
<text>"8i20 Volts:"</text>
</label>
<number>
<halpin>"voltage"</halpin>
<format>"+3.2f"</format>
</number>
</hbox>
<hbox>
<label>
<text>"SS Fault Count:"</text>
</label>
<u32>
<halpin>"faults"</halpin>
<format>"6d"</format>
</u32>
</hbox>
<hbox>
<label>
<text>"SS Port0 State:"</text>
</label>
<u32>
<halpin>"port_state"</halpin>
<format>"8x"</format>
</u32>
</hbox>
<hbox>
<label>
<text>"Hall Error"</text>
</label>
<led>
<halpin>"hall-error"</halpin>
</led>
</hbox>
<hbox>
<label>
<text>"Spindle At Speed"</text>
</label>
<led>
<halpin>"at-speed"</halpin>
</led>
</hbox>
<hbox>
<label>
<text>"Spindle Stalled"</text>
</label>
<led>
<halpin>"stall"</halpin>
</led>
</hbox>
</pyvcp>

View File

@@ -0,0 +1,32 @@
net srpm pyvcp.command
loadrt scale count=1
addf scale.0 servo-thread
setp scale.0.gain 60
net fb scale.0.in
net svel pyvcp.vel scale.0.out
net machine-on pyvcp.enabled
net init-done pyvcp.done
net pid-out pyvcp.val
net count hm2_5i20.0.encoder.00.count pyvcp.count
net rotor_angle pyvcp.rotor_angle
net phase_angle bldc.0.phase-angle pyvcp.phase_angle
net current pyvcp.current
net sa pyvcp.a
net sb pyvcp.b
net sc pyvcp.c
net Sidx pyvcp.ie_led
# 8i20 Pins:
net comms hm2_5i20.0.8i20.0.0.comms pyvcp.comms
net fault hm2_5i20.0.8i20.0.0.fault pyvcp.fault
net status hm2_5i20.0.8i20.0.0.status pyvcp.status
net temp hm2_5i20.0.8i20.0.0.temp pyvcp.temp
net voltage hm2_5i20.0.8i20.0.0.voltage pyvcp.voltage
# SSerial Pins:
net fault-count hm2_5i20.0.sserial.port-0.fault-count pyvcp.faults
net port_state hm2_5i20.0.sserial.port-0.port_state pyvcp.port_state
net herr bldc.0.hall-error pyvcp.hall-error
net at-speed pyvcp.at-speed
net stall pyvcp.stall

View File

@@ -0,0 +1,309 @@
_FILES_CLASSICLADDER
_FILE-monostables.csv
1,1
1,0
1,0
1,0
1,0
1,0
1,0
1,0
1,0
1,0
_/FILE-monostables.csv
_FILE-general.txt
PERIODIC_REFRESH=1
SIZE_NBR_RUNGS=100
SIZE_NBR_BITS=20
SIZE_NBR_WORDS=20
SIZE_NBR_TIMERS=10
SIZE_NBR_MONOSTABLES=10
SIZE_NBR_COUNTERS=10
SIZE_NBR_TIMERS_IEC=10
SIZE_NBR_PHYS_INPUTS=15
SIZE_NBR_PHYS_OUTPUTS=15
SIZE_NBR_ARITHM_EXPR=100
SIZE_NBR_SECTIONS=10
SIZE_NBR_SYMBOLS=160
_/FILE-general.txt
_FILE-rung_1.csv
#VER=2.0
#LABEL=
#COMMENT=
#PREVRUNG=3
#NEXTRUNG=-1
9-0-0/0 , 1-0-50/0 , 9-0-0/0 , 2-0-0/0 , 9-0-0/0 , 2-0-0/3 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 50-0-60/1
1-0-50/0 , 9-0-0/0 , 1-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-60/0
9-0-0/0 , 4-0-60/1 , 9-0-0/0 , 9-1-0/0 , 99-0-0/0 , 11-0-60/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 50-0-60/2
1-0-50/0 , 9-0-0/0 , 1-0-0/3 , 0-1-0/0 , 99-0-0/0 , 99-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0
9-0-0/0 , 4-0-60/2 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 52-0-60/0
9-0-0/0 , 3-0-50/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 53-0-60/0
_/FILE-rung_1.csv
_FILE-sections.csv
#VER=1.0
#NAME000=Prog1
000,0,-1,2,1,0
_/FILE-sections.csv
_FILE-modbusioconf.csv
#VER=1.0
_/FILE-modbusioconf.csv
_FILE-arithmetic_expressions.csv
#VER=2.0
0000,(@270/0@-1)&3=@200/1@
0001,@270/0@=0
0004,@200/1@=1
0005,@200/1@=0
0006,@200/1@=2
0007,@200/1@=3
_/FILE-arithmetic_expressions.csv
_FILE-com_params.txt
MODBUS_MASTER_SERIAL_PORT=
MODBUS_MASTER_SERIAL_SPEED=9600
MODBUS_MASTER_SERIAL_DATABITS=8
MODBUS_MASTER_SERIAL_STOPBITS=1
MODBUS_MASTER_SERIAL_PARITY=0
MODBUS_ELEMENT_OFFSET=0
MODBUS_MASTER_SERIAL_USE_RTS_TO_SEND=0
MODBUS_MASTER_TIME_INTER_FRAME=100
MODBUS_MASTER_TIME_OUT_RECEIPT=500
MODBUS_MASTER_TIME_AFTER_TRANSMIT=0
MODBUS_DEBUG_LEVEL=0
MODBUS_MAP_COIL_READ=0
MODBUS_MAP_COIL_WRITE=0
MODBUS_MAP_INPUT=0
MODBUS_MAP_HOLDING=0
MODBUS_MAP_REGISTER_READ=0
MODBUS_MAP_REGISTER_WRITE=0
_/FILE-com_params.txt
_FILE-counters.csv
0
0
0
0
0
0
0
0
0
0
_/FILE-counters.csv
_FILE-timers.csv
1,0
1,0
1,0
1,0
1,0
1,0
1,0
1,0
1,0
1,0
_/FILE-timers.csv
_FILE-sequential.csv
#VER=1.0
_/FILE-sequential.csv
_FILE-ioconf.csv
#VER=1.0
_/FILE-ioconf.csv
_FILE-rung_3.csv
#VER=2.0
#LABEL=
#COMMENT=
#PREVRUNG=2
#NEXTRUNG=1
9-0-0/0 , 1-0-50/1 , 1-0-50/2 , 1-0-50/3 , 1-0-50/4 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 50-0-0/2
9-0-0/0 , 99-0-0/0 , 99-0-0/0 , 20-0-0/1 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 50-0-0/3
0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0
0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0
0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0
1-0-50/5 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 50-0-60/3
_/FILE-rung_3.csv
_FILE-timers_iec.csv
1,15,0
1,0,0
1,0,0
1,0,0
1,0,0
1,0,0
1,0,0
1,0,0
1,0,0
1,0,0
_/FILE-timers_iec.csv
_FILE-symbols.csv
#VER=1.0
%Q1,TPFWD,
%Q2,TPREV,
%Q0,TCACK,
%B0,TPINPOS,
%I0,TCREQ,
%I1,T1,
%I2,T2,
%I3,T3,
%I4,T4,
%IW0,PREPNO,
%W1,TPOS,
%B1,TPUP,
%B2,TPROT,
%B3,T0,
%I5,TP,
%I6,%I6,
%I7,%I7,
%I8,%I8,
%I9,%I9,
%I10,%I10,
%I11,%I11,
%I12,%I12,
%I13,%I13,
%I14,%I14,
%Q3,TQ,
%Q4,%Q4,
%Q5,%Q5,
%Q6,%Q6,
%Q7,%Q7,
%Q8,%Q8,
%Q9,%Q9,
%Q10,%Q10,
%Q11,%Q11,
%Q12,%Q12,
%Q13,%Q13,
%Q14,%Q14,
%B4,%B4,
%B5,%B5,
%B6,%B6,
%B7,%B7,
%B8,%B8,
%B9,%B9,
%B10,%B10,
%B11,%B11,
%B12,%B12,
%B13,%B13,
%B14,%B14,
%B15,%B15,
%B16,%B16,
%B17,%B17,
%B18,%B18,
%B19,%B19,
%W0,%W0,
%W2,%W2,
%W3,%W3,
%W4,%W4,
%W5,%W5,
%W6,%W6,
%W7,%W7,
%W8,%W8,
%W9,%W9,
%W10,%W10,
%W11,%W11,
%W12,%W12,
%W13,%W13,
%W14,%W14,
%W15,%W15,
%W16,%W16,
%W17,%W17,
%W18,%W18,
%W19,%W19,
%IW1,%IW1,
%IW2,%IW2,
%IW3,%IW3,
%IW4,%IW4,
%IW5,%IW5,
%IW6,%IW6,
%IW7,%IW7,
%IW8,%IW8,
%IW9,%IW9,
%QW0,%QW0,
%QW1,%QW1,
%QW2,%QW2,
%QW3,%QW3,
%QW4,%QW4,
%QW5,%QW5,
%QW6,%QW6,
%QW7,%QW7,
%QW8,%QW8,
%QW9,%QW9,
%IF0,%IF0,
%IF1,%IF1,
%IF2,%IF2,
%IF3,%IF3,
%IF4,%IF4,
%IF5,%IF5,
%IF6,%IF6,
%IF7,%IF7,
%IF8,%IF8,
%IF9,%IF9,
%QF0,%QF0,
%QF1,%QF1,
%QF2,%QF2,
%QF3,%QF3,
%QF4,%QF4,
%QF5,%QF5,
%QF6,%QF6,
%QF7,%QF7,
%QF8,%QF8,
%QF9,%QF9,
%T0,%T0,Old Timer
%T1,%T1,Old Timer
%T2,%T2,Old Timer
%T3,%T3,Old Timer
%T4,%T4,Old Timer
%T5,%T5,Old Timer
%T6,%T6,Old Timer
%T7,%T7,Old Timer
%T8,%T8,Old Timer
%T9,%T9,Old Timer
%TM0,%TM0,New Timer
%TM1,%TM1,New Timer
%TM2,%TM2,New Timer
%TM3,%TM3,New Timer
%TM4,%TM4,New Timer
%TM5,%TM5,New Timer
%TM6,%TM6,New Timer
%TM7,%TM7,New Timer
%TM8,%TM8,New Timer
%TM9,%TM9,New Timer
%M0,%M0,One-shot
%M1,%M1,One-shot
%M2,%M2,One-shot
%M3,%M3,One-shot
%M4,%M4,One-shot
%M5,%M5,One-shot
%M6,%M6,One-shot
%M7,%M7,One-shot
%M8,%M8,One-shot
%M9,%M9,One-shot
%C0,%C0,Counter
%C1,%C1,Counter
%C2,%C2,Counter
%C3,%C3,Counter
%C4,%C4,Counter
%C5,%C5,Counter
%C6,%C6,Counter
%C7,%C7,Counter
%C8,%C8,Counter
%C9,%C9,Counter
%E0,%E0,Error Flag Bit
%E1,%E1,Error Flag Bit
%E2,%E2,Error Flag Bit
%E3,%E3,Error Flag Bit
%E4,%E4,Error Flag Bit
%E5,%E5,Error Flag Bit
%E6,%E6,Error Flag Bit
%E7,%E7,Error Flag Bit
%E8,%E8,Error Flag Bit
%E9,%E9,Error Flag Bit
_/FILE-symbols.csv
_FILE-rung_2.csv
#VER=2.0
#LABEL=
#COMMENT=
#PREVRUNG=-1
#NEXTRUNG=3
9-0-0/0 , 2-0-50/1 , 1-0-50/2 , 1-0-50/3 , 1-0-50/4 , 2-0-0/3 , 9-0-0/0 , 99-0-0/0 , 99-0-0/0 , 60-0-0/5
9-0-0/0 , 2-0-50/2 , 1-0-50/1 , 1-0-50/3 , 1-0-50/4 , 2-0-0/3 , 9-0-0/0 , 99-0-0/0 , 99-0-0/0 , 60-0-0/4
9-0-0/0 , 2-0-50/3 , 1-0-50/1 , 1-0-50/2 , 1-0-50/4 , 2-0-0/3 , 9-0-0/0 , 99-0-0/0 , 99-0-0/0 , 60-0-0/6
9-0-0/0 , 2-0-50/4 , 1-0-50/1 , 1-0-50/2 , 1-0-50/3 , 2-0-0/3 , 9-0-0/0 , 99-0-0/0 , 99-0-0/0 , 60-0-0/7
9-0-0/0 , 99-0-0/0 , 99-0-0/0 , 20-0-0/0 , 9-0-0/0 , 2-0-0/2 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 50-0-0/0
9-0-0/0 , 9-0-50/0 , 1-0-0/3 , 9-0-0/0 , 0-1-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-60/1
_/FILE-rung_2.csv
_/FILES_CLASSICLADDER

View File

@@ -0,0 +1,185 @@
# 5i20 config file for Smithy 924 Lathe
# load the hostmot2 driver, this doesn't do anything by itself,
# it just waits for low-level drivers to register boards
loadrt hostmot2 debug_idrom=1 debug_module_descriptors=1 debug_pin_descriptors=1 debug_modules=1
# load the low-level driver for the board
# this will load the board's firmware and register it with the hostmot2
# driver loaded above, and it'll show up in HAL
loadrt hm2_pci config="firmware=hm2/5i20/SVST2_4_7I47.BIT num_encoders=3 num_pwmgens=1 num_stepgens=2"
# set up the watchdog
#setp hm2_5i20.0.watchdog.timeout_ns 10000000
# load kinematics
loadrt [KINS]KINEMATICS
# load motion controller, get name and thread periods from ini file
loadrt [EMCMOT]EMCMOT base_period_nsec=[EMCMOT]BASE_PERIOD servo_period_nsec=[EMCMOT]SERVO_PERIOD traj_period_nsec=[EMCMOT]TRAJ_PERIOD key=[EMCMOT]SHMEM_KEY num_joints=[KINS]JOINTS
# classicladder for machine logic
# (load the realtime portion)
loadrt classicladder_rt
# invoke the user part of CL to silently load the program
loadusr -w classicladder --nogui 924.clp
# load charge pump
loadrt charge_pump
# load the spindle speed lowpass filter
loadrt lowpass
#the Enable signal is used to permanently enable things
newsig Enable bit
sets Enable TRUE
#configure the spindle encoder
setp hm2_5i20.0.encoder.00.scale 4096
net Spos hm2_5i20.0.encoder.00.position spindle.0.revs
net Svel hm2_5i20.0.encoder.00.velocity spindle.0.speed-in
net Sidx hm2_5i20.0.encoder.00.index-enable => spindle.0.index-enable
#configure the spindle speed lowpass filter & PWM generator
net Scmd spindle.0.speed-out => lowpass.0.in
net Sflt lowpass.0.out => hm2_5i20.0.pwmgen.00.value
#early production machines
setp lowpass.0.gain 0.0001
#later production machines
#setp lowpass.0.gain 1.0
setp hm2_5i20.0.pwmgen.00.scale 3000
setp hm2_5i20.0.pwmgen.00.output-type 1
setp hm2_5i20.0.pwmgen.pwm_frequency 100
# invert the step pulse polarity
setp hm2_5i20.0.gpio.000.invert_output TRUE
setp hm2_5i20.0.gpio.002.invert_output TRUE
# configure the stepgen parameters
setp hm2_5i20.0.stepgen.00.dirsetup 2500
setp hm2_5i20.0.stepgen.00.dirhold 2500
setp hm2_5i20.0.stepgen.00.steplen 2500
setp hm2_5i20.0.stepgen.00.stepspace 2500
setp hm2_5i20.0.stepgen.00.position-scale [JOINT_0]SCALE
setp hm2_5i20.0.stepgen.00.maxaccel [JOINT_0]STEPGEN_MAXACCEL
setp hm2_5i20.0.stepgen.00.maxvel [JOINT_0]STEPGEN_MAXVEL
setp hm2_5i20.0.stepgen.01.dirsetup 2500
setp hm2_5i20.0.stepgen.01.dirhold 2500
setp hm2_5i20.0.stepgen.01.steplen 2500
setp hm2_5i20.0.stepgen.01.stepspace 2500
setp hm2_5i20.0.stepgen.01.position-scale [JOINT_2]SCALE
setp hm2_5i20.0.stepgen.01.maxaccel [JOINT_2]STEPGEN_MAXACCEL
setp hm2_5i20.0.stepgen.01.maxvel [JOINT_2]STEPGEN_MAXVEL
# connect position commands from motion module to step generator
net Xpos-cmd joint.0.motor-pos-cmd => hm2_5i20.0.stepgen.00.position-cmd
net Zpos-cmd joint.2.motor-pos-cmd => hm2_5i20.0.stepgen.01.position-cmd
# connect position feedback from step generators to motion module
net Xpos-fb hm2_5i20.0.stepgen.00.position-fb => joint.0.motor-pos-fb
net Zpos-fb hm2_5i20.0.stepgen.01.position-fb => joint.2.motor-pos-fb
# connect enable signals for step generators
net Xen joint.0.amp-enable-out => hm2_5i20.0.stepgen.00.enable
net Zen joint.2.amp-enable-out => hm2_5i20.0.stepgen.01.enable
# enable velocity mode jogging
net Enable joint.0.jog-vel-mode
net Enable joint.2.jog-vel-mode
# enable the PWM generator
net Enable => hm2_5i20.0.pwmgen.00.enable
# enable the charge pump
net Enable => charge-pump.enable
# connect the charge pump signal to an output
setp hm2_5i20.0.gpio.022.is_output TRUE
net chargepump hm2_5i20.0.gpio.022.out => charge-pump.out
# Safety Relay Monitoring Contacts
net estop-enable hm2_5i20.0.gpio.037.in => iocontrol.0.emc-enable-in
# Run Switch
net machine-on hm2_5i20.0.gpio.039.in_not => halui.machine.on
#connect limit switches to limit inputs
net Xmax hm2_5i20.0.gpio.024.in => joint.0.pos-lim-sw-in
net Xmin hm2_5i20.0.gpio.026.in => joint.0.neg-lim-sw-in
net Zmax hm2_5i20.0.gpio.028.in => joint.2.pos-lim-sw-in
net Zmin hm2_5i20.0.gpio.030.in => joint.2.neg-lim-sw-in
#connect positive limit signals to home inputs
net Xmax => joint.0.home-sw-in
net Zmax => joint.2.home-sw-in
# Main Contactors - True when both contactors are energized
net ACOK hm2_5i20.0.gpio.035.in_not
# VFD Fault Relay - True when VFD is not faulted
#net VFDOK hm2_5i20.0.gpio.031.in_not
# A Axis Home - On Sieg machines there is no VFD fault signal,
# it is used for the A axis home sensor on 4 axis machines
#net VFDOK hm2_5i20.0.gpio.031.in_not
#net AHOME hm2_5i20.0.gpio.031.in joint.3.home-sw-in
# Spindle Contactor - False when spindle contactor is energized
net SOFF hm2_5i20.0.gpio.033.in halui.program.pause motion.feed-hold
#Tool Post Control Inputs
net PrepNo iocontrol.0.tool-prep-number => classicladder.0.s32in-00
net TC iocontrol.0.tool-change => classicladder.0.in-00
net T1 hm2_5i20.0.gpio.032.in => classicladder.0.in-01
net T2 hm2_5i20.0.gpio.034.in => classicladder.0.in-02
net T3 hm2_5i20.0.gpio.036.in => classicladder.0.in-03
net T4 hm2_5i20.0.gpio.038.in => classicladder.0.in-04
net TP iocontrol.0.tool-prepare => classicladder.0.in-05
#Door Sensor
net SS hm2_5i20.0.gpio.029.in
# Output Bits
# KA1
setp hm2_5i20.0.gpio.040.is_output TRUE
setp hm2_5i20.0.gpio.040.invert_output TRUE
net KA1 spindle.0.reverse => hm2_5i20.0.gpio.040.out
# KA2
setp hm2_5i20.0.gpio.042.is_output TRUE
setp hm2_5i20.0.gpio.042.invert_output TRUE
net KA2 spindle.0.on => hm2_5i20.0.gpio.042.out
#Tool Post Control Outputs
net TD classicladder.0.out-00 => iocontrol.0.tool-changed
net TQ classicladder.0.out-03 => iocontrol.0.tool-prepared
#KA3
setp hm2_5i20.0.gpio.044.is_output TRUE
setp hm2_5i20.0.gpio.044.invert_output TRUE
net KA3 hm2_5i20.0.gpio.044.out => classicladder.0.out-01
#KA4
setp hm2_5i20.0.gpio.046.is_output TRUE
setp hm2_5i20.0.gpio.046.invert_output TRUE
net KA4 hm2_5i20.0.gpio.046.out => classicladder.0.out-02
#Spindle Enable
setp hm2_5i20.0.gpio.041.is_output TRUE
setp hm2_5i20.0.gpio.041.invert_output TRUE
net Enable => hm2_5i20.0.gpio.041.out
# Flood Coolant
setp hm2_5i20.0.gpio.043.is_output TRUE
setp hm2_5i20.0.gpio.043.invert_output TRUE
net M8 hm2_5i20.0.gpio.043.out => iocontrol.0.coolant-flood
# Mist Coolant
setp hm2_5i20.0.gpio.045.is_output TRUE
setp hm2_5i20.0.gpio.045.invert_output TRUE
net M7 hm2_5i20.0.gpio.045.out => iocontrol.0.coolant-mist
# hook the functions to threads
# read inputs
addf hm2_5i20.0.read servo-thread
# handle motion commands
addf motion-command-handler servo-thread
# run the motion controller
addf motion-controller servo-thread
# refresh classicladder
addf classicladder.0.refresh servo-thread
# run the spindle speed lowpass filter
addf lowpass.0 servo-thread
# write outputs
addf hm2_5i20.0.write servo-thread
# toggle the charge pump
addf charge-pump servo-thread

View File

@@ -0,0 +1,163 @@
# EMC controller parameters for Mesa 5i20 controlled Smithy 924 Lathe
[EMC]
MACHINE = Smithy 924 Lathe
VERSION = 1.1
DEBUG = 0x00000000
#DEBUG = 0x7FFFFFFF
[DISPLAY]
DISPLAY = axis
#DISPLAY = tklinuxcnc
#HELP_FILE = /usr/share/doc/linuxcnc/tklinuxcnc.txt
LATHE = 1
TKPKG = Ngcgui 1.0
NGCGUI_FONT = Helvetica -12 normal
NGCGUI_PREAMBLE = lathe_std.ngc
NGCGUI_POSTAMBLE = bye.ngc
NGCGUI_SUBFILE = backlash.ngc
NGCGUI_SUBFILE = id.ngc
NGCGUI_SUBFILE = od.ngc
NGCGUI_SUBFILE = taper-od.ngc
NGCGUI_SUBFILE = ""
#NGCGUI_SUBFILE = "" use when imageframe is specified if
# opening other files is required
# images will be put in a toplevel window
NGCGUI_OPTIONS =
#NGCGUI_OPTIONS = opt1 opt2 ...
# opt items:
# nonew -- disallow making a new tab page
# noremove -- disallow removing any tab page
# noauto -- no autosend (makeFile, then manually send)
# noiframe -- no internal image, image on separate toplevel
POSITION_OFFSET = RELATIVE
POSITION_FEEDBACK = ACTUAL
MAX_FEED_OVERRIDE = 1.5
MIN_SPINDLE_OVERRIDE = 0.2
MAX_SPINDLE_OVERRIDE = 1.5
INTRO_GRAPHIC = linuxcnc.gif
INTRO_TIME = 5
INCREMENTS = .1in .05in .01in .005in .001in .0005in .0001in
PROGRAM_PREFIX = ../../nc_files/
#EDITOR = geany
TOOL_EDITOR = tooledit
DEFAULT_LINEAR_VELOCITY = 0.2
MAX_LINEAR_VELOCITY = 3.75
DEFAULT_ANGULAR_VELOCITY = 12.0
MAX_ANGULAR_VELOCITY = 60.0
[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 = python3
[RS274NGC]
PARAMETER_FILE = emc.var
SUBROUTINE_PATH = ../../nc_files/ngcgui_lib:../../nc_files/ngcgui_lib/lathe:../../nc_files/ngcgui_lib/utilitysubs
USER_M_PATH = ../../nc_files/ngcgui_lib/mfiles
[EMCMOT]
EMCMOT = motmod
SHMEM_KEY = 111
COMM_TIMEOUT = 1.0
BASE_PERIOD = 1000000
SERVO_PERIOD = 1000000
TRAJ_PERIOD = 1000000
[TASK]
TASK = milltask
CYCLE_TIME = 0.001
[HAL]
HALUI = halui
HALFILE = 924.hal
#HALFILE = naiky.hal
[HALUI]
#No Content
[TRAJ]
COORDINATES = X Z
LINEAR_UNITS = inch
ANGULAR_UNITS = degree
MAX_LINEAR_VELOCITY = 3.93
MAX_LINEAR_ACCELERATION = 20.0
DEFAULT_LINEAR_VELOCITY = 0.2
[EMCIO]
TOOL_TABLE = lathe.tbl
#TOOL_CHANGE_POSITION = 0 0 2
#TOOL_CHANGE_WITH_SPINDLE_ON = 1
#TOOL_CHANGE_QUILL_UP = 1
#TOOL_CHANGE_AT_G30 = 1
[KINS]
KINEMATICS = trivkins
JOINTS = 3
[AXIS_X]
MIN_LIMIT = -3.6
MAX_LIMIT = 0.2
MAX_VELOCITY = 1.875
MAX_ACCELERATION = 20.0
[JOINT_0]
TYPE = LINEAR
HOME = 0.000
MAX_VELOCITY = 1.875
MAX_ACCELERATION = 20.0
STEPGEN_MAXVEL = 0.0
STEPGEN_MAXACCEL = 0.0
BACKLASH = 0.0000
# Leadscrew Pitch = 4mm
# Drive Ratio = 2:1
# Steps/Rev = 200 * 40uSteps = 8000
# Vel at 200k Steps/S = 118"/min
SCALE = -101600
OUTPUT_SCALE = 1.000
MIN_LIMIT = -3.6
MAX_LIMIT = 0.2
FERROR = 0.25
MIN_FERROR = 0.1
HOME_OFFSET = 0.25
HOME_SEARCH_VEL = 0.5
HOME_LATCH_VEL = 0.05
HOME_FINAL_VEL = 0.5
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 0
[AXIS_Z]
MIN_LIMIT = -16.2
MAX_LIMIT = 0.2
MAX_VELOCITY = 3.75
MAX_ACCELERATION = 20.0
[JOINT_2]
TYPE = LINEAR
HOME = 0.000
MAX_VELOCITY = 3.75
MAX_ACCELERATION = 20.0
STEPGEN_MAXVEL = 0.0
STEPGEN_MAXACCEL = 0.0
BACKLASH = 0.0000
# Leadscrew Pitch = 4mm
# Drive Ratio = 1:1
# Steps/Rev = 200 * 40uSteps = 8000
# Vel at 200k Steps/S = 236"/min
SCALE = -50800
OUTPUT_SCALE = 1.000
MIN_LIMIT = -16.2
MAX_LIMIT = 0.2
FERROR = 0.25
MIN_FERROR = 0.1
HOME_OFFSET = 0.25
HOME_SEARCH_VEL = 0.5
HOME_LATCH_VEL = 0.05
HOME_FINAL_VEL = 0.5
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 1

View File

@@ -0,0 +1,18 @@
net Xmax eztrol.x-positive-limit
net Xmin eztrol.x-negative-limit
net Zmax eztrol.z-positive-limit
net Zmin eztrol.z-negative-limit
loadrt mux2
unlinkp motion.spindle-speed-out
unlinkp lowpass.0.in
net spd-mux mux2.0.out lowpass.0.in
net encodervelocity hm2_5i20.0.encoder.00.velocity eztrol.spindle-rps-reading
net spd-motion motion.spindle-speed-out mux2.0.in0
net spd-eztrol eztrol.spindle-rpm-control mux2.0.in1
net speed-select halui.mode.is-manual mux2.0.sel
addf mux2.0 servo-thread
#eztrol.estop
#eztrol.in-manual-mode
#eztrol.limit-override
#eztrol.spindle-max-rpm

View File

@@ -0,0 +1,39 @@
Smithy
www.smithy.com
These configurations are for the following Smithy machines:
1240 - Mill equipped with Leadshine axis drives, VFD and 1.5kW AC induction type spindle motor, and controlled by signals from a Mesa 5i20 FPGA card.
1240_4axis - Mill equipped with Leadshine axis drives, VFD and 1.5kW AC induction type spindle motor, rotary 4th axis, and controlled by signals from a Mesa 5i20 FPGA card.
1240combined - Mill equipped with Leadshine three phase axis drives, Mesa 8i20 BLDC spindle motor drive and 6000RPM spindle motor, and controlled by signals from a Mesa 5i20 FPGA card.
1240combined_4axis - Mill equipped with Leadshine three phase axis drives, Mesa 8i20 BLDC spindle motor drive and 6000RPM spindle motor, rotary 4th axis (two phase), and controlled by signals from a Mesa 5i20 FPGA card.
1240combined_mm - Metric version of 1240combined.
1034gecko/1240gecko - Mill equipped with Gecko G201 axis drives, VFD and 1.5kW AC induction type spindle motor, and controlled by signals from a PC parallel port.
1240rutex - Mill equipped with Rutex DC brush servo axis drives, 1.5kW AC induction type spindle motor with forward and reverse, and controlled by signals from a PC parallel port.
1240rutex_4axis - Mill equipped with Rutex DC brush servo axis drives, 1.5kW AC induction type spindle motor with forward and reverse, rotary 4th axis, and controlled by signals from a PC parallel port.
516gecko - Mill equipped with Gecko G201 axis drives, Sieg variable speed brushless DC spindle, and controlled by signals from a PC parallel port.
622 - Mill equipped with YAKO Automation axis drives, Sieg variable speed brushless DC spindle, and controlled by signals from a Mesa 5i20 FPGA card.
622_4axis - Mill equipped with YAKO Automation axis drives, Sieg variable speed brushless DC spindle, rotary 4th axis, and controlled by signals from a Mesa 5i20 FPGA card.
622gecko - Mill equipped with Gecko G201 axis drives, Sieg variable speed brushless DC spindle, and controlled by signals from a PC parallel port.
622keyence - Mill equipped with Leadshine MD2278 axis drives, Sieg variable speed brushless DC spindle, Keyence digital contact sensor, chip vacuum and controlled by signals from a Mesa 5i20 FPGA card.
622leadshine - Mill equipped with Leadshine MD2278 axis drives, Sieg variable speed brushless DC spindle, and controlled by signals from a Mesa 5i20 FPGA card.
924 - Lathe equipped with YAKO Automation axis drives, Sieg variable speed brushless DC spindle, programmable power tool post, and controlled by signals from a Mesa 5i20 FPGA card.
6130 - Lathe equipped with Leadshine three phase axis drives, VFD and AC induction type spindle motor, programmable power tool post, and controlled by signals from a Mesa 5i20 FPGA card.

View File

@@ -0,0 +1,24 @@
unlinkp iocontrol.0.tool-change
unlinkp iocontrol.0.tool-changed
net tool-change eztrol.tool-change iocontrol.0.tool-change
net tool-changed eztrol.tool-changed iocontrol.0.tool-changed
net tool-prep-number eztrol.tool-prep-number iocontrol.0.tool-prep-number
net Xmax eztrol.x-positive-limit
net Xmin eztrol.x-negative-limit
net Ymax eztrol.y-positive-limit
net Ymin eztrol.y-negative-limit
net Zmax eztrol.z-positive-limit
net Zmin eztrol.z-negative-limit
loadrt mux2
unlinkp motion.spindle-speed-out
unlinkp pwmgen.0.value
net spd-mux mux2.0.out pwmgen.0.value eztrol.spindle-rpm-reading
net spd-motion motion.spindle-speed-out mux2.0.in0
net spd-eztrol eztrol.spindle-rpm-control mux2.0.in1
net speed-select halui.mode.is-manual mux2.0.sel
addf mux2.0 servo-thread
#eztrol.estop
#eztrol.in-manual-mode
#eztrol.limit-override
#eztrol.spindle-max-rpm

View File

@@ -0,0 +1,12 @@
<pyvcp>
<label>
<text>"RPM:"</text>
</label>
<number>
<halpin>"rpm"</halpin>
<font>("Helvetica",12)</font>
<format>"4d"</format>
<width>4</width>
</number>
</pyvcp>

View File

@@ -0,0 +1,14 @@
loadusr -W hal_manualtoolchange
# in case they were linked already
unlinkp iocontrol.0.tool-change
unlinkp iocontrol.0.tool-changed
net tool-change hal_manualtoolchange.change iocontrol.0.tool-change
net tool-changed hal_manualtoolchange.changed iocontrol.0.tool-changed
net tool-prep-number hal_manualtoolchange.number iocontrol.0.tool-prep-number
net spindle-cmd pyvcp.rpm

View File

@@ -0,0 +1,43 @@
<pyvcp>
<label>
<text>"Sensor Position:"</text>
</label>
<number>
<halpin>"keyence_position"</halpin>
<font>("Helvetica",12)</font>
<format>"1.4f"</format>
<width>6</width>
</number>
<button>
<halpin>"keyence_reset"</halpin>
<text>"SET SENSOR = 0.0"</text>
</button>
<scale>
<font>("Helvetica",12)</font>
<width>"50"</width>
<halpin>"adjustment"</halpin>
<resolution>.0001</resolution>
<orient>VERTICAL</orient>
<min_>.025</min_>
<max_>-.025</max_>
</scale>
<label>
<text>"Center Electrode Height:"</text>
</label>
<number>
<halpin>"center_height"</halpin>
<font>("Helvetica",12)</font>
<format>"1.4f"</format>
<width>6</width>
</number>
<label>
<text>"Center Electrode to Post Height:"</text>
</label>
<number>
<halpin>"gap"</halpin>
<font>("Helvetica",12)</font>
<format>"1.4f"</format>
<width>6</width>
</number>
</pyvcp>

View File

@@ -0,0 +1,29 @@
loadusr -W hal_manualtoolchange
# in case they were linked already
unlinkp iocontrol.0.tool-change
unlinkp iocontrol.0.tool-changed
net tool-change hal_manualtoolchange.change iocontrol.0.tool-change
net tool-changed hal_manualtoolchange.changed iocontrol.0.tool-changed
net tool-prep-number hal_manualtoolchange.number iocontrol.0.tool-prep-number
#configure the encoder input for the Keyence sensor
setp hm2_5i20.0.encoder.00.scale 25641.025641026
#connect the encoder position to an analog input of the motion controller for the Keyence sensor
net keyence_position hm2_5i20.0.encoder.00.position motion.analog-in-00
#connect pyvcp signals for the keyence sensor interface
net keyence_position pyvcp.keyence_position
#connect the encoder reset signal to a [yvcp button for the Keyence sensor
net keyence_reset hm2_5i20.0.encoder.00.reset pyvcp.keyence_reset
#connect the pyvcp scale wigit to an analog input of the motion controller
net adjustment pyvcp.adjustment-f motion.analog-in-01
#connect the pyvcp scale wigit to an analog input of the motion controller
net center_height pyvcp.center_height motion.analog-out-00
net gap pyvcp.gap motion.analog-out-01

View File

@@ -0,0 +1,4 @@
T1 P1 Z+0.100000 D0.100000 I+60.000000 J+120.000000 Q1 ;
T2 P2 D0.100000 I+60.000000 J+120.000000 Q2 ;
T3 P3 D0.100000 I+5.000000 J+85.000000 Q3 ;
T4 P4 D0.100000 I+5.000000 J+85.000000 Q4 ;

View File

@@ -0,0 +1,4 @@
T1 P1 D0.125000 Z+0.511000 ;1/8 end mill
T2 P2 D0.062500 Z+0.100000 ;1/16 end mill
T3 P3 D0.201000 Z+1.273000 ;#7 tap drill
T99999 P99999 Z+0.100000 ;big tool number

View File

@@ -0,0 +1,44 @@
# Jog Pendant
loadrt encoder num_chan=1
loadrt mux8 count=1
addf encoder.capture-position servo-thread
addf encoder.update-counters servo-thread
addf mux8.0 servo-thread
# "times 4 mode" one count per full quadrature cycle, instead of the usual one count per edge.
# mpg jog wheels often have a full quadrature cycle per "click". 0 for off and 1 for on.
setp encoder.0.x4-mode 1
# X1
net scale1 mux8.0.sel0 hm2_5i20.0.gpio.048.in_not
setp mux8.0.in1 0.0001
# X10
net scale2 mux8.0.sel1 hm2_5i20.0.gpio.050.in_not
setp mux8.0.in2 0.001
# X100
net scale3 mux8.0.sel2 hm2_5i20.0.gpio.052.in_not
setp mux8.0.in4 0.01
net pend-scale axis.0.jog-scale mux8.0.out
net pend-scale axis.1.jog-scale
net pend-scale axis.2.jog-scale
#net pend-scale axis.3.jog-scale
net mpg-a encoder.0.phase-A hm2_5i20.0.gpio.051.in_not
net mpg-b encoder.0.phase-B hm2_5i20.0.gpio.049.in_not
net mpg-x axis.0.jog-enable hm2_5i20.0.gpio.054.in_not
net mpg-y axis.1.jog-enable hm2_5i20.0.gpio.056.in_not
net mpg-z axis.2.jog-enable hm2_5i20.0.gpio.058.in_not
#net mpg-4 axis.3.jog-enable hm2_5i20.0.gpio.060.in_not
#net mpg-off hm2_5i20.0.gpio.062.in_not
setp hm2_5i20.0.gpio.064.is_output TRUE
setp hm2_5i20.0.gpio.064.invert_output TRUE
net mpg-led hm2_5i20.0.gpio.064.out hm2_5i20.0.gpio.062.in
net pend-counts axis.0.jog-counts <= encoder.0.counts
net pend-counts axis.1.jog-counts
net pend-counts axis.2.jog-counts
#net pend-counts axis.3.jog-counts

View File

@@ -0,0 +1,87 @@
<pyvcp>
<hbox>
<label>
<text>"COUNT:"</text>
</label>
<number>
<halpin>"count"</halpin>
<format>"6d"</format>
<width>6</width>
</number>
<button>
<halpin>"reset"</halpin>
<text>"RESET"</text>
</button>
<checkbutton>
<halpin>"led"</halpin>
<text>"LED"</text>
</checkbutton>
</hbox>
<hbox>
<label>
<text>"A"</text>
</label>
<led>
<halpin>"a"</halpin>
</led>
<label>
<text>"B"</text>
</label>
<led>
<halpin>"b"</halpin>
</led>
</hbox>
<hbox>
<label>
<text>"X1"</text>
</label>
<led>
<halpin>"x1"</halpin>
</led>
<label>
<text>"X10"</text>
</label>
<led>
<halpin>"x10"</halpin>
</led>
<label>
<text>"X100"</text>
</label>
<led>
<halpin>"x100"</halpin>
</led>
</hbox>
<hbox>
<label>
<text>"OFF"</text>
</label>
<led>
<halpin>"off"</halpin>
</led>
<label>
<text>"X"</text>
</label>
<led>
<halpin>"x"</halpin>
</led>
<label>
<text>"Y"</text>
</label>
<led>
<halpin>"y"</halpin>
</led>
<label>
<text>"Z"</text>
</label>
<led>
<halpin>"z"</halpin>
</led>
<label>
<text>"4"</text>
</label>
<led>
<halpin>"4"</halpin>
</led>
</hbox>
</pyvcp>

View File

@@ -0,0 +1,44 @@
# Jog Pendant
loadrt encoder num_chan=1
loadrt mux8 count=1
addf encoder.capture-position servo-thread
addf encoder.update-counters servo-thread
addf mux8.0 servo-thread
# "times 4 mode" one count per full quadrature cycle, instead of the usual one count per edge.
# mpg jog wheels often have a full quadrature cycle per "click". 0 for off and 1 for on.
setp encoder.0.x4-mode 1
# X1
net scale1 mux8.0.sel0 hm2_5i20.0.gpio.048.in_not
setp mux8.0.in1 0.0001
# X10
net scale2 mux8.0.sel1 hm2_5i20.0.gpio.050.in_not
setp mux8.0.in2 0.001
# X100
net scale3 mux8.0.sel2 hm2_5i20.0.gpio.052.in_not
setp mux8.0.in4 0.01
net pend-scale axis.0.jog-scale mux8.0.out
net pend-scale axis.1.jog-scale
net pend-scale axis.2.jog-scale
net pend-scale axis.3.jog-scale
net mpg-a encoder.0.phase-A hm2_5i20.0.gpio.051.in_not
net mpg-b encoder.0.phase-B hm2_5i20.0.gpio.049.in_not
net mpg-x axis.0.jog-enable hm2_5i20.0.gpio.054.in_not
net mpg-y axis.1.jog-enable hm2_5i20.0.gpio.056.in_not
net mpg-z axis.2.jog-enable hm2_5i20.0.gpio.058.in_not
net mpg-4 axis.3.jog-enable hm2_5i20.0.gpio.060.in_not
#net mpg-off hm2_5i20.0.gpio.062.in_not
setp hm2_5i20.0.gpio.064.is_output TRUE
setp hm2_5i20.0.gpio.064.invert_output TRUE
net mpg-led hm2_5i20.0.gpio.064.out hm2_5i20.0.gpio.062.in
net pend-counts axis.0.jog-counts <= encoder.0.counts
net pend-counts axis.1.jog-counts
net pend-counts axis.2.jog-counts
net pend-counts axis.3.jog-counts

View File

@@ -0,0 +1,82 @@
# Jog Pendant
# load the hostmot2 driver, this doesn't do anything by itself,
# it just waits for low-level drivers to register boards
loadrt hostmot2 debug_idrom=1 debug_module_descriptors=1 debug_pin_descriptors=1 debug_modules=1
# load the low-level driver for the board
# this will load the board's firmware and register it with the hostmot2
# driver loaded above, and it'll show up in HAL
loadrt hm2_pci config="firmware=hm2/5i20/SVST2_4_7I47.BIT num_encoders=1 num_pwmgens=0 num_stepgens=0"
# set up the watchdog
#setp hm2_5i20.0.watchdog.timeout_ns 10000000
loadusr -Wn naiky pyvcp -c naiky naiky.xml
# create realtime thread
loadrt threads name1=base-thread period1=50000 name2=servo-thread period2=1000000
loadrt encoder num_chan=1
# "times 4 mode" one count per full quadrature cycle, instead of the usual one count per edge.
# mpg jog wheels often have a full quadrature cycle per "click". 0 for off and 1 for on.
setp encoder.0.x4-mode FALSE
#net X1 hm2_5i20.0.gpio.000.in_not naiky.x1
#net X10 hm2_5i20.0.gpio.002.in_not naiky.x10
#net X100 hm2_5i20.0.gpio.004.in_not naiky.x100
#net SEL-X hm2_5i20.0.gpio.006.in_not naiky.x
#net SEL-Y hm2_5i20.0.gpio.008.in_not naiky.y
#net SEL-Z hm2_5i20.0.gpio.010.in_not naiky.z
#net SEL-4 hm2_5i20.0.gpio.012.in_not naiky.4
#net SEL-OFF hm2_5i20.0.gpio.014.in_not naiky.off
#setp hm2_5i20.0.gpio.016.is_output TRUE
#setp hm2_5i20.0.gpio.016.invert_output TRUE
#net LED hm2_5i20.0.gpio.016.out naiky.led
#net MPG-A encoder.0.phase-A hm2_5i20.0.gpio.003.in_not naiky.a
#net MPG-B encoder.0.phase-B hm2_5i20.0.gpio.001.in_not naiky.b
#net X1 hm2_5i20.0.gpio.024.in_not naiky.x1
#net X10 hm2_5i20.0.gpio.026.in_not naiky.x10
#net X100 hm2_5i20.0.gpio.028.in_not naiky.x100
#net SEL-X hm2_5i20.0.gpio.030.in_not naiky.x
#net SEL-Y hm2_5i20.0.gpio.032.in_not naiky.y
#net SEL-Z hm2_5i20.0.gpio.034.in_not naiky.z
#net SEL-4 hm2_5i20.0.gpio.036.in_not naiky.4
#net SEL-OFF hm2_5i20.0.gpio.038.in_not naiky.off
#setp hm2_5i20.0.gpio.040.is_output TRUE
#setp hm2_5i20.0.gpio.040.invert_output TRUE
#net LED hm2_5i20.0.gpio.040.out naiky.led
#net MPG-A encoder.0.phase-A hm2_5i20.0.gpio.027.in_not naiky.a
#net MPG-B encoder.0.phase-B hm2_5i20.0.gpio.025.in_not naiky.b
net X1 hm2_5i20.0.gpio.048.in_not naiky.x1
net X10 hm2_5i20.0.gpio.050.in_not naiky.x10
net X100 hm2_5i20.0.gpio.052.in_not naiky.x100
net SEL-X hm2_5i20.0.gpio.054.in_not naiky.x
net SEL-Y hm2_5i20.0.gpio.056.in_not naiky.y
net SEL-Z hm2_5i20.0.gpio.058.in_not naiky.z
net SEL-4 hm2_5i20.0.gpio.060.in_not naiky.4
net SEL-OFF hm2_5i20.0.gpio.062.in_not naiky.off
setp hm2_5i20.0.gpio.064.is_output TRUE
setp hm2_5i20.0.gpio.064.invert_output TRUE
net LED hm2_5i20.0.gpio.064.out naiky.led
net MPG-A encoder.0.phase-A hm2_5i20.0.gpio.051.in_not naiky.a
net MPG-B encoder.0.phase-B hm2_5i20.0.gpio.049.in_not naiky.b
net COUNT encoder.0.position naiky.count
net RESET encoder.0.reset naiky.reset
# hook the functions to threads
# read inputs
addf hm2_5i20.0.read base-thread
addf encoder.update-counters base-thread
addf encoder.capture-position servo-thread
# write outputs
addf hm2_5i20.0.write servo-thread
start
show pin
waitusr naiky