hannsx Posted March 12, 2019 Posted March 12, 2019 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?
hannsx Posted March 13, 2019 Author Posted March 13, 2019 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
Omron Forums Support Posted March 18, 2019 Posted March 18, 2019 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.
hannsx Posted March 19, 2019 Author Posted March 19, 2019 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.
curtwilson Posted March 19, 2019 Posted March 19, 2019 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.
Omron Forums Support Posted March 19, 2019 Posted March 19, 2019 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]?
hannsx Posted March 20, 2019 Author Posted March 20, 2019 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.
hannsx Posted March 20, 2019 Author Posted March 20, 2019 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.
Omron Forums Support Posted March 20, 2019 Posted March 20, 2019 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.
curtwilson Posted March 20, 2019 Posted March 20, 2019 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.
Recommended Posts