Motion Control and Motor Drives

cancel
Showing results for 
Search instead for 
Did you mean: 

Position-Velocity-Time vs Position Profile

Hello,

I have a question concerning the behavior of position profile and PVT contoured move.

In the topic “Position Profile-Motion Assistant Help file” says:

“Position profile moves give you maximum control over the position of the move …”.

And in “Position/Velocity/Time (PVT)-Motion Assistant Help file” it says “PVT moves give you maximum control over the velocity of the move at certain times throughout the move.”

So, it’s correct to say that the position generated by a PVT based contoured move is “less accurate” than the one generated by a position profile in respect to the original data points?

If yes, is there any way to know in advance maximum position error?

0 Kudos
Message 1 of 9
(6,026 Views)

Hey TulioB,

 

It seems that you are wondering if the PVT based contoured moves are less accurate than the position profile moves. The answer is no, they are equally accurate when it comes to the position of their moves. They will each move to the position that you tell them to with the points that you specify. The main difference between the PVT and the position profile is that you get more flexibility with the PVT (like you can determine different velocities of the move throughout the move) without losing accuracy of the position of the move.

 

The Motion Assistant Help file does say that “PVT moves give you maximum control over the velocity of the move at certain times throughout the move", but it does not mean that the position control is lost. You will still have control over the position of the move with the PVT based contoured move, as much as the position profile does.

 

I hope this answers your question. If this does not answer your question, please let me know. Thanks, and have a great day.

 

Regards,

DJ L.

0 Kudos
Message 2 of 9
(6,008 Views)

Hi DJ L.,

This answer my question. Thank you.

I wonder if PVT isn't implemented using position profile. Looking at the Motion Assistant API function "NIMAGetPositionProfile" one of its arguments is  "nimaVelocitySpec" struct which has vini, vfin and vcruise members.

I'm trying using my own PVT files in Motion Assistant application. But after my file was loaded nothing is displayed in the preview windows.
I'm specifying the position values in counts, velocity in count per second and time in milliseconds.

In which units the values should be?

What can cause this behavior?

0 Kudos
Message 3 of 9
(6,000 Views)

Hey TulioB,

The PVT is not implemented exactly like the position profile is, but they are very similar in how they are implemented. If you are unable to get your own PVT file to work in the motion assistant, I would suggest a few things to try. First, are you able to get any of the PVT Examples to work in Motion Assistant? Try to get one of them to work first if you haven't already. You can find the PVT example files at the following location: C:\Program Files\National Instruments\Motion Assistant\Examples\Contouring\PVT Examples. There is 1D, 2D, and 3D examples there you can try out. If you can get one of the PVT example files to work and to display data in the preview windows, then the next thing I would have you try is altering the example file to get it to slowly look like your own PVT file. Try changing one or two values and see if it will load and run properly, then keep adding your values into the file and test it out along the way. When your PVT file doesn't load properly, there could be multiple reasons as to why. One reason might be your PVT values could be out of the range that Motion Assistant can handle. For instance, if you try to move over a large area, but you don't give the move enough Time to complete the move, you will have some problems. This is just one example of why your PVT file might not be working properly. Now, if you just change one or two values of an example and nothing displays in the preview window, then something else might be going on.

You are correct about the units and their values. Position values are in counts, velocity values are in counts per second, and time values are in millisecond units.

Also, it would be helpful to know what version of the Motion Assistant that you are using, and if you can provide any other helpful information as to what you are trying to do, like a 1D or 2D move, etc. Also, what steps are you taking to do what you are trying to accomplish. The more information you provide, the more we can help you out. Thanks.

Regards,

DJ L.

0 Kudos
Message 4 of 9
(5,987 Views)

Hello DJ L,

 

The PVT examples work fine. I’m using Motion Assistant 1.2.

I’m trying to do a 2D move that have 2 different velocity profiles. I only have XY coordinates, the maximum cruise velocity and the maximum acceleration that my setup supports. One profile is used for straight (or almost straight) moves and the second at a much lower speed in curves.

 

I think that what is causing my problem is a constraint that is out of range like you said. I managed to get a few points to be plotted by Motion Assistant. But the resulting velocity profile is unacceptable for this application (see file Profile1.png and PVT_Profile1.txt for data). Adjusting the time index by trial and error I get a more appropriate velocity profile for my needs (see file Profile2.png and PVT_Profile2.txt for data). The constraints for this application are:

- Go to the maximum cruise velocity in the least amount of time (given the maximum allowed acceleration).

- Maintain this cruise velocity with the minimum variation until the next change in velocity profile.

- The XY coordinates defines a cutting path, so distortions in position should be minimum.

I’m looking for a set of equations that could generate data in the PVT format that meet this requirements and it should be possible to put this in C++ program because adjusting and testing in Motion Assistant application would not be possible. Could you help me in developing those equations?

The file “data_profile.xls” is one real example and contains XY coordinates with the respective move constraints.

 

Regards,

0 Kudos
Message 5 of 9
(5,982 Views)
Hey TulioB,
 
By considering the constraints of your application, I would recommend that you use contouring with Position Profile instead of using PVT. There are a few reasons that I would recommend not using PVT. First of all, PVT allows you control the velocities at specific times. This is not what you are trying to do. With PVT, there is really no way to control what happens between each point. It really only cares what happens at the specific points. If you are wanting to control the velocity between points, then you will want to use the Position Profile, and set your velocities by using the Move Constraints. You might also consider using Sequence of Blended Moves, which I know others have had success with that were trying to perform similar actions that you are trying. When performing moves with constant velocities until the next move with different velocity, you will need to load the velocity. Also, you will need to load the velocity each time you would like to change it, all inside your program. Try out the sequence of blended moves and load your positions and velocities from your file.
 
Let me know if you have any questions. Good luck on your application.
 
Regards,
DJ L.
0 Kudos
Message 6 of 9
(5,907 Views)

Hello DJ L,

 

Thanks for your support.

I start using Position Profile, but position profile only works if the start and end travel velocity are zero. My intention was to reduce velocity from lets say 300RPM down to 100RPM without a full stop in the middle. The NI support tells me that it’s not possible to do that with position profile using Motion Assistant API.

I understand now why PVT can’t do the kind of motion profile that I need. I use a cubic motion profile. In this kind of motion profile there acceleration is always increasing and decreasing. A partial cubic motion profile will do what I need.

 

Linear Interpolation with blending it’s not possible too. This is because I have a lot of small trajectories (1mm to 3mm) to blend and in those conditions blending doesn’t result in a smooth motion. I think Jochen provided and answer in this thread http://forums.ni.com/ni/board/message?board.id=240&message.id=1675&query.id=0#M1675  (look the last reply). Our first applications are made using linear interpolation and blending trajectories, and there was no way to achieve a smooth motion when there were very small trajectories to be blended.

 

Regards,

0 Kudos
Message 7 of 9
(5,872 Views)

Hello,

The PID parameters that Jochen referenced in his post can definitely be used to smooth out your moves as you blend more and more small moves.  The larger the Kp parameter, the faster the controller is going to try to ramp the motor up to speed.  The Kd parameter helps to settle the motion profile quickly.  If you decrease Kp and increase Kd, you may end up with more gradual transitions to the target positions. 

Regards,
Scott R.
Applications Engineer
National Instruments

Scott Romine
Course Development Engineer
National Instruments
0 Kudos
Message 8 of 9
(5,853 Views)

Hello Scott,

 

In Jochen's post I was refereeing to the communication limit of the 68331 processor...
Two years ago when we are trying to get a more smooth motion we tried very hard with PID tuning without success. We also perform tests using steppers in open and closed loop and with stepper and the result were similar to servos. Since we have the shakings during motion even with steppers I don’t think the cause was PID values. At the time we contacted NI’s support in Brazil about these issue and they suggested that we use contoured move as a solution.

 

Regards,

0 Kudos
Message 9 of 9
(5,842 Views)