Problems understanding motor settings...

More
09 May 2018 21:50 - 09 May 2018 21:58 #110459 by Lcvette
Lcvette created the topic: Problems understanding motor settings...
Hey all..
I am almost finished rewriting a config fil for my setup 7i92_7i77_7i76 and my last hurdle is to convert a working INI file from metric to inches. My issue is i am not familiar enough with the numbers to know whats what to simply convert in the raw INI file so i figured I would try using the PNCConf to output a new INI for the axis and Spindle with the proper information in the INI file and transfer that information over. but when i got into PNCConf, i am having some trouble understanding and resolving some of the boxes in the calculator. below is the known good working INI file from my firend exact same machine with same screws servos drives etc.. I just need to convert it to inches. can anyone possibly help me in the right direction?

Info on the machine is as follows:
6mm lead screws
X and Y servos are 3000rpm rated speed
gear ratio in the drives I believe are set at .001mm resolution per pulse which would be 6000 pulses per revolution
encoders are 5000 line incremental

Z axis on the below INI file has a 2500rpm servo

Z axis on my machine has a 1500rpm servo, I ordered the incorrect unit :( but will have to make do for now..



[EMC]
MACHINE = VMC2
DEBUG = 0

[DISPLAY]
DISPLAY = gmoccapy
EMBED_TAB_NAME =Probe Screen
EMBED_TAB_LOCATION = ntb_user_tabs
EMBED_TAB_COMMAND = halcmd loadusr -Wn gladevcp gladevcp -c gladevcp -u python/probe_screen.py -x {XID} probe_icons/probe_screen.glade

PREFERENCE_FILE_PATH = gmoccapy_preferences
POSITION_OFFSET = RELATIVE
POSITION_FEEDBACK = ACTUAL
MAX_FEED_OVERRIDE = 3.000000
MAX_SPINDLE_OVERRIDE = 1.250000
MIN_SPINDLE_OVERRIDE = 0.500000
INTRO_GRAPHIC = linuxcnc.gif
INTRO_TIME = 1
PROGRAM_PREFIX = /home/cnc/linuxcnc/nc_files
PYVCP = pyvcp-panel.xml
INCREMENTS = .1mm .05mm .01mm .005mm
POSITION_FEEDBACK = ACTUAL
DEFAULT_VELOCITY = 150.000000
MAX_LINEAR_VELOCITY = 280
MIN_LINEAR_VELOCITY = 0.500000
DEFAULT_ANGULAR_VELOCITY = 12.000000
MAX_ANGULAR_VELOCITY = 650.000000
MIN_ANGULAR_VELOCITY = 1.666667
EDITOR = gedit
GEOMETRY = xyz

[FILTER]
PROGRAM_EXTENSION = .png,.gif,.jpg Greyscale Depth Image
PROGRAM_EXTENSION = .py Python Script
png = image-to-gcode
gif = image-to-gcode
jpg = image-to-gcode
py = python

[TASK]
TASK = milltask
CYCLE_TIME = 0.010

[RS274NGC]
#BELOW IS THE STARTUP CODE FOR THE MACHINE, WILL BE IN THIS STATE AT STARTUP
RS274NGC_STARTUP_CODE = g17 g21 g40 g43h0 g54 g64 P 0.01 G80 G90 G94 G97 M5 M9
PARAMETER_FILE = linuxcnc.var
FEATURES=30
SUBROUTINE_PATH = macros


#BELOW ARE MY REMAPPED M CODES FOR TOOLCHANGES
REMAP=M6 modalgroup=6 prolog=change_prolog ngc=toolchange epilog=change_epilog
REMAP=M10 modalgroup=6 argspec=p ngc=m10
REMAP=M11 modalgroup=6 argspec=p ngc=m11
REMAP=M12 modalgroup=6 argspec=p ngc=m12
REMAP=M13 modalgroup=6 ngc=m13
REMAP=M21 modalgroup=6 ngc=m21
REMAP=M22 modalgroup=6 ngc=m22
REMAP=M23 modalgroup=6 ngc=m23
REMAP=M24 modalgroup=6 ngc=m24
REMAP=M25 modalgroup=6 ngc=m25
REMAP=M26 modalgroup=6 ngc=m26


[TOOLSENSOR]
# Control probe rapid speed
RAPID_SPEED = 600


[TOOLSETTER]

X = 10
Y = 10
Z = -20
# abort change if no toolsensor contact after this probe distance
MAXPROBE = -20

# this is not named TOOL_CHANGE_POSITION on purpose - canon uses it and will
# interfere
[CHANGE_POSITION]
X = 10
Y = 10
Z = -2


[EMCMOT]
EMCMOT = motmod
COMM_TIMEOUT = 1.0
COMM_WAIT = 0.010
SERVO_PERIOD = 1000000

[HOSTMOT2]
# **** This is for info only ****
# DRIVER0=hm2_eth
# BOARD0=7i92

[HAL]
HALUI = halui
HALFILE = VMC2.hal
HALFILE = custom.hal
HALFILE = vc-p1as.hal
POSTGUI_HALFILE = postgui_call_list.hal
POSTGUI_HALFILE = vc-p1as-postgui.hal
POSTGUI_HALFILE = custom_postgui.hal
HALUI = halui
SHUTDOWN = shutdown.hal

[HALUI]
MDI_COMMAND=...
MDI_COMMAND=...
MDI_COMMAND=...
MDI_COMMAND=...
MDI_COMMAND=...
MDI_COMMAND=G10 L20 P1 X0
MDI_COMMAND=G10 L20 P1 Y0
MDI_COMMAND=G10 L20 P1 Z0
MDI_COMMAND=G0 X0 Y0 Z0
MDI_COMMAND=G10 L20 P1 A0


[PYTHON]
PATH_APPEND = /home/cnc/linuxcnc/configs/VMC2/python
TOPLEVEL = /home/cnc/linuxcnc/configs/VMC2/python/toplevel.py
LOG_LEVEL = 8



[TRAJ]
AXES = 4
COORDINATES = X Y Z A
MAX_ANGULAR_VELOCITY = 360.00
DEFAULT_ANGULAR_VELOCITY = 36.00
LINEAR_UNITS = mm
ANGULAR_UNITS = degree
CYCLE_TIME = 0.010
DEFAULT_LINEAR_VELOCITY = 50
MAX_VELOCITY = 283.33

[EMCIO]
EMCIO = io
CYCLE_TIME = 0.100
TOOL_TABLE = tool.tbl
TOOL_CHANGE_QUILL_UP = 0

#********************
# Axis X
#********************
[AXIS_0]
TYPE = LINEAR
HOME = 0.0
FERROR = 0.1
MIN_FERROR = 0.01
MAX_VELOCITY = 280
MAX_ACCELERATION = 2000.0
# The values below should be 25% larger than MAX_VELOCITY and MAX_ACCELERATION
# If using BACKLASH compensation STEPGEN_MAXACCEL should be 100% larger.
STEPGEN_MAXVEL = 350
STEPGEN_MAXACCEL = 4000
P = 3000
I = 0
D = 0
FF0 = 0
FF1 = 1
FF2 = 0
BIAS = 0
DEADBAND = 0
MAX_OUTPUT = 0
ENCODER_SCALE = -2000.17
# these are in nanoseconds
DIRSETUP = 3000
DIRHOLD = 6000
STEPLEN = 1000
STEPSPACE = 1000
STEP_SCALE = -600.05

MIN_LIMIT = -360.0
MAX_LIMIT = 335.0
HOME_OFFSET = 300.00
HOME_SEARCH_VEL = 75
HOME_LATCH_VEL = 15
HOME_FINAL_VEL = 150.000000
HOME_USE_INDEX = no
HOME_SEQUENCE = 1

#********************
# Axis Y
#********************
[AXIS_1]
TYPE = LINEAR
HOME = 0.0
FERROR = 0.10
MIN_FERROR = 0.01
MAX_VELOCITY = 280
MAX_ACCELERATION = 2000.0
# The values below should be 25% larger than MAX_VELOCITY and MAX_ACCELERATION
# If using BACKLASH compensation STEPGEN_MAXACCEL should be 100% larger.
STEPGEN_MAXVEL = 350
STEPGEN_MAXACCEL = 4000
P = 2700
I = 0
D = 0
FF0 = 0
FF1 = 1
FF2 = 0
BIAS = 0
DEADBAND = 0
MAX_OUTPUT = 0
ENCODER_SCALE = -2000.17
# these are in nanoseconds
DIRSETUP = 3000
DIRHOLD = 6000
STEPLEN = 1000
STEPSPACE = 1000
STEP_SCALE = -600.05

MIN_LIMIT = -345.0
MAX_LIMIT = 35.0
HOME_OFFSET = 1.000
HOME_SEARCH_VEL = 75
HOME_LATCH_VEL = 15
HOME_FINAL_VEL = 150.000000
HOME_USE_INDEX = no
HOME_SEQUENCE = 1

#********************
# Axis Z
#********************
[AXIS_2]
TYPE = LINEAR
HOME = 0.0
FERROR = 0.1
MIN_FERROR = 0.01
MAX_VELOCITY = 265
MAX_ACCELERATION = 1800.0
# The values below should be 25% larger than MAX_VELOCITY and MAX_ACCELERATION
# If using BACKLASH compensation STEPGEN_MAXACCEL should be 100% larger.
STEPGEN_MAXVEL = 350
STEPGEN_MAXACCEL = 3600
P = 2500
I = 0
D = 0
FF0 = 0
FF1 = 1
FF2 = 0
BIAS = 0
DEADBAND = 0
MAX_OUTPUT = 0
ENCODER_SCALE = 2000.17
# these are in nanoseconds
DIRSETUP = 3000
DIRHOLD = 6000
STEPLEN = 1000
STEPSPACE = 1000
STEP_SCALE = 600.05

MIN_LIMIT = -400.0
MAX_LIMIT = 20.0
HOME_OFFSET = -2.000
HOME_SEARCH_VEL = 75
HOME_LATCH_VEL = 15
HOME_FINAL_VEL = 25.000000
HOME_USE_INDEX = no
HOME_SEQUENCE = 0

#********************
# Axis A
#********************
[AXIS_3]
TYPE = ANGULAR
HOME = 0.0
FERROR = 2.0
MIN_FERROR = 0.750
MAX_VELOCITY = 650.0
MAX_ACCELERATION = 3000.0
# The values below should be 25% larger than MAX_VELOCITY and MAX_ACCELERATION
# If using BACKLASH compensation STEPGEN_MAXACCEL should be 100% larger.
STEPGEN_MAXVEL = 840
STEPGEN_MAXACCEL = 6000
P = 6000
I = 0
D = 0
FF0 = 0
FF1 = 1
FF2 = 0
BIAS = 0
DEADBAND = 0
MAX_OUTPUT = 0
ENCODER_SCALE = 2000
# these are in nanoseconds
DIRSETUP = 3000
DIRHOLD = 6000
STEPLEN = 1000
STEPSPACE = 1000
STEP_SCALE = -183.335
MIN_LIMIT = -9999.0
MAX_LIMIT = 9999.0
HOME_OFFSET = 0.0
HOME_SEQUENCE = 2

#********************
# Spindle
#********************
[SPINDLE_9]
P = 0.0
I = 0.0
D = 0.0
FF0 = 1.0
FF1 = 0.0
FF2 = 0.0
BIAS = 0.0
DEADBAND = 0.0
MAX_OUTPUT = 6225
ENCODER_SCALE = -4110.0
OUTPUT_SCALE = 6225
OUTPUT_MIN_LIMIT = 0
OUTPUT_MAX_LIMIT = 6225
Last Edit: 09 May 2018 21:58 by Lcvette.
More
09 May 2018 23:06 - 09 May 2018 23:07 #110469 by PCW
PCW replied the topic: Problems understanding motor settings...
A couple general comments

1. Its a lot easier to make a open loop step/dir system as a starting point.(no encoder feedback)
This is because you must get both the stepgen and encoder scales correct and in the proper direction
if you use encoder feedback.

2. The P values you have are way too high for closed loop systems (and most open loop systems as well)
(P of 6000 means if you have a 1 u error, the correction velocity is 6mm/sec (or 6u /ms servo thread)
so is guaranteed to overshoot wildly)

For open loop step/dir systems, the P value is normally 1/servo period (so 1000 for a 1 ms servo thread period)
which means "fix the position error by the next servo thread time"
This is typically too high for closed loop systems (for closed loop I would start at P=100)
Last Edit: 09 May 2018 23:07 by PCW.
The following user(s) said Thank You: Lcvette
More
10 May 2018 02:51 - 10 May 2018 02:53 #110485 by Lcvette
Lcvette replied the topic: Problems understanding motor settings...

PCW wrote: A couple general comments

1. Its a lot easier to make a open loop step/dir system as a starting point.(no encoder feedback)
This is because you must get both the stepgen and encoder scales correct and in the proper direction
if you use encoder feedback.

2. The P values you have are way too high for closed loop systems (and most open loop systems as well)
(P of 6000 means if you have a 1 u error, the correction velocity is 6mm/sec (or 6u /ms servo thread)
so is guaranteed to overshoot wildly)

For open loop step/dir systems, the P value is normally 1/servo period (so 1000 for a 1 ms servo thread period)
which means "fix the position error by the next servo thread time"
This is typically too high for closed loop systems (for closed loop I would start at P=100)


ok, we are running in open loop with the loop closed only between the servo and drive in pulse mode on the 7i76, but reporting the encoders to the 7i77 for homing.. hit home switch then move off home switch to next index pulse for accurate homing via the servo encoder.

So in that instance you are saying it would be better to have the P value at 1000.


as for transfering his information from metric to inches, I am trying to figure out some of the following numbers and what they are to be able to convert or determine what needs to be converted. any help appreciated!

#********************
# Axis X
#********************
[AXIS_0]
TYPE = LINEAR
HOME = 0.0
FERROR = 0.1
MIN_FERROR = 0.01
MAX_VELOCITY = 280 (mm/s)
MAX_ACCELERATION = 2000.0 (mm/s/s)?
# The values below should be 25% larger than MAX_VELOCITY and MAX_ACCELERATION
# If using BACKLASH compensation STEPGEN_MAXACCEL should be 100% larger.
STEPGEN_MAXVEL = 350 (????)
STEPGEN_MAXACCEL = 4000 (?????)
P = 3000
I = 0
D = 0
FF0 = 0
FF1 = 1
FF2 = 0
BIAS = 0
DEADBAND = 0
MAX_OUTPUT = 0
ENCODER_SCALE = -2000.17
# these are in nanoseconds
DIRSETUP = 3000 (Nano Seconds)
DIRHOLD = 6000 (Nano Seconds)
STEPLEN = 1000 (Nano Seconds)[/color]
STEPSPACE = 1000 (Nano Seconds)
STEP_SCALE = -600.05 (Nano Seconds)

MIN_LIMIT = -360.0 (degrees?)
MAX_LIMIT = 335.0 (degrees?)
HOME_OFFSET = 300.00 (degrees?)
HOME_SEARCH_VEL = 75 (mm/s)
HOME_LATCH_VEL = 15 (mm/s)
HOME_FINAL_VEL = 150.000000 (mm/s)
HOME_USE_INDEX = no
HOME_SEQUENCE = 1
Last Edit: 10 May 2018 02:53 by Lcvette.
More
10 May 2018 12:36 - 10 May 2018 12:42 #110505 by Todd Zuercher
Todd Zuercher replied the topic: Problems understanding motor settings...
The min and max limits are your soft limit boundaries for the axis and are specified in machine units (mm in this case. ) The same for the home offset.

The max acceleration and max vel settings are in units/sec/sec and units /sec. (mm here)
Last Edit: 10 May 2018 12:42 by Todd Zuercher.
More
15 May 2018 12:34 #110761 by andypugh
andypugh replied the topic: Problems understanding motor settings...
Probably too late now, but you could consider leaving the machine config in metric units.
LinuxCNC uses metric units internally anyway.

By setting the machine to display in imperial and setting G20 everything you see on screen, and the G-code, will be in your quaint olde-worlde units.
Moderators: cmorley
Time to create page: 0.069 seconds
Powered by Kunena Forum