Home with servos



I am using a STG Model 2, 8 axis board.  The Burgmaster machine that I am
working on has Harrowe resolvers for feedback so I use a Harrowe resolver to
encoder module for each axis. My set up counts 4096 pulse per revolution of
the resolver but through the mechanical coupling, leadscrew, etc, works out
to 40960 pulses per inch of  axis travel.

When I home my axis X,Y,Z, :

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)

Kurtis

My INI file follows:


; 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





Date Index | Thread Index | Back to archive index | Back to Mailing List Page

Problems or questions? Contact