PVT

What is PVT Motion?

PVT Motion is another Streaming Motion. PVT Motion is a bit more complicated to use because it requires an array of Positions, Velocities, and Time deltas. The controller is only responsible for figuring out the acceleration for each motion segment. This makes it more flexible and gives users more control over the motion path.
Move PVT
Output Motion Scope
The PVT algorithm is very good for smooth and close path control. The points can be spaced very close or very far apart. For complex paths (or path portions) the points should be spaced close together. For simple paths (or path portions) the points can be spaced far apart. PVT can handle virtually any list of points. The most difficult part is determining the appropriate velocities at
each point.
Trapezoidal move example:
pos[0] = 050; v[0] = 100; t[0] = 1;
pos[1] = 400; v[1] = 100; t[1] = 3.5;
pos[2] = 450; v[2] = 000; t[2] = 1;
Note: Both the Position and Velocity arrays are direction sensitive meaning you must put a (-) sign on negative numbers.

MultiAxis PVT Motion

All motion streaming methods can be used for coordinated motion on multi-axis objects. It is important that you setup your arrays appropriately for a multi-axis object. See the examples below on how to structure your arrays for multi-axis motion.
EXAMPLE 1 -Two Axis MultiAxisXY with MovePVT
The position and velocity data for both axes are combined into the arrays. The time array is shared for both axes. This is why you need twice as many position and velocity points than you need time points. See the example below:
p[0] = 050; v[0] = 100; t[0] = 1; p[1] = 025; v[1] = 050; p[2] = 400; v[2] = 100; t[1] = 3.5; p[3] = 200; v[3] = 050; p[4] = 450; v[4] = 000; t[2] = 1; p[5] = 225; v[5] = 000;
1st Segment
2nd Segment
3rd Segment
Resulting Motion Plot
AxisX
p[0] = 050;
v[0] = 100;
t[0] = 1;
p[2] = 400;
v[2] = 100;
t[1] = 3.5;
p[4] = 450;
v[4] = 000;
t[2] = 1;
AxisY
p[1] = 025;
v[1] = 050;
t[0] = 1;
p[3] = 200;
v[3] = 050;
t[1] = 3.5;
p[5] = 225;
v[5] = 000;
t[2] = 1;

Previously Asked PVT Motion Questions

1) What does the “retain” parameter do?
“retain” will keep the points in RAM in the library for possible backup on path feature (loading the points backwards when FeedRateSet(...) is negative)
2) How does setting the “final” parameter to “true” affect the motion?
“Final” means the velocity will end at zero and you cannot append points. How this affects motion depends on the type: SPLINE, BSPLINE, etc.
3) If I set “final” to false and fail to add more points what happens? Does “emptyCount” affect this?
You will starve the Axis/MultiAxis and it will either abruptly stop (emptyCount=0) or gracefully E-Stop (emptyCount > 0) and either way you should get OUT_OF_FRAMES status bit and from StateGet() / SourceGet().
4) Is there a way I can start a new path without stopping the current move first?
Currently there is no way. But we recommend you don’t load all your streaming points at once. Instead loading one after another one if you need more control over the move.

PVT Motion Sample App

MotionStreaming.cs
Last modified 7mo ago