Coordinated motion allows 2 cool muscle motors to work together in an X-Y motion to create accurate and complex motions such as lines, arcs, circles, and ellipses. By using merge motion, each move can be merged with the next to create a smooth motion between points without a stop.

The following variables and commands are used for coordinated motion:

-          R1-R25: Circle/Arc Radius value

-          N1-N25: Circle/Arc Center point

-          @0-@25: Execute motion to end point defined  by P1-P25 respectively

In order to tell the two motors to move in coordination, we need to define the speed and acceleration as normal, as well as either a radius or center point. We can then use the @ command similar to how we would use the P command in a normal motion to set the target end point. The start point of any coordinated motion move is the current position.

For timing reasons, any coordinated motion move must send the move command to the second motor first. For example:

A1.1,S1.1,A1.2,S1.2

R1.1,R1.2

@1.2+,@1.1+


In the above, we can call the speeds, accelerations, and radii in any order but the @ move command must be called in the second motor before the first.


The are a few rules to note when using coordinated motion:

  1. Coordinated motion must be run from a program bank, and cannot be used in logic banks or direct commands.
  2. Motions must be run in consecutive motors. e.g. you can coordinate motors 1 and 2, or 2 and 3, but cannot do a coordinated motion between motors 1 and 3. 
  3. The move commands must be given in reverse order from the motor the program is stored on. e.g. if you are using motors 1 and 2, and the program is stored on motor 1 the move command for motor 2 must come first.
  4. In the case of running the bank from the third motor, the move command for the farthest motor must come first. e.g. running the same move as rule 3 from a third motor, the move command for motor 1 must come first since it is the farthest from the third motor. 




  • No labels