How does RMP manage motion IDs between multiple
MultiAxis object have its own numerical space for (16-bit) motion IDs independent of any other
MultiAxis object? If I’m streaming points (via
MovePT(...)) to both
MultiAxis objects simultaneously, will they each get IDs from distinct number spaces (sometimes, coincidentally, equal in value), or are all motion IDs drawn from the same number space (where the executing ID for one could never be numerically equal to the other)?
Each Motion Supervisor (Axis or MultiAxis) has its own Motion ID counter. Each move call to an Axis or MultiAxis object will independently increase when a move call is applied to it.
In RapidSetup, you may see these jump around based on the source. Move twice on an Axis and the next Motion ID will be 2. Move 10 times on a multiAxis and its next move will be 10. Follow that up with a move on the Axis, the Motion ID will switch from 9 (Last MultiAxis) to 2 (3rd Axis move).
They can be equal to one another.
First, which “move calls” count, in terms of altering the Motion ID?
Also, What will the motion ID be at the end of this sequence?
MultiAxis.MovePT(...) → 9
- Is the motion ID the same for the
MultiAxis and all its “contained”
Axis.MovePT(...) → 2
- Is this also the MotionID for the
MultiAxis, or just the
MultiAxis.MovePT(...) → ?
Internally there is a MotionSupervisor object which handles all motion. Each one can be assigned 0 or more Axes. An axis gets one with its axis attached. A MultiAxis gets one with nothing attached until you add axes.
The MotionId 16 bit int counter exists at the MotionSupervisor level and increase by 1 when you command a move.
There are MotionId functions for the MultiAxis object, but it wouldn’t surprise me if we don’t have repeated implementations in both types in some rare use cases.