This example shows how to create a tunable model of a control system that has both fixed plant and sensor dynamics and tunable control components.
Consider the control system of the following illustration.
Suppose that the plant response is , and that the model of the sensor dynamics is . The controller is a tunable PID controller, and the prefilter is a low-pass filter with one tunable parameter, a.
Create models representing the plant and sensor dynamics. Because the plant and sensor dynamics are fixed, represent them using numeric LTI models.
G = zpk(,[-1,-1],1); S = tf(5,[1 4]);
To model the tunable components, use Control Design Blocks. 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 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
Interconnect the models to construct a model of the complete closed-loop response from r to y.
T = feedback(G*C,S)*F
T = 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, "get(T)" to see all properties, 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. Examine the tunable elements of
ans = struct with fields: C: [1x1 tunablePID] a: [1x1 realp]
When you create a
genss model of a control system that has tunable components, you can use tuning commands such as
systune to tune the free parameters to meet design requirements you specify.