Hal file: # pinout config file for 3 channel Xylotex drive # using a parport for I/O # # first load the parport driver loadrt probe_parport loadrt hal_parport cfg="0x0378" # # next connect the parport functions to threads # read inputs first addf parport.0.read base-thread 1 # write outputs last addf parport.0.write base-thread -1 # # finally connect physical pins to the signals linksp Xstep parport.0.pin-02-out linksp Xdir parport.0.pin-03-out linksp Ystep parport.0.pin-04-out linksp Ydir parport.0.pin-05-out linksp Zstep parport.0.pin-06-out linksp Zdir parport.0.pin-07-out # create a signal for the estop loopback linkpp iocontrol.0.user-enable-out iocontrol.0.emc-enable-in # create signals for tool loading loopback linkpp iocontrol.0.tool-prepare iocontrol.0.tool-prepared linkpp iocontrol.0.tool-change iocontrol.0.tool-changed # Limit Switches #newsig Z-pos-limit bit #linkps parport.0.pin-10-in => Z-pos-limit #linksp Z-pos-limit => axis.2.pos-lim-sw-in newsig homeswitches bit linkps parport.0.pin-10-in => homeswitches linksp homeswitches => axis.0.home-sw-in linksp homeswitches => axis.1.home-sw-in linksp homeswitches => axis.2.home-sw-in # Shared home/limit switches # If I uncomment more than one link below then # nothing will home. It only sees the switches as limits??? # It works as I expected when only one link is put here. #linksp homeswitches => axis.0.pos-lim-sw-in #linksp homeswitches => axis.1.pos-lim-sw-in linksp homeswitches => axis.2.pos-lim-sw-in My ini file: # EMC controller parameters for generic controller. Make these what you need # for your system. # General note: Comments can either be preceded with a # or ; - either is # acceptable, although # is in keeping with most linux config files. # Settings with a + at the front of the comment are likely needed to get # changed by the user. # Settings with a - at the front are highly unneeded to be changed ############################################################################### # General section ############################################################################### [EMC] #- Version of this INI file VERSION = $Revision: 1.8.2.3 $ #+ Name of machine, for use with display, etc. MACHINE = EMC-HAL-STEP-IN #- Name of NML file to use, default is emc.nml NML_FILE = emc.nml #+ Debug level, 0 means no messages. See src/emc/nml_int/emcglb.h for others DEBUG = 0 # DEBUG = 0x00000007 # DEBUG = 0x7FFFFFFF ############################################################################### # Sections for display options ############################################################################### [DISPLAY] #+ Name of display program, e.g., xemc #DISPLAY = axis # DISPLAY = usrmot DISPLAY = mini # DISPLAY = tkemc # Cycle time, in seconds, that display will sleep between polls CYCLE_TIME = 0.200 #- Path/name of help file HELP_FILE = tkemc.txt #- Initial display setting for position, RELATIVE or MACHINE POSITION_OFFSET = RELATIVE #- Initial display setting for position, COMMANDED or ACTUAL POSITION_FEEDBACK = ACTUAL #+ Highest value that will be allowed for feed override, 1.0 = 100% MAX_FEED_OVERRIDE = 1.2 #- Prefix to be used PROGRAM_PREFIX = /home/mic/emc2/nc_files #- Introductory graphic INTRO_GRAPHIC = emc2.gif INTRO_TIME = 2 ############################################################################### # Task controller section ############################################################################### [TASK] #- Name of task controller program, e.g., bridgeporttask TASK = milltask #- Cycle time, in seconds, that task controller will sleep between polls CYCLE_TIME = 0.010 ############################################################################### # Part program interpreter section ############################################################################### [RS274NGC] #- File containing interpreter variables PARAMETER_FILE = stepper.var ############################################################################### # Motion control section ############################################################################### [EMCMOT] #- Name of the motion controller to use (only one exists for nontrivkins) EMCMOT = motmod #- Key for real OS shared memory, e.g., for simulated motion SHMEM_KEY = 111 #- Timeout for comm to emcmot, in seconds COMM_TIMEOUT = 1.0 #- Interval between tries to emcmot, in seconds COMM_WAIT = 0.010 #+ Base task period, in nanosecs - this is the fastest thread in the machine #BASE_PERIOD = 50000 #BASE_PERIOD = 14000 BASE_PERIOD = 22000 #- Servo task period, in nanosecs - will be rounded to an int multiple of BASE_PERIOD SERVO_PERIOD = 1000000 #- Trajectory Planner task period, in nanosecs - will be rounded to an # integer multiple of SERVO_PERIOD TRAJ_PERIOD = 10000000 ############################################################################### # Hardware Abstraction Layer section ############################################################################### [HAL] # The run script first uses halcmd to execute any HALFILE # files, and then to execute any individual HALCMD commands. # # list of hal config files to run through halcmd #+ files are executed in the order in which they appear HALFILE = core_stepper.hal HALFILE = xylotex_pinout.hal #HALFILE = standard_pinout.hal #- list of halcmd commands to execute # commands are executed in the order in which they appear #HALCMD = save neta ############################################################################### # Trajectory planner section ############################################################################### [TRAJ] #+ machine specific settings AXES = 3 # COORDINATES = X Y Z A B C COORDINATES = X Y Z HOME = 0 0 0 LINEAR_UNITS = inch ANGULAR_UNITS = degree CYCLE_TIME = 0.010 DEFAULT_VELOCITY = 0.0167 MAX_VELOCITY = 0.275 DEFAULT_ACCELERATION = 1.5 MAX_ACCELERATION = 1.650 ############################################################################### # Axes sections ############################################################################### #+ First axis [AXIS_0] # NOTE: the step generator module applies its own limits to # acceleration and velocity. We have discovered that it needs # to have a little "headroom" over the accel by the trajectory # planner, otherwise it can fall slightly behind during accel # and later overshoot as it catches up. In the long term we # hope to come up with a clean fix for this problem. In the # meantime, please set STEPGEN_MAXACCEL below to a few percent # higher than the regular acceleration limit MAX_ACCELERATION TYPE = LINEAR HOME = -1.000 MAX_VELOCITY = 0.275 MAX_ACCELERATION = 1.5 STEPGEN_MAXVEL = 0.3025 STEPGEN_MAXACCEL = 1.65 BACKLASH = 0.000 INPUT_SCALE = 28800 OUTPUT_SCALE = 1.000 MIN_LIMIT = -36.0 MAX_LIMIT = .10 FERROR = 0.050 MIN_FERROR = 0.010 HOME_SEARCH_VEL = -.50 HOME_LATCH_VEL = .10 HOME_USE_INDEX = NO HOME_IGNORE_LIMITS = YES HOME_IS_SHARED = 1 HOME_SEQUENCE = 2 #+ Second axis [AXIS_1] TYPE = LINEAR HOME = -1.000 MAX_VELOCITY = 0.275 MAX_ACCELERATION = 1.5 STEPGEN_MAXVEL = 0.3025 STEPGEN_MAXACCEL = 1.65 BACKLASH = 0.000 INPUT_SCALE = 28800 OUTPUT_SCALE = 1.000 MIN_LIMIT = -24.0 MAX_LIMIT = 0.10 FERROR = 0.050 MIN_FERROR = 0.010 HOME_SEARCH_VEL = .50 HOME_LATCH_VEL = .10 HOME_USE_INDEX = NO HOME_IGNORE_LIMITS = YES HOME_IS_SHARED = 1 HOME_SEQUENCE = 1 #+ Third axis [AXIS_2] TYPE = LINEAR HOME = -1.0 MAX_VELOCITY = 0.275 MAX_ACCELERATION = 1.5 STEPGEN_MAXVEL = 0.3025 STEPGEN_MAXACCEL = 1.65 BACKLASH = 0.000 INPUT_SCALE = 28800 OUTPUT_SCALE = 1.000 MIN_LIMIT = -6.0 MAX_LIMIT = 0.1 FERROR = 0.050 MIN_FERROR = 0.010 HOME_OFFSET = .010 HOME_SEARCH_VEL = .50 HOME_LATCH_VEL = .10 HOME_USE_INDEX = NO HOME_IGNORE_LIMITS = YES HOME_IS_SHARED = 1 HOME_SEQUENCE = 0 ############################################################################### # section for main IO controller parameters ############################################################################### [EMCIO] #- Name of IO controller program, e.g., io EMCIO = io #- cycle time, in seconds CYCLE_TIME = 0.100 #- tool table file TOOL_TABLE = stepper.tbl