Listing 2. Code for Measuring Response of Servomotor

% this is minimal file for dlxrun.
% it measures the position response to a voltage
% step input.
begin constant defs
volts
end
%
begin constant code
volts = 6.0;
limit_volts[LOW] = -24.0;
limit_volts[HIGH] = 24.0;
end
%
begin control defs
   voltage
end
%
begin output defs
   position
end
%
begin output translation code
   position = RADIANS_PER_COUNT * get_encoder();
end
%
begin control algorithm
   voltage = volts;
end
%
begin controller conversion code
  double scale;     /* genuine local variable */
   scale = voltage/24.0; /* saturate the value
            if off scale */
   scale = (scale > 1.0) ? 1.0 : ((scale < -1.0)
       ? -1.0 : scale);
    set_dac( 128 + scale*127 );
end
%
begin init code
% and finally set the usual runtine parameters:
   T_INIT = 0.0;
   T_FINAL = 0.2;
   SAMPLE_INTERVAL = .001;
   N_STEPS = 20000;
end
%
begin utility defs
#include "/usr/local/lib/dlxlab/mpi.h"
#define RADIANS_PER_COUNT (2.0 * 3.1415926
            / 3600.0)
end
%
begin utility code
#include "/usr/local/lib/dlxlab/omnitech.h
end