Motion Control and Motor Drives

cancel
Showing results for 
Search instead for 
Did you mean: 

Blended vector space move fails intermittantly

Problem Description :
I'm trying to do blended moves from one axis to the next. Start X axis,blend Y axis, and finally blend Z axis (blend factor is -1).
I'll run the code to do a blended move from one location to the next and when
it fails the first and second axis only do partial moves, while the last axis
in the sequence completes its move.

After the failure, I've opened MAX and to check the axis status - the first and
second axis will NOT have the move complete bit set, while the last axis will.
Also, the first and second axes will still be trying to move, but very very slowly (1 encoder count per second).

The code seems to fail because my while loop within the
"CheckBlendComplete3D"
method intermittantly dr
ops out because the
flex_check_blend_complete is returning 1. Why does Flexmotion return axis blend complete as true even though the axis has not begun to decelerate?
I've added a 200 mS delay in the loop because I read in the Flexmotion Software Reference Manual regarding the "flex_read_mcs_rtn" may return unexpected
data if it is read too quickly. This is stated in a Note under "Using This Function".
0 Kudos
Message 1 of 4
(3,600 Views)
Are you able to always perform a two axis blended move, or does that sometimes fail too? flex_check_blend_complete should not return true unless the blend is truly done for whatever resource is selected for the axisOrVectorSpace parameter. Do you have X,Y and Z configured into a Vector Space? Or are you checking the axes separately? Make sure that you are calling the axes or vector space correctly - the NI-Motion Function Help has a detailed parameter discussion on this.

Here is some of it - you'll want to take a look at it on your computer for more information:
This function extends the functionality of Read Blend Status such that you can define a combination of axes or coordinate (vector) spaces to check as a group. This function also can check the blend comple
te status for a single axis or coordinate space, much like Read Blend Status. Instead of decoding the output of the Read Blend Status function yourself, this function does that for you by comparing the axes or vector spaces specified in the axisOrVectorSpace and axisOrVSMap input parameters with the blend complete status for the appropriate axes or vector spaces. The output is a single true/false value indicating whether or not the specified blend or blends are complete.

Hope this helps-
Julie S
Applications Engineer
National Instruments
0 Kudos
Message 2 of 4
(3,600 Views)
Julie,
The X,Y, and Z axes are configured as a vector space. The problem is completely intermittant from what I can tell. Yesterday the machine ran fine, today the problem is back. I understand from Dawn Putnam that there is a Flexmotion bug with the run/stop criteria properly setting the 'Axis is Currently Moving' LED in MAX.

Do you think this same bug could be affecting the 'Read Blend Status', hence causing my app to prematurely exit my while loop before the first axis has really completed its blend?

-Chuck
0 Kudos
Message 3 of 4
(3,600 Views)

This bug is alive and well, 11 years later, in NI Motion 14.0.0.3000.

 

Reproduction frequency is, as Chucker mentions, arbitrary. Maybe it'll take 10k's of discrete moves before crapping out; maybe failure mode can repro reliably after just a couple moves. Putting 10-50msec delays in the "obvious" places (including, between the `Blend Motion` command and the first `Read per Axis Status` to check the `Blend Complete` bit) does not help the problem.

 

It's arbitrary which of the axes in a 3-axis vector will "wander" toward their position setpoint at roughly 1 step per second sometimes X and Y, sometimes Y and Z, sometimes just one axis....

 

The only known fix is to remove all Blend Motion and stick with Move.

 

0 Kudos
Message 4 of 4
(3,032 Views)