Jump to content
OMRON Forums

Servo loop tuning_application


Recommended Posts

Servo loop tuning Snapshot.zipThere is a strange problem when I tuning the servo loop. With the same parameters, when the response is closely match the commanded curves for the first time , the second time I do that , the response changed significantly, about 20% overshoot! I do that for the third time , it is almost the same to the second one , and I repeat that, it never behave like the first time! The interval is less than 10 seconds.tuning snapshot is attached.

In case the start position change, each time I do a step move , I set a very high integral gain to make sure the motor starts move from zero and return to zero after it finished the step move. And that can be seen from the response curve.

What’s happen with my systems? Why it behave so strange?


F.Y.I. my system hardware configuration is as follows:

Controller: IMAC FLEX

Drive: SX25A20 (sinusoidal servo drive)

Motor: Parker slotless, brushless linear servo motor


Link to comment
Share on other sites

  • Replies 6
  • Created
  • Last Reply

Top Posters In This Topic

The difference is probably due to the bearing mechanism. I assume you are using recirculating ball linear bearings. When they are new, they will be rather tight. Also, the first move after they have been sitting for a while will break things free. What distance(mm)=1000 counts?


I almost always keep integral gain at zero and I134=1 for the step move. The step move, if it is large enough, allows you to get a good starting point for tuning. After you have a good step response, select a tuning profile that most resembles the move your axis will be making in the real application. You can then set I134=0 and start to add integral gain, and adjust the other parameters.


Link to comment
Share on other sites

It's an old machine, since we now have a new controller , we need to replace the old one. The resolution of our encoder is 0.1 microns/count, 1000 counts will make 0.1 mm. It drives me crazy because I found the same parameters added to the PID filter will make different behaviour, sometimes overshoot, sometimes sluggish, i totally don't get it, could anybody give me some help? What should I bear in mind when tuning the servo loop?
Link to comment
Share on other sites

  • 3 weeks later...
  • 4 weeks later...

I think this is actually a combination of the machine's dynamics and your integral term in the PID loop. Once your Ki builds up an error term, that offset doesn't go away unless you get an opposing error to swing your error term in the opposite direction. The way you're overshooting, you're building up a big error term in the opposite direction that's going to guarantee an overshoot on a move in the other direction, that will....


Here's a step by step of what I think is happening:

1. Motors are killed, error term = 0. You do a step response and your slow Ki doesn't build up a big error term.

2. Motor over shoots slightly on the negative step. While you're waiting around, Ki builds up and error term = +large number.

3. You start another step response.

4. On the positive step, your +large number error term pushes your response into an overshoot. Ki starts reducing the error term until you have little following error, but error term = -large number.

4. On the negative step, your -large number error term pushes your response into an overshoot. Ki starts increasing the error term until you have little following error, but error term = +large number.

5. Go to Step 3.


I've actually seen this very thing happen on machines I work on. On a physical machine, there can be enough friction that if you overshoot you need a large integral error term to bring the motor back to 0 following error. That error term makes it it much more likely you'll overshoot in the opposite direction, and then you're stuck in a loop of overshooting.


My personal answer is that I don't have to care about that level of error on my machines. I set Ki to 0 and tune my PD and FF terms to get a good low error dynamic response and leave it at that. Considering how small your FE is in counts and in microns, you might take my route.


The other possibility (that I haven't tried) is to set your Ki to zero, and tune your Kp and Kd to be well damped with no overshoot. Then start adding in Ki to pull you up to steady state. That way, when you change directions, your error term will damp things even more, making you undershoot and pull up to steady state again. Then you should be in a virtuous cycle of always undershooting somewhat, instead of overshooting a lot.

Link to comment
Share on other sites

This topic is now closed to further replies.

  • Create New...