Main Content

Control System with Tunable Components

This example shows how to create a tunable model of the control system in the following illustration.

The plant response is G(s)=1/(s+1)2. The model of sensor dynamics is S(s)=5/(s+4). The controller C is a tunable PID controller, and the prefilter F=a/(s+a) is a low-pass filter with one tunable parameter, a.

Create models representing the plant and sensor dynamics. Since the plant and sensor dynamics are fixed, represent them using numeric LTI models zpk and tf.

G = zpk([],[-1,-1],1);
S = tf(5,[1 4]);

Create a tunable representation of the controller C.

C = tunablePID('C','PID');

C is a tunablePID object, which is a Control Design Block with a predefined proportional-integral-derivative (PID) structure.

Create a model of the filter F=a/(s+a) with one tunable parameter.

a = realp('a',10); 
F = tf(a,[1 a]);

a is a realp (real tunable parameter) object with initial value 10. Using a as a coefficient in tf creates the tunable genss model object F.

Connect the models together to construct a model of the closed-loop response from r to y.

T = feedback(G*C,S)*F
Generalized continuous-time state-space model with 1 outputs, 1 inputs, 5 states, and the following blocks:
  C: Tunable PID controller, 1 occurrences.
  a: Scalar parameter, 2 occurrences.

Type "ss(T)" to see the current value and "T.Blocks" to interact with the blocks.

T is a genss model object. In contrast to an aggregate model formed by connecting only Numeric LTI models, T keeps track of the tunable elements of the control system. The tunable elements are stored in the Blocks property of the genss model object.

Display the tunable elements of T.

T.Blocks
ans = struct with fields:
    C: [1x1 tunablePID]
    a: [1x1 realp]

You can use tuning commands such as systune to tune the free parameters of T to meet design requirements you specify.

Related Examples

More About