LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

NI SoftMotion continous positioning

Hi,

 

I am working with the NI SoftMotion plugin in LabVIEW to control an EC motor using the MAXPOS 50/5 controller from maxon.

 

I am able to start and run the motor but I am missing the continuous position setpoint functionality. For example, providing a sinusoidal position setpoint.

 

I played around with the Straight-Line Move function block, but it doesnt allow for a new position setpoint untill it reaches the first setpoint.

 

How do I achieve this continuous motion?

 

Cheers,

Omar

0 Kudos
Message 1 of 4
(2,505 Views)

There are two ways to do "continuous" position moves with EtherCAT drives using SoftMotion. The first is to use a Contour Move (as opposed to a Straight Line Move). There are multiple examples included with SoftMotion that show how to use these, and they can be set to run through a constant set of points continually.

http://zone.ni.com/reference/en-XX/help/371093V-01/mclvhowto/movecontourinfo/

 

It is possible to update a continuous contour move to change the desired profile on the fly. However, depending on your application, it may be easier to write each setpoint directly in LabVIEW RT code rather than use a contour move to buffer the points for you. Keep in mind there is no explicit profiling with either approach, and that setpoints written directly will be at the Scan Engine period of the target. If you want to go from a position of 0 rev. to 1 rev., you would need to create a profile to accelerate to a running velocity and decelerate to a stop. Writing a setpoint of 1 rev. directly to the axis will cause the axis to "jump", as the drive would attempt to reach that position in ~1-5ms depending on the Scan Engine period.

https://knowledge.ni.com/KnowledgeArticleDetails?id=kA00Z0000019MKASA2

0 Kudos
Message 2 of 4
(2,462 Views)

Hi,

 

Thank you for your reply!

 

The Contour Move works well if you have some predefined position setpoints. However I have the problem that I do not know my position points beforehand. In other words, I cannot provide a table or an array of points resembling "sinusoidal" position points.

 

I can only provide ONE position setpoint at a time (I am doing motion tracking), as I do not know where the object I am tracking will be.

 

Is there a way of just adjusting the position setpoint value at say, every iteration? Of course as you mentioned, taking into account that the motor shouldn't just jump from setpoint to another, but with given acceleration/jerk values.

 

Cheers,

Omar

 

 

0 Kudos
Message 3 of 4
(2,445 Views)

Hi,

 

I have a project where I do that. I use analog drive and command 'write setpoint' at 0.002ms. (tracking system)

Unfortunately, NI stopped Softmotion. I'm currently trying to find an alternative because I own and sell product running this and I don't have a solution right now. 

 

I will try to see If I can do that with a kollmorgen akd drive.

 

let me know if you have question or if you have suggestion for my work-around.

thank you.

Patrick

0 Kudos
Message 4 of 4
(1,432 Views)