www.gusucode.com > robust 案例源码程序 matlab代码 > robust/TimeResponseOfContinuousPlantWithDiscreteControllerExample.m
%% Time Response of Continuous Plant with Discrete Controller % To illustrate the use of |sdlsim|, consider the application of a discrete % controller to a plant with an integrator and near integrator. A continuous plant and % a discrete controller are created. A sample-and-hold equivalent of the % plant is formed and the discrete closed-loop system is calculated. % Simulating this gives the system response at the sample % points. |sdlsim| is then used to calculate the intersample behavior. %% % Copyright 2015 The MathWorks, Inc. P = tf(1,[1, 1e-5,0]); T = 1.0/20; C = ss([-1.5 T/4; -2/T -.5],[ .5 2;1/T 1/T],... [-1/T^2 -1.5/T], [1/T^2 0],T); Pd = c2d(P,T,'zoh'); %% % The closed-loop digital system is now set up. You can use |sysic| to % construct the interconnected feedback system. systemnames = 'Pd C'; inputvar = '[ref]'; outputvar = '[Pd]'; input_to_Pd = '[C]'; input_to_C = '[ref ; Pd]'; sysoutname = 'dclp'; cleanupsysic = 'yes'; sysic; %% % Use |step| to simulate the digital step response. [yd,td] = step(dclp,20*T); %% % Set up the continuous interconnection and calculate the sampled data % response with |sdlsim|. M = [0,1;1,0;0,1]*blkdiag(1,P); t = [0:.01:1]'; u = ones(size(t)); y1 = sdlsim(M,C,u,t); plot(td,yd,'r*',y1{:},'b-') axis([0,1,0,1.5]) xlabel('Time: seconds') title('Step response: discrete (*) and continuous') %% % You can see the effect of a nonzero initial condition in the % continuous-time system. Note how examining the system at only the sample % points will underestimate the amplitude of the overshoot. y2 = sdlsim(M,C,u,t,1,0,[0.25;0]); plot(td,yd,'r*',y1{:},'b-',y2{:},'g--') axis([0,1,0,1.5]) xlabel('Time: seconds') title('Step response: nonzero initial condition') %% % Finally, you can examine the effect of a sinusoidal disturbance at the % continuous-time plant output. This controller is not designed to reject % such a disturbance and the system does not contain antialiasing filters. % Simulating the effect of antialiasing filters is easily accomplished by % including them in the continuous interconnection structure. M2 = [0,1,1;1,0,0;0,1,1]*blkdiag(1,1,P); t = [0:.001:1]'; dist = 0.1*sin(41*t); u = ones(size(t)); [y3,meas,act] = sdlsim(M2,C,[u dist],t,1); plot(y3{:},'-',t,dist,'b--',t,u,'g-.') xlabel('Time: seconds') title('Step response: disturbance (dashed) and output (solid)') %%