phlead.m

来自「控制系统计算机辅助设计——MATLAB语言与应用(源代码)」· M 代码 · 共 47 行

M
47
字号
function [ka,kb,kc,kd] = phlead(maxlead,freq,dcgain)
%PHLEAD design a phase lead compensator
%
%       [ka,kb,kc,kd] = phlead(maxlead,freq,dcgain)
%       [ka,kb,kc,kd] = phlead(maxlead,freq)
%       [kn,kd] = phlead(maxlead,freq,dcgain)
%       [kn,kd] = phlead(maxlead,freq)
%
%       returns a first order lead compensator with a maximum 
%       lead of MAXLEAD ( < 90) degrees occurring at FREQ radians/s.  
%       DCGAIN specifies the dc gain of the compensator in dB's.  
%       If DCGAIN is omitted a value of 0 dB is assumed.
%
%       With 4 output arguments the compensator is returned in state
%       space form. With 2 output arguments it is returned in transfer
%       function form.
%
%       A negative value for MAXLEAD results in a phase lag compensator.

%       P. Phaal, November 1987. Revised 8 Dec 87, J.M.Maciejowski.
% Copyright (c) 1987 by GEC Engineering Research Centre & Cambridge Control Ltd
%       MRN0039

nargs = nargin;
nout = nargout;
error(nargchk(2,3,nargs));
if nargs == 2
	dcgain = 0;     % default gain
end

if abs(maxlead)>=90,
  error('Phase change must be smaller than 90 degrees. (PHLEAD)')
end

% solve controller equations
k = 10^(dcgain/20);
p = sin(maxlead*pi/180);
a = (1+p)/(1-p);
T = 1/(freq*sqrt(a));
ka = k .* [a*T,1];   % numerator
kb = [T,1];   % denominator

% convert to state space if required
if nout == 4
	[ka,kb,kc,kd] = mvtf2ss(ka,kb);
end

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?