Change Requirements with Operating Condition
When tuning a gain-scheduled control system, it is sometimes useful to enforce different
design requirements at different points in the design grid. For instance, you might want
to:
- Specify a variable tuning goal that depends explicitly or implicitly on the design point.
- Enforce a tuning goal at a subset of design points, but ignore it at other design points.
- Exclude a design point from a particular run of systune, but retain it for analysis or
other tuning operations. - Eliminate a design point from all stages of design and analysis.
Define Variable Tuning Goal
There are several ways to define a tuning goal that changes across design points.
Create Varying Goals
The varyingGoal command lets you construct tuning goals that depend implicitly or
explicitly on the design point.
For example, create a tuning goal that specifies variable gain and phase margins across a
grid of design points. Suppose that you use the following 5-by-5 grid of design points to
tune your controller.
[alpha,V] = ndgrid(linspace(0,20,5),linspace(700,1300,5));
Suppose further that you have 5-by-5 arrays of target gain margins and target phase
margins corresponding to each of the design points, such as the following.
[GM,PM] = ndgrid(linspace(7,20,5),linspace(45,70,5));
To enforce the specified margins at each design point, first create a template for the
margins goal. The template is a function that takes gain and phase margin values and
returns a TuningGoal.Margins object with those margins.
FH = @(gm,pm) TuningGoal.Margins('u',gm,pm);
Use the template and the margin arrays to create the varying goal.
VG = varyingGoal(FH,GM,PM);
11 Gain-Scheduled Controllers