Re: following error question


  Ray Henry wrote:

>
>Hi Dale
>
>You've got my curiosity aimed at your test bench!  Are you trying to run 
>real servos with step and direction from smdromod?  If so, and you can 
>talk about it, how
>
I'm not sure what you mean by real servos.  Servo refers to the 
command/feedback loop,  a servo motor without feedback is just a motor. 
 I've been testing the electronics running different motors. The first 
is a Speed-O-Matic (Emerson Elec.) 1/2 HP 1750 RPM 180 V Permanent 
Magnet DC motor that was pulled from scrap,  and looks like it.  The 
second is a Leeson 1 HP,  all other specs are the same.  The third motor 
is a new Bodine 1/4 HP 2500 RPM 130 V gearmotor used in a different 
project.  And last is another new Bodine motor same as above without the 
gear reduction.  Tuning has been successful with the 1/2 HP junk motor 
as well as the new Bodine 1/4 HP non reduction.  Wired as a stand alone 
speed control my drive worked great with the Bodine gearmotor. Since 
motors like these are available with mounting hardware for encoders and 
tachs that would qualify them as servo motors.  For the bench testing 
I've made adapters to mount the US Digital E6S 2000cpr encoders to the 
face of the motors.  The US Digital encoders work great.

Step pulse freq. is converted to a voltage with a National Semiconductor 
LM2907/LM2917.  This output voltage determines the pulse width and the 
direction signal determines which side of the Hbridge gets the pulse. 
 This leads to your second question.

>
>My second question deals with womething that we call pulse rate 
>granularity.  My understanding of what is going on with freqmod is really 
>limited.  I think that freqmod has to operate at divisions of the maximum 
>pulse rate.  If you lower the feedrate just a bit, you should see the 
>frequency generator hopping between 31250 and 15625.  If you get a 
>chance, could you do just a bit of experimenting with this and share your 
>findings?
>
>Ray
>
I am using an antique HeathKit Oscope that I built many moons ago. 
 Exact calibration would be questoinable but it still works.  Watching 
the step and direction lines I don't see the granularity you describe. 
 There's more going on with pulse rate than simply doubling or halving 
it.  I do see the jitter and it seems to have little if any effect on 
the F to V conversion.  I had already started this project and wondered 
if the idea would work at all when I first heard of the granularity 
thing.  I'm not a C programmer so the code still doesn't make much sense 
to me but if I look at it enough it'll sink in.  Jumping from full speed 
down to half speed or from half to full would have to drive any stepper 
crazy.  Wouldn't make for a very good accel/deccel ramp.  One thing of 
interest is that during a move EMC seems to be attempting to brake the 
motor by throwing in some opposite direction pulses.  It's time to 
figure out how to use the logging and plotting so I can analyze what's 
going on.  With my scope it's there then it's gone, it seems to ramp up 
and down nice enough for my application. Also worth noting,  for manual 
incremental jogging smdromod will output a series of pulses and I can 
feel the shaft move and watch the display update in increments of  0.0001"

Next round of testing will be the addition of tach feedback to my 
controller and something I just kind of stumbled on, a regenerative 
drive.  That should be interesting!  BTW I use Eagle PCB and 
Circuitmaker simulator.  It was with circuitmaker that I discovered how 
to build a regenerative drive.

Attached is my ini file.  The last changes were setting default & max 
velocity to 4.0  and increasing default & max acceleration from 8 to 10. 
 Acceleration at 10 did introduce some growling in a band of the upper 
speed range. Any comments or suggestions on tuning parameters are welcome.

What would be good respectable settings for following error?

; EMC controller parameters for generic controller. Make these what you need
; for your system.

; Modification history:
; 03-Jun-2002  FMP created

; General section -------------------------------------------------------------
[EMC]

; Version of this INI file
VERSION =               $Revision: 1.0 $

; Name of machine, for use with display, etc.
MACHINE =               dam

; Name of NML file to use, default is emc.nml
NML_FILE =              dam.nml

; Line of code that is executed after starting the rs274ngc code. 
RS274NGC_STARTUP_CODE = G20 
 
; Debug level, 0 means no messages. See emc/src/emcnml/emcglb.h for others
; DEBUG =               0x00000003
; DEBUG =                 0x00000007
DEBUG =               0x7FFFFFFF

; Sections for display options ------------------------------------------------
[DISPLAY]

; Platform for GUI, e.g., realtime, nonrealtime
PLAT =                  nonrealtime

; Name of display program, e.g., xemc
DISPLAY =             tkemc
; DISPLAY =             xemc
; DISPLAY =             yemc
; DISPLAY =             keystick
; DISPLAY =             emcpanel

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

; 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 = emc.gif
INTRO_TIME = 5

; Task controller section -----------------------------------------------------
[TASK]

; Platform for task controller, e.g., realtime, nonrealtime
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 =        dam.var

; Motion control section ------------------------------------------------------
[EMCMOT]

; Platform for motion, e.g., realtime, nonrealtime
PLAT =                  realtime
; PLAT =                nonrealtime

; Name of motion control program
; EMCMOT =              steppermod.o
; EMCMOT =              freqmod.o
EMCMOT =              smdromod.o
; EMCMOT =              stgmod.o
; EMCMOT =              stg8mod.o
; EMCMOT =              emcmotsim
STEPPING_TYPE = 0

; 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

; Address for parallel port used for steppers
PARPORT_IO_ADDRESS =    0x378

; 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.000016

; Trajectory planner section --------------------------------------------------
[TRAJ]

AXES =                  1
COORDINATES =           X
HOME =                  0
LINEAR_UNITS =          0.03937007874016
ANGULAR_UNITS =         1.0
CYCLE_TIME =            0.001
DEFAULT_VELOCITY =      4.0
MAX_VELOCITY =          4.0
DEFAULT_ACCELERATION =  10.0
MAX_ACCELERATION =      10.0
PROBE_INDEX =           0
PROBE_POLARITY =        1

; Axes sections ---------------------------------------------------------------

; First axis
[AXIS_0]

TYPE =                          LINEAR
UNITS =                         0.03937007874016
HOME =                          0.0000
MAX_VELOCITY =                  4.0
P = 400.000
I = 0.000
D = 3.000
FF0 = 0.000
FF1 = 0.500
FF2 = 0.000
BACKLASH = 0.000
BIAS = 0.000
MAX_ERROR = 0.0000
DEADBAND = 0.000
CYCLE_TIME =                    0.00100
INPUT_SCALE =                   40000    0
OUTPUT_SCALE = 10000.000 0.000
MIN_LIMIT =                     -10000.0
MAX_LIMIT =                     10000.0
MIN_OUTPUT =                    -10
MAX_OUTPUT =                    10
FERROR = 0.050
MIN_FERROR = 0.005
HOMING_VEL =                    0.2
HOME_OFFSET =                   0.0
ENABLE_POLARITY =               1
MIN_LIMIT_SWITCH_POLARITY =     0
MAX_LIMIT_SWITCH_POLARITY =     0
HOME_SWITCH_POLARITY =          1
HOMING_POLARITY =               1
JOGGING_POLARITY =              1
FAULT_POLARITY =                1

; section for main IO controller parameters
-----------------------------------
[EMCIO]

; Platform for IO controller, e.g., realtime, nonrealtime
PLAT =                  nonrealtime

; Name of IO controller program, e.g., bridgeportio
; EMCIO =               bridgeportio
EMCIO =               minimillio
; EMCIO =               simio

; cycle time, in seconds
CYCLE_TIME =    0.100

; tool table file
TOOL_TABLE =    dam.tbl

; address for parallel port used for auxiliary IO
PARPORT_IO_ADDRESS =    0x278

; wait times in seconds for spindle brake, release
SPINDLE_OFF_WAIT          =     1.0
SPINDLE_ON_WAIT           =     1.5

; external digital inputs, outputs are always 0 for 0V, 1 for 5/24V

; digital in bits

ESTOP_SENSE_INDEX         =     1
LUBE_SENSE_INDEX          =     2

; digital in polarity, 0 is inverted, 1 is normal
; controller compares with polarity, equal means on, not equal means off

ESTOP_SENSE_POLARITY      =     0
LUBE_SENSE_POLARITY       =     0

; digital out bits

SPINDLE_FORWARD_INDEX     =     1
SPINDLE_REVERSE_INDEX     =     0
MIST_COOLANT_INDEX        =     6
FLOOD_COOLANT_INDEX       =     7
SPINDLE_DECREASE_INDEX    =     8
SPINDLE_INCREASE_INDEX    =     9
ESTOP_WRITE_INDEX         =     10
SPINDLE_BRAKE_INDEX       =     11
LUBE_WRITE_INDEX          =     2

; analog out bits

SPINDLE_ON_INDEX          =     3

; 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 usually -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