% Compensator parameterization
C0 = tunableSS('C',2,1,2);
C0.D.Value(1) = 0;
C0.D.Free(1) = false;
setBlockParam(ST0,'MIMO Controller',C0)
% Requirements
Req1 = TuningGoal.Tracking('az ref','az',1); % tracking
Req2 = TuningGoal.Gain('delta fin','delta fin',tf(25,[1 0])); % roll-off
Req3 = TuningGoal.Margins('delta fin',7,45); % margins
MaxGain = frd([2 200 200],[0.02 2 200]);
Req4 = TuningGoal.Gain('delta fin','az',MaxGain); % disturbance rejection
% Tuning
Opt = systuneOptions('RandomStart',3);
rng('default')
[ST1,fSoft] = systune(ST0,[Req1,Req2,Req3,Req4],Opt);
Final: Soft = 1.15, Hard = -Inf, Iterations = 115
Final: Soft = 1.15, Hard = -Inf, Iterations = 123
Final: Soft = 1.15, Hard = -Inf, Iterations = 71
Final: Soft = 1.15, Hard = -Inf, Iterations = 139
Interpreting Results
systune run three optimizations from three different starting points and returned the
best overall result. The first output ST is an slTuner interface representing the tuned
control system. The second output fSoft contains the final values of the four
requirements for the best design.
fSoft
fSoft =
1.1476 1.1476 0.5461 1.1476
Requirements are normalized so a requirement is satisfied if and only if its value is less
than 1. Inspection of fSoft reveals that Requirements 1,2,4 are active and slightly
violated while Requirement 3 (stability margins) is satisfied.
Validating Results