Logix Motion: blended motion question

Contr_Conn

Member
Join Date
Sep 2003
Location
Ohio
Posts
2,557
It is been 4 years since I used motion last time.
So I decided to finish never ending Axis Simulator poject that allows to debug motion systems without having actual drives.
Prototype version of the simulator saved me in 2003 when we did large retrofit and developed motion programs with servos 600 miles away.
I converted Simulator to microcontroller and finally it's in good usable shape
While playing with it I am trying to learn motion commands for 1756-M02AE module.

So here is a my question:

I want to blend moves like
1000mm at 600 mm/s
100mm at 100 mm/s
20 mm at 10 mm/s
30 mm at 20 mm/s

Problem that I can't figure out how to start next move without going to zero speed between moves

All motion controllers I used before had this feature.
Handling this in ladder using MCD is the only way I found so far, but it is not accurate and PLC scan dependent.

Any better ideas?

BTW: if someone intrested in Axis Simulator let me know.
 
Contr_Conn said:
I
I want to blend moves like
1000mm at 600 mm/s
100mm at 100 mm/s
20 mm at 10 mm/s
30 mm at 20 mm/s
What about the distance required for ramping. Where does that fit in.
I would think you should be able to issue a new MAM while still moving. I thought the only difficulty was that a new MAM command couldn't be issued while ramping. I can check with our engineer that gets involve with the Rockwell motion projects.

Problem that I can't figure out how to start next move without going to zero speed between moves
Why do these question always come up on the weekend when I don't have my resources at work.

All motion controllers I used before had this feature.
Yes, this should be easy. I know we have some test programs that should have examples of how to issue commands on-the-fly.

BTW: if someone intrested in Axis Simulator let me know.
[/quote]
I will check if we can use one for the Rockwell motion projects. I think I would be interested any way just for comparison and to see what you are doing.
 
I have been doing MOves on top og Gear, works well.
Which means you can do a Move on top of a Move (on the fly).
MCD is what they recommend for your setup.(on the fly)
Have you ever considered a cam to accomplish what you need to accopmplish?
It is a bit more involved but it will do the job.
 
What about the distance required for ramping. Where does that fit in.
Most of controllers I used before have this selectable - ramp completed automatically before switching point or switching point will be start for the ramp. In most of cases I used "ramp ahead"
Why do these question always come up on the weekend when I don't have my resources at work.
Weekend it only time I play with toys. I am not in hurry, I am just playing and trying to rebuild my motion skills I lost working exclusivly with Logix PLCs without motion.
Yes, this should be easy. I know we have some test programs that should have examples of how to issue commands on-the-fly.
I hope so - this is a first thing I tried with single axis simulator;)

I will check if we can use one for the Rockwell motion projects. I think I would be interested any way just for comparison and to see what you are doing.
I will try to build 3-4 simulators next weekend - it is very simple, one microcontroller, 24V to 5V regulator and few resistors/capacitors. 10 pin connector is the most expensive part ;) A/A- B,B-, Z,Z- ,Analog, Enable, +24V and 0V.
It fits in small box 60x35x15mm or 80x40x20mm

If it's OK with moderators (Phil) I can post details in a separate topic - I want to keep this topic for motion question.

I have been doing MOves on top og Gear, works well.
Which means you can do a Move on top of a Move (on the fly).
MCD is what they recommend for your setup.(on the fly)
Have you ever considered a cam to accomplish what you need to accopmplish?
It is a bit more involved but it will do the job.
I looked at the cam, but I beleive it is for two axis applications
 
Contr_Conn said:
Most of controllers I used before have this selectable - ramp completed automatically before switching point or switching point will be start for the ramp. In most of cases I used "ramp ahead"
So you are saying the distances you listed include the ramping distance.

It has been a while since I played with a M02AS and I have played with a M02AE since the 90's. Why can't you issue a MAM on-the-fly. You always give the final destination. Not the point where you expect to be at the new speed. When the MAM is issued it simply goes to the new speed. You must have some other trigger to determine when the new MAM should be issued. You must also keep track of the distance it takes to ramp. Vmax^2-Vmin^2=2*accel*rampdistance.
 
So you are saying the distances you listed include the ramping distance.

It has been a while since I played with a M02AS and I have played with a M02AE since the 90's. Why can't you issue a MAM on-the-fly. You always give the final destination. Not the point where you expect to be at the new speed. When the MAM is issued it simply goes to the new speed. You must have some other trigger to determine when the new MAM should be issued. You must also keep track of the distance it takes to ramp. Vmax^2-Vmin^2=2*accel*rampdistance.
Because checking current position and issuing another MAM using PLC program will be scan time + I/O update dependend and never provide exact point. Ramping calculations should not be a PLC function, motion controller should be able to buffer second MAM (or antoher instruction I am not aware of) and turn it on based on the first move completion.
Indramat did it with ECO drives years ago. They did it with CLMs in early 90's.
 
Contr_Conn said:
Because checking current position and issuing another MAM using PLC program will be scan time + I/O update dependend and never provide exact point. Ramping calculations should not be a PLC function, motion controller should be able to buffer second MAM (or antoher instruction I am not aware of) and turn it on based on the first move completion.
The M02AE just follows coarse updates from the PLC. It has internal triggers that it relays to the PLC but I am not sure about what happens in the PLC. I do know the M02AE is relatively dumb and just follows point provided by the motion planner in PLC so the answer must lie in the PLC. I have no idea if the PLC can queue up commands for quick response. You can make the coarse update time shorter. I do know that nothing is going to happen faster than the coarse update.

I think you need to look at the cam table option if you need to change speeds at precise positions.
 
I wish I could be of more help since I am not familiar with motion in CLX system. As a matter of fact, I have always thought that the "blended move", or "look-ahead" feature (issue several positioning commands in sequence and the system will automatically blend them without going to zero speed in between) was a standard for CNC controllers, not for PLC-level ones.

Anyway, it looks like you cannot use positioning, or point-to-point moves: each one would cause the system to calculate a trapezoidal (or triangular) motion profile and follow it. Therefore, you would have to calculate your own motion profile first and store it in a memory table.

Any motion controller is supposed to have a mode of operation called... here is where I stumble. My Yaskawas call it "phase mode", CLX and other systems may use different terminology. This is the mode where accel, decel and velocity settings don't matter at all: just set the new position reference value and the motor will try to move there as fast as it can. That is, as fast as the mechanical and electrical constraints of the system would allow it to. Consequently, it meas that the position command cannot be large, or the motor will trip the following error trying to make it. So in order to make a move in this mode, a small position incremet is fed to the axis every PLC scan - tha is the way camming works. Another important consideration: the motion task has to be set at constant scan time, nevr as a "free-wheeling" or variable one.

So you would have to use some math in order to create your motion profile table - including the initial accel and the final decel ramps. That would be a position vs. time table where the smallest time slice is the task scan time (whatever you think works - 2 ms, 5 ms, maybe even 10 ms?). Then write a code that would read a position value from that table - every scan by scan and feed that value to the axis. Something along these lines. I think the camming commands in CLX is what you would be looking for - just make sure you familiarize yourself with the way the camming tables are structured: most controllers don't require you to create an entry for every scan in case of a straight line profile but rather allow you to define the start end the end points instead.

Once again, sorry I could not be more specific.
 
Peter,
My backgroud in controls does not let me sleep and concentrate on electronic portion - I thought I can program a simple profile in Logix to make a nice demo using simulator.
I hope some day I will be doing motion control again, so it was a good excersize.
Cam table - yes I looked at this briefly - it looks like I need to set a virtual axis and it operates with vector speed instead of linear - I may be wrong with this.
I also was told that I may need to use coordinated motion commands instead - I did not have time to look at this yet.

I am just wondering why this powerfull Logix motion system does not have this simple functionality?


=======================


As for simulator - prototpe is working just fine, but unexpected weekend home repairs delayed it again ( only 4 years in making o_O ).
I am still trying to find a best way to add some lag using some kind of shift array, but it takes processing power from simple 8-bit microcontroller I am using. At highest speed it produces 62500 output pulses per second while reading analog input, calculating output speed and servicing Zero marker - not too much room left for everything else.

I will post pictures as soon as I build new prototype PCB that fits in my favorite plastic box.
 
Last edited:
&uot
LadderLogic said:
I wish I could be of more help since I am not familiar with motion in CLX system. As a matter of fact, I have always thought that the "blended move", or "look-ahead" feature (issue several positioning commands in sequence and the system will automatically blend them without going to zero speed in between) was a standard for CNC controllers, not for PLC-level ones.
Even our first generation controllers that fit in a TI505 could do that and I am pretty sure the M02AE can too, they just can't do it on their own. They are limited by the PLC scan time.


Any motion controller is supposed to have a mode of operation called... here is where I stumble. My Yaskawas call it "phase mode", CLX and other systems may use different terminology. This is the mode where accel, decel and velocity settings don't matter at all: just set the new position reference value and the motor will try to move there as fast as it can. That is, as fast as the mechanical and electrical constraints of the system would allow it to. Consequently, it meas that the position command cannot be large, or the motor will trip the following error trying to make it. So in order to make a move in this mode, a small position incremet is fed to the axis every PLC scan - tha is the way camming works. Another important consideration: the motion task has to be set at constant scan time, nevr as a "free-wheeling; or variable one.
Oh no! Phasing is for the adjustment of the relationship between two axes. This adjustment should not happen instantly. They should happen over a distance that the master moves. Phasing isn't required by Contr_Conn

So you would have to use some math in order to create your motion profile table - including the initial accel and the final decel ramps. That would be a position vs. time table where the smallest time slice is the task scan time (whatever you think works - 2 ms, 5 ms, maybe even 10 ms?). Then write a code that would read a position value from that table - every scan by scan and feed that value to the axis.
This should all be automatic. For good motion control the position, velocity and acceleration can be determined by interpolating between the points. This isn' t practical to do in ladder code.
 
Contr_Conn said:
No solution so far..

Any other ideas from weekday readers?
I think what you are looking for is the MCLM instruction (Motion Coordinated Linear Move). You can queue the moves and specify whether or not they blend.
 
Contr_Conn said:
...but it takes processing power from simple 8-bit microcontroller I am using.

Just out of interest, have you ever looked at the NetBurner platform (based on the 32-bit coldfire micro). It is 32-bit, up to 8MB RAM, up to 2MB flash and has a real-time OS that is based on Micro-C OS and with the updates they have made over the years it is similar to the Micro-C OSII version.

Their link is at www.netburner.com

Neat stuff and easy to get up and running.

Darren
 

Similar Topics

Hey guys, On my system, i got prop valve controling cylinder on the left and right to adjust the center of a lumber before it get in a woodmill...
Replies
8
Views
823
Hello everyone, Ho do I go about making changes to a "Motion Axis Parameter" e.g. PositionScalingNumerator that is currently grayed out in the...
Replies
2
Views
1,298
I tried to upgrade my Studio 5000 v32.00 to v32.04 or higher but the install was unsuccessful due to the higher version of Motion Database is not...
Replies
0
Views
1,269
I'm using a 1769-L18ERM to control two Kinetix 5500 servo drives. I am setting up a virtual axis, which I will use the MAJ instruction to run, and...
Replies
6
Views
2,327
Hello everyone, So on Monday morning I'm expecting to have a box of random parts dumped in front of me. I'll create another thread with more...
Replies
1
Views
1,947
Back
Top Bottom