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 / sec2 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 / sec2 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 / sec2 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 Output--velocity 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 / sec2 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 / sec2 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
|