Direct synthesis of a controller (plus simulink modeling)

Join the discussion
Registration is free. Start your own thread to ask a follow-up.
4 replies · 4K views · last reply
gfd43tg
Gold Member
Messages
949
Reaction score
48

Homework Statement


Handwritten-style typeset text of a control theory exercise: a) closed loop transfer function g_CL = g_P g_c / (1 + g_P g_c), a first order target g_CL = 1/(λs+1), and the request for a PID controller, with parameters τP1 = 4, τP2 = 2, Kp = 4, λ = 1 for a Simulink model.

Text instructions: use the model to find the effect of a step change of +1 in the system set point, include a screenshot of the model and output, comment on the direct synthesis controller, and say whether the closed loop became first order.


Homework Equations

The Attempt at a Solution


Part (a)
Starting with the formula

$$ g_{c} = \frac {g_{CL}}{g_{p}(1-g_{CL})} $$

The controller transfer function is determined,

$$ g_{c} = \frac { \frac {1}{\lambda s + 1}}{\frac {k_{p}}{(\tau_{p1}s+1)(\tau_{p2}s+1)}
- \frac {k_{p}}{(\tau_{p1}s_1)(\tau_{p2}s+1)(\lambda s+1)}} $$

$$ = \frac {1}{\lambda s + 1} \times \frac
{(\tau_{p1}s+1)(\tau_{p2}s+1)(\lambda s+1)}{K_{p} \lambda s} $$

$$ = \frac {1}{K_{p} \lambda} \times \frac {\tau_{p1} \tau_{p2} s^{2} +
(\tau_{p1}+\tau_{p2})s + 1}{s} $$

$$ = \frac {\tau_{p1} \tau_{p2}}{K_{p} \lambda}s + \frac
{\tau_{p1}+\tau_{p2}}{K_{p} \lambda} + \frac {1}{K_{p} \lambda s} $$

$$ = \frac {\tau_{p1}+\tau_{p2}}{K_{p} \lambda} \bigg [ 1 + \frac
{\tau_{p1} \tau_{p2}}{\tau_{p1}+\tau_{p2}} s + \frac
{1}{\tau_{p1}+\tau_{p2}} \frac {1}{s} \bigg ] $$

Which is of the form of a PID Controller,

$$ g_{c,PID} = k_{c} \bigg ( 1 + \frac {1}{\tau_{I}s}+ \tau_{D}s \bigg )
$$

Where ##k_{c}= \frac {\tau_{p1} + \tau_{p2}}{K_{p} \lambda}##, ##\tau_{I} =
\tau_{p1} + \tau_{p2}##, and ##\tau_{D} = \frac {\tau_{p1}
\tau_{p2}}{\tau_{p1}+\tau_{p2}}##

Part (b)
Here is my simulink model
Simulink block diagram of a unity-feedback loop: Step source feeds a summing junction, then gc block 1/(s+1), then gp block kp over tau1*tau2*s^2+tau1+tau2*s+1, with output to To Workspace and Scope blocks, feedback to the junction.

However, because the numerator coefficient is second order, and the denominator is first order, I cannot run the simulation due to an error. I know that it is a big no-no to have higher order numerators, but how should I go about solving the problem?
 
Physics news on Phys.org
A second thought came to mind, I just used a PID block

Simulink block diagram of a unity feedback loop: Step source feeds a summing junction, then a PID Controller block, then a transfer function block labelled gp with numerator kp and denominator tau1*tau2.s^2+tau1+tau2.s+1, output to a To Workspace block (simout) and a Scope, with feedback to the summing junction.


And here is my input to the PID controller block
Simulink Function Block Parameters dialog for a PID Controller, Form Parallel, with Proportional (P) set to (tau1+tau2)/(kp*lambda), Integral (I) set to tau1*tau2/(kp*lambda), Derivative (D) set to 1/(kp*lambda), and Filter coefficient (N) set to 100.

And here is my output
Time series plot titled 'Time Series Plot:' showing an oscillating blue curve against time from 0 to 100, with amplitude growing from near zero to about 360 at the right edge, the y-axis spanning roughly -300 to 400.


So obviously this controller is not working, or I am inputting the P, I, and D incorrectly into the controller
 
Maylis said:
However, because the numerator coefficient is second order, and the denominator is first order, I cannot run the simulation due to an error. I know that it is a big no-no to have higher order numerators, but how should I go about solving the problem?
If the numerator order of the controller is larger than that of the denominator, then it represents a non-causal system, which is what the solver is complaining about.

To put in another way: it has infinite gain as ω → ∞. You can fix this by adding a pole at some high frequency that has no real influence on the behavior of your system. This what the PID controller block does in Simulink, which is controlled by the 'Filter coefficient (N)'.

The ##g_cg_p## system is causal, however, so you could enter that instead.

Maylis said:
So obviously this controller is not working, or I am inputting the P, I, and D incorrectly into the controller
You did everything right, but you just mixed up the I and D parameters in the PID block. I think you also forgot parenthesis around the (tau1 + tau2) coefficient in your plant transfer function (edit: I'm not sure this bit is actually necessary, it just looks off. Simulink might interpret it correctly).
 
Last edited:
  • Like
Likes   Reactions: gfd43tg
Great, I see that I made the mistake about switching them. Also, I changed the transfer function to have the parenthesis, thanks for catching that! Also, I am a little confused when it asks if I successfully converted the system to a first order process. Does that just mean if the controller works, then yes? But I want to know a little deeper what exactly they mean by that.
 
Maylis said:
Also, I am a little confused when it asks if I successfully converted the system to a first order process. Does that just mean if the controller works, then yes? But I want to know a little deeper what exactly they mean by that.
If your controller gains really do solve the assignment, then the closed-loop system response should be that of this system:
$$
g_{CL} = \frac{1}{s + 1}
$$
Your expressions for the controller gains were found as to guarantee this. What does the step response of this system look like, i.e. if you simulate the system (open loop): step input → gCL → scope ?

Does this response match that of the closed-loop system with the PID controller? If so, then you've solved the assignment.

Before you simulate anything, try to characterize how the step response of ##g_{CL} = \frac{1}{s + 1}## should look. Tips:
- If it's a first-order system, will it have any overshoot?
- How can you tell what the time constant of a first-order system is by inspecting its step response?

And so on.