Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
RESOLVED - Circle mode not working as expected
#1
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?


Attached Files Image(s)
   
Reply
#2
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
Reply
#3
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.
Reply
#4
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.
Reply
#5
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.
Reply
#6
I'm going to look at just your max speed settings to avoid thinking about acceleration/jerk units.
Code:
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]?
Reply
#7
My linear motor has motor units of 50x10^(-9)m. Though the numbers seem very high, the maximum speed for motor[1] amounts to just 0.2m/s or 0.2mm/ms.
Reply
#8
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.


Attached Files Image(s)
   
Reply
#9
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.
Reply
#10
(03-20-2019, 09:13 AM)hannsx Wrote: 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.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)