Motion Control and Motor Drives

Showing results for 
Search instead for 
Did you mean: 

Creating a sinusoidal velocity profile with PCI-7354

As the topic states, I'm trying to create sinusoidal velocity profiles with a PCI-7354 motion controller. I've been looking at trying to use a PVT profile in Motion Assistant to achieve this, but looking more closely at the help page, I saw that Motion Assistant generates a cubic velocity function between points, which means that my velocity profile might not be truly sinusoidal.


Additionally, I'm trying to have 2 motors moving with overlapping sinusoidal profiles, and I'll be mirroring 2 more motors to do the same thing as the original 2, so I don't have any axes to spare for arc moves. I also need to insert constant velocity segments (horizontal lines) into my profile between sinusoid segments.


Is there some setting I can change to avoid the cubic function calculations? Basically, I just want my velocity curve to pass through a series of points without having to have a local maximum or minimum at each of those points. Would it be viable to create a huge series of straight line moves with blending?


Also, since I'm using two motors, would I be better served by combining their motion into a single 2D PVT profile, or is there a way to decouple them and run them in parallel, maybe in LabVIEW? I'm new to NI-Motion (but not LabVIEW) so this is all a bit confusing to me.

0 Kudos
Message 1 of 6



Here is a resource that may interest you.

I hope this helps!


- Kale

0 Kudos
Message 2 of 6

I have read that post before and I don't think it answers the main question I am asking. I understand how the PVT profile works. What I'm trying to do is to create a velocity profile that follows a sinusoidal curve exactly. The PVT profile calculates a velocity profile such that dv/dt at each time input equals zero, that is, the velocity curve is flat for a brief moment at the beginning and end of each segment. Is there a way that I can input only a velocity profile without position to avoid this? Or can a series of very short straight line moves with blending effectively create a sinusoid?

0 Kudos
Message 3 of 6

I think maybe my wording is poor. I've attached a screenshot.


sinusoid motion assistant.PNG


Here, I've made a tab delimited text file of a 1D PVT profile. The position column is a simple sine wave. The velocity column is a cosine wave. The time steps are 20 ms for each step. If I zoom in to where the velocity and acceleration profiles look like solid shapes, it's a very fast zigzag pattern. I want to make that zigzag pattern go away so that I can have a smooth profile.

0 Kudos
Message 4 of 6



You should be able to use a series of straight line moves to do this; it would be very similar to the method of using an array with Excel. 

What is the scale of the images below? This may just be noise introduced to the system. Also, what type of motor are you using?


Best Regards,


- Kale

0 Kudos
Message 5 of 6

Thanks. Is there a more direct way than making a series of straight line moves? The number of straight line moves I'd need is on the order of 100-1000 and that would create a very unwieldy VI. Is there a way in LabVIEW to input an array of velocities?


The images I posted were small in scale, but I scaled them up by a factor of 10000, varied the period and amplitude, etc., and the velocity and acceleration profiles always had the same zigzag issue. I ran it on a motor and it jittered quite a bit. The motor I'm using is an NI ST23-4E with encoder.


I found this page:

I wonder if this is the issue I'm experiencing.

0 Kudos
Message 6 of 6