HP VXI 75000 C Series User's And Scpi Programming Manual page 416

Algorithmic closed loop controller
Table of Contents

Advertisement

* and max values entered as min_input and max_input.
*/
for ( ii=0 ; ii<=64 ; ii++ ) /* 0 to +FS */
{
input[ii] = center + ( (tbl_range/64.0)*(float64)ii);
result[ii] = (*custom_function)( input[ii] );
if ( ii == 0 ) continue; /* This is the first point - skip slope */
jj = 64 + ii - 1;
/* for second and subsequent points */
t = result[ii-1];
if (t< 0.0) t *= -1.0; /* use abs value (magnitude) of t */
/* compute the exponent of the offset (B is 31 bits) */
if (t!=0.0)
exponent = 31.0 - (log10(t)/log10(2.0));/* take log base 2 */
else
exponent = 100.0;
}
/* compute slope in bits (each table entry represents 512 bits) */
slope = ( result[ii] - result[ii-1] ) / 512.0;
/* don't take the log of a negative slope */
absslope = (slope < 0 )? -slope : slope;
/* compute the exponent of the slope (M is 16 bits) */
if ( absslope != 0 )
else
/* Choose the smallest exponent -- maximize resolution */
if (exponent2 < exponent) exponent = exponent2;
Xfactor = (int32)(exponent);
if ( t != 0 )
Mfactor = round32f( two_to_the_N(Xfactor)*slope );
if ( Mfactor == 32768 )
416 Example Program Listings
/* generate numbers for prev segment */
/* using prev seg base */
{
/* don't take log of zero */
}
{
{
exponent2 = 15.0 -(log10(absslope)/log10(2.0));
}
{
exponent2 = 100.0;
}
{
int32 ltemp = round32f( log10( t ) / log10( 2.0 ) );
if ( (Xfactor + ltemp) > 30 )
{
Xfactor = 30 - ltemp;
}
}
{
Appendix G

Advertisement

Table of Contents
loading

This manual is also suitable for:

Vxi e1415a

Table of Contents