Define tuning goals, including tracking and loop shape goals to ensure command
tracking, as well as gain goals to prevent saturations. For the speed controller, set the
tracking bandwidth to 150 rad/s. This bandwidth is used in both the tracking and loop
shape goals. In addition, set the DC error to 0.001 to reflect a maximum steady-state
error of 0.1 %. Set the peak error to 10. For the d-axis current controller, set the tracking
bandwidth to 2500 rad/s, which is much faster than the outer-loop speed controller. To
prevent saturating controllers, specify goals to constrain the gains for all three
controllers.
TR1 = TuningGoal.Tracking('speed_ref','speed',2/150,0.001,10);
TR2 = TuningGoal.Tracking('Id_ref','Id',2/2500);
LS1 = TuningGoal.LoopShape('Id',2500);
LS2 = TuningGoal.LoopShape('speed',150);
MG1 = TuningGoal.Gain('speed_ref','Iq_ref',2);
MG2 = TuningGoal.Gain('speed_ref','Vq',50);
MG3 = TuningGoal.Gain('Id_ref','Vd',20);
Tune all three PI controllers using systune with all tuning goals based on the
constructed model ST0. To increase the likelihood of finding parameter values that meet
all design requirements, set options for systune to run five additional optimizations
starting from five randomly generated parameter values.
opt = systuneOptions('RandomStart',5);
rng(2);
[ST1,fSoft] = systune(ST0,[TR1,TR2,LS1,LS2,MG1,MG2,MG3],opt);
Final: Soft = 1.03, Hard = -Inf, Iterations = 104
Some closed-loop poles are marginally stable (decay rate near 1e-07)
Final: Soft = 1.01, Hard = -Inf, Iterations = 65
Some closed-loop poles are marginally stable (decay rate near 1e-07)
Final: Soft = 1.01, Hard = -Inf, Iterations = 62
Final: Soft = 1.01, Hard = -Inf, Iterations = 68
Some closed-loop poles are marginally stable (decay rate near 1e-07)
Final: Soft = 1.01, Hard = -Inf, Iterations = 63
Final: Soft = 1.01, Hard = -Inf, Iterations = 50
After finding a solution using systune, show how tuning goals are met in the tuned
model ST1. Show the tracking, loop shape, and gain tuning goals separately. Dashed lines
in the following figures represent tuning goals and solid lines are the result of the tuned
controllers.
figure
viewGoal([TR1,TR2],ST1);
figure
Tune Field-Oriented Controllers Using SYSTUNE