What represents, or what should I expect from, a well tuned servo system?

More
08 Apr 2018 09:27 #108596 by PCW
Post your current hal and ini files

Please Log in or Create an account to join the conversation.

More
08 Apr 2018 14:02 #108600 by Todd Zuercher
I doubt you saw any suggestions to set a large deadband. 0 for tuning and maybe 1.5 or 2 encoder counts to quiet dither when no movement is commanded.

Please Log in or Create an account to join the conversation.

More
08 Apr 2018 15:48 #108610 by DeckelHead
That makes far more sense, Todd. I could go back and look but I don't really see the point. My sense is that a small number is the best way to go and your suggestion of 0 confirms that. Thank you. I am guessing that this is one of he more significant mistakes that I made and will hopefully move things along.

PCW: Yes, I shall send those along soon, along with screenshots. I saw that the standard LinuxCNC distro has a tool incorporated into it, so I'll try that out once I have some more meaningful info.

Please Log in or Create an account to join the conversation.

More
08 Apr 2018 17:55 - 08 Apr 2018 17:59 #108616 by DeckelHead
First off...Wow! setting DEADBAND to zero made my machine sooo much quieter! Instead of a rumble/buzz/whatever, now it is very quiet, almost like a fan blowing gently. Interesting.

OK, I've attached files for the X, Y and Z axis. I did all of these because I suspect that my Z axis tuning was all messed up too, even though it seemed to be good. All in all, however, the graphs look suspiciously good. No ringing with the f-error (BTW, what is the difference between ERROR and FERROR?). I've also included the INI and HAL files, although not the pendant HAL file because I didn't think it would be germane. If it is, then let me know. You'll see some stuff commented out in the HAL which I still need to work on. There was contention with the pendant HAL that I have to resolve but it not relevant (IMO) to the tuning work. OK, so without further adieu....

All movement was done by toggling back and forth between G1 F60 X-3.5 Y7.5 Z6.5 and G1 F60 X-3.75 Y7.75 Z6.75 so, of course, a 0.25" span. However, all sliders, including feed override, were at maximum (I'm thinking that it would max at the INI setting of 60IPM though anyhow).

So, that is the baseline. I had to put a value in there for FF1 or the axis would not even move. I know of no suggestion on what I should put there to start with, however, so that might have been a mistake (?). I'm also happy to say that my machine gun syndrome has disappeared with these initial settings and the axis position indicators are rock solid even at 0.000x.
Last edit: 08 Apr 2018 17:59 by DeckelHead.

Please Log in or Create an account to join the conversation.

More
08 Apr 2018 18:00 #108617 by Todd Zuercher
You probably saw a recommendation to set the following error wide while tuning.

Please Log in or Create an account to join the conversation.

More
08 Apr 2018 18:29 - 08 Apr 2018 18:30 #108619 by DeckelHead
Perhaps someplace else... But the info specific to LinuxCNC by John Thornton doesn't specify how one really sets up the parameters prior to starting the tuning process. It simply gives an order. The first is to find the P through seeing oscillation after a move. The FF1 doesn't come until after that step, but you have to have some value in FF1 to get the axis to move... Kind of chicken and the egg.
Last edit: 08 Apr 2018 18:30 by DeckelHead.

Please Log in or Create an account to join the conversation.

More
08 Apr 2018 18:33 - 08 Apr 2018 18:34 #108620 by PCW
A couple things:
1. You should _not_ need FF1 to cause motion (a P value of 50 means a 10V output with a 0.200" position error)
If you do, something is very wrong with your basic setup (the large deadband could certainly do this)

2. Assuming the default +-10V analog scaling FF1 should be 10/Velocity@10V (velocity in machine units per second)
the other way to deal with FF1 is to normalise the PID values by setting the analog output scale to machine velocity @10V in this case FF1 is 1.00

3. You need to set the halcope scale for the ferror much smaller so you can actually see the error
Last edit: 08 Apr 2018 18:34 by PCW.

Please Log in or Create an account to join the conversation.

More
08 Apr 2018 19:42 - 08 Apr 2018 19:45 #108621 by DeckelHead
I realized that my scaling on the f-error was bad and fixed that. Sorry. I can also confirm that FF1 is not needed to jog. I have zero idea why that was the case before. I'm scratching my head on that but can only assume it was a combination of user error,ignorance, and maybe some other lever that was incorrect.

The good news is that I think I am getting how the different levers work to change the output. To that end, I tuned my X axis and have included scope outputs again. I had to use FF2 to center the ringing because I was unable to eliminate it completely. The FF1 file is after FF1 was set, and the FF2 file was after that variable was set.

The final Z settings are as follows:
[AXIS_0]
P = 200
I = 0
D = 0
BIAS = -0.0195325
FF0 = 0
FF1 = 2
FF2 = 0.0045
DEADBAND = 0
MAX_OUTPUT = 0
OUTPUT_SCALE = -10
OUTPUT_MIN_LIMIT = -10
OUTPUT_MAX_LIMIT = 10
ENCODER_SCALE = -20000
MAX_VELOCITY = 110
MAX_ACCELERATION = 30.0
TYPE = LINEAR
HOME = 0.0
#FERROR = 0.5
FERROR = 50
#MIN_FERROR = 0.05
MIN_FERROR = 50
MIN_LIMIT = -0.101
MAX_LIMIT = 23.5
HOME_OFFSET = 0.000000
HOME_SEARCH_VEL = -0.4
HOME_LATCH_VEL = 0.256667
HOME_FINAL_VEL = 0.016667
HOME_USE_INDEX = YES
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 1
Attachments:
Last edit: 08 Apr 2018 19:45 by DeckelHead.

Please Log in or Create an account to join the conversation.

More
08 Apr 2018 20:21 #108622 by DeckelHead
Here are the plots and info for Y and Z. I find the fact that the FF1 and FF2 to be almost identical for all three axis to be suspicious. But maybe that is normal (same motors, same drivers... still, strange). Also, the FF1 was higher than I expected, based on the information in the tuning tutorial. Anyhow, here are the settings and screen captures:
#********************
# Axis Y
#********************
[AXIS_1]
P = 550
I = 0
D = 0
BIAS = 0.00975
FF0 = 0
FF1 = 2
FF2 = 0.005
DEADBAND = 0
MAX_OUTPUT = 0
OUTPUT_SCALE = -10
OUTPUT_MIN_LIMIT = -10
OUTPUT_MAX_LIMIT = 10
ENCODER_SCALE = -20000
MAX_VELOCITY = 60
MAX_ACCELERATION = 30.0
TYPE = LINEAR
HOME = 0.0
FERROR = 50
#FERROR = 0.5
#MIN_FERROR = 0.05
MIN_FERROR = 50
#MIN_LIMIT = -0.10
MIN_LIMIT = 0.10
MAX_LIMIT = 13.9
HOME_OFFSET = 0.000000
HOME_SEARCH_VEL = -0.4
HOME_LATCH_VEL = 0.256667
HOME_FINAL_VEL = 0.016667
HOME_USE_INDEX = YES
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 2

#********************
# Axis Z
#********************
[AXIS_2]
P = 500
I = 0
D = 0
BIAS = 0.0684
FF0 = 0
FF1 = 2
FF2 = 0.0055
#DEADBAND = 0.0005
DEADBAND = 0
MAX_OUTPUT = 0
OUTPUT_SCALE = -10
OUTPUT_MIN_LIMIT = -10
OUTPUT_MAX_LIMIT = 10
ENCODER_SCALE = -20000
MAX_VELOCITY = 60
MAX_ACCELERATION = 30.0
TYPE = LINEAR
HOME = 0.0
FERROR = 2
#MIN_FERROR = 50
MIN_FERROR = .05
MIN_LIMIT = -5.5
MAX_LIMIT = 0.1
HOME_OFFSET = 0.000000
HOME_SEARCH_VEL = 0.4
HOME_LATCH_VEL = -0.026667
HOME_FINAL_VEL = -0.016667
HOME_USE_INDEX = YES
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 0

Please Log in or Create an account to join the conversation.

More
08 Apr 2018 20:36 #108623 by PCW
As I said before, assuming the default +-10V analog scaling FF1 should be 10/Velocity@10V

so will be close to the same for all axis if they have the same drives/ analog command--> velocity scaling

Your (tuned) FF1 of 2 means that you have a machine that would move at 300 IPM (5 IPS) at 10V

Please Log in or Create an account to join the conversation.

Time to create page: 0.122 seconds
Powered by Kunena Forum