Re: Home with servos
Hello Kurtis,
> 1. Selected axis moves at preset home velocity, in the preset home
> direction.
> 2. When home switch is hit, the motion changes direction but keeps on
> going.
>
> My INI file uses EMCMOT = stg8mod.o
> The fact that the direction changes tells me that the direction and switch
> polarity values are set correct. (false assumption?)
>
> Q1. Is this the correct EMCMOT or should it be the stg_v2_8axis_mod.o?
> Q2. Is Emc looking for the index pulse but can't see it?
> Q3. Do I need to specify the use of the index pulse? (I understood that I
> could define no index pulse, but the default is to use it)
> Q4. Do I need to modify any cycle times or period? ie. could the pulse be
> too short. (Latch demo in lstg proves that index pulse is there and stg
> sees it)
Q1:
Sorry I am using a STGII 4axes board
For me it is:
EMCMOT = stgmod.o
Q2+Q4:
I had a problem with index pulses not being sensed a while ago, making all
the axes using a small(faster) cycle time did make it for me, try the
following:
[AXIS_0]
;CYCLE_TIME = 0.001000
CYCLE_TIME = 0.000500
same for axis 1 and 2.
Or you could decrease the homing vel. and see if the index pulse is found
then.
Q3:
Index pulses are used by default unless you #define NO_INDEX_PULSE in
extstgmot.c
If you look a the source in emcmot.c
if (emcmotDebug->homingPhase[axis] == 4) {
/* just finished decel, now we'll do final home */
/* add move back to latched position + backoff */
emcmotDebug->freePose.tran.x =
(emcmotDebug->saveLatch[axis] -
emcmotStatus->inputOffset[axis]) *
emcmotDebug->inverseInputScale[axis] +
emcmotConfig->homeOffset[axis];
/* Note that I put a multiplication factor of 2 in front of
the homing velocity below. The reason is that, I think,
if you found the index pulse you know your exact position
it is save to travel with higher speeds. In addition to
that, you actually see that the machine has found its
index pulse for the specified axis */
you even have an indicator if the index pulse is found .....
If you have still no luck look for the the array homingPhase and add a few
temporary debugging messages by using
#ifdef rtai
#define diagnostics rt_printk
#else
#define diagnostics rtl_printf
#endif
the diagnostics macro.
Regards
Max
> ; EMC controller parameters for Loewen Manufacturing's Burgmaster Drilling
> Tab
> le
>
> ; General
> section -------------------------------------------------------------
> [EMC]
>
> ; Version of this INI file
> VERSION = $Revision: 16.Jan.02 $
>
> ; Name of machine, for use with display, etc.
> MACHINE = Burgmaster Drilling Table
>
> ; Name of NML file to use, default is emc.nml
> NML_FILE = burgmaster.nml
>
> ; Debug level, 0 means no messages. See emc/src/emcnml/emcglb.h for others
> ; DEBUG = 0x00000003
> DEBUG = 0x7FFFFFFF
>
> ; Startup codes for RS-274-NGC interpreter
> RS274NGC_STARTUP_CODE = G20
>
> ; Sections for display
> options ------------------------------------------------
> [DISPLAY]
>
> ; Platform for GUI
> PLAT = nonrealtime
>
> ; Name of display program, e.g., xemc
> ; DISPLAY = tkemcex
> DISPLAY = burgmaster
>
>
> ; Cycle time, in seconds, that display will sleep between polls
> CYCLE_TIME = 0.10
>
> ; Path to help file
> HELP_FILE = doc/help.txt
>
> ; Initial display setting for position, RELATIVE or ABSOLUTE
> 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 = programs/
>
> ; Introductory graphic
> INTRO_GRAPHIC = burgmaster.gif
> INTRO_TIME = 20
>
> ; Units for display, default would be AUTO
> LINEAR_UNITS = AUTO
> ; LINEAR_UNITS = INCH
> ; LINEAR_UNITS = MM
> ; LINEAR_UNITS = CM
> ANGULAR_UNITS = AUTO
> ; ANGULAR_UNITS = DEG
> ; ANGULAR_UNITS = RAD
> ; ANGULAR_UNITS = GRAD
>
> ; Enable popup balloon help
> BALLOON_HELP = 1
>
> : Sets jog increment
>
> DEFAULT_JOG_INCREMENT = 1.0000
>
> ; Task controller
> section -----------------------------------------------------
> [TASK]
>
> ; Platform for task controller
> PLAT = nonrealtime
>
> ; Name of task controller program, e.g., bridgeporttask
> TASK = bridgeporttask
> ; TASK = minimilltask
>
> ; 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 = burgmaster.var
>
> ; Motion control
> section ------------------------------------------------------
> [EMCMOT]
>
> ; Platform for motion
> PLAT = realtime
> ; PLAT = nonrealtime
>
> ; Name of motion control program
> EMCMOT = stg8mod.o
> ; EMCMOT = stg2mod.o
>
> ; Key for real OS shared memory, e.g., for simulated motion
> SHMEM_KEY = 100
>
> ; Base address for physical shared memory, e.g., for real-time motion.
> ; Note that if you change this, you may need to change OS parameters, e.g.,
> ; /etc/lilo.conf
> ; SHMEM_BASE_ADDRESS = 0x1F00000
> SHMEM_BASE_ADDRESS = 0x3F00000
>
> ; Base address of Servo To Go board
> STG_BASE_ADDRESS = 0x200
> ; STG_BASE_ADDRESS = 0x300
>
> ; Address for parallel port used for steppers
> PARPORT_IO_ADDRESS = 0x278
>
> ; 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 seconds
> PERIOD = 0.000045
>
> ; Trajectory planner
> section --------------------------------------------------
> [TRAJ]
>
> AXES = 3
> COORDINATES = X Y Z
> HOME = 0 0 0
> LINEAR_UNITS = 0.03937007874016
> ANGULAR_UNITS = 1.0
> CYCLE_TIME = 0.010
>
> DEFAULT_VELOCITY = 0.33333
> MAX_VELOCITY = 2.0
> ; velocity units = inches/second
>
> DEFAULT_ACCELERATION = 1.0
> MAX_ACCELERATION = 1.0
> ; acceleration units = inches/sec/sec
>
> PROBE_INDEX = 0
> PROBE_POLARITY = 1
>
> ; Axes
> sections ---------------------------------------------------------------
>
> ; First axis [X axis] X-X-X-X-X-X-X-X-X-X-X-X-X-X-X-X-X-X-X-X-X-X-X
> [AXIS_0]
>
> TYPE = LINEAR
> UNITS = 0.03937007874016
> HOME = 0.000
>
> MAX_VELOCITY = 1.6667
> ; max velocity units = inches/second
>
> P = 50.000
> I = 1.000
> D = 0.100
> FF0 = 0.000
> FF1 = 0.010
> FF2 = 0.010
> BACKLASH = 0.000
> BIAS = 0.000
> MAX_ERROR = 0.000
> DEADBAND = 0.000025
>
> CYCLE_TIME = 0.001000
>
> INPUT_SCALE = 40960 0
> ; input scale units = pulses/inch
>
> OUTPUT_SCALE = 1.000 0.000
> ; output scale units = true volts/DAC volts
>
> MIN_LIMIT = -0.1
> MAX_LIMIT = 140.0
> ; min / max limit units = inches
>
> MIN_OUTPUT = -10
> MAX_OUTPUT = 10
> ; min / max output units = volts
>
> FERROR = 1.000
> MIN_FERROR = 0.100
>
> HOMING_VEL = 0.1
> ; home velocity units = inches/second
>
> HOME_OFFSET = 0.1
>
>
> ENABLE_POLARITY = 1
> MIN_LIMIT_SWITCH_POLARITY = 0
> MAX_LIMIT_SWITCH_POLARITY = 0
> HOME_SWITCH_POLARITY = 0
> HOMING_POLARITY = 0
> JOGGING_POLARITY = 1
> FAULT_POLARITY = 0
>
>
> ; Second axis [Y axis] Y-Y-Y-Y-Y-Y-Y-Y-Y-Y-Y-Y-Y-Y-Y-Y-Y-Y-Y-Y-Y-Y-
> [AXIS_1]
>
> TYPE = LINEAR
> UNITS = 0.03937007874016
> HOME = 0.000
>
> MAX_VELOCITY = 1.6667
> ; max velocity units = inches/second
>
> P = 50.000
> I = 1.000
> D = 0.100
> FF0 = 0.000
> FF1 = 0.010
> FF2 = 0.010
> BACKLASH = 0.000
> BIAS = 0.000
> MAX_ERROR = 0.000
> DEADBAND = 0.000025
> CYCLE_TIME = 0.001000
>
> INPUT_SCALE = 40960 0
> ; input scale units = pulses/inch
>
> OUTPUT_SCALE = 1.000 0.000
> ; output scale units = true volts/DAC volts
>
> MIN_LIMIT = -0.1
> MAX_LIMIT = 48.1
> ; min / max limit units = inches
>
> MIN_OUTPUT = -10.0
> MAX_OUTPUT = 10.0
> ;min / max output units = volts
>
> FERROR = 1.000
> MIN_FERROR = 0.10
>
> HOMING_VEL = 0.1
> ; homing velocity units = inches/second
>
> HOME_OFFSET = 0.5
>
>
> ENABLE_POLARITY = 1
> MIN_LIMIT_SWITCH_POLARITY = 0
> MAX_LIMIT_SWITCH_POLARITY = 0
> HOME_SWITCH_POLARITY = 0
> HOMING_POLARITY = 0
> JOGGING_POLARITY = 1
> FAULT_POLARITY = 0
>
> ; Third axis [Z axis] Z-Z-Z-Z-Z-Z-Z-Z-Z-Z-Z-Z-Z-Z-Z-Z-Z-Z-Z-Z-Z-Z-Z-Z-
> [AXIS_2]
> TYPE = LINEAR
> UNITS = 0.03937007874016
> HOME = 0.000
>
> MAX_VELOCITY = 1.6667
> ; max velocity units = inches/second
>
> P = 50.000
> I = 1.000
> D = 0.100
> FF0 = 0.010
> FF1 = 0.010
> FF2 = 0.000
> BACKLASH = 0.000
> BIAS = 0.000
> MAX_ERROR = 0.000
> DEADBAND = 0.000025
> CYCLE_TIME = 0.001000
>
> INPUT_SCALE = 40960 0
> ; input scale units = pulses/inch
>
> OUTPUT_SCALE = 1.000 0.000
> ; output scale units = true volts/DAC volts
>
> MIN_LIMIT = -0.1
> MAX_LIMIT = 12.1
> ; min / max limit units = inches
>
> MIN_OUTPUT = -10.0
> MAX_OUTPUT = 10.0
> ; min /max output units = volts
>
> FERROR = 1.000
> MIN_FERROR = 0.10
>
>
> HOMING_VEL = 0.1
> ; homing velocity units = inches/second
>
> HOME_OFFSET = 0.5
>
>
> ENABLE_POLARITY = 1
> MIN_LIMIT_SWITCH_POLARITY = 0
> MAX_LIMIT_SWITCH_POLARITY = 0
> HOME_SWITCH_POLARITY = 0
> HOMING_POLARITY = 0
> JOGGING_POLARITY = 1
> FAULT_POLARITY = 0
>
>
>
> ; section for main IO controller
> parameters -----------------------------------
> [EMCIO]
>
> ; Platform for IO controller
> PLAT = nonrealtime
>
> ; Name of IO controller program, e.g., bridgeportio
> EMCIO = bridgeportio
> ; EMCIO = tkio
>
> ; cycle time, in seconds
> CYCLE_TIME = 0.100
>
> ; tool table file
> TOOL_TABLE = burgmaster.tbl
>
> ; address for parallel port used for auxiliary IO
> PARPORT_IO_ADDRESS = 0x378
>
> ; wait times in seconds for spindle brake, release
> SPINDLE_OFF_WAIT = 1.0
> SPINDLE_ON_WAIT = 1.5
> ; on / off wait time units = seconds
>
> ; external digital inputs, outputs are always 0 for 0V, 1 for 5/24V
>
> ; digital in bits
>
> ESTOP_SENSE_INDEX = 1
> ; e-stop sense = pin 13
> LUBE_SENSE_INDEX = 2
> ; lube sense = pin 12
>
>
> ; digital in polarity, 0 is inverted, 1 is normal
> ; controller compares with polarity, equal means on, not equal means off
>
> ESTOP_SENSE_POLARITY = 1
> LUBE_SENSE_POLARITY = 1
>
> ; digital out bits
>
> SPINDLE_FORWARD_INDEX = 1
> ; spindle forward = pin 3
> SPINDLE_REVERSE_INDEX = 0
> ; spindle reverse = pin 2
> MIST_COOLANT_INDEX = 6
> ; mist coolant = pin 8
> FLOOD_COOLANT_INDEX = 7
> ; flood coolant = pin 9
> SPINDLE_DECREASE_INDEX = 8
> ; spindle decrease = pin 1
> SPINDLE_INCREASE_INDEX = 9
> ; spindle increase = pin 14
> ESTOP_WRITE_INDEX = 10
> ; e-stop write = pin 16
> SPINDLE_BRAKE_INDEX = 11
> ; spindle brake = pin 17
>
> ; analog out bits
>
> SPINDLE_ON_INDEX = 3
> ; spindle on = DAC 3 (with minimill only?)
>
> ; digital out polarity, 0 is inverted, 1 is normal
> ; controller writes the polarity to turn on, opposite of polarity to turn
> off
>
> SPINDLE_FORWARD_POLARITY = 0
> SPINDLE_REVERSE_POLARITY = 0
> MIST_COOLANT_POLARITY = 0
> FLOOD_COOLANT_POLARITY = 0
> SPINDLE_DECREASE_POLARITY = 1
> SPINDLE_INCREASE_POLARITY = 1
> ESTOP_WRITE_POLARITY = 1
> SPINDLE_BRAKE_POLARITY = 0
> SPINDLE_ENABLE_POLARITY = 1
>
> ; section for external NML server
> parameters ----------------------------------
> [EMCSERVER]
>
> ; Name of NML server, e.g., emcsvr; if not found then none will run
> ; EMCSERVER = emcsvr
>
> ; section for emc stripchart parameters ----------------------------------
> [EMCSTRIP]
>
> ; Name of strip chart display program e.g. emcstripchart; if not found
> then none will run
> ; EMCSTRIP = emcstripchart
>
> ; OPTIONS for emcstripchart ussually -f something.conf; This file says
> which ; variables to plot, colors etc. -u changes the update rate.
> ; OPTIONS = -f emcstrip.conf.ferror
--
Max Heise <max.heise-at-gmx.net>
Student Mechatronik/Automatisierungstechnik FHT Esslingen
PGP public key from:
http://www.fht-esslingen.de/~mahemt01/pgp50i.pub or any keyserver
Date Index |
Thread Index |
Back to archive index |
Back to Mailing List Page
Problems or questions? Contact