Need help with homing (only limit switches wired as ONE circuit)

Jul 22, 2010 2 Replies

OK, the Z axis seems to work and, when commanded to move 1 inch, moves exactly one inch. Tis tells me that the encoder was installed correctly despite problems with the hub.



Now I moved on to homing. Right now I do NOT use home switches. I have limit switches on all axes, wired as ONE chain in series.



I defined some EMC settings that I thought should do. However, when I tried to home Z, it would reach the limit switch and then EMC fails by complaining that limits were tripped on X and Y. What am I doing wrong.



Maybe I should bite the bullet and wire everything right.



Here's my ppmc.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.


# General section ------------------------------------------------------------- [EMC]



# Version of this INI file VERSION = $Revision: 1.13 $



# Name of machine, for use with display, etc. MACHINE = EMC-PPMC



# 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 = tkemc



# Cycle time, in seconds, that display will sleep between polls CYCLE_TIME = 0.100



# Path to 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/ichudov



# Introductory graphic INTRO_GRAPHIC = emc2.gif INTRO_TIME = 2



# Enable popup balloon help BALLOON_HELP = 1



# Task controller section ----------------------------------------------------- [TASK]



# Name of task controller program, e.g., milltask TASK = milltask



# Cycle time, in seconds, that task controller will sleep between polls CYCLE_TIME = 0.010



# Part program interpreter section -------------------------------------------- [RS274NGC]



# File containing interpreter variables PARAMETER_FILE = ppmc.var



# Motion control section ------------------------------------------------------ [EMCMOT]



EMCMOT = motmod



# Timeout for comm to emcmot, in seconds COMM_TIMEOUT = 1.0



# Interval between tries to emcmot, in seconds COMM_WAIT = 0.01



# Servo task period, in nanoseconds SERVO_PERIOD = 1000000



# 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 = ppmc_load.hal



HALFILE = ppmc_servo.hal HALFILE = ppmc_motion.hal HALFILE = ppmc_io.hal



# list of halcmd commands to execute # commands are executed in the order in which they appear #HALCMD = save neta



# Trajectory planner section -------------------------------------------------- [TRAJ]



AXES = 4 # COORDINATES = X Y Z R P W # Igor # COORDINATES = X Y Z A COORDINATES = X Y Z HOME = 0 0 0 0 LINEAR_UNITS = inch ANGULAR_UNITS = degree CYCLE_TIME = 0.010 DEFAULT_VELOCITY = 0.15 MAX_VELOCITY = 2.0 DEFAULT_ACCELERATION = 1.5 MAX_ACCELERATION = 1.5



# Axes sections ---------------------------------------------------------------



# Scaling: The OUTPUT_SCALE should be the speed # in UNITS/second (inches/sec or mm/sec) that would be # reached if the PWM duty cycle was 100%. It depends on # the power supply voltage, motor RPM/Volt factor, and # gearing/screw pitch. For example: # # Power supply voltage 50V # Motor RPM/V 1000RPM/24V # Gearing: 2 motor revs per 1 screw rev # Screw pitch: 0.2" per turn # # Max motor speed = 50V * 1000RPM/24V = 2083 RPM # Max screw speed = 2083RPM * 1(screw)/2(motor) = 1041RPM # Max table speed = 1041RPM * 0.2"/turn = 208 in/min # Max table speed = 208 in/min / 60 seconds = 3.47 inches/sec # # Since max speed is reached at 100% duty cycle, OUTPUT_SCALE # should be 3.47



# First axis [AXIS_0]



TYPE = LINEAR HOME = 0.000 MAX_VELOCITY = 1.9 MAX_ACCELERATION = 2 PID_MAX_VEL = 10 BACKLASH = 0.000 #INPUT_SCALE = -40000 #INPUT_SCALE = -40629.76 INPUT_SCALE = -40640 OUTPUT_SCALE = 1 MIN_LIMIT = -10.0 MAX_LIMIT = 10.0



FERROR = 1 MIN_FERROR = 5



HOME_OFFSET = 0.0 HOME_SEARCH_VEL = 0.0 HOME_LATCH_VEL = 0.0 HOME_USE_INDEX = NO HOME_IGNORE_LIMITS = YES DEADBAND = 1e-06 P = 800.0 I = 25.0 D = 20.0 BIAS = 0.0 FF0 = 0.0 FF1 = 1.0 FF2 = 0.0


# Second axis [AXIS_1]



TYPE = LINEAR HOME = 0.000



# Igor # MAX_VELOCITY = 1.20 # Igor # MAX_ACCELERATION = 1.25 MAX_VELOCITY = 1.941 MAX_ACCELERATION = 2



PID_MAX_VEL = 10 BACKLASH = 0.000



# Igor # INPUT_SCALE = -128000.0 # Igor # OUTPUT_SCALE = -1.0 #INPUT_SCALE = 40000.0 #INPUT_SCALE = 40629.76 INPUT_SCALE = 40640



OUTPUT_SCALE = 1



MIN_LIMIT = -40.0 MAX_LIMIT = 40.0



# MAX_OUTPUT = 10



# Igor # FERROR = 0.001 # Igor # MIN_FERROR = 0.005 FERROR = 1 MIN_FERROR = 5



HOME_OFFSET = 0.0 HOME_SEARCH_VEL = 0.0 HOME_LATCH_VEL = 0.0 HOME_USE_INDEX = NO HOME_IGNORE_LIMITS = YES DEADBAND = 1e-06 P = 800.0 I = 25.0 D = 10.0 BIAS = 0.0 FF0 = 0.0 FF1 = 1.0 FF2 = 0.0



# Third axis [AXIS_2]



TYPE = LINEAR HOME = 0.0 MAX_VELOCITY = 0.2 # 1.20 MAX_ACCELERATION = 0.2 # 1.2 PID_MAX_VEL = 1.2 BACKLASH = 0.000



INPUT_SCALE = 40640 OUTPUT_SCALE = 1.0



MIN_LIMIT = -10.0 MAX_LIMIT = 10.0 FERROR = 1 # 0.001 MIN_FERROR = 5 # 0.005 HOME_OFFSET = 0.0 HOME_SEARCH_VEL = 0.1 HOME_LATCH_VEL = -0.05 HOME_USE_INDEX = YES HOME_IGNORE_LIMITS = YES DEADBAND = 8e-05 P = 800.0 I = 25.0 D = 10.0 BIAS = 0.0 FF0 = 0.0 FF1 = 1.0 FF2 = 0.0



# Igor # # Fourth axis # Igor # [AXIS_3]



# Igor # TYPE = ANGULAR # Igor # HOME = 0.0 # Igor # MAX_VELOCITY = 65 # Igor # MAX_ACCELERATION = 20.0 # Igor # PID_MAX_VEL = 66.0 # Igor # BACKLASH = 0.000 # Igor # INPUT_SCALE = 1111.111 # Igor # OUTPUT_SCALE = 5.0 # Igor # MIN_LIMIT = -3600.0 # Igor # MAX_LIMIT = 3600.0 # Igor # FERROR = 1.010 # Igor # MIN_FERROR = 1.001 # Igor # HOME_OFFSET = 0.0 # Igor # HOME_SEARCH_VEL = 0.0 # Igor # HOME_LATCH_VEL = 0.0 # Igor # HOME_USE_INDEX = NO # Igor # HOME_IGNORE_LIMITS = NO # Igor # DEADBAND = 0.046 # Igor # P = 150.0 # Igor # I = 100.0 # Igor # D = 0.1 # Igor # BIAS = 0.0 # Igor # FF0 = 0.0 # Igor # FF1 = 1.0 # Igor # FF2 = 1.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 = ppmc.tbl



# section for external NML server parameters ---------------------------------- [EMCSERVER] # Uncomment the following line if you need to run a remote GUI. # EMCSERVER = emcsvr


forget my question

I found out home switch wir> OK, the Z axis seems to work and, when commanded to move 1 inch, moves

--------------------------------------------------

This is fun watching.

You are doing very well btw

Gunner, CNC mechanic

-------------------------------------------------------------

------------------------------------------------

-----------------------------------------------------

--------------------------------------------

------------------------------------------------------

--------------------------------------------------

--------------------------------------------------

---------------------------------------------------------------

-----------------------------------

----------------------------------

One could not be a successful Leftwinger without realizing that, in contrast to the popular conception supported by newspapers and mothers of Leftwingers, a goodly number of Leftwingers are not only narrow-minded and dull, but also just stupid. Gunner Asch

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required