Jump to content
OMRON Forums

RESOLVED - Circle mode not working as expected


hannsx

Recommended Posts

Hi,

I was just experimenting with move modes and did not get the motion paths for my axes that I would have expected for a circle.

I intended to program a circle in the YZ-Plane and specify the center vector relative to the current position as 5000 units in Y-direction:

 

/****************************************/

open prog 3

 

Coord[1].FeedTime = 1000

Coord[1].SegMoveTime=10 // Has to be greater 0 to enable circle move calculations

Coord[1].MinArcLen = 5

 

// Circular motion in YZ-Plane

inc

F1000 // Feedrate Specification

normal I1 // Specifies X as normal vector to circle plane YZ

circle1 // Puts XYZ in clockwise circle mode

J5000

 

close

/****************************************/

 

However when I plotted the axes-motion I got the attached graph.

I would expect both path to have exactly the same curvature. Am I doing something wrong?

MotionPaths.thumb.png.474d0936d542b40f1101268e7411ecba.png

Link to comment
Share on other sites

  • Replies 9
  • Created
  • Last Reply

Top Posters In This Topic

Update:

I am using Motor[1] for the Y-axis and Motor[6] for the Z-axis. I have no X-axis.

I switched the axis assignments of the Motors and saw that it is always Motor[6] which is not doing the sinus.

Are there Motor Setups which can prevent a motor from being included in the circle mode calculations?

Is it maybe a problem, that the Motors are not on the same amplifier:

amplifier1 = motors 1 - 4

amplifier2 = motors 5 - 8

Link to comment
Share on other sites

The first thing I notice about this motion, is that motor 6 has essentially a constant velocity for a large fraction of the move. This likely means that the motors do not have the same speed/acceleration limits as each other.

Please check the following in the terminal for both motors 1 and 6.

Motor[x].MaxSpeed

Motor[x].InvAMax

Motor[x].InvDMax

Motor[x].InvJMax

 

Motor 6 also seems to be moving less than motor 1 overall.

Please enter the following into the terminal 1 at a time to see axis definitions. If it possible they have different axis scale factors.

#1->

#6->

 

Are these motors identical? Do both motors show the same change in position when rotated one revolution?

 

It shouldn't matter what amplifiers the motors are on.

Link to comment
Share on other sites

Hello EricHotchkiss,

thanks for looking into this. These are not identical Motors. They have different MaxSpeed, InvAMax, InvDMax and InvJMax values. I added a Motor[].PosSf factor to each of them to make one unit equal to one micro meter of movement. So now they do show the same change in position per unit.

 

These are the values for Motor[1]. That's a brushless linear motor:

Motor[1].jogspeed= 1000 * Mtr1ScaleFactor

Motor[1].JogTa= -( 1000 / ( 10000 * Mtr1ScaleFactor ) )

Motor[1].JogTs= -( 1000 / ( 1000000 * Mtr1ScaleFactor ) )

Motor[1].MaxSpeed=4000 * Mtr1ScaleFactor

Motor[1].InvAmax= 1000 / ( 1000000 * Mtr1ScaleFactor )

Motor[1].InvDmax= 1000 / ( 1000000 * Mtr1ScaleFactor )

Motor[1].InvJmax= 1000 / ( 1000000 * Mtr1ScaleFactor )

 

These are the values for Motor[6]. That's a stepper motor in a linear actuator:

Motor[6].jogspeed = 0.0005 * 1000

Motor[6].JogTa=-( 1000 / ( 10000 * Mtr6ScaleFactor ) )

Motor[6].JogTs=-( 1000 / ( 10000 * Mtr6ScaleFactor ) )

Motor[6].MaxSpeed=100 * Mtr6ScaleFactor //Max Speed

Motor[6].InvAmax= 1000 / ( 10000 * Mtr6ScaleFactor )

Motor[6].InvDmax= 1000 / ( 10000 * Mtr6ScaleFactor )

Motor[6].InvJmax= 1000 / ( 10000 * Mtr6ScaleFactor )

 

From what I understood out of the User's Manual, the maximum values are reduced to the ones. I tried setting the limits and speeds of the linear equal to the ones of the stepper motor but that did not change anything.

Link to comment
Share on other sites

Looking at the plots, it's pretty clear that the motor plotted on the top curve (#6 I think) has been limited by its MaxSpeed parameter for a substantial fraction of the move. You can see a constant slope (velocity) over much of the move, which doesn't happen in the ideal sine wave. It will probably be more obvious if you plot Command Velocity instead of Command Position.

 

The move should have taken about 31 seconds if it didn't hit limits -- it took about 39 seconds in actuality.

 

By the way, setting the MinArcLen to 5 is NOT a good idea. It is in units of radians, so a minimum arc length of 5 radians is close to a full circle. The parameter is really only for the case where there may be some roundoff error making the end position slightly different from the start position, so an attempt to command a full circle in one move could yield a very tiny arc, making the user think that the move has been skipped altogether.

Link to comment
Share on other sites

I'm going to look at just your max speed settings to avoid thinking about acceleration/jerk units.

Motor[1].MaxSpeed = 4000 * Mtr1ScaleFactor
Motor[6].MaxSpeed = 100 * Mtr6ScaleFactor

 

I'm assuming Mtr1ScaleFactor is the Value of Motor[1].PosSf you are using. Taking a look at "Motor[1].MaxSpeed = 4000 * Mtr1ScaleFactor" to me this says 4000 counts/msec was a good speed, but now I'm changing my units to mm (or whatever) so now now I need to scale that max speed to motor units.

 

If you motor units are already in mm and you want a max speed of 1000 mm/msec, then you would set Motor[1].MaxSpeed=1000. Of course 1000 mm/msec is a particularly high speed, maybe you are looking for 1000 mm/sec or Motor[1].MaxSpeed= 1 [mm/msec]?

Link to comment
Share on other sites

Hi, it seems the that my assertion is wrong, that both motors should perform the type of motion in time. The plot with the position of motor[6] on the Y-axis and motor[1] on the X-axis shows that they make a perfect circle, though distorted by the scaling of the image. When I think about it, it doesn't contradict a circular motion.

Circle.thumb.png.5ba470fcbf5fda905a972909b7d65ace.png

Link to comment
Share on other sites

Is that circle 10 by 10,000 or is the 10^3 just left off? In any case, it looks like it's been re-scaled from the 10 by 30 circle I was expecting from the old plot.

 

You may want to take a look at your speed/acceleration parameters. Even if a motion program has to be slowed down to keep one motor within its max speed, the motors will stay synced up and draw the correct shape (just slowly). You might want to make sure this is going at the intended speed instead of being slowed down every time.

Link to comment
Share on other sites

Hi, it seems the that my assertion is wrong, that both motors should perform the type of motion in time. The plot with the position of motor[6] on the Y-axis and motor[1] on the X-axis shows that they make a perfect circle, though distorted by the scaling of the image. When I think about it, it doesn't contradict a circular motion.

 

Yes, when PMAC slows down a section of a move to prevent one motor from exceeding a limit, it slows down all motors proportionately so the programmed path is maintained despite the reduction in speed.

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.

×
×
  • Create New...