Jump to content
OMRON Forums

Extremely Frustrated with PPMAC Step Direction Dithering - SOLVED!


mshaver

Recommended Posts

I am extremely frustrated with attempting to stop the PPMAC from dithering a stepper motor.

 

I started this thread originally as

http://forums.deltatau.com/showthread.php?tid=1611

 

I have attempted to solve the problems using the suggestions of several DT Insiders using the parameters and variants around these settings.

Motor[x].Servo.OutDbOn = 4

Motor[x].Servo.OutDbOff = 4

Motor[x].Servo.OutDbSeed = 1

and

Motor[x].Servo.BreakPosErr = 2

Motor[x].Servo.Kbreak = 0

 

The explanations for these parameters in the software manual and the user manual certainly would have led me to believe that settings like the ones above should suppress the dithering but they do not.

 

It appears to me that the integrator is not affected or disabled by any of the above settings. My observations are that with a fractional motor count following error the integrator will eventually integrate itself out of any deadband you give it using the above settings and will eventually move the motor by one count changing the sign of the following error and restarting the process in the opposite direction.

 

Attached is an example of the data I see using the IDE tuning tool.

 

What I want to have happen is once the following error has been reduced to say 0.5, or 1, or 2 motor counts or whatever, I want the integrator to go to sleep (stop integrating), I want no output, no pulses, no nothing, until the commanded position changes and brings the position error out of the deadband and I do not believe that the above parameters suppress the integrator. Am I wrong? Am I overlooking something?

Step Direction Dithering.pdf

Link to comment
Share on other sites

  • Replies 7
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

Posted Images

Hi,

 

Did you checked my suggested filter values?

 

In the previous thread, you attached some configuration file.

and there the Sys.ServoPeriod is "0.442742110000000022".

I think this is the factory setting.

 

I tested again and this is the result of moving test and the dithering status of not moving.

 

PlotOfStepper.thumb.png.7dd6a4a3b73f7ef45d8536a033ba43fe.png

 

I cannot find any problems.

 

I think you did not tuned servo or not properly set the filter values.

 

Please check again.

PowerPmac10.zip

Link to comment
Share on other sites

I was finally able to duplicate your results (no dithering).

The key difference is your use of zero integral gain, Motor[x].Servo.Ki = 0, which I had overlooked.

By setting the integral gain to zero, the deadband terms Motor[x].Servo.OutDbOn, Motor[x].Servo.OutDbOff, Motor[x].Servo.OutDbSeed, and Motor[x].Servo.BreakPosErr, Motor[x].Servo.Kbreak are able to create a true deadband preventing the dithering. The integral component is not suppressed by the above deadband parameters and any non-zero value of Ki will eventually integrate out of the deadband and cause dithering.

 

I would ordinarily use Ki to decrease the following error during a move. Ordinarily setting it to zero allows a larger steady state position error during accelerations and constant velocities.

 

Your use of Motor[1].Servo.Kvff = 15 largely compensates for a lack of integral term by causing the velocity to increase immediately upon a change in commanded position rather than having to wait for a following error to develop.

 

Thanks for your help.

M. Shaver

Link to comment
Share on other sites

Did you change Motor[x].Ctrl from the default of Sys.ServoCtrl to Sys.PidCtrl? If you selected this very basic PID algorithm, the deadband terms are not used.

 

In the standard algorithm selected by Sys.ServoCtrl, the suggested deadband terms stop dithering at rest from fractional count errors even with a non-zero integral gain value.

Link to comment
Share on other sites

"curtwilson" asked;

"Did you change Motor[x].Ctrl from the default of Sys.ServoCtrl to Sys.PidCtrl? If you selected this very basic PID algorithm, the deadband terms are not used. In the standard algorithm selected by Sys.ServoCtrl, the suggested deadband terms stop dithering at rest from fractional count errors even with a non-zero integral gain value."

 

And MShaver is replying:

No I did not change the setting. The setting is Sys.ServoCtrl and you either have bad information or different software or firmware. The deadband terms discussed above do not stop the dithering unless the integral gain term is zero. I'm sitting here with all the deadband terms set as described above and any non-zero integral value will eventually integrate out of the deadband and cause dithering. The only way to stop the dithering is to set the integral term to zero. So either your understanding is wrong, the documentation is wrong, or someone has introduced or fixed an error in the firmware. Do I need to update firmware possibly?

Link to comment
Share on other sites

Can you try implementing one of the deadbands at a time? (Either on the input of the PID OR on the output? Meaning:

 

Motor[x].Servo.BreakPosErr = 2
Motor[x].Servo.Kbreak = 0
Motor[x].Servo.OutDbOn = 0
Motor[x].Servo.OutDbOff = 0
Motor[x].Servo.OutDbSeed = 0

 

OR

 

Motor[x].Servo.BreakPosErr = 0
Motor[x].Servo.Kbreak = 0
Motor[x].Servo.OutDbOn = 2
Motor[x].Servo.OutDbOff = 2
Motor[x].Servo.OutDbSeed = 1

Link to comment
Share on other sites

What firmware version are you using? The algorithm worked as advertised on firmware versions before the one you are using (the pre-release versions where we tested and documented the setup), and it also works on firmware versions after the one you could be using (the pre-release version we have in development). We have no record of any changes to the deadband algorithms, and no other reports from the field that it does not work properly using the prescribed setup. We have been using this technique successfully for 20 years now on various PMAC controllers.

 

This is why we are trying to identify whether there is something else in your setup that could be preventing it from working as it should.

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.

×
×
  • Create New...