www.gusucode.com > control 案例程序 matlab源码代码 > control/UpdateControllerModelWithTunedValuesExample.m
%% Update Controller Model with Tuned Values % Propagate the values of tuned parameters to other Control Design Blocks. % % You can use tuning commands such as |systune|, |looptune|, or the Robust % Control Toolbox(TM) command |hinfstruct| to tune blocks in a closed-loop % model of a control system. If you do so, the tuned controller parameters % are embedded in a generalized model. You can use |setBlockValue| to % propagate those parameters to a controller model. %% % Create a tunable model of the closed-loop response of a control system, % and tune the parameters using |systune|. s = tf('s'); num = 33000*(s^2 - 200*s + 90000); den = (s + 12.5)*(s^2 + 25*s + 63000); G = num/den; C0 = tunablePID('C0','pi'); a = realp('a',1); F0 = tf(a,[1 a]); T0 = feedback(G*C0,F0); T0.InputName = 'r'; T0.OutputName = 'y'; %% % |T0| is a generalized model of the closed-loop control system and % contains two tunable blocks: % % * |C0| - Tunable PID controller % * |a| - Real tunable parameter % %% % Create a tuning requirement for the output |y| to track the input % |r|, and tune the system to meet that requirement. Req = TuningGoal.Tracking('r','y',0.05); [T,fSoft,~] = systune(T0,Req); %% % The generalized model |T| contains the tuned values of |C0| and |a|. %% % Propagate the tuned values of the controller in |T| to the controller % model |C0|. C = setBlockValue(C0,T) %% % |C| is still a |tunablePID| controller. The current PID gains in |C| are % set to the values of the controller in |T|. %% % Obtain a numeric LTI model of the tuned controller using |getValue|. CVal = getValue(C,T); %% % This command returns a numerical state-space model of the tuned controller.