COMPGROUPS.NET | Search | Post Question | Groups | Stream | About | Register

Tuning PID parameters of DC motor speed control using Ziegler Nicholas method

• Email
• Follow

```Is it impossible to implement a dc motor speed control using closed loop ziegler nicholas method? For some transfer function I used ziegler nicholas method but I couldn't determine the PID parameters for DC motor speed control.Could you propose anything for this operation?
Thanks.
```
 0

See related articles to this posting

```And my transfer fuction is;
1
-------------------------------------
s^2 + 14s + 40.02
I couldn't find the PID parameters using Ziegler-Nichols method(closed loop).

Where is my mistake?Could you propose anything???
Thanks.
```
 0

```Am I writing unreasonable things that are impossible to implement in Simulink?
```
 0

```"dfgdg dfgdfg" wrote in message <ievmn8\$g91\$1@fred.mathworks.com>...
> Is it impossible to implement a dc motor speed control using closed loop ziegler nicholas method? For some transfer function I used ziegler nicholas method but I couldn't determine the PID parameters for DC motor speed control.Could you propose anything for this operation?
> Thanks.
Hi
I think it is not possible to design PID controller using  ziegler nicholas method(closed loop) for a second order process and the order should not be less than 3 to design PID controller
```
 0

```On 24/12/10 3:36 AM, dfgdg dfgdfg wrote:
> Am I writing unreasonable things that are impossible to implement in

Most of the regular posters do not have experience in Simulink, and not
people are busy preparing for Christmas.

Myself, I have no idea whether the answer to your question is trivial or
difficult or impossible... sorry.
```
 0

```If you have no idea for the answer,you don't have to write something that is not useful for anybody.Here is MATLAB&Simulink user community and many people have experience in Simulink.
Walter Roberson <roberson@hushmail.com> wrote in message <eg4Ro.63647\$wf4.32796@newsfe05.iad>...
> On 24/12/10 3:36 AM, dfgdg dfgdfg wrote:
> > Am I writing unreasonable things that are impossible to implement in
>
> Most of the regular posters do not have experience in Simulink, and not
> many people answer questions about transfer functions. Also, a lot of
> people are busy preparing for Christmas.
>
> Myself, I have no idea whether the answer to your question is trivial or
> difficult or impossible... sorry.
```
 0

```On 25/12/10 12:50 AM, dfgdg dfgdfg wrote:
> If you have no idea for the answer,you don't have to write something
> that is not useful for anybody.Here is MATLAB&Simulink user community
> and many people have experience in Simulink.

issue. I answered that question based upon my several years of
experience with this electronic resource.

Is it not of benefit to you to know that, in general, most Simulink
questions go unanswered, and that there are very few posters who
quickly, would that not have given you evidence that perhaps your
question was difficult or impossible? And thus by my informing you of
quickly, does that not give you grounds for continuing to hope that
there is a solution?

The part where I said that I myself do not know: if I had just told you
left in doubt as to whether I could have instead answered the question
"if I could be bothered" ?

receiving an answer to your question. If you consider that kind of
information to "not be useful", then you should probably find a support
resource in which people are obliged to answer rather than being volunteers.
```
 0

```On 23/12/10 8:35 AM, dfgdg dfgdfg wrote:
> Is it impossible to implement a dc motor speed control using closed loop
> ziegler nicholas method? For some transfer function I used ziegler
> nicholas method but I couldn't determine the PID parameters for DC motor
> speed control.Could you propose anything for this operation?
> Thanks.

Without having read the following paper in detail, it seems to me that
the paper indicates that what you want to do is possible.

http://umpir.ump.edu.my/413/1/Mohd_Azri_Bin_Abd_Mutalib_3244.pdf
```
 0

```"dfgdg dfgdfg" wrote in message <ievmn8\$g91\$1@fred.mathworks.com>...
> Is it impossible to implement a dc motor speed control using closed loop ziegler nicholas method? For some transfer function I used ziegler nicholas method but I couldn't determine the PID parameters for DC motor speed control.Could you propose anything for this operation?
> Thanks.

In newer releases of Simulink there is the PID block which allows autotuning. The control toolbox offers sophisticated methods for evaluating controls. So from the Matlab/Simulink side everything is there.
What btw have you done so far concerning Ziegler Nichols? What where the PID parameters you have found?
```
 0

```Can I ask why you have to use Ziegler-Nichols?
We specifically added pid tuning capabilities to Simulink Control Design in R2009b and Control System Toolbox in R2010b to handle cases when Ziegler-Nichols does not work or does not provide good design.

To get good PID design with Control System Toolbox in R2010b:

>>s=tf('s');
>>sys=1/(s^2+14*s+40.02);  % plant tf
>>pidtool(sys) % launch pid tuner tool

Now use the slider and various options to get good design. For example, if you just take the initial design that the tool comes up with, you get a PI controller with
Kp = 76.7
Ki=280

To check this design, evaluate this in MATLAB:

controller=pid(76.7, 280); % create PI controller
closed_loop=feedback(controller*sys,1); % compute closed-loop tf
step(closed_loop); % plot step response

If you insisit on using Ziegler-Nichols:

>>sisotool(sys);

then:
1)In the GUI that opens up, go to Automated Tuning tab, select "PID Tuning" under "Design Methods".
2) Select "PID" under controller type.
3) Under "Tuning method", select "Classical design formulas", and
4) under "Formula" select "Ziegler-Nichols step response"
5) Press "Update Compensator".

This gives you this PID design:
Kp=415.41
Ki=4929.8
Kd=8.75

To check its step response evaluate the code below in MATLAB:

controller_zn=pid(415.41,4929.8,8.75); % ziegler-nichols design
hold on;
step(feedback(controller_zn*sys,1),'r'); % step response for ZN design

The red line is Ziegler-Nichols design, blue line is Robust response time (MathWorks' tuning algorithm). If you want to make the design faster, you can use GUI you launch with PID tool to tune for faster response. For example, I got the following design which is as fast as Ziegler-Nichols, but is very stable with little overshoot and no oscillations:

Kp=449;
Ki=1707;
Kd=21.6;

To see its step response (green line).

controller_fast=pid(449,1707,21.6);
step(feedback(controller_fast*sys,1),'g');

HTH.

"Frank W." <yohansan_nospam@web.de> wrote in message <if76qg\$gou\$1@fred.mathworks.com>...
> "dfgdg dfgdfg" wrote in message <ievmn8\$g91\$1@fred.mathworks.com>...
> > Is it impossible to implement a dc motor speed control using closed loop ziegler nicholas method? For some transfer function I used ziegler nicholas method but I couldn't determine the PID parameters for DC motor speed control.Could you propose anything for this operation?
> > Thanks.
>
> In newer releases of Simulink there is the PID block which allows autotuning. The control toolbox offers sophisticated methods for evaluating controls. So from the Matlab/Simulink side everything is there.
> What btw have you done so far concerning Ziegler Nichols? What where the PID parameters you have found?
```
 0

```"Arkadiy Turevskiy" wrote in message <ifdfib\$jno\$1@fred.mathworks.com>...
> Can I ask why you have to use Ziegler-Nichols?
> We specifically added pid tuning capabilities to Simulink Control Design in R2009b and Control System Toolbox in R2010b to handle cases when Ziegler-Nichols does not work or does not provide good design.
>
> To get good PID design with Control System Toolbox in R2010b:
>
> >>s=tf('s');
> >>sys=1/(s^2+14*s+40.02);  % plant tf
> >>pidtool(sys) % launch pid tuner tool
>
> Now use the slider and various options to get good design. For example, if you just take the initial design that the tool comes up with, you get a PI controller with
> Kp = 76.7
> Ki=280
>
> To check this design, evaluate this in MATLAB:
>
> controller=pid(76.7, 280); % create PI controller
> closed_loop=feedback(controller*sys,1); % compute closed-loop tf
> step(closed_loop); % plot step response
>
> If you insisit on using Ziegler-Nichols:
>
> >>sisotool(sys);
>
> then:
> 1)In the GUI that opens up, go to Automated Tuning tab, select "PID Tuning" under "Design Methods".
> 2) Select "PID" under controller type.
> 3) Under "Tuning method", select "Classical design formulas", and
> 4) under "Formula" select "Ziegler-Nichols step response"
> 5) Press "Update Compensator".
>
> This gives you this PID design:
> Kp=415.41
> Ki=4929.8
> Kd=8.75
>
> To check its step response evaluate the code below in MATLAB:
>
> controller_zn=pid(415.41,4929.8,8.75); % ziegler-nichols design
> hold on;
> step(feedback(controller_zn*sys,1),'r'); % step response for ZN design
>
> The red line is Ziegler-Nichols design, blue line is Robust response time (MathWorks' tuning algorithm). If you want to make the design faster, you can use GUI you launch with PID tool to tune for faster response. For example, I got the following design which is as fast as Ziegler-Nichols, but is very stable with little overshoot and no oscillations:
>
> Kp=449;
> Ki=1707;
> Kd=21.6;
>
> To see its step response (green line).
>
> controller_fast=pid(449,1707,21.6);
> step(feedback(controller_fast*sys,1),'g');
>
> HTH.

I wonder that we can apply Ziegler-Nichols method for this case.
```
 0
Reply ldkhanh_mtb (1) 6/7/2011 2:34:04 PM

```Yes,
you can tune PID controllers using our algorithm (Robust response time) or Ziegler-Nichols in R2010a. Please read through this doc section for how to do that:
http://www.mathworks.com/help/releases/R2010a/toolbox/control/quick/f2-1033890.html#f2-1034877
```
 0