PIV: Applying the Velocity Loop Integral (Kiv)
The first thing to do when setting Kiv is to set VintMax
to the same as Output Limit (often 32767). This is the limit for the integral
limit (in DAC counts).
The basic idea behind tuning the velocity integral is
to turn it up until you see some overshoot in the velocity error or the
velocity estimate. In the plots below, we will be looking for overshoot
in the velocity error (yellow). Our goal is to turn up Kiv as much as
possible without any overshoot.
Note that we will be adding a velocity integral (Kiv)
in addition to the velocity proportional gain (Kpv). This means that the
DAC output will not be equivalent to a pure velocity error.
We will start at Kiv = 0.1 and turn it up in a similar
fashion to the other parameters.


1,000 count move
50,000 count / sec velocity
300,000 count / sec^{2} accel / decel 
Red  Commanded Velocity
Green  Actual Velocity
Yellow  DAC Output (velocity error)
White  Velocity Estimate 

Kpv = 9,000
Ka1 = 0.7
Kiv = 0.1
VintMax = 32767

We will not look at every result until there is something
different to see.
In the plot below, we have turned up Kiv = 50.


1,000 count move
50,000 count / sec velocity
300,000 count / sec^{2} accel / decel 
Red  Commanded Velocity
Green  Actual Velocity
Yellow  DAC Output (velocity error)
White  Velocity Estimate 

Kpv = 9,000
Ka1 = 0.7
Kiv = 50
VintMax = 32767

You can see that the main difference between Kiv = 50 and Kiv = 0.1 are
the spikes on both Actual Velocity (green) and DAC Output (white) on the
end of the motion. These spikes are the integral settling after the motion
is done. Our goal is to adjust Kiv to get the fastest settling possible
while keeping the velocity overshoot to a minimum. The settling will be
much faster after we apply the position loop. Double Kiv so that Kiv =
100.


1,000 count move
50,000 count / sec velocity
300,000 count / sec^{2} accel / decel 
Red  Commanded Velocity
Green  Actual Velocity
Yellow  DAC Output (velocity error)
White  Velocity Estimate 

Kpv = 9,000
Ka1 = 0.7
Kiv = 100
VintMax = 32767

You can start to see the overshoot on the
velocity estimate at the end of the move on the Velocity Estimate (white)
and DAC Outputvelocity error (yellow). At this point, we will want to
turn down Kiv. First, let's turn up Kiv so we can see what happens with
excessive Kiv. (Kiv = 200)


1,000 count move
50,000 count / sec velocity
300,000 count / sec^{2} accel / decel 
Red  Commanded Velocity
Green  Actual Velocity
Yellow  DAC Output (velocity error)
White  Velocity Estimate 

Kpv = 9,000
Ka1 = 0.7
Kiv = 200
VintMax = 32767

We can see more overshoot on the velocity estimate when Kiv = 400.


1,000 count move
50,000 count / sec velocity
300,000 count / sec^{2} accel / decel 
Red  Commanded Velocity
Green  Actual Velocity
Yellow  DAC Output (velocity error)
White  Velocity Estimate 

Kpv = 9,000
Ka1 = 0.7
Kiv = 400
VintMax = 32767

The same problems are still present, but
they are a lot worse. At this point, we will set Kiv back to Kiv = 50
and move on to the Applying the Position Loop
Gain (Kpp). We chose to use Kiv = 50 because it was the largest Kiv
that still had no overshoot.
Previous  Next
