Hello All,
I believe I understood what you said in the last post, I adjusted the reran the test. Please see attached, any higher on the PID and the motor started to hum and vibrate. Filter is unchanged from the last test.
Thanks,
Mark
Hi Mark,
That's good progress. Errors are < 250 counts (0.0033 inches) while accelerating and < 25 counts (0.0003 in) while moving at 20000 counts/sec (0.27ips = 16 ipm).
You should note that to make such a move at that velocity and acceleration no more than 250 DAC counts are being used. So increasing the limit beyond the 1000 that you currently have will have no effect. In fact you could reduce it to say 400 and it would also have no effect. The idea is to set the limit just beyond what is normally needed so that if something goes wrong things will be less dramatic.Should I try to increase the output?
Note you are only using < 15% of the available output so it is likely you could move with higher velocity and possibly acceleration if you desire. It would be a good time to consider your requirements and what your goals are regarding velocity, acceleration, and error.
Along the same line since errors are always below 250 you might reduce the Max Following Error to say 1000 so if something goes wrong (gains too high) the axis will fault and disable rather than doing something more violent.
The next step would be to optimize tuning by increasing D P and I gains in that order (if you haven't already done so). Plot Position Error so you can easily observe the maximum error for the move. Increase until things go unstable and then reduce back to a point that is very stable. You may need to repeat the process as the parameters are somewhat interactive.
Regards
TK http://dynomotion.com
Hello All,
I believe I understood what you said in the last post, I adjusted the reran the test. Please see attached, any higher on the PID and the motor started to hum and vibrate. Filter is unchanged from the last test.
Thanks,
Mark
Hi Mark,
The error when accelerating is significantly reduced. That is good!
But the error while cruising is significantly increased. Its a bit complicated to explain but the Integrator is not doing its job to drive persistent errors to zero. Whenever you see an error that remains somewhat consistent for a second or more you can ask yourself why isn't the Integrator making a correction? In this case the reason is that the D gain acts as a form of drag (negative Output). The amount is related to the speed and the D gain. There is also a factor of the Sampling rate. So with a D gain of 325. A speed of 20000. And a sample rate of 90us the D Output term is:
325 x 20000 x 90e-6 = 585 DAC Counts
The Integrator must compensate for this plus the amount to cause the axis to move. So the Integrator Limit should be set at around:
400 + 585 = 985 (or say 1000).
Change this and see if the error while moving significantly reduces from ~80 counts. Even though the errors might still be as large as +/-25 counts the important thing is the average should be very close to zero not way off at 80 counts.
On a side note please move the Low Pass filter from Filter #0 to #2 so later it will also filter any Feed Forward we add. This should have no effect on what you are doing now.
Regards
TK http://dynomotion.com
Hello All,
I increased the integrator to 1000 as directed and moved the 2nd low pass filter to the filter 2 position, the first time I ran the test, the servo made a little noise. so I increased the speed and decreased the P and D a little, it seems to quiet down the servo. Please take a look and give me your thoughts.
Thanks,
Mark
Hi Mark,
goodI increased the integrator to 1000 as directed and moved the 2nd low pass filter to the filter 2 position
Most machines need to operate at all speeds so it isn't a valid solution to change the speed you are testing. In fact you should really test at a number different speeds.the first time I ran the test, the servo made a little noise. so I increased the speed and decreased the P and D a little, it seems to quiet down the servo.
Average error while moving is now zero so that issue was fixed.
That might be about as good as you can get. The error while accelerating is back to ~ 0.004 inches but you are moving almost twice as fast as before.
I'd say now try to add Velocity Feed Forward to reduce the errors. Feed Forward commands the Output to what is expected to be needed. Unlike P I D Feedback it doesn't wait to have an error before commanding some Output. Imagine trying to follow another car closely. If you wait till you see the car speed away before accelerating you will always initially lag behind. But if you see the light turn green and hit the gas just the same as you expect him to you might stay right with him. However if you hit the gas harder than he does you might get ahead of him. Can you see in the plots an initial negative error when the axis accelerates? Try adding Velocity FF to reduce the lag. Start with a small number like 0.0001 and increase until you see an effect. If the error goes positive then you have gone too far.
Regards
TK http://dynomotion.com
Good morning Tom,
Would I be better off trying to decrease the speed from 35000 back to as low as I can get it from the original 20000 that I had before? I ran the same parameters on the "Y" axis to see how it would perform compared to the "X". I think it can decrease it a little closer if that would be better than compensating with the velocity.
Thanks,
Mark
Hi Mark,
Its not clear if you understood my last post and its not clear what you mean.
Regards
TK http://dynomotion.com
Tom,
Please see attached screen shot, in yellow I highlighted the speed value that I was referring about. Last night I had to increase this value from 20000 to 35000 to get rid of the motor hum once I increased the integrator to 1000 and moved the filter to the #2 position.
In the last post you referred to increase the Velocity (V) to .0001 from my current value of 0. is this still what you would like me to try?
Yes, I guess I didn't understand your last post.
Thanks,
Mark
Hi Mark,
I tried to explain you shouldn't change speeds to avoid problems. That's like saying my car has a horrible vibration when driving 30mph so I'll just go 50mph where it doesn't vibrate. At some point you will likely need to drive 30mph so that isn't a solution. In fact you should tune things and then drive at 30mph (as well as other speeds) to be sure the problem is fixed.Please see attached screen shot, in yellow I highlighted the speed value that I was referring about. Last night I had to increase this value from 20000 to 35000 to get rid of the motor hum
Also please be clear whether you are referring to motion profile Velocity (often just referred to as Velocity or Move Velocity) or Feed Forward Velocity gain. They are completly different things. The first is the desired max speed of the move and the 2nd is how much output to be applied to anticipate moving.
Yes after testing at different speeds without any problems then try reducing errors by using Feed Forward Velocity.
HTH
Regards
TK http://dynomotion.com
Tom,
I added the FF Velocity as requested. I'm not sure what I'm actually looking at on the graph for errors, do you have an example of a graph (what it should look like)?
Thanks,
Mark
Hi Mark,
The goal is to have zero error which would be a flat line at 0. Can you see on the Error plot the Error (blue) dips down to about -140 at the beginning? Increase FF V until you see a change. It should become a smaller dip. If it goes positive you have increased too much. Note the plot normally auto scales so you must look at the scale (left side) to determine the size of the error.
Regards
TK http://dynomotion.com
Tom,
Thanks for the explanation.
I got the error down to about -70 and that is about as flat I I can get the error (blue) line without it spiking in the positive direction.
Thanks,
Mark
Hi Mark,
Very good. You might now try the same with FF A. It may or may not help with than narrow spike as the axis accelerates. That is typically a smaller number than the FF V value.
Regards
TK http://dynomotion.com
Tom,
I added FF A as requested a little at a time, the error looks like it flatted out a little. Once the value got over .001 the spike increased above zero, I knew that it was increased too much. See attached files.
Thoughts?
Thanks,
Mark
Hi Mark,
Well if 0.001 was too much I would have expected the best value to be around half that or 0.0005. But the value you have is way smaller. 33 times smaller. So its unlikely to have any effect at all. And it looks the same as the previous post with 0. Was there a reason you reduced it so much?
Regards
TK http://dynomotion.com
Good morning All,
It's a cold day here in Florida, 42 degrees this morning just after day break. Going to be a brisk day for the Bucs and Rams later today.
I jumped out in the garage this morning and increased the FF A to what you recommended originally of .001". I was trying to get the error as close to zero that I could, hence the extremely low value. The servo movement now seems pretty smooth. Please see the attached screen shots. Thoughts?
Thanks,
Mark
Hi Mark,
Did you realize you have 3 zeros not 2?
Can you see the plot is virtually identical to the earlier plot with zero?
Regards
TK http://dynomotion.com
Tom,
I guess I didn't realize that I had 1 too many zeros. Results from .001".
Thanks,
Mark
Hi Mark,
Can you see it had a minor benefit? Negative spike at ~ 0.4 seconds was reduced from about -80 to -50 ?
Did you try more? What happened.
Regards
TK http://dynomotion.com
Tom,
Yes, I can see that. The more I increased the FF A the more error I got. At .002 I had -90 and at .0015 I had about -80. As I increased the FF A amount above .001, the error also increased.
I think .001 is about the best as it is going to get, is -50 within acceptable limits?
Thanks,
Mark