How to. 2 or more motors on one axis. Gantry
- Todd Zuercher
- Offline
- Platinum Member
Less
More
- Posts: 5007
- Thank you received: 1441
19 Dec 2019 15:17 - 19 Dec 2019 15:18 #152913
by Todd Zuercher
Replied by Todd Zuercher on topic How to. 2 or more motors on one axis. Gantry LinuxCNC 2.8 Master
The reason is because before homing the machine, the kinimatics are stuck in "Joint" mode, and the gui buttons for jogging the Y axis are only connected to joint#2 (the normal Y joint). And this is why jogging is usually disabled before homing in most gantry configs in Linuxcnc. I have not played with this my self, since I don't have any gantry machines currently set up for Linuxcnc.
I've wondered if there might be a way to tie both of the Y-axis' joints jog command inputs together before homing so that they could be jogged. I'm pretty sure it could be done without too much trouble using external inputs from physical jog buttons or MPG, not so sure if the jog buttons in the gui screen could be made to work though since their signals don't go through hal. I can't say that I've seen any examples of how to do this posted anywhere, but I haven't paid real close attention to the subject. I suspect most people just accept that you can't jog the gantry before it is homed.
I've wondered if there might be a way to tie both of the Y-axis' joints jog command inputs together before homing so that they could be jogged. I'm pretty sure it could be done without too much trouble using external inputs from physical jog buttons or MPG, not so sure if the jog buttons in the gui screen could be made to work though since their signals don't go through hal. I can't say that I've seen any examples of how to do this posted anywhere, but I haven't paid real close attention to the subject. I suspect most people just accept that you can't jog the gantry before it is homed.
Last edit: 19 Dec 2019 15:18 by Todd Zuercher.
Please Log in or Create an account to join the conversation.
19 Dec 2019 16:40 #152914
by dgarrett
forum.linuxcnc.org/38-general-linuxcnc-q...ppings-solved#151989
Sim example is:
configs/sim/axis/gantry/gantry_jjog.ini
github.com/LinuxCNC/linuxcnc/blob/2.8/co...ntry/gantry_jjog.txt
Replied by dgarrett on topic How to. 2 or more motors on one axis. Gantry LinuxCNC 2.8 Master
... examples of how to do this posted ...
forum.linuxcnc.org/38-general-linuxcnc-q...ppings-solved#151989
Sim example is:
configs/sim/axis/gantry/gantry_jjog.ini
github.com/LinuxCNC/linuxcnc/blob/2.8/co...ntry/gantry_jjog.txt
Please Log in or Create an account to join the conversation.
- Jalfrezi19
- Offline
- New Member
Less
More
- Posts: 5
- Thank you received: 0
19 Dec 2019 20:50 #152926
by Jalfrezi19
Replied by Jalfrezi19 on topic How to. 2 or more motors on one axis. Gantry LinuxCNC 2.8 Master
OK, thanks all for the replies!
I'll dive into homing then...
Sander
I'll dive into homing then...
Sander
Please Log in or Create an account to join the conversation.
- DaveInConesus
- Offline
- New Member
Less
More
- Posts: 11
- Thank you received: 0
12 Feb 2020 18:04 #157203
by DaveInConesus
Replied by DaveInConesus on topic How to. 2 or more motors on one axis. Gantry LinuxCNC 2.8 Master
My extra switches show up today. I recently added 3 homing switches and made a clean stepconf generated configuration that works correctly. Any warnings or guidance before I start at the first post in this thread and start editing (other than backing up first).
Machine is a Gatton CNC router with two stepper motors on the gantry. Running LinuxCNC 2.8.
Machine is a Gatton CNC router with two stepper motors on the gantry. Running LinuxCNC 2.8.
Please Log in or Create an account to join the conversation.
12 Feb 2020 18:31 #157204
by bevins
Replied by bevins on topic How to. 2 or more motors on one axis. Gantry LinuxCNC 2.8 Master
I have a fully functioning XXYZ machine. It uses shared home switches though. But the machine is working.
XXYZ HAL
XXYZ ini file
XXYZ HAL
XXYZ ini file
The following user(s) said Thank You: DaveInConesus
Please Log in or Create an account to join the conversation.
13 Feb 2020 02:07 - 13 Feb 2020 02:08 #157247
by rodw
Replied by rodw on topic How to. 2 or more motors on one axis. Gantry LinuxCNC 2.8 Master
You should not have any problems. I use seperate min limit , max limit and homing switches on my gantry. There is an example config here.
forum.linuxcnc.org/47-hal-examples/34072...ranch-gantry-example
but the spindle at speed pin has changed names since it was done.
forum.linuxcnc.org/47-hal-examples/34072...ranch-gantry-example
but the spindle at speed pin has changed names since it was done.
Last edit: 13 Feb 2020 02:08 by rodw.
The following user(s) said Thank You: DaveInConesus
Please Log in or Create an account to join the conversation.
13 Feb 2020 13:25 #157284
by bevins
rodw: That config works?
I don't see how. It looks really weird to me the way the joints are setup.
Replied by bevins on topic How to. 2 or more motors on one axis. Gantry LinuxCNC 2.8 Master
You should not have any problems. I use seperate min limit , max limit and homing switches on my gantry. There is an example config here.
forum.linuxcnc.org/47-hal-examples/34072...ranch-gantry-example
but the spindle at speed pin has changed names since it was done.
rodw: That config works?
I don't see how. It looks really weird to me the way the joints are setup.
Warning: Spoiler!
# Generated by PNCconf at Sat Feb 24 07:57:58 2018
# If you make changes to this file, they will be
# overwritten when you run PNCconf again
[EMC]
MACHINE = my_LinuxCNC_machine-rod
DEBUG = 0
VERSION = 1.0
[DISPLAY]
DISPLAY = axis
#DISPLAY = gmoccapy
POSITION_OFFSET = RELATIVE
POSITION_FEEDBACK = ACTUAL
MAX_FEED_OVERRIDE = 2.000000
MAX_SPINDLE_OVERRIDE = 1.000000
MIN_SPINDLE_OVERRIDE = 0.500000
INTRO_GRAPHIC = linuxcnc.gif
INTRO_TIME = 5
PROGRAM_PREFIX = /home/plasma/linuxcnc/nc_files
INCREMENTS = 5mm 1mm .5mm .1mm .05mm .01mm .005mm
POSITION_FEEDBACK = ACTUAL
DEFAULT_LINEAR_VELOCITY = 120
MAX_LINEAR_VELOCITY = 350
DEFAULT_ANGULAR_VELOCITY = 12.000000
MAX_ANGULAR_VELOCITY = 180.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]
PARAMETER_FILE = linuxcnc.var
[EMCMOT]
EMCMOT = motmod
COMM_TIMEOUT = 1.0
COMM_WAIT = 0.010
SERVO_PERIOD = 1000000
[HOSTMOT2]
# **** This is for info only ****
# DRIVER0=hm2_eth
# BOARD0=7i76e
[HAL]
HALUI = halui
HALFILE = my_LinuxCNC_machine-rod.hal
#HALFILE = custom.hal
#POSTGUI_HALFILE = postgui_call_list.hal
#SHUTDOWN = shutdown.hal
[HALUI]
[KINS]
JOINTS = 4
KINEMATICS = trivkins coordinates=YYXZ
[TRAJ]
COORDINATES = X Y Z
LINEAR_UNITS = mm
ANGULAR_UNITS = degree
CYCLE_TIME = 0.010
DEFAULT_LINEAR_VELOCITY = 300
MAX_LINEAR_VELOCITY = 300
[EMCIO]
EMCIO = io
CYCLE_TIME = 0.100
TOOL_TABLE = tool.tbl
#********************
# Joint 0 - Y
[JOINT_0]
#********************
TYPE = LINEAR
HOME = 0.0
FERROR = 20.0
MIN_FERROR = 1.0
MAX_VELOCITY = 300
MAX_ACCELERATION = 1500
# 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 = 700
STEPGEN_MAXACCEL = 2000
P = 1000.0
I = 0.0
D = 0.0
FF0 = 0.0
FF1 = 1.0
FF2 = 0.0
BIAS = 0.0
DEADBAND = 0.0
MAX_OUTPUT = 0.0
# these are in nanoseconds
DIRSETUP = 500
DIRHOLD = 500
STEPLEN = 1500
STEPSPACE = 1500
STEP_SCALE = 261.130715645
MIN_LIMIT = -0.01
MAX_LIMIT = 1260.1
HOME_OFFSET = 43
HOME_SEARCH_VEL = -100
HOME_LATCH_VEL = 10
HOME_FINAL_VEL = 50
HOME_USE_INDEX = NO
HOME_SEQUENCE = -1
# Joint 1 - Y1
[JOINT_1]
#********************
TYPE = LINEAR
HOME = 0.0
FERROR = 20.0
MIN_FERROR = 1.0
MAX_VELOCITY = 300
MAX_ACCELERATION = 1500
# 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 = 700
STEPGEN_MAXACCEL = 2000
P = 1000.0
I = 0.0
D = 0.0
FF0 = 0.0
FF1 = 1.0
FF2 = 0.0
BIAS = 0.0
DEADBAND = 0.0
MAX_OUTPUT = 0.0
# these are in nanoseconds
DIRSETUP = 500
DIRHOLD = 500
STEPLEN = 1500
STEPSPACE = 1500
STEP_SCALE = 261.130715645
MIN_LIMIT = -0.01
MAX_LIMIT = 1260.1
HOME_OFFSET = 45
HOME_SEARCH_VEL = -100
HOME_LATCH_VEL = 10
HOME_FINAL_VEL = 50
HOME_USE_INDEX = NO
HOME_SEQUENCE = -1
# Axis Y
#********************
[AXIS_Y]
MAX_VELOCITY = 360
MAX_ACCELERATION = 1500
MIN_LIMIT = -0.01
MAX_LIMIT = 1260.1
#********************
# Joint 2
[JOINT_2]
#********************
TYPE = LINEAR
HOME = 0.0
FERROR = 20.0
MIN_FERROR = 1.0
MAX_VELOCITY = 360
MAX_ACCELERATION = 1500
# 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 = 700
STEPGEN_MAXACCEL = 2000
P = 1000.0
I = 0.0
D = 0.0
FF0 = 0.0
FF1 = 1.0
FF2 = 0.0
BIAS = 0.0
DEADBAND = 0.0
MAX_OUTPUT = 0.0
# these are in nanoseconds
DIRSETUP = 500
DIRHOLD = 500
STEPLEN = 2500
STEPSPACE = 2500
STEP_SCALE = -159.154925543
MIN_LIMIT = -0.01
MAX_LIMIT = 1221.1
HOME_OFFSET = 45.0
HOME_SEARCH_VEL = -100
HOME_LATCH_VEL = 25
HOME_FINAL_VEL = 100
HOME_USE_INDEX = NO
HOME_SEQUENCE = 1
# Axis X
#********************
[AXIS_X]
MAX_VELOCITY = 360
MAX_ACCELERATION = 1500
MIN_LIMIT = -0.01
MAX_LIMIT = 1221.1
#********************
# Joint 3
[JOINT_3]
#********************
TYPE = LINEAR
HOME = 0.0
FERROR = 10.0
MIN_FERROR = 1.0
MAX_VELOCITY = 220
MAX_ACCELERATION = 4000
# 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 = 450
STEPGEN_MAXACCEL = 5000
P = 1000.0
I = 0.0
D = 0.0
FF0 = 0.0
FF1 = 1.0
FF2 = 0.0
BIAS = 0.0
DEADBAND = 0.0
MAX_OUTPUT = 0.0
# these are in nanoseconds
DIRSETUP = 500
DIRHOLD = 500
STEPLEN = 1000
STEPSPACE = 1000
STEP_SCALE = 1000
MIN_LIMIT = -84
MAX_LIMIT = 0.001
HOME_OFFSET = 0.5
HOME_SEARCH_VEL = 10
HOME_LATCH_VEL = 5
HOME_FINAL_VEL = 10
HOME_USE_INDEX = NO
HOME_SEQUENCE = 0
HOME_IS_SHARED = 1
# Axis Z
#********************
[AXIS_Z]
#OFFSET_AV_RATIO = 0.5
# The next 2 settings are double the real speed. Slowing down these settings reduces overshoot.
# As external offsets are never used with z axis moves on plasma,this give max speeds and acceleration becasue OFFSET_AV_RATIO will halve them
# maximum achieveable velocity is 110 mm/sec
# maximum achievable acelleration is say 1500 mm/sec/sec
MAX_VELOCITY = 110
MAX_ACCELERATION = 700
MIN_LIMIT = -84
MAX_LIMIT = 0.001
#********************
# 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 = 2000.0
Please Log in or Create an account to join the conversation.
- tommylight
- Away
- Moderator
Less
More
- Posts: 19188
- Thank you received: 6432
13 Feb 2020 14:14 #157287
by tommylight
Replied by tommylight on topic How to. 2 or more motors on one axis. Gantry LinuxCNC 2.8 Master
From a quick glance, it looks OK. The Joints/axis are not in order but that does not matter and should not cause any issues.
Please Log in or Create an account to join the conversation.
- DaveInConesus
- Offline
- New Member
Less
More
- Posts: 11
- Thank you received: 0
13 Feb 2020 20:19 #157314
by DaveInConesus
Replied by DaveInConesus on topic How to. 2 or more motors on one axis. Gantry LinuxCNC 2.8 Master
Thanks for the multiple pointers and the files. For some reason the system didn't notify me that I had replies. It is going to be freezing here in western NY tomorrow so I may give it a shot.
Dave
Dave
Please Log in or Create an account to join the conversation.
13 Feb 2020 20:46 - 13 Feb 2020 20:47 #157320
by rodw
Yes it worked perfect. It is based off a pncconf test I did for Chris Morley after he added some features to pncconf a long time ago. At that time, I built my config by hand by modifying another config Islanded261 did becasue joint axes was not supported in pncconf.
It just shows how flexible 2.8 and on are with joint numbering with the independent joints.
But I got rid of all references to the axes in hal signals
#*******************
# JOINT 2 X
#*******************
setp pid.2.Pgain [JOINT_2]P
setp pid.2.Igain [JOINT_2]I
setp pid.2.Dgain [JOINT_2]D
setp pid.2.bias [JOINT_2]BIAS
setp pid.2.FF0 [JOINT_2]FF0
setp pid.2.FF1 [JOINT_2]FF1
setp pid.2.FF2 [JOINT_2]FF2
setp pid.2.deadband [JOINT_2]DEADBAND
setp pid.2.maxoutput [JOINT_2]MAX_OUTPUT
setp pid.2.error-previous-target true
setp pid.2.maxerror .0005
net 2-index-enable <=> pid.2.index-enable
net 2-enable => pid.2.enable
net 2-pos-cmd => pid.2.command
net 2-vel-cmd => pid.2.command-deriv
net 2-pos-fb => pid.2.feedback
net 2-output => pid.2.output
# Step Gen signals/setup
setp hm2_7i76e.0.stepgen.02.dirsetup [JOINT_2]DIRSETUP
setp hm2_7i76e.0.stepgen.02.dirhold [JOINT_2]DIRHOLD
setp hm2_7i76e.0.stepgen.02.steplen [JOINT_2]STEPLEN
setp hm2_7i76e.0.stepgen.02.stepspace [JOINT_2]STEPSPACE
setp hm2_7i76e.0.stepgen.02.position-scale [JOINT_2]STEP_SCALE
setp hm2_7i76e.0.stepgen.02.step_type 0
setp hm2_7i76e.0.stepgen.02.control-type 1
setp hm2_7i76e.0.stepgen.02.maxaccel [JOINT_2]STEPGEN_MAXACCEL
setp hm2_7i76e.0.stepgen.02.maxvel [JOINT_2]STEPGEN_MAXVEL
# ---closedloop stepper signals---
net 2-pos-cmd <= joint.2.motor-pos-cmd
net 2-vel-cmd <= joint.2.vel-cmd
net 2-output <= hm2_7i76e.0.stepgen.02.velocity-cmd
net 2-pos-fb <= hm2_7i76e.0.stepgen.02.position-fb
net 2-pos-fb => joint.2.motor-pos-fb
net 2-enable <= joint.2.amp-enable-out
net 2-enable => hm2_7i76e.0.stepgen.02.enable
# ---setup home / limit switch signals---
net home-2 => joint.2.home-sw-in
net min-2 => joint.2.neg-lim-sw-in
net max-2 => joint.2.pos-lim-sw-in
So the axis assignment is 100% controlled by this one single line in the ini ifile
In my view this is how stepconf and pncconf should work but nobody wants to listen to me
Oops, end of rant.....
Replied by rodw on topic How to. 2 or more motors on one axis. Gantry LinuxCNC 2.8 Master
rodw: That config works?
I don't see how. It looks really weird to me the way the joints are setup.
Warning: Spoiler!# Generated by PNCconf at Sat Feb 24 07:57:58 2018 # If you make changes to this file, they will be # overwritten when you run PNCconf again [EMC] MACHINE = my_LinuxCNC_machine-rod DEBUG = 0 VERSION = 1.0 [DISPLAY] DISPLAY = axis #DISPLAY = gmoccapy POSITION_OFFSET = RELATIVE POSITION_FEEDBACK = ACTUAL MAX_FEED_OVERRIDE = 2.000000 MAX_SPINDLE_OVERRIDE = 1.000000 MIN_SPINDLE_OVERRIDE = 0.500000 INTRO_GRAPHIC = linuxcnc.gif INTRO_TIME = 5 PROGRAM_PREFIX = /home/plasma/linuxcnc/nc_files INCREMENTS = 5mm 1mm .5mm .1mm .05mm .01mm .005mm POSITION_FEEDBACK = ACTUAL DEFAULT_LINEAR_VELOCITY = 120 MAX_LINEAR_VELOCITY = 350 DEFAULT_ANGULAR_VELOCITY = 12.000000 MAX_ANGULAR_VELOCITY = 180.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] PARAMETER_FILE = linuxcnc.var [EMCMOT] EMCMOT = motmod COMM_TIMEOUT = 1.0 COMM_WAIT = 0.010 SERVO_PERIOD = 1000000 [HOSTMOT2] # **** This is for info only **** # DRIVER0=hm2_eth # BOARD0=7i76e [HAL] HALUI = halui HALFILE = my_LinuxCNC_machine-rod.hal #HALFILE = custom.hal #POSTGUI_HALFILE = postgui_call_list.hal #SHUTDOWN = shutdown.hal [HALUI] [KINS] JOINTS = 4 KINEMATICS = trivkins coordinates=YYXZ [TRAJ] COORDINATES = X Y Z LINEAR_UNITS = mm ANGULAR_UNITS = degree CYCLE_TIME = 0.010 DEFAULT_LINEAR_VELOCITY = 300 MAX_LINEAR_VELOCITY = 300 [EMCIO] EMCIO = io CYCLE_TIME = 0.100 TOOL_TABLE = tool.tbl #******************** # Joint 0 - Y [JOINT_0] #******************** TYPE = LINEAR HOME = 0.0 FERROR = 20.0 MIN_FERROR = 1.0 MAX_VELOCITY = 300 MAX_ACCELERATION = 1500 # 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 = 700 STEPGEN_MAXACCEL = 2000 P = 1000.0 I = 0.0 D = 0.0 FF0 = 0.0 FF1 = 1.0 FF2 = 0.0 BIAS = 0.0 DEADBAND = 0.0 MAX_OUTPUT = 0.0 # these are in nanoseconds DIRSETUP = 500 DIRHOLD = 500 STEPLEN = 1500 STEPSPACE = 1500 STEP_SCALE = 261.130715645 MIN_LIMIT = -0.01 MAX_LIMIT = 1260.1 HOME_OFFSET = 43 HOME_SEARCH_VEL = -100 HOME_LATCH_VEL = 10 HOME_FINAL_VEL = 50 HOME_USE_INDEX = NO HOME_SEQUENCE = -1 # Joint 1 - Y1 [JOINT_1] #******************** TYPE = LINEAR HOME = 0.0 FERROR = 20.0 MIN_FERROR = 1.0 MAX_VELOCITY = 300 MAX_ACCELERATION = 1500 # 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 = 700 STEPGEN_MAXACCEL = 2000 P = 1000.0 I = 0.0 D = 0.0 FF0 = 0.0 FF1 = 1.0 FF2 = 0.0 BIAS = 0.0 DEADBAND = 0.0 MAX_OUTPUT = 0.0 # these are in nanoseconds DIRSETUP = 500 DIRHOLD = 500 STEPLEN = 1500 STEPSPACE = 1500 STEP_SCALE = 261.130715645 MIN_LIMIT = -0.01 MAX_LIMIT = 1260.1 HOME_OFFSET = 45 HOME_SEARCH_VEL = -100 HOME_LATCH_VEL = 10 HOME_FINAL_VEL = 50 HOME_USE_INDEX = NO HOME_SEQUENCE = -1 # Axis Y #******************** [AXIS_Y] MAX_VELOCITY = 360 MAX_ACCELERATION = 1500 MIN_LIMIT = -0.01 MAX_LIMIT = 1260.1 #******************** # Joint 2 [JOINT_2] #******************** TYPE = LINEAR HOME = 0.0 FERROR = 20.0 MIN_FERROR = 1.0 MAX_VELOCITY = 360 MAX_ACCELERATION = 1500 # 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 = 700 STEPGEN_MAXACCEL = 2000 P = 1000.0 I = 0.0 D = 0.0 FF0 = 0.0 FF1 = 1.0 FF2 = 0.0 BIAS = 0.0 DEADBAND = 0.0 MAX_OUTPUT = 0.0 # these are in nanoseconds DIRSETUP = 500 DIRHOLD = 500 STEPLEN = 2500 STEPSPACE = 2500 STEP_SCALE = -159.154925543 MIN_LIMIT = -0.01 MAX_LIMIT = 1221.1 HOME_OFFSET = 45.0 HOME_SEARCH_VEL = -100 HOME_LATCH_VEL = 25 HOME_FINAL_VEL = 100 HOME_USE_INDEX = NO HOME_SEQUENCE = 1 # Axis X #******************** [AXIS_X] MAX_VELOCITY = 360 MAX_ACCELERATION = 1500 MIN_LIMIT = -0.01 MAX_LIMIT = 1221.1 #******************** # Joint 3 [JOINT_3] #******************** TYPE = LINEAR HOME = 0.0 FERROR = 10.0 MIN_FERROR = 1.0 MAX_VELOCITY = 220 MAX_ACCELERATION = 4000 # 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 = 450 STEPGEN_MAXACCEL = 5000 P = 1000.0 I = 0.0 D = 0.0 FF0 = 0.0 FF1 = 1.0 FF2 = 0.0 BIAS = 0.0 DEADBAND = 0.0 MAX_OUTPUT = 0.0 # these are in nanoseconds DIRSETUP = 500 DIRHOLD = 500 STEPLEN = 1000 STEPSPACE = 1000 STEP_SCALE = 1000 MIN_LIMIT = -84 MAX_LIMIT = 0.001 HOME_OFFSET = 0.5 HOME_SEARCH_VEL = 10 HOME_LATCH_VEL = 5 HOME_FINAL_VEL = 10 HOME_USE_INDEX = NO HOME_SEQUENCE = 0 HOME_IS_SHARED = 1 # Axis Z #******************** [AXIS_Z] #OFFSET_AV_RATIO = 0.5 # The next 2 settings are double the real speed. Slowing down these settings reduces overshoot. # As external offsets are never used with z axis moves on plasma,this give max speeds and acceleration becasue OFFSET_AV_RATIO will halve them # maximum achieveable velocity is 110 mm/sec # maximum achievable acelleration is say 1500 mm/sec/sec MAX_VELOCITY = 110 MAX_ACCELERATION = 700 MIN_LIMIT = -84 MAX_LIMIT = 0.001 #******************** # 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 = 2000.0
Yes it worked perfect. It is based off a pncconf test I did for Chris Morley after he added some features to pncconf a long time ago. At that time, I built my config by hand by modifying another config Islanded261 did becasue joint axes was not supported in pncconf.
It just shows how flexible 2.8 and on are with joint numbering with the independent joints.
But I got rid of all references to the axes in hal signals
Warning: Spoiler!
#*******************
# JOINT 2 X
#*******************
setp pid.2.Pgain [JOINT_2]P
setp pid.2.Igain [JOINT_2]I
setp pid.2.Dgain [JOINT_2]D
setp pid.2.bias [JOINT_2]BIAS
setp pid.2.FF0 [JOINT_2]FF0
setp pid.2.FF1 [JOINT_2]FF1
setp pid.2.FF2 [JOINT_2]FF2
setp pid.2.deadband [JOINT_2]DEADBAND
setp pid.2.maxoutput [JOINT_2]MAX_OUTPUT
setp pid.2.error-previous-target true
setp pid.2.maxerror .0005
net 2-index-enable <=> pid.2.index-enable
net 2-enable => pid.2.enable
net 2-pos-cmd => pid.2.command
net 2-vel-cmd => pid.2.command-deriv
net 2-pos-fb => pid.2.feedback
net 2-output => pid.2.output
# Step Gen signals/setup
setp hm2_7i76e.0.stepgen.02.dirsetup [JOINT_2]DIRSETUP
setp hm2_7i76e.0.stepgen.02.dirhold [JOINT_2]DIRHOLD
setp hm2_7i76e.0.stepgen.02.steplen [JOINT_2]STEPLEN
setp hm2_7i76e.0.stepgen.02.stepspace [JOINT_2]STEPSPACE
setp hm2_7i76e.0.stepgen.02.position-scale [JOINT_2]STEP_SCALE
setp hm2_7i76e.0.stepgen.02.step_type 0
setp hm2_7i76e.0.stepgen.02.control-type 1
setp hm2_7i76e.0.stepgen.02.maxaccel [JOINT_2]STEPGEN_MAXACCEL
setp hm2_7i76e.0.stepgen.02.maxvel [JOINT_2]STEPGEN_MAXVEL
# ---closedloop stepper signals---
net 2-pos-cmd <= joint.2.motor-pos-cmd
net 2-vel-cmd <= joint.2.vel-cmd
net 2-output <= hm2_7i76e.0.stepgen.02.velocity-cmd
net 2-pos-fb <= hm2_7i76e.0.stepgen.02.position-fb
net 2-pos-fb => joint.2.motor-pos-fb
net 2-enable <= joint.2.amp-enable-out
net 2-enable => hm2_7i76e.0.stepgen.02.enable
# ---setup home / limit switch signals---
net home-2 => joint.2.home-sw-in
net min-2 => joint.2.neg-lim-sw-in
net max-2 => joint.2.pos-lim-sw-in
So the axis assignment is 100% controlled by this one single line in the ini ifile
KINEMATICS = trivkins coordinates=YYXZ
In my view this is how stepconf and pncconf should work but nobody wants to listen to me
Oops, end of rant.....
Last edit: 13 Feb 2020 20:47 by rodw.
Please Log in or Create an account to join the conversation.
Time to create page: 0.096 seconds