getComponents
Extract SISO control components from a 2-DOF PID controller
Description
[
decomposes the 2-DOF PID controller C
,X
] =
getComponents(C2
,looptype
)C2
into two SISO control
components. One of the control components, C
, is a 1-DOF PID
controller. The other, X
, is a SISO dynamic system. When
C
and X
are connected in the loop
structure specified by looptype
, the resulting closed-loop
system is equivalent to the 2-DOF control loop.
For more information about 2-DOF PID control architectures, see Two-Degree-of-Freedom PID Controllers.
Examples
Extract SISO Components from 2-DOF PID Controller
Decompose a 2-DOF PID controller into SISO control components, using each of the feedforward, feedback, and filter configurations.
To start, obtain a 2-DOF PID controller. For this example, create a plant model and tune a 2-DOF PID controller for it.
G = tf(1,[1 0.5 0.1]);
C2 = pidtune(G,'pidf2',1.5)
C2 = 1 s u = Kp (b*r-y) + Ki --- (r-y) + Kd -------- (c*r-y) s Tf*s+1 with Kp = 1.12, Ki = 0.23, Kd = 1.3, Tf = 0.122, b = 0.664, c = 0.0136 Continuous-time 2-DOF PIDF controller in parallel form.
C2
is a pid2
controller object, with two inputs and one output. Decompose C2
into SISO control components using the feedforward configuration.
[Cff,Xff] = getComponents(C2,'feedforward')
Cff = 1 s Kp + Ki * --- + Kd * -------- s Tf*s+1 with Kp = 1.12, Ki = 0.23, Kd = 1.3, Tf = 0.122 Continuous-time PIDF controller in parallel form. Xff = -10.898 (s+0.2838) ------------------ (s+8.181) Continuous-time zero/pole/gain model.
As the display shows, this command returns the SISO PID controller Cff
as a pid
object. The feedforward compensator X
is returned as a zpk
object.
Decompose C2
using the feedback configuration. In this case as well, Cfb
is a pid
controller object, and the feedback compensator X
is a zpk
model.
[Cfb,Xfb] = getComponents(C2,'feedback');
Decompose C2
using the filter configuration. Again, the components are a SISO pid
controller and a zpk
model representing the prefilter.
[Cfr,Xfr] = getComponents(C2,'filter');
Input Arguments
C2
— 2-DOF PID controller
pid2
object | pidstd2
object
2-DOF PID controller to decompose, specified as a
pid2
or pidstd2
controller
object.
looptype
— Loop structure
'feedforward'
(default) | 'feedback'
| 'filter'
Loop structure for decomposing the 2-DOF controller, specified as
'feedforward'
, 'feedback'
, or
'filter'
. These correspond to the following control
decompositions and architectures:
'feedforward'
—C
is a conventional SISO PID controller that takes the error signal as its input.X
is a feedforward controller, as shown:If
C2
is a continuous-time, parallel-form controller, then the components are given by:The following command constructs the closed-loop system from r to y for the feedforward configuration.
T = G*(C+X)*feedback(1,G*C);
'feedback'
—C
is a conventional SISO PID controller that takes the error signal as its input.X
is a feedback controller from y to u, as shown:If
C2
is a continuous-time, parallel-form controller, then the components are given by:The following command constructs the closed-loop system from r to y for the feedback configuration.
T = G*C*feedback(1,G*(C+X));
'filter'
—X
is a prefilter on the reference signal.C
is a conventional SISO PID controller that takes as its input the difference between the filtered reference and the output, as shown:If
C2
is a continuous-time, parallel-form controller, then the components are given by:The following command constructs the closed-loop system from r to y for the filter configuration.
T = X*feedback(G*C,1);
The formulas shown above pertain to continuous-time, parallel-form
controllers. Standard-form controllers and controllers in discrete time can
be decomposed into analogous configurations. The
getComponents
command works on all 2-DOF PID
controller objects.
Output Arguments
C
— SISO PID controller
pid
object | pidstd
object
SISO PID controller, returned as a pid
or
pidstd
controller object. The form of
C
corresponds to the form of the input controller
C2
. For example, if C2
is a
standard-form pidstd2
controller, then
C
is a pidstd
object.
The precise functional form of C
depends on the loop
structure you specify with the looptype
argument, as
described in Input Arguments.
X
— SISO control component
zpk
model
SISO control component, specified as a zero-pole-gain
(zpk
) model. The precise functional form of
X
depends on the loop structure you specify with
the looptype
argument, as described in Input Arguments.
Version History
Introduced in R2015b
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)
Asia Pacific
- Australia (English)
- India (English)
- New Zealand (English)
- 中国
- 日本Japanese (日本語)
- 한국Korean (한국어)