Jump to content
OMRON Forums

broken spline command??


steveneads

Recommended Posts

Hello

 

I believe that I've come across something that seems rather badly broken!

 

I've been struggling for a day to make the move time correct when running in spline mode. In my code, I start with one move time and then after some moves change to another move time. The trouble is that this does not work as it's described in the manual.

 

//spline (brMoveTime);  // set spline mode with standard move time for increased smoothness was (TM 10 in UMAC)
spline 1;  // set spline mode for increased smoothness with 1 mSec move time for rapid response to trigger

brPosition = 0;

//wait for start trigger---------------------------------------------------------------------------------------------------------------------
while ((Acc68E[0].DataReg[0].7.1 == 0) || !(brPreProcessingDone)) //;hold here until button 8 is pressed (start button) (and test pre-processing complete)
{
W (brPosition);
brSteps = brSteps - 1; //debug
}

while (1 > 0) //keep looping
{
if (brPosition > 1500)
{
	incr = -1;
	spline (brMoveTime / 2); //move back at double speed 	
//		spline (brMoveTime / 2); //move back at double speed 	
//		spline (brMoveTime / 2); //move back at double speed 	
}
else if (brPosition < 1)
{
	incr = 1;
	spline (brMoveTime); //move forwards at normal speed 	
//		spline (brMoveTime); //move forwards at normal speed 	
//		spline (brMoveTime); //move forwards at normal speed 	
}

brPosition += incr;
W (brPosition);
}

 

In the code example above, the motor is held in a while loop doing zero moves with "spline 1" setting until a digital signal is received, at which point it moves to the second while loop. The first time into this loop, the move time is changed by "spline (brMoveTime)". This does not work. When brPosition reaches 1500, the move time is changed again to "spline (brMoveTime/2)". This also does not work.

 

When the command reaches 0, the move time is changed for the third time by "spline (brMoveTime)" - and this time it finally changes the speed of the motor.

 

When we look at Coord[2].T0Spline, Coord[2].T1Spline, Coord[2].T2Spline in the watch window, we can see that each time a new spline command is issued, only one of these takes the new value, and the previous values drop down through the list. The manual states:

 

"The most common use of the spline mode utilizes the declaration of a single spline segment time

with the simplest form of this command: spline{data}. In this form, all of the spline

segments use the same time value. This case creates a “uniform” B-spline, and is explained in the

“Uniform-Time Calculations” section below."

 

This is not happening.

 

If I change my code by uncommenting the repeat "Spline commands" shown above - the motor speed change takes place as expected.

 

In conclusion, either the firmware is broken or the manual is wrong!

 

Please verify and advise.

Link to comment
Share on other sites

  • Replies 1
  • Created
  • Last Reply

Top Posters In This Topic

Popular Days

Top Posters In This Topic

The variable-time spline is significantly more flexible in the Power PMAC than in older PMACs. The manual does not do an adequate job of explaining how to use it to make it act like the older PMACs.

 

Use the triple time specification (which you can do on one line) to get the effect you want.

 

My apologies for the confusion.

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.

×
×
  • Create New...