mshaver Posted June 2, 2014 Share Posted June 2, 2014 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 More sharing options...
sjlee5 Posted June 2, 2014 Share Posted June 2, 2014 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. 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 More sharing options...
mshaver Posted June 2, 2014 Author Share Posted June 2, 2014 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 More sharing options...
curtwilson Posted June 6, 2014 Share Posted June 6, 2014 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 More sharing options...
mshaver Posted June 6, 2014 Author Share Posted June 6, 2014 "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 More sharing options...
Richard Naddaf Posted June 6, 2014 Share Posted June 6, 2014 I put a good description and an example in the Power Brick LV/AC manuals. See if that helps. Link to comment Share on other sites More sharing options...
Sina.Sattari Posted June 6, 2014 Share Posted June 6, 2014 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 More sharing options...
curtwilson Posted June 7, 2014 Share Posted June 7, 2014 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 More sharing options...
Recommended Posts