www.gusucode.com > control 案例程序 matlab源码代码 > control/ConvertDiscreteTimeDynamicSystemTo2DOFStandardFormPIDExample.m
%% Convert Discrete-Time Dynamic System to 2-DOF Standard-Form PID Controller % Convert a discrete-time dynamic system that represents a 2-DOF PID controller % with derivative filter to standard |pidstd2| form. %% % The following state-space matrices represent a discrete-time 2-DOF PID controller with % a sample time of 0.05 s. % Copyright 2015 The MathWorks, Inc. A = [1,0;0,0.6643]; B = [0.05,-0.05; -0.004553,0.3357]; C = [0.2301,10.66]; D = [0.8905,-11.79]; Ts = 0.05; sys = ss(A,B,C,D,Ts); %% % When you convert |sys| to 2-DOF PID form, the result depends on which discrete % integrator formulas you specify for the conversion. For instance, use % the default, |ForwardEuler|, for both the integrator and the derivative. C2fe = pidstd2(sys) %% % Now convert using the |Trapezoidal| formula. C2trap = pidstd2(sys,'IFormula','Trapezoidal','DFormula','Trapezoidal') %% % The displays show the difference in resulting coefficient values and % functional form. % % For some dynamic systems, attempting to use the |Trapezoidal| or |BackwardEuler| % integrator formulas yields invalid results, such as negative |Ti|, |Td|, % or |N| values. In such cases, |pidstd2| returns an error.