- Posts: 2180
- Thank you received: 905
caxis.comp status
2 years 9 months ago #291570
by spumco
Replied by spumco on topic caxis.comp - problems
Subspindle is set up and working badly. The second caxis.comp is doing it's thing, but as usual my PID-fu is weak.
Spindle mode it works fine. RPM is as-commanded running open loop.
Problem is in axis mode. I'm pretty sure I've got some scaling issue, or I've connected the wrong feedback pin somewhere (RPM vs RPS).
To recap the setup:
P - 1
I - 0
D - 0.01
FF0 - 0
FF1 - 0.025(?)
FF2 - 0
FF3 - 0
max_output - 0
deadband - 0.1
Any higher P and it wags back and forth until ferror. No D and it runs away until ferror. The strange FF1 tells me I have something wrong somewhere.
If I can get it to home and settle down, any commanded moves (G0 W180) take forever. The motor jumps a few degrees at normal speed, then creeps along with a pid.w.output at about 0.1rpm... oscillating the whole time. Takes 10-15 seconds to get close to finishing the move, then another 15 seconds to settle down. It does eventually stop without hunting.
The following error isn't super-high, compared to the wild behavior before I found the above settings, but somthing is causing the output speed to be silly.
I don't think any of the other INI values/settings are clamping the speed - everything is set pretty high.
So... what have I got wrong that would cause FF1 to need to be set like it is? Halscope attached, even though its silly.
[AXIS_W]
MAX_VELOCITY = 90
#MAX_VELOCITY_POLAR = 20
MAX_ACCELERATION = 180
MIN_LIMIT = -1e99
MAX_LIMIT = 1e99
[JOINT_4]
TYPE = ANGULAR
MAX_VELOCITY = 90
MAX_ACCELERATION = 180
MIN_LIMIT = -1e99
MAX_LIMIT = 1e99
MIN_FERROR = 500
FERROR = 500
P = 0.0
I = 0.0
D = 0.0
FF0 = 0.0
FF1 = 1.0
FF2 = 0.0
FF3 = 0.0
BIAS = 0.0
DEADBAND = 0.1
MAX_OUTPUT = 0.0
HOME = 0
HOME_OFFSET = 0.000000
HOME_SEARCH_VEL = 0
HOME_LATCH_VEL = -50
HOME_USE_INDEX = 1
VOLATILE_HOME = 1
#HOME_SEQUENCE = 4
[SPINDLE_1]
SCALE = 5000
ENCODER_SCALE = 10000
STEPLEN = 1000
STEPSPACE = 1000
DIRSETUP = 2000
DIRHOLD = 2000
MIN_RPM = 0
MAX_RPM = 5000
MIN_RPS = 0
MAX_RPS = 50.00
MAX_ACCEL_RPM = 1000
MAX_ACCEL_RPS = 50.00
P = 0.0
I = 0.0
D = 0.0
BIAS = 0.0
FF0 = 1.0
FF1 = 0.0
FF2 = 0.0
DEADBAND = 0
MAX_OUTPUT = 5000
MAX_VELOCITY = 5000
MIN_VELOCITY = 0
MAX_REVERSE_VELOCITY = 5000
MIN_REVERSE_VELOCITY = 0
MAX_ACCELERATION = 200
Spindle mode it works fine. RPM is as-commanded running open loop.
Problem is in axis mode. I'm pretty sure I've got some scaling issue, or I've connected the wrong feedback pin somewhere (RPM vs RPS).
To recap the setup:
- Step-dir command, stepgen is in velocity mode
- Feedback is from the drive; 2500 lines, 10k post-quad to 7i85s.
- Steps per rev is 5000
P - 1
I - 0
D - 0.01
FF0 - 0
FF1 - 0.025(?)
FF2 - 0
FF3 - 0
max_output - 0
deadband - 0.1
Any higher P and it wags back and forth until ferror. No D and it runs away until ferror. The strange FF1 tells me I have something wrong somewhere.
If I can get it to home and settle down, any commanded moves (G0 W180) take forever. The motor jumps a few degrees at normal speed, then creeps along with a pid.w.output at about 0.1rpm... oscillating the whole time. Takes 10-15 seconds to get close to finishing the move, then another 15 seconds to settle down. It does eventually stop without hunting.
The following error isn't super-high, compared to the wild behavior before I found the above settings, but somthing is causing the output speed to be silly.
I don't think any of the other INI values/settings are clamping the speed - everything is set pretty high.
So... what have I got wrong that would cause FF1 to need to be set like it is? Halscope attached, even though its silly.
Warning: Spoiler!
[AXIS_W]
MAX_VELOCITY = 90
#MAX_VELOCITY_POLAR = 20
MAX_ACCELERATION = 180
MIN_LIMIT = -1e99
MAX_LIMIT = 1e99
[JOINT_4]
TYPE = ANGULAR
MAX_VELOCITY = 90
MAX_ACCELERATION = 180
MIN_LIMIT = -1e99
MAX_LIMIT = 1e99
MIN_FERROR = 500
FERROR = 500
P = 0.0
I = 0.0
D = 0.0
FF0 = 0.0
FF1 = 1.0
FF2 = 0.0
FF3 = 0.0
BIAS = 0.0
DEADBAND = 0.1
MAX_OUTPUT = 0.0
HOME = 0
HOME_OFFSET = 0.000000
HOME_SEARCH_VEL = 0
HOME_LATCH_VEL = -50
HOME_USE_INDEX = 1
VOLATILE_HOME = 1
#HOME_SEQUENCE = 4
[SPINDLE_1]
SCALE = 5000
ENCODER_SCALE = 10000
STEPLEN = 1000
STEPSPACE = 1000
DIRSETUP = 2000
DIRHOLD = 2000
MIN_RPM = 0
MAX_RPM = 5000
MIN_RPS = 0
MAX_RPS = 50.00
MAX_ACCEL_RPM = 1000
MAX_ACCEL_RPS = 50.00
P = 0.0
I = 0.0
D = 0.0
BIAS = 0.0
FF0 = 1.0
FF1 = 0.0
FF2 = 0.0
DEADBAND = 0
MAX_OUTPUT = 5000
MAX_VELOCITY = 5000
MIN_VELOCITY = 0
MAX_REVERSE_VELOCITY = 5000
MIN_REVERSE_VELOCITY = 0
MAX_ACCELERATION = 200
The following user(s) said Thank You: jpg
Please Log in or Create an account to join the conversation.
- smc.collins
- Offline
- Platinum Member
-
Less
More
- Posts: 723
- Thank you received: 139
2 years 9 months ago #291573
by smc.collins
Replied by smc.collins on topic caxis.comp - problems
As i said, the problem is trying to be 2 different things. I'm looking at it
The following user(s) said Thank You: spumco
Please Log in or Create an account to join the conversation.
2 years 9 months ago #291591
by spumco
Replied by spumco on topic caxis.comp - problems
I should really look back at my previous posts.
I think the problem is the same as what prompted me to switch from step-dir to PWM on the main spindle. The spindle stepgen scale is set for steps/rev, but the axis mode config is set up for steps/degree.
The sub drive can't be run in PWM or analog, no so option to change. Next test will be to set up the stepgen to be suitable for axis mode, and then see where I can scale something or other so the spindle works properly.
I think the problem is the same as what prompted me to switch from step-dir to PWM on the main spindle. The spindle stepgen scale is set for steps/rev, but the axis mode config is set up for steps/degree.
The sub drive can't be run in PWM or analog, no so option to change. Next test will be to set up the stepgen to be suitable for axis mode, and then see where I can scale something or other so the spindle works properly.
Please Log in or Create an account to join the conversation.
- smc.collins
- Offline
- Platinum Member
-
Less
More
- Posts: 723
- Thank you received: 139
2 years 9 months ago #291592
by smc.collins
Replied by smc.collins on topic caxis.comp - problems
The issue at handz is that we can't send a rpm command to the acis to make it operate as a spindle.
Ie the acceleration or speed rate of roatary axis is not correctly handled. That desperately needs to be fixed and a spindle mode input to handle the math change. But I need to look over the source code and I'm super swamped.
I think adding a equation
RPM / numbers = degrees second
Add a spindle function input to handle the brake and chabge over, and maybe offer a second set of pid tuning values for the spindle operation. In all not really that much code but touches things.
Ohh and add the input pins to outout to hal.
Ie the acceleration or speed rate of roatary axis is not correctly handled. That desperately needs to be fixed and a spindle mode input to handle the math change. But I need to look over the source code and I'm super swamped.
I think adding a equation
RPM / numbers = degrees second
Add a spindle function input to handle the brake and chabge over, and maybe offer a second set of pid tuning values for the spindle operation. In all not really that much code but touches things.
Ohh and add the input pins to outout to hal.
Please Log in or Create an account to join the conversation.
2 years 9 months ago #291602
by spumco
Replied by spumco on topic caxis.comp - problems
I've got a cunning plan.
I'm going to use the caxis.comp axis-mode PID-enable signal to switch a mux2 which will change the stepgen position-scale value.
At rest or during c-axis commands, caxis.1.pid-enable is ON. This will set the stepgen position scale to a value which correlates to degrees.
At M3/M4, caxis.1.pid-enable is OFF. The mux-sel will switch the stepgen scale to a value which correlates to revs.
I'm sure I'll have more issues, but I think this is the last major piece of the puzzle to using a stepgen for both modes.
Testing tonight.
I'm going to use the caxis.comp axis-mode PID-enable signal to switch a mux2 which will change the stepgen position-scale value.
At rest or during c-axis commands, caxis.1.pid-enable is ON. This will set the stepgen position scale to a value which correlates to degrees.
At M3/M4, caxis.1.pid-enable is OFF. The mux-sel will switch the stepgen scale to a value which correlates to revs.
I'm sure I'll have more issues, but I think this is the last major piece of the puzzle to using a stepgen for both modes.
Testing tonight.
Code:
setp mux2.s1.in0 [SPINDLE_1](SCALE)
setp mux2.s1.in1 [JOINT_4](SCALE)
net WAXIS-POS-ENABLE <= caxis.1.pid-enable
net WAXIS-POS-ENABLE => mux2.s1.sel
net SPIN0-STEPSCALE-OUT <= mux2.s1.out
net SPIN0-STEPSCALE-OUT => hm2_[MESA](BOARD).0.stepgen.03.position-scale
Please Log in or Create an account to join the conversation.
2 years 9 months ago #291638
by spumco
Replied by spumco on topic caxis.comp - problems
Bugger.
Stepgen.N.position-scale is a parameter, not a pin. Can't use net to link a parameter.
Hmmm.... how to set parameter values on the fly....?
Stepgen.N.position-scale is a parameter, not a pin. Can't use net to link a parameter.
Hmmm.... how to set parameter values on the fly....?
Please Log in or Create an account to join the conversation.
Time to create page: 0.278 seconds