Black-Nichols diagram of a linear dynamical system
black( sl,[fmin,fmax] [,step] [,comments] )
black( sl,frq [,comments] )
black(frq,db,phi [,comments])
black(frq,repf [,comments])
sl a continuous or discrete time SIMO linear dynamical system ( see: | |
---|---|
syslin). |
: :fmin,fmax real scalars (frequency bounds) : :frq row vector or matrix (frequencies) : :db,phi row vectors or matrices (modulus, phase) : :repf row vectors or matrices (complex frequency response) : :step real : :comments string :
Black’s diagram (Nichols’chart) for a linear system ( see: syslin). sl can be a continuous-time or discrete-time SIMO system. In case of multi-output the outputs are plotted with different colors.
The frequencies are given by the bounds fmin, fmax (in Hz) or by a row-vector (or a matrix for multi-output) frq.
step is the ( logarithmic ) discretization step. (see calfrq for the choice of default value).
comments is a vector of character strings (captions).
db,phi are the matrices of modulus (in Db) and phases (in degrees). (One row for each response).
repf matrix of complex numbers. One row for each response.
To plot the grid of iso-gain and iso-phase of y/(1+y) use `nicolschart()`_.
Default values for fmin and fmax are 1.d-3, 1.d+3 if sl is continuous-time or 1.d-3, 0.5/sl.dt (nyquist frequency) if sl is discrete-time.
//Black diagram
s=`poly`_(0,'s');
sl=`syslin`_('c',5*(1+s)/(.1*s^4+s^3+15*s^2+3*s+1))
`clf`_();black(sl,0.01,10);
//Black diagram with Nichols chart as a grid
s=`poly`_(0,'s');
Plant=`syslin`_('c',16000/((s+1)*(s+10)*(s+100)));
//two degree of freedom PID
tau=0.2;xsi=1.2;
PID=`syslin`_('c',(1/(2*xsi*tau*s))*(1+2*xsi*tau*s+tau^2*s^2));
`clf`_();
black([Plant;Plant*PID ],0.01,100,["Plant";"Plant and PID corrector"]);
//move the caption in the lower rigth corner
ax=`gca`_();Leg=ax.children(1);
Leg.legend_location="in_lower_right";
`nicholschart`_(colors=`color`_('light gray')*[1 1])