Motion Control and Motor Drives

cancel
Showing results for 
Search instead for 
Did you mean: 

Sinusoidal Velocity Profile

Using the CVI FlexMotion command "flex_load_scurve_time" for the 7344 motion controller, is it possible, with appropriate parameters, to generate an accurately sinusoidal velocity profile?
0 Kudos
Message 1 of 19
(7,595 Views)
There is a much better way to create a true sinusoidal velocity profile with a 7344. You simply need to configure two axes of the 7344 in a vector space and use the function flex_load_circular_arc to do a circualar move. In this case one axis moves with a sine velocity profile, the other one with a cosine profile. If you don't need the second axis just configure it as open loop stepper axis so you don't have to care about it.
If you can't afford loosing one axis you should do a contouring move by downloading an array of position data representing the sine wave to the board.

Regards,

Jochen Klier
Applications Engineering Group Leader
National Instruments Germany GmbH
Message 2 of 19
(7,597 Views)

Dear Jochen,

This is what I want to do, but I can't get it to work for me.  I configured Axis 2 as an enabled stepper axis with no feedback.  I can do 1D moves just fine, but no matter whether I use a circular arc or a 2D straigt line move, the motor moves a very short distance and then stops, with the move status set to complete.  Can you help me figure out what I am missing?

Josh Moses

 

 

0 Kudos
Message 3 of 19
(7,373 Views)
Never mind, I got it.  I just needed to initialize Axis 2 after changing it to a stepper.  Problem solved.
 
Josh
0 Kudos
Message 4 of 19
(7,371 Views)
There seems to be some limitation on the angular velocity.  Do you know what it is?  How I can find out?  What if I want to go beyond this bound?
 
Josh
 
0 Kudos
Message 5 of 19
(7,370 Views)
Josh,

here you can find some explanations about the allowed velocity range for arc moves. If you need more flexibility you should consider using contoured moves.

Jochen
0 Kudos
Message 6 of 19
(7,367 Views)

Thank you for that link, Jochen.  I still need some help understanding my problem.  I am using the Circular Arc.vi example that comes with NI-Motion 7.2.  I have the velocity set to 20,000 counts per second.  With the radius at 300 counts, it correctly executes the motion, but with the radius at 250 counts, I get -70151 (NIMC_invalidVelocityError).  It takes the velocity in counts per second, not RPM, so I don't need to multiply by counts/rev or divide by 60 sec/min, right?  MAX says that my 2 enabled axes have a control loop update period of 125 microseconds.  Plugging and chugging, 20,000 counts/second * 125 microSeconds per sample * 65536 / (2^14) = 10.  Why can't I use a radius as small as 10 counts?

Please help,

Josh

 

0 Kudos
Message 7 of 19
(7,360 Views)

Dear Jochen,

I am still having trouble getting sinusoidal motion faster than 6 or 7 Hertz.  Did you see my 1-18-2007 post?  I also tried a contoured profile with the example at http://zone.ni.com/devzone/cda/epd/p/id/1180, but still couldn't get sinusoidal motion faster than about 7 Hertz.  I expected that with a position update rate of 125 microseconds, I should have no problem getting motion up to 150 or 200 Hz, but I can't fingure out how to do it.

Please help,

Josh Moses

The Modal Shop

0 Kudos
Message 8 of 19
(7,346 Views)
Hello out there...
 
My question from 1-18-07 is still unanswered.  It has been two weeks.  I still need help.
 
Josh
 
0 Kudos
Message 9 of 19
(7,265 Views)
Josh,

sorry for the delay but I was out of office.
With the motion control boards it's not the PID rate that limits the frequency of your sinusoidal profile but the speed of the trajectory generator which is much slower than the PID rate (typically about 10 ms) and can't be accelerated.

As a solution you could use an external sine signal (e. g. generated by an M-Series board like the PCI-6221) and connect to an ADC of you rmotion board. You could use this signal as master and run the axis in slave mode (electronic gearing). In this mode the axis should compare the current position to the "position" of the master signal at each PID cycle and follow as closly as possible.

Other than that I could think of mechanical solutions (excentric disc moving a plunger) or a more sophisticated control system (e. g. based on LV FPGA, SoftMotion and PXI)

I hope this helps,

Jochen
Message 10 of 19
(7,262 Views)