MATLAB Answers

I-PD Controller

3 views (last 30 days)
Chiara Valzecchi
Chiara Valzecchi on 12 May 2021
Answered: Mathieu NOE on 12 May 2021
Good evening,
I am involved in activities related to controllers tuning. These controllers have I-PD form.
I am trying to create the control system in simulink, by means of pid blocks, LTI System block and Check Step Response Characteristics.
The control system is about steam temperature control and the controller is responsible to command actuators whose role is to modulate water contribution to control output temperature (process variable), i.e. PID output increases if output temperature has to cool down, PID output decreases if output temperature has to rise.
Thsu, Plant has negative gain and controller is made to work as function of error computed as pv - sp (pv: process variable; sp: setpoint) .
The controller formula, implemented in the regulator I am working on, is I-PD:
-Discrete form
MV(n)=MV(n-1) + dMV(n)
Kp*Ks=(100/PB)*(PIDout range/PVrange);
e(n) = PV(n)-SP(n);
dMV(n) =Kp*Ks*[ (PV(n)-PV(n-1)) + (Tc/Ti)*e(n) + (Td/Tc)*( PV(n)-2*PV(n-1)+PV(n-2) ) ];
I found in Simulink a way to have the I-PD structure , by PID Controller (2DOF) block where parameters b and c have to be set to 0.
The PID Controller (2DOF) uses error as Ref - y, that in my case would be setpoint-process variable.
What I cannot figure out is how to make it work with error as pv-sp. I tried connecting the output temperature to Ref input and the setpoint to the second input of the block, but when i try to tune i get infeasibility of fmincon for instability.
Can you give me a hint to represent this controller in simulink in order to use tuning utilities available?
Thanks a lot!
I attach a simulink model (2014b) I created but needs to be edited.

Answers (1)

Mathieu NOE
Mathieu NOE on 12 May 2021
hello Chiara
I tried to fix this issue and got to this solution (attached)
To me and according to the documentation of the 2D PID block, your input signals were flipped
I tried manually to tune the P and I terms (no D required IMHO) and the best results I could get was with
Kp = 0.1
Ki = 0.0003
the very small Ki gain is due to the huge time delay in your model
I don"t have the toolbox to do the automatic tuning, so I let this to you
I removed a few things to speed up the simulation (the Step Response Checker seems to slow it quite significantly)
also I introduced a -1 gain block after the PID just to compensate for the negative dc gain in your tf (my mental preferences is to have positive dc gain tf)
attached wy revised simulink model
maybe there are better solution for first order tf with delays than just a regular PID (lots of publications available on internet)
all the best

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!