www.gusucode.com > robust 案例源码程序 matlab代码 > robust/BuildTunableControlSystemModelWithUncertainParametersExample.m

    %% Build Tunable Control System Model With Uncertain Parameters
% This example shows how to construct a generalized state-space (|genss|)
% model of a control system that has both tunable and uncertain parameters.
% You can use |systune| to tune the tunable parameters of such a model to
% achieve performance that is robust against the uncertainty
% in the system.
%%
% For this example, the plant is a mass-spring-damper system.  The input is
% the applied force, _F_, and the output is _x_, the position of the mass. 
%
% <<../mass-spring-damper.png>>
%
%% 
% In this system, the mass _m_, the damping constant _c_, and the spring
% constant _k_ all have some uncertainty. Use uncertain |ureal| parameters
% to represent these quantities in terms of their nominal or most probable
% value and a range of uncertainty around that value.
um = ureal('m',3,'Percentage',40);
uc = ureal('c',1,'Percentage',20);
uk = ureal('k',2,'Percentage',30);
%%
% The transfer function of a mass-spring-damper system is a second-order
% function given by:
% 
% $$G\left( s \right) = {1 \over {m{s^2} + cs + k}}.$$
% 
%%
% Create this transfer function in MATLAB(R) using the uncertain
% parameters and the |tf| command. The result is an uncertain state-space
% (|uss|) model.
G = tf(1,[um uc uk])
%%
% Suppose you want to control this system with a PID controller, and that
% your design requirements include monitoring the response to noise at the
% plant input.  Build a model of the following control system.
%
% <<../msdctrl.png>>
%
%% 
% Use a tunable PID controller, and insert an analysis point to provide
% access to the disturbance input.
C0 = tunablePID('C','PID');
d = AnalysisPoint('d');
%%
% Connect all the components to create the control system model.
T0 = feedback(G*d*C0,1)
T0.InputName = 'r';
T0.OutputName = 'x';
%%
% |T0| is a generalized state-space (|genss|) model that has both tunable
% and uncertain blocks.  In general, you can use |feedback| and other model
% interconnection commands, such as |connect|, to build up models of more
% complex tunable and uncertain control systems from fixed-value LTI 
% components, uncertain components, and tunable components.
%%
% When you plot system responses of a |genss| model
% that is both tunable and uncertain, the plot displays multiple responses
% computed at random values of the uncertain components.  This sampling
% provides a general sense of the range of possible responses.  All plots
% use the current value of the tunable components.
bodeplot(T0)
%%
% When you extract responses from a tunable and uncertain |genss| model,
% the responses also contain both tunable and uncertain blocks.  For
% example, examine the loop transfer function at the disturbance input.
S0 = getLoopTransfer(T0,'d')
bodeplot(S0)
%% 
% You can now create tuning goals and use |systune| to tune the PID
% controller coefficients of T0.  When you do so, |systune| automatically
% tunes the coefficients to maximize performance over the full range of
% uncertainty.