www.gusucode.com > control 案例程序 matlab源码代码 > control/DiscretizeaCompensatorExample.m

    %% Discretize a Compensator  
% This example shows how to convert a compensator from continuous to discrete
% time using several discretization methods, to identify a method that yields
% a good match in the frequency domain. 
%
% You might design a compensator in continuous time, and then need to convert
% it to discrete time for a digital implementation. When you do so, you
% want the discretization to preserve frequency-domain characteristics that
% are essential to your performance and stability requirements.   

% Copyright 2015 The MathWorks, Inc.


%% 
% In the following control system, |G| is a continuous-time second-order
% system with a sharp resonance around 3 rad/s.  
%%
% 
% <<../transformation1.png>>
% 
%%
% One valid controller for this system includes a notch filter in series
% with an integrator. Create a model of this controller. 
notch = tf([1,0.5,9],[1,5,9]);
integ = pid(0,0.34);
C = integ*notch;
bodeplot(C)    

%%
% The notch filter centered at 3 rad/s counteracts the effect of the resonance
% in |G|. This configuration allows higher loop gain for a faster overall
% response.  

%% 
% Discretize the compensator. 
Cdz = c2d(C,0.5); 

%%
% The |c2d| command supports several different discretization methods. Since
% this command does not specify a method, |c2d| uses the default method,
% Zero-Order Hold (ZOH). In the ZOH method, the time-domain response of
% the discretized compensator matches the continuous-time response at each
% time step. 

%%
% The discretized controller |Cdz| has a sample time of 0.5 s. In practice,
% the sample time you choose might be constrained by the system in which
% you implement your controller, or by the bandwidth of your control system.  

%% 
% Compare the frequency-domain response of |C| and |Cdz|. 
bodeplot(C,Cdz)
legend('C','Cdz');    

%%
% The vertical line marks the Nyquist frequency, $\pi/T_{s}$, where $T_{s}$
% is the sample time. Near the Nyquist frequency, the response of the
% discretized compensator is distorted relative to the continuous-time response.
% As a result, the discretized notched filter may not properly counteract
% the plant resonance.  

%% 
% To fix this, try discretizing the compensator using the Tustin method
% and compare to the ZOH result. The Tustin discretization method often
% yields a better match in the frequency domain than the ZOH method. 
Cdt = c2d(C,0.5,'tustin');
plotopts = bodeoptions;
plotopts.Ylim = {[-60,40],[-225,0]};
bodeplot(C,Cdz,Cdt,plotopts)
legend('C','Cdz','Cdt')    

%%
% The Tustin method preserves the depth of the notch. However, the method
% introduces a frequency shift that is unacceptable for many applications.
% You can remedy the frequency shift by specifying the notch frequency as
% the prewarping frequency in the Tustin transform.  

%% 
% Discretize the compensator using the Tustin method with frequency prewarping,
% and compare the results. 
discopts = c2dOptions('Method','tustin','PrewarpFrequency',3.0);
Cdtp = c2d(C,0.5,discopts);
bodeplot(C,Cdt,Cdtp,plotopts)
legend('C','Cdt','Cdtp')    

%%
% To specify additional discretization options beyond the discretization
% method, use |c2dOptions|. Here, the discretization options set |discopts|
% specifies both the Tustin method and the prewarp frequency. The prewarp
% frequency is 3.0 rad/s, the frequency of the notch in the compensator
% response. 

%%
% Using the Tustin method with frequency prewarping yields a better-matching
% frequency response than Tustin without prewarping.